mock_store_test.go 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221
  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.put()
  23. sf.get()
  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. binData1, err := sf.store.Get("key1")
  93. if err == nil {
  94. sf.t.Fatalf("getGood1(): err==nil")
  95. }
  96. if binData1 != nil {
  97. sf.t.Fatalf("getGood1(): binData1!=nil")
  98. }
  99. }
  100. // Нет ключа для получения
  101. func (sf *tester) getBad2() {
  102. sf.t.Log("getBad2")
  103. binData, err := sf.store.Get("")
  104. if err == nil {
  105. sf.t.Fatalf("getBad2(): err==nil")
  106. }
  107. if binData != nil {
  108. sf.t.Fatalf("getBad2(): binData!=nil")
  109. }
  110. }
  111. // Испорчена переменная IsBad_
  112. func (sf *tester) getBad1() {
  113. sf.t.Log("getBad1")
  114. IsBad_ = true
  115. binData, err := sf.store.Get("key")
  116. if err == nil {
  117. sf.t.Fatalf("getBad1(): err==nil")
  118. }
  119. if binData != nil {
  120. sf.t.Fatalf("getBad1(): binData!=nil")
  121. }
  122. IsBad_ = false
  123. }
  124. // Помещение ключа в мок-хранилище
  125. func (sf *tester) put() {
  126. sf.t.Log("put")
  127. sf.putBad1()
  128. sf.putBad2()
  129. sf.putGood1()
  130. }
  131. func (sf *tester) putGood1() {
  132. sf.t.Log("putGood1")
  133. err := sf.store.Put("key", []byte{})
  134. if err != nil {
  135. sf.t.Fatalf("putGood1(): err=\n\t%v", err)
  136. }
  137. }
  138. // Нет ключа для помещения в хранилище
  139. func (sf *tester) putBad2() {
  140. sf.t.Log("putBad2")
  141. err := sf.store.Put("", nil)
  142. if err == nil {
  143. sf.t.Fatalf("putBad2(): err==nil")
  144. }
  145. }
  146. // Испорчена переменная IsBad_
  147. func (sf *tester) putBad1() {
  148. sf.t.Log("putBad1")
  149. IsBad_ = true
  150. err := sf.store.Put("key", []byte{})
  151. if err == nil {
  152. sf.t.Fatalf("putBad1(): err==nil")
  153. }
  154. IsBad_ = false
  155. }
  156. // Создание мок-хранилища
  157. func (sf *tester) create() {
  158. sf.t.Log("create")
  159. sf.createBad1()
  160. sf.createBad2()
  161. sf.createGood1()
  162. }
  163. func (sf *tester) createGood1() {
  164. sf.t.Log("createGood1")
  165. var err error
  166. sf.store, err = NewMockStore(sf.serv)
  167. if err != nil {
  168. sf.t.Fatalf("createGood1(): err=\n\t%v", err)
  169. }
  170. if sf.store == nil {
  171. sf.t.Fatalf("createGood1(): store==nil")
  172. }
  173. }
  174. // Нет объекта сервиса
  175. func (sf *tester) createBad2() {
  176. sf.t.Log("createBad2")
  177. store, err := NewMockStore(nil)
  178. if err == nil {
  179. sf.t.Fatalf("createBad2(): err==nil")
  180. }
  181. if store != nil {
  182. sf.t.Fatalf("createBad2(): store!=nil")
  183. }
  184. }
  185. // Испорчена переменная IsBad_
  186. func (sf *tester) createBad1() {
  187. sf.t.Log("createBad1")
  188. sf.serv = mock_service.NewMockService()
  189. IsBad_ = true
  190. store, err := NewMockStore(sf.serv)
  191. if err == nil {
  192. sf.t.Fatalf("createBad1(): err==nil")
  193. }
  194. if store != nil {
  195. sf.t.Fatalf("createBad1(): store!=nil")
  196. }
  197. IsBad_ = false
  198. }