mockenv_test.go 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256
  1. package mockenv
  2. import (
  3. "testing"
  4. )
  5. /*
  6. Тест для отладочных переменных окружения
  7. */
  8. // Тестер для переменных окружения
  9. type tester struct {
  10. t *testing.T
  11. me *MockEnv
  12. }
  13. func TestMockEnv(t *testing.T) {
  14. test := &tester{
  15. t: t,
  16. }
  17. test.create()
  18. test.initFake()
  19. test.readFile()
  20. test.getPairs()
  21. test.initLocal()
  22. test.stage()
  23. }
  24. // Плохой STAGE
  25. func (sf *tester) stage() {
  26. sf.t.Logf("stage()\n")
  27. sf.badStage1()
  28. sf.badStage2()
  29. }
  30. // STAGE имеет неизвестное значение
  31. func (sf *tester) badStage2() {
  32. sf.t.Logf("badStage2()\n")
  33. defer func() {
  34. if _panic := recover(); _panic == nil {
  35. sf.t.Errorf("badStage2(): panic==nil\n")
  36. }
  37. }()
  38. sf.me.dict["STAGE"] = "bad_local"
  39. sf.me.checkStage()
  40. }
  41. // Нет STAGE
  42. func (sf *tester) badStage1() {
  43. sf.t.Logf("badStage1()\n")
  44. defer func() {
  45. if _panic := recover(); _panic == nil {
  46. sf.t.Errorf("badStage1(): panic==nil\n")
  47. }
  48. }()
  49. delete(sf.me.dict, "STAGE")
  50. sf.me.checkStage()
  51. }
  52. // Локальная инициализация
  53. func (sf *tester) initLocal() {
  54. sf.initLocalBad1()
  55. sf.initLocalBad2()
  56. sf.initLocalBad3()
  57. sf.initLocalBad4()
  58. sf.initLocalGood1()
  59. sf.me.Unset()
  60. }
  61. func (sf *tester) initLocalGood1() {
  62. if err := sf.me.InitLocal(); err != nil {
  63. sf.t.Errorf("initLocalGood1(): err=\n\t%v\n", err)
  64. }
  65. }
  66. // Вообще нет STAGE
  67. func (sf *tester) initLocalBad4() {
  68. _fileEnv := fileEnv
  69. fileEnv = "./test_data/env_bad2"
  70. if err := sf.me.InitLocal(); err == nil {
  71. sf.t.Errorf("initLocalBad4(): err==nil\n")
  72. }
  73. fileEnv = _fileEnv
  74. }
  75. // Кривое значение STAGE
  76. func (sf *tester) initLocalBad3() {
  77. _fileEnv := fileEnv
  78. fileEnv = "./test_data/env_bad1"
  79. if err := sf.me.InitLocal(); err == nil {
  80. sf.t.Errorf("initLocalBad3(): err==nil\n")
  81. }
  82. fileEnv = _fileEnv
  83. }
  84. // Кривое содержимое файла
  85. func (sf *tester) initLocalBad2() {
  86. _fileEnv := fileEnv
  87. fileEnv = "./test_data/env_bad"
  88. if err := sf.me.InitLocal(); err == nil {
  89. sf.t.Errorf("initLocalBad2(): err==nil\n")
  90. }
  91. fileEnv = _fileEnv
  92. }
  93. // Кривое имя файла
  94. func (sf *tester) initLocalBad1() {
  95. _fileEnv := fileEnv
  96. fileEnv = "4"
  97. if err := sf.me.InitLocal(); err == nil {
  98. sf.t.Errorf("initLocalBad1(): err==nil\n")
  99. }
  100. fileEnv = _fileEnv
  101. }
  102. // Получение пар значений
  103. func (sf *tester) getPairs() {
  104. sf.getPairsBad1()
  105. sf.getPairsBad2()
  106. sf.getPairsBad3()
  107. sf.getPairsBad4()
  108. sf.getPairsGood1()
  109. }
  110. func (sf *tester) getPairsGood1() {
  111. dict, err := sf.me.getPairs("\nPARAM=\"123\"\nPARAM2=\"param2\"\n")
  112. if err != nil {
  113. sf.t.Errorf("getPairsGood1(): err=\n\t%v\n", err)
  114. }
  115. if dict == nil {
  116. sf.t.Errorf("getPairsGood1(): dict == nil\n")
  117. }
  118. }
  119. // Кривая пара
  120. func (sf *tester) getPairsBad4() {
  121. dict, err := sf.me.getPairs("\nPARAM=\"=\"=\"\"\nPARAM2=\"param2\"\n")
  122. if err == nil {
  123. sf.t.Errorf("getPairsBad4(): err==nil\n")
  124. }
  125. if dict != nil {
  126. sf.t.Errorf("getPairsBad4(): dict != nil\n")
  127. }
  128. }
  129. // Кривое значение
  130. func (sf *tester) getPairsBad3() {
  131. dict, err := sf.me.getPairs("\nPARAM=\"\"\nPARAM2=\"param2\"\n")
  132. if err == nil {
  133. sf.t.Errorf("getPairsBad3(): err==nil\n")
  134. }
  135. if dict != nil {
  136. sf.t.Errorf("getPairsBad3(): dict != nil\n")
  137. }
  138. }
  139. // Кривой ключ
  140. func (sf *tester) getPairsBad2() {
  141. dict, err := sf.me.getPairs("\n=\"param\"\nPARAM2=\"param2\"\n")
  142. if err == nil {
  143. sf.t.Errorf("getPairsBad2(): err==nil\n")
  144. }
  145. if dict != nil {
  146. sf.t.Errorf("getPairsBad2(): dict != nil\n")
  147. }
  148. }
  149. // Пустой текст
  150. func (sf *tester) getPairsBad1() {
  151. dict, err := sf.me.getPairs("\n\n\n")
  152. if err == nil {
  153. sf.t.Errorf("getPairsBad1(): err==nil\n")
  154. }
  155. if dict != nil {
  156. sf.t.Errorf("getPairsBad1(): dict != nil\n")
  157. }
  158. }
  159. // Чтение файла переменных окружения
  160. func (sf *tester) readFile() {
  161. sf.readFileBad1()
  162. sf.readFileBad2()
  163. sf.readFileBad3()
  164. sf.readFileGood1()
  165. }
  166. func (sf *tester) readFileGood1() {
  167. strData, err := sf.me.readFile()
  168. if err != nil {
  169. sf.t.Errorf("readFileGood1(): err=\n\t%v\n", err)
  170. }
  171. if strData == "" {
  172. sf.t.Errorf("readFileGood1(): strData is empty\n")
  173. }
  174. }
  175. // Кривой путь-2
  176. func (sf *tester) readFileBad3() {
  177. _selfPath := selfPath
  178. selfPath = "me/"
  179. strData, err := sf.me.readFile()
  180. if err == nil {
  181. sf.t.Errorf("readFileBad3(): err==nil\n")
  182. }
  183. if strData != "" {
  184. sf.t.Errorf("readFileBad3(): strData not empty\n")
  185. }
  186. selfPath = _selfPath
  187. }
  188. // Неправильное имя файла
  189. func (sf *tester) readFileBad2() {
  190. _fileEnv := fileEnv
  191. fileEnv = ""
  192. strData, err := sf.me.readFile()
  193. if err == nil {
  194. sf.t.Errorf("readFileBad2(): err==nil\n")
  195. }
  196. if strData != "" {
  197. sf.t.Errorf("readFileBad2(): strData not empty\n")
  198. }
  199. fileEnv = _fileEnv
  200. }
  201. // Кривой путь
  202. func (sf *tester) readFileBad1() {
  203. _selfPath := selfPath
  204. selfPath = "#"
  205. strData, err := sf.me.readFile()
  206. if err == nil {
  207. sf.t.Errorf("readFileBad1(): err==nil\n")
  208. }
  209. if strData != "" {
  210. sf.t.Errorf("readFileBad1(): strData not empty\n")
  211. }
  212. selfPath = _selfPath
  213. }
  214. // Иницилизация фейковыми данными
  215. func (sf *tester) initFake() {
  216. sf.me.InitFake()
  217. }
  218. // Создание объекта переменных окружения
  219. func (sf *tester) create() {
  220. sf.me = NewMockEnv()
  221. if sf.me == nil {
  222. sf.t.Errorf("create(): mockEnv is nil\n")
  223. }
  224. if sf.me.dict == nil {
  225. sf.t.Errorf("create(): dict env is nil")
  226. }
  227. if len_ := len(sf.me.dict); len_ != 0 {
  228. sf.t.Errorf("create(): len dict(%v)!=0\n", len_)
  229. }
  230. }