1package miniredis 2 3import ( 4 "reflect" 5 "sort" 6) 7 8// T is implemented by Testing.T 9type T interface { 10 Helper() 11 Errorf(string, ...interface{}) 12} 13 14// CheckGet does not call Errorf() iff there is a string key with the 15// expected value. Normal use case is `m.CheckGet(t, "username", "theking")`. 16func (m *Miniredis) CheckGet(t T, key, expected string) { 17 t.Helper() 18 19 found, err := m.Get(key) 20 if err != nil { 21 t.Errorf("GET error, key %#v: %v", key, err) 22 return 23 } 24 if found != expected { 25 t.Errorf("GET error, key %#v: Expected %#v, got %#v", key, expected, found) 26 return 27 } 28} 29 30// CheckList does not call Errorf() iff there is a list key with the 31// expected values. 32// Normal use case is `m.CheckGet(t, "favorite_colors", "red", "green", "infrared")`. 33func (m *Miniredis) CheckList(t T, key string, expected ...string) { 34 t.Helper() 35 36 found, err := m.List(key) 37 if err != nil { 38 t.Errorf("List error, key %#v: %v", key, err) 39 return 40 } 41 if !reflect.DeepEqual(expected, found) { 42 t.Errorf("List error, key %#v: Expected %#v, got %#v", key, expected, found) 43 return 44 } 45} 46 47// CheckSet does not call Errorf() iff there is a set key with the 48// expected values. 49// Normal use case is `m.CheckSet(t, "visited", "Rome", "Stockholm", "Dublin")`. 50func (m *Miniredis) CheckSet(t T, key string, expected ...string) { 51 t.Helper() 52 53 found, err := m.Members(key) 54 if err != nil { 55 t.Errorf("Set error, key %#v: %v", key, err) 56 return 57 } 58 sort.Strings(expected) 59 if !reflect.DeepEqual(expected, found) { 60 t.Errorf("Set error, key %#v: Expected %#v, got %#v", key, expected, found) 61 return 62 } 63} 64