quark_byte_test.go 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. package quark_byte
  2. import (
  3. "testing"
  4. )
  5. type tester struct {
  6. t *testing.T
  7. }
  8. func TestQByte(t *testing.T) {
  9. sf := &tester{
  10. t: t,
  11. }
  12. sf.newMut()
  13. sf.newFix()
  14. sf.convertInt()
  15. sf.convertStr()
  16. }
  17. // Создаёт мутируемый кварк байта и проверяет базовые свойства.
  18. func (sf *tester) newMut() {
  19. sf.t.Log("newMut")
  20. const wantVal byte = 42
  21. qb := NewQByteMut(wantVal)
  22. if qb == nil {
  23. sf.t.Fatalf("newMut(): кварк не создан (nil)")
  24. }
  25. if qb.Mass() != 1 {
  26. sf.t.Fatalf("newMut(): некорректная масса, получили %d, ожидали %d", qb.Mass(), 1)
  27. }
  28. if qb.Get() != wantVal {
  29. sf.t.Fatalf("newMut(): некорректное значение, получили %d, ожидали %d", qb.Get(), wantVal)
  30. }
  31. // Проверяем, что Set меняет значение для мутируемого кварка
  32. const newVal byte = 7
  33. Set(qb, newVal)
  34. if qb.Get() != newVal {
  35. sf.t.Fatalf("newMut(): значение после Set() некорректно, получили %d, ожидали %d", qb.Get(), newVal)
  36. }
  37. }
  38. // Создаёт кварк байта и проверяет базовые свойства (без изменения значения).
  39. func (sf *tester) newFix() {
  40. sf.t.Log("newFix")
  41. const wantVal byte = 10
  42. qb := NewQByte(wantVal)
  43. if qb == nil {
  44. sf.t.Fatalf("newFix(): кварк не создан (nil)")
  45. }
  46. if qb.Mass() != 1 {
  47. sf.t.Fatalf("newFix(): некорректная масса, получили %d, ожидали %d", qb.Mass(), 1)
  48. }
  49. if qb.Get() != wantVal {
  50. sf.t.Fatalf("newFix(): некорректное значение, получили %d, ожидали %d", qb.Get(), wantVal)
  51. }
  52. }
  53. // Проверяет преобразование в/из int.
  54. func (sf *tester) convertInt() {
  55. sf.t.Log("convertInt")
  56. const srcVal byte = 100
  57. qb := NewQByteMut(srcVal)
  58. if qb == nil {
  59. sf.t.Fatalf("convertInt(): кварк не создан (nil)")
  60. }
  61. if qb.ToInt() != int(srcVal) {
  62. sf.t.Fatalf("convertInt(): ToInt() вернул %d, ожидали %d", qb.ToInt(), int(srcVal))
  63. }
  64. const newIntVal = 200
  65. FromInt(qb, newIntVal)
  66. if qb.Get() != byte(newIntVal) {
  67. sf.t.Fatalf("convertInt(): FromInt() установил %d, ожидали %d", qb.Get(), byte(newIntVal))
  68. }
  69. }
  70. // Проверяет преобразование в/из строки.
  71. func (sf *tester) convertStr() {
  72. sf.t.Log("проверка преобразования в/из строки")
  73. const srcVal byte = 5
  74. qb := NewQByteMut(srcVal)
  75. if qb == nil {
  76. sf.t.Fatalf("convertStr(): кварк не создан (nil)")
  77. }
  78. // ToStr должен возвращать строковое представление байта как числа
  79. strVal := qb.ToStr()
  80. if strVal != "5" {
  81. sf.t.Fatalf("convertStr(): ToStr() вернул %q, ожидали 5", strVal)
  82. }
  83. // FromStr использует StrToInt, поэтому передаём числовую строку
  84. const newIntVal = 13
  85. FromStr(qb, "13")
  86. if qb.Get() != byte(newIntVal) {
  87. sf.t.Fatalf("convertStr(): FromStr() установил %d, ожидали %d", qb.Get(), byte(newIntVal))
  88. }
  89. }