package quark_byte import ( "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 Set(qb, 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 FromInt(qb, 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 FromStr(qb, "13") if qb.Get() != byte(newIntVal) { sf.t.Fatalf("convertStr(): FromStr() установил %d, ожидали %d", qb.Get(), byte(newIntVal)) } }