mock_store.go 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. // package mock_store -- мок-хранилище для тестов
  2. package mock_store
  3. import (
  4. "fmt"
  5. "strings"
  6. "git.p78su.freemyip.com/svi/gostore/pkg/types"
  7. )
  8. var (
  9. IsBad_ = false // Для тестов
  10. )
  11. // MockStore -- мок-хранилище для тестов
  12. type MockStore struct {
  13. serv types.IService
  14. dict map[string][]byte
  15. }
  16. // NewMockStore -- возвращает мок-хранилище для тестов
  17. func NewMockStore(serv types.IService) (*MockStore, error) {
  18. if IsBad_ {
  19. return nil, fmt.Errorf("NewMockStore(): IsBad_==true")
  20. }
  21. if serv == nil {
  22. return nil, fmt.Errorf("NewMockStore(): serv==nil")
  23. }
  24. sf := &MockStore{
  25. serv: serv,
  26. dict: make(map[string][]byte),
  27. }
  28. return sf, nil
  29. }
  30. func (sf *MockStore) Put(key string, val []byte) error {
  31. if IsBad_ {
  32. return fmt.Errorf("MockStore.Put(): IsBad_==true")
  33. }
  34. if key == "" {
  35. return fmt.Errorf("MockStore.Put(): key is empty")
  36. }
  37. sf.dict[key] = val
  38. return nil
  39. }
  40. func (sf *MockStore) Get(key string) ([]byte, error) {
  41. if IsBad_ {
  42. return nil, fmt.Errorf("MockStore.Get(): IsBad_==true")
  43. }
  44. if key == "" {
  45. return nil, fmt.Errorf("MockStore.Get(): key is empty")
  46. }
  47. if val, ok := sf.dict[key]; ok {
  48. return val, nil
  49. }
  50. return nil, fmt.Errorf("MockStore.Get(): key not found")
  51. }
  52. func (sf *MockStore) Find(prefix string) ([]string, error) {
  53. if IsBad_ {
  54. return nil, fmt.Errorf("MockStore.Find(): IsBad_==true")
  55. }
  56. lstKey := []string{}
  57. for key := range sf.dict {
  58. if strings.HasPrefix(key, prefix) {
  59. lstKey = append(lstKey, key)
  60. }
  61. }
  62. return lstKey, nil
  63. }
  64. func (sf *MockStore) Del(key string) error {
  65. if IsBad_ {
  66. return fmt.Errorf("MockStore.Del(): IsBad_==true")
  67. }
  68. delete(sf.dict, key)
  69. return nil
  70. }