safe_string_test.go 2.2 KB

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