safe_string_test.go 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  1. package safe_string
  2. import (
  3. "os"
  4. "testing"
  5. . "gitp78su.ipnodns.ru/svi/kern/v4/lev0/core_spec"
  6. "gitp78su.ipnodns.ru/svi/kern/v4/lev0/defs"
  7. )
  8. type tester struct {
  9. t *testing.T
  10. ss ISafeString
  11. }
  12. func TestSafeString(t *testing.T) {
  13. sf := &tester{
  14. t: t,
  15. }
  16. sf.new()
  17. sf.set()
  18. sf.reset()
  19. sf.newFromEnv()
  20. }
  21. // Булево из окружения.
  22. func (sf *tester) newFromEnv() {
  23. sf.t.Log("newFromEnv")
  24. sf.newFromEnvBad1()
  25. sf.newFromEnvGood1()
  26. sf.newFromEnvGood2()
  27. }
  28. var testBool = defs.TxtFix("TEST_BOOL")
  29. func (sf *tester) newFromEnvGood2() {
  30. sf.t.Log("newFromEnvGood2")
  31. _ = os.Unsetenv(testBool.String())
  32. _ = os.Setenv(testBool.String(), "false")
  33. res := NewSafeStringGetenv(testBool)
  34. if res.IsErr() {
  35. sf.t.Fatalf("newFromEnvGood2(): err=%v", res.Err())
  36. }
  37. sb := res.Ok()
  38. if val := sb.Get(); val.Get() != "false" {
  39. sf.t.Fatalf("newFromEnvGood2(): val==true")
  40. }
  41. }
  42. func (sf *tester) newFromEnvGood1() {
  43. sf.t.Log("newFromEnvGood1")
  44. _ = os.Unsetenv(testBool.String())
  45. _ = os.Setenv(testBool.String(), "true")
  46. res := NewSafeStringGetenv(testBool)
  47. if res.IsErr() {
  48. sf.t.Fatalf("newFromEnvGood1(): err=%v", res.Err())
  49. }
  50. sb := res.Ok()
  51. if val := sb.Get(); val.Get() != "true" {
  52. sf.t.Fatalf("newFromEnvGood1(): val==false")
  53. }
  54. }
  55. // Кривое булево значение.
  56. func (sf *tester) newFromEnvBad1() {
  57. sf.t.Log("newFromEnvBad1")
  58. _ = os.Unsetenv(testBool.String())
  59. _ = os.Setenv(testBool.String(), "")
  60. res := NewSafeStringGetenv(testBool)
  61. if res.IsOk() {
  62. sf.t.Fatalf("newFromEnvBad1(): err==nil")
  63. }
  64. }
  65. // Сбрасывает хранимое значение.
  66. func (sf *tester) reset() {
  67. sf.t.Log("reset")
  68. sf.ss.Reset()
  69. if sf.ss.Get().Get() != "" {
  70. sf.t.Fatalf("reset(): ISafeString!=''")
  71. }
  72. sf.ss.Reset()
  73. if sf.ss.Get().Get() != "" {
  74. sf.t.Fatalf("reset(): ISafeString!=''")
  75. }
  76. _ = sf.ss.Byte()
  77. }
  78. // Установка хранимого значения.
  79. func (sf *tester) set() {
  80. sf.t.Log("set")
  81. sf.ss.Set(defs.TxtMut("77"))
  82. if sf.ss.Get().Get() != "77" {
  83. sf.t.Fatalf("set(): ISafeString!='77'")
  84. }
  85. sf.ss.Set(defs.TxtMut("-56"))
  86. if sf.ss.Get().Get() != "-56" {
  87. sf.t.Fatalf("set(): ISafeString!='-56'")
  88. }
  89. }
  90. // Создаёт потокобезопасный булевый признак.
  91. func (sf *tester) new() {
  92. sf.t.Log("new")
  93. sf.ss = NewSafeString()
  94. if sf.ss == nil {
  95. sf.t.Fatalf("new(): ISafeString==nil")
  96. }
  97. if sf.ss.Get().Get() != "" {
  98. sf.t.Fatalf("new(): ISafeString!=''")
  99. }
  100. }