package quark_byte import ( mKh "gitp78su.ipnodns.ru/svi/kern/v4/lev0/helpers" "gitp78su.ipnodns.ru/svi/kern/v4/lev0/quark/quark_val" "strconv" "testing" ) type tester struct { t *testing.T } func TestQByte(t *testing.T) { sf := &tester{ t: t, } sf.newMut() sf.newFix() sf.convertInt() sf.convertStr() } // Создаёт мутируемый кварк байта и проверяет базовые свойства. func (sf *tester) newMut() { sf.t.Log("newMut") const wantVal byte = 42 qb := NewQByteMut(wantVal) if qb == nil { sf.t.Fatalf("newMut(): кварк не создан (nil)") } if qb.Mass() != 1 { sf.t.Fatalf("newMut(): некорректная масса, получили %d, ожидали %d", qb.Mass(), 1) } if qb.Get() != wantVal { sf.t.Fatalf("newMut(): некорректное значение, получили %d, ожидали %d", qb.Get(), wantVal) } // Проверяем, что Set меняет значение для мутируемого кварка const newVal byte = 7 quark_val.Set(qb.Val(), newVal) if qb.Get() != newVal { sf.t.Fatalf("newMut(): значение после Set() некорректно, получили %d, ожидали %d", qb.Get(), newVal) } } // Создаёт кварк байта и проверяет базовые свойства (без изменения значения). func (sf *tester) newFix() { sf.t.Log("newFix") const wantVal byte = 10 qb := NewQByte(wantVal) if qb == nil { sf.t.Fatalf("newFix(): кварк не создан (nil)") } if qb.Mass() != 1 { sf.t.Fatalf("newFix(): некорректная масса, получили %d, ожидали %d", qb.Mass(), 1) } if qb.Get() != wantVal { sf.t.Fatalf("newFix(): некорректное значение, получили %d, ожидали %d", qb.Get(), wantVal) } } // Проверяет преобразование в/из int. func (sf *tester) convertInt() { sf.t.Log("convertInt") const srcVal byte = 100 qb := NewQByteMut(srcVal) if qb == nil { sf.t.Fatalf("convertInt(): кварк не создан (nil)") } if qb.ToInt() != int(srcVal) { sf.t.Fatalf("convertInt(): ToInt() вернул %d, ожидали %d", qb.ToInt(), int(srcVal)) } const newIntVal = 200 mKh.Hassert(newIntVal >= 0 && newIntVal <= 255, "QByte.FromInt(): значение вне диапазона байта") quark_val.Set(qb.Val(), byte(newIntVal)) if qb.Get() != byte(newIntVal) { sf.t.Fatalf("convertInt(): FromInt() установил %d, ожидали %d", qb.Get(), byte(newIntVal)) } } // Проверяет преобразование в/из строки. func (sf *tester) convertStr() { sf.t.Log("проверка преобразования в/из строки") const srcVal byte = 5 qb := NewQByteMut(srcVal) if qb == nil { sf.t.Fatalf("convertStr(): кварк не создан (nil)") } // ToStr должен возвращать строковое представление байта как числа strVal := qb.ToStr() if strVal != "5" { sf.t.Fatalf("convertStr(): ToStr() вернул %q, ожидали 5", strVal) } // FromStr использует StrToInt, поэтому передаём числовую строку const newIntVal = 13 v, err := strconv.Atoi("13") mKh.Hassert(err == nil, "QByte.FromStr(): не удалось преобразовать строку в int, err=\n\t%v", err) //go:fix inline FromInt(qb, v) if qb.Get() != byte(newIntVal) { sf.t.Fatalf("convertStr(): FromStr() установил %d, ожидали %d", qb.Get(), byte(newIntVal)) } }