|
@@ -0,0 +1,213 @@
|
|
|
+package mock_store
|
|
|
+
|
|
|
+import (
|
|
|
+ "os"
|
|
|
+ "testing"
|
|
|
+
|
|
|
+ "git.p78su.freemyip.com/svi/gostore/pkg/mock/mock_service"
|
|
|
+)
|
|
|
+
|
|
|
+type tester struct {
|
|
|
+ t *testing.T
|
|
|
+ serv *mock_service.MockService
|
|
|
+ store *MockStore
|
|
|
+}
|
|
|
+
|
|
|
+func TestMockStore(t *testing.T) {
|
|
|
+ fnClear := func() {
|
|
|
+ _ = os.RemoveAll("./store")
|
|
|
+ }
|
|
|
+ fnClear()
|
|
|
+ defer fnClear()
|
|
|
+ sf := &tester{
|
|
|
+ t: t,
|
|
|
+ }
|
|
|
+ sf.create()
|
|
|
+ sf.get()
|
|
|
+ sf.put()
|
|
|
+ sf.find()
|
|
|
+ sf.del()
|
|
|
+}
|
|
|
+
|
|
|
+// Удаление ключа
|
|
|
+func (sf *tester) del() {
|
|
|
+ sf.t.Log("del")
|
|
|
+ sf.delBad1()
|
|
|
+ sf.delGood1()
|
|
|
+}
|
|
|
+
|
|
|
+func (sf *tester) delGood1() {
|
|
|
+ sf.t.Log("delGood1")
|
|
|
+ err := sf.store.Del("key")
|
|
|
+ if err != nil {
|
|
|
+ sf.t.Fatalf("delGood1(): err=\n\t%v", err)
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+// Испорчена переменная IsBad_
|
|
|
+func (sf *tester) delBad1() {
|
|
|
+ sf.t.Log("delBad1")
|
|
|
+ IsBad_ = true
|
|
|
+ err := sf.store.Del("key")
|
|
|
+ if err == nil {
|
|
|
+ sf.t.Fatalf("delBad1(): err==nil")
|
|
|
+ }
|
|
|
+ IsBad_ = false
|
|
|
+}
|
|
|
+
|
|
|
+// Поиск ключей по префиксу
|
|
|
+func (sf *tester) find() {
|
|
|
+ sf.t.Log("find")
|
|
|
+ sf.findBad1()
|
|
|
+ sf.findGood1()
|
|
|
+}
|
|
|
+
|
|
|
+func (sf *tester) findGood1() {
|
|
|
+ sf.t.Log("findGood1")
|
|
|
+ lstKey, err := sf.store.Find("key")
|
|
|
+ if err != nil {
|
|
|
+ sf.t.Fatalf("findGood1(): err=\n\t%v", err)
|
|
|
+ }
|
|
|
+ if lstKey == nil {
|
|
|
+ sf.t.Fatalf("findGood1(): lstKey==nil")
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+// Испорчена переменная IsBad_
|
|
|
+func (sf *tester) findBad1() {
|
|
|
+ sf.t.Log("findBad1")
|
|
|
+ IsBad_ = true
|
|
|
+ _, err := sf.store.Find("key")
|
|
|
+ if err == nil {
|
|
|
+ sf.t.Fatalf("findBad1(): err==nil")
|
|
|
+ }
|
|
|
+ IsBad_ = false
|
|
|
+}
|
|
|
+
|
|
|
+// Проверка получения ключа из хранилища
|
|
|
+func (sf *tester) get() {
|
|
|
+ sf.t.Log("get")
|
|
|
+ sf.getBad1()
|
|
|
+ sf.getBad2()
|
|
|
+ sf.getGood1()
|
|
|
+}
|
|
|
+
|
|
|
+func (sf *tester) getGood1() {
|
|
|
+ sf.t.Log("getGood1")
|
|
|
+ binData, err := sf.store.Get("key")
|
|
|
+ if err != nil {
|
|
|
+ sf.t.Fatalf("getGood1(): err=\n\t%v", err)
|
|
|
+ }
|
|
|
+ if binData == nil {
|
|
|
+ sf.t.Fatalf("getGood1(): binData==nil")
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+// Нет ключа для получения
|
|
|
+func (sf *tester) getBad2() {
|
|
|
+ sf.t.Log("getBad2")
|
|
|
+ binData, err := sf.store.Get("")
|
|
|
+ if err == nil {
|
|
|
+ sf.t.Fatalf("getBad2(): err==nil")
|
|
|
+ }
|
|
|
+ if binData != nil {
|
|
|
+ sf.t.Fatalf("getBad2(): binData!=nil")
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+// Испорчена переменная IsBad_
|
|
|
+func (sf *tester) getBad1() {
|
|
|
+ sf.t.Log("getBad1")
|
|
|
+ IsBad_ = true
|
|
|
+ binData, err := sf.store.Get("key")
|
|
|
+ if err == nil {
|
|
|
+ sf.t.Fatalf("getBad1(): err==nil")
|
|
|
+ }
|
|
|
+ if binData != nil {
|
|
|
+ sf.t.Fatalf("getBad1(): binData!=nil")
|
|
|
+ }
|
|
|
+ IsBad_ = false
|
|
|
+}
|
|
|
+
|
|
|
+// Помещение ключа в мок-хранилище
|
|
|
+func (sf *tester) put() {
|
|
|
+ sf.t.Log("put")
|
|
|
+ sf.putBad1()
|
|
|
+ sf.putBad2()
|
|
|
+ sf.putGood1()
|
|
|
+}
|
|
|
+
|
|
|
+func (sf *tester) putGood1() {
|
|
|
+ sf.t.Log("putGood1")
|
|
|
+ err := sf.store.Put("key", []byte{})
|
|
|
+ if err != nil {
|
|
|
+ sf.t.Fatalf("putGood1(): err=\n\t%v", err)
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+// Нет ключа для помещения в хранилище
|
|
|
+func (sf *tester) putBad2() {
|
|
|
+ sf.t.Log("putBad2")
|
|
|
+ err := sf.store.Put("", nil)
|
|
|
+ if err == nil {
|
|
|
+ sf.t.Fatalf("putBad2(): err==nil")
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+// Испорчена переменная IsBad_
|
|
|
+func (sf *tester) putBad1() {
|
|
|
+ sf.t.Log("putBad1")
|
|
|
+ IsBad_ = true
|
|
|
+ err := sf.store.Put("key", []byte{})
|
|
|
+ if err == nil {
|
|
|
+ sf.t.Fatalf("putBad1(): err==nil")
|
|
|
+ }
|
|
|
+ IsBad_ = false
|
|
|
+}
|
|
|
+
|
|
|
+// Создание мок-хранилища
|
|
|
+func (sf *tester) create() {
|
|
|
+ sf.t.Log("create")
|
|
|
+ sf.createBad1()
|
|
|
+ sf.createBad2()
|
|
|
+ sf.createGood1()
|
|
|
+}
|
|
|
+
|
|
|
+func (sf *tester) createGood1() {
|
|
|
+ sf.t.Log("createGood1")
|
|
|
+ var err error
|
|
|
+ sf.store, err = NewMockStore(sf.serv)
|
|
|
+ if err != nil {
|
|
|
+ sf.t.Fatalf("createGood1(): err=\n\t%v", err)
|
|
|
+ }
|
|
|
+ if sf.store == nil {
|
|
|
+ sf.t.Fatalf("createGood1(): store==nil")
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+// Нет объекта сервиса
|
|
|
+func (sf *tester) createBad2() {
|
|
|
+ sf.t.Log("createBad2")
|
|
|
+ store, err := NewMockStore(nil)
|
|
|
+ if err == nil {
|
|
|
+ sf.t.Fatalf("createBad2(): err==nil")
|
|
|
+ }
|
|
|
+ if store != nil {
|
|
|
+ sf.t.Fatalf("createBad2(): store!=nil")
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+// Испорчена переменная IsBad_
|
|
|
+func (sf *tester) createBad1() {
|
|
|
+ sf.t.Log("createBad1")
|
|
|
+ sf.serv = mock_service.NewMockService()
|
|
|
+ IsBad_ = true
|
|
|
+ store, err := NewMockStore(sf.serv)
|
|
|
+ if err == nil {
|
|
|
+ sf.t.Fatalf("createBad1(): err==nil")
|
|
|
+ }
|
|
|
+ if store != nil {
|
|
|
+ sf.t.Fatalf("createBad1(): store!=nil")
|
|
|
+ }
|
|
|
+ IsBad_ = false
|
|
|
+}
|