mock_store_test.go 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213
  1. package mock_store
  2. import (
  3. "os"
  4. "testing"
  5. "git.p78su.freemyip.com/svi/gostore/pkg/mock/mock_service"
  6. )
  7. type tester struct {
  8. t *testing.T
  9. serv *mock_service.MockService
  10. store *MockStore
  11. }
  12. func TestMockStore(t *testing.T) {
  13. fnClear := func() {
  14. _ = os.RemoveAll("./store")
  15. }
  16. fnClear()
  17. defer fnClear()
  18. sf := &tester{
  19. t: t,
  20. }
  21. sf.create()
  22. sf.get()
  23. sf.put()
  24. sf.find()
  25. sf.del()
  26. }
  27. // Удаление ключа
  28. func (sf *tester) del() {
  29. sf.t.Log("del")
  30. sf.delBad1()
  31. sf.delGood1()
  32. }
  33. func (sf *tester) delGood1() {
  34. sf.t.Log("delGood1")
  35. err := sf.store.Del("key")
  36. if err != nil {
  37. sf.t.Fatalf("delGood1(): err=\n\t%v", err)
  38. }
  39. }
  40. // Испорчена переменная IsBad_
  41. func (sf *tester) delBad1() {
  42. sf.t.Log("delBad1")
  43. IsBad_ = true
  44. err := sf.store.Del("key")
  45. if err == nil {
  46. sf.t.Fatalf("delBad1(): err==nil")
  47. }
  48. IsBad_ = false
  49. }
  50. // Поиск ключей по префиксу
  51. func (sf *tester) find() {
  52. sf.t.Log("find")
  53. sf.findBad1()
  54. sf.findGood1()
  55. }
  56. func (sf *tester) findGood1() {
  57. sf.t.Log("findGood1")
  58. lstKey, err := sf.store.Find("key")
  59. if err != nil {
  60. sf.t.Fatalf("findGood1(): err=\n\t%v", err)
  61. }
  62. if lstKey == nil {
  63. sf.t.Fatalf("findGood1(): lstKey==nil")
  64. }
  65. }
  66. // Испорчена переменная IsBad_
  67. func (sf *tester) findBad1() {
  68. sf.t.Log("findBad1")
  69. IsBad_ = true
  70. _, err := sf.store.Find("key")
  71. if err == nil {
  72. sf.t.Fatalf("findBad1(): err==nil")
  73. }
  74. IsBad_ = false
  75. }
  76. // Проверка получения ключа из хранилища
  77. func (sf *tester) get() {
  78. sf.t.Log("get")
  79. sf.getBad1()
  80. sf.getBad2()
  81. sf.getGood1()
  82. }
  83. func (sf *tester) getGood1() {
  84. sf.t.Log("getGood1")
  85. binData, err := sf.store.Get("key")
  86. if err != nil {
  87. sf.t.Fatalf("getGood1(): err=\n\t%v", err)
  88. }
  89. if binData == nil {
  90. sf.t.Fatalf("getGood1(): binData==nil")
  91. }
  92. }
  93. // Нет ключа для получения
  94. func (sf *tester) getBad2() {
  95. sf.t.Log("getBad2")
  96. binData, err := sf.store.Get("")
  97. if err == nil {
  98. sf.t.Fatalf("getBad2(): err==nil")
  99. }
  100. if binData != nil {
  101. sf.t.Fatalf("getBad2(): binData!=nil")
  102. }
  103. }
  104. // Испорчена переменная IsBad_
  105. func (sf *tester) getBad1() {
  106. sf.t.Log("getBad1")
  107. IsBad_ = true
  108. binData, err := sf.store.Get("key")
  109. if err == nil {
  110. sf.t.Fatalf("getBad1(): err==nil")
  111. }
  112. if binData != nil {
  113. sf.t.Fatalf("getBad1(): binData!=nil")
  114. }
  115. IsBad_ = false
  116. }
  117. // Помещение ключа в мок-хранилище
  118. func (sf *tester) put() {
  119. sf.t.Log("put")
  120. sf.putBad1()
  121. sf.putBad2()
  122. sf.putGood1()
  123. }
  124. func (sf *tester) putGood1() {
  125. sf.t.Log("putGood1")
  126. err := sf.store.Put("key", []byte{})
  127. if err != nil {
  128. sf.t.Fatalf("putGood1(): err=\n\t%v", err)
  129. }
  130. }
  131. // Нет ключа для помещения в хранилище
  132. func (sf *tester) putBad2() {
  133. sf.t.Log("putBad2")
  134. err := sf.store.Put("", nil)
  135. if err == nil {
  136. sf.t.Fatalf("putBad2(): err==nil")
  137. }
  138. }
  139. // Испорчена переменная IsBad_
  140. func (sf *tester) putBad1() {
  141. sf.t.Log("putBad1")
  142. IsBad_ = true
  143. err := sf.store.Put("key", []byte{})
  144. if err == nil {
  145. sf.t.Fatalf("putBad1(): err==nil")
  146. }
  147. IsBad_ = false
  148. }
  149. // Создание мок-хранилища
  150. func (sf *tester) create() {
  151. sf.t.Log("create")
  152. sf.createBad1()
  153. sf.createBad2()
  154. sf.createGood1()
  155. }
  156. func (sf *tester) createGood1() {
  157. sf.t.Log("createGood1")
  158. var err error
  159. sf.store, err = NewMockStore(sf.serv)
  160. if err != nil {
  161. sf.t.Fatalf("createGood1(): err=\n\t%v", err)
  162. }
  163. if sf.store == nil {
  164. sf.t.Fatalf("createGood1(): store==nil")
  165. }
  166. }
  167. // Нет объекта сервиса
  168. func (sf *tester) createBad2() {
  169. sf.t.Log("createBad2")
  170. store, err := NewMockStore(nil)
  171. if err == nil {
  172. sf.t.Fatalf("createBad2(): err==nil")
  173. }
  174. if store != nil {
  175. sf.t.Fatalf("createBad2(): store!=nil")
  176. }
  177. }
  178. // Испорчена переменная IsBad_
  179. func (sf *tester) createBad1() {
  180. sf.t.Log("createBad1")
  181. sf.serv = mock_service.NewMockService()
  182. IsBad_ = true
  183. store, err := NewMockStore(sf.serv)
  184. if err == nil {
  185. sf.t.Fatalf("createBad1(): err==nil")
  186. }
  187. if store != nil {
  188. sf.t.Fatalf("createBad1(): store!=nil")
  189. }
  190. IsBad_ = false
  191. }