| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112 |
- 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))
- }
- }
|