github.com/etecs-ru/gnomock@v0.13.2/preset/memcached/preset_test.go (about) 1 package memcached_test 2 3 import ( 4 "encoding/binary" 5 "strconv" 6 "testing" 7 8 memcachedclient "github.com/bradfitz/gomemcache/memcache" 9 "github.com/etecs-ru/gnomock" 10 "github.com/etecs-ru/gnomock/preset/memcached" 11 "github.com/stretchr/testify/require" 12 ) 13 14 func TestPreset(t *testing.T) { 15 t.Parallel() 16 17 // Byte Values 18 bvs := make(map[string][]byte) 19 20 // String 21 bvs["a"] = []byte("foo") 22 // Number as byte slice 23 bvsB := make([]byte, 4) 24 binary.LittleEndian.PutUint32(bvsB, 42) 25 bvs["b"] = bvsB 26 // Number as string 27 bvs["c"] = []byte(strconv.FormatInt(42, 10)) 28 29 // Values (string) 30 vs := make(map[string]string) 31 32 vs["d"] = "foo" 33 34 p := memcached.Preset( 35 memcached.WithByteValues(bvs), 36 memcached.WithValues(vs), 37 memcached.WithVersion("1.6.9"), 38 ) 39 container, err := gnomock.Start(p) 40 41 defer func() { require.NoError(t, gnomock.Stop(container)) }() 42 43 require.NoError(t, err) 44 45 addr := container.DefaultAddress() 46 client := memcachedclient.New(addr) 47 48 itemA, err := client.Get("a") 49 require.NoError(t, err) 50 require.Equal(t, "foo", string(itemA.Value)) 51 52 itemB, err := client.Get("b") 53 require.NoError(t, err) 54 require.Equal(t, 42, int(binary.LittleEndian.Uint32(itemB.Value))) 55 56 itemC, err := client.Get("c") 57 require.NoError(t, err) 58 valueC, err := strconv.ParseInt(string(itemC.Value), 10, 32) 59 require.NoError(t, err) 60 require.Equal(t, 42, int(valueC)) 61 62 itemD, err := client.Get("d") 63 require.NoError(t, err) 64 require.Equal(t, "foo", string(itemD.Value)) 65 } 66 67 func TestPreset_withDefaults(t *testing.T) { 68 t.Parallel() 69 70 p := memcached.Preset() 71 container, err := gnomock.Start(p) 72 73 defer func() { require.NoError(t, gnomock.Stop(container)) }() 74 75 require.NoError(t, err) 76 77 addr := container.DefaultAddress() 78 client := memcachedclient.New(addr) 79 require.NoError(t, client.Ping()) 80 }