github.com/sandwich-go/boost@v1.3.29/xcontainer/syncmap/gen_string_any_test.go (about) 1 // Code generated by gotemplate. DO NOT EDIT. 2 3 // syncmap 提供了一个同步的映射实现,允许安全并发的访问 4 package syncmap 5 6 import ( 7 "errors" 8 9 . "github.com/smartystreets/goconvey/convey" 10 11 "testing" 12 ) 13 14 func TestStringAny(t *testing.T) { 15 Convey("test sync map", t, func() { 16 for _, tr := range []*StringAny{NewStringAny()} { 17 So(tr.Len(), ShouldBeZeroValue) 18 var k, v = __formatKTypeToStringAny(3), __formatVTypeToStringAny(4) 19 So(tr.Len(), ShouldEqual, 0) 20 tr.Store(k, v) 21 v1, ok := tr.Load(k) 22 So(ok, ShouldBeTrue) 23 So(v1, ShouldEqual, v) 24 25 So(tr.Keys(), ShouldResemble, []string{__formatKTypeToStringAny(3)}) 26 So(tr.Get(__formatKTypeToStringAny(3)), ShouldEqual, __formatVTypeToStringAny(4)) 27 So(tr.Contains(__formatKTypeToStringAny(3)), ShouldBeTrue) 28 29 tr.Store(__formatKTypeToStringAny(4), __formatVTypeToStringAny(5)) 30 tr.Store(__formatKTypeToStringAny(5), __formatVTypeToStringAny(6)) 31 ol := tr.Len() 32 tr.DeleteMultiple(__formatKTypeToStringAny(4), __formatKTypeToStringAny(5)) 33 So(tr.Len(), ShouldEqual, ol-2) 34 35 ol = tr.Len() 36 tr.Store(__formatKTypeToStringAny(4), __formatVTypeToStringAny(5)) 37 tr.Store(__formatKTypeToStringAny(5), __formatVTypeToStringAny(6)) 38 vl, ok := tr.LoadAndDelete(__formatKTypeToStringAny(4)) 39 So(vl, ShouldEqual, __formatVTypeToStringAny(5)) 40 So(ok, ShouldBeTrue) 41 So(tr.Len(), ShouldEqual, ol+1) 42 43 tr.Store(__formatKTypeToStringAny(4), __formatVTypeToStringAny(5)) 44 fge := []func(key string, cf func(key string) (interface{}, error)) (value interface{}, loaded bool, err error){tr.GetOrSetFuncErrorLock} 45 defv, defv2 := __formatVTypeToStringAny(6), __formatVTypeToStringAny(7) 46 for _, f := range fge { 47 v, l, e := f(__formatKTypeToStringAny(6), func(key string) (interface{}, error) { 48 return defv, nil 49 }) 50 So(v, ShouldEqual, defv) 51 So(l, ShouldBeFalse) 52 So(e, ShouldBeNil) 53 54 v, l, e = f(__formatKTypeToStringAny(7), func(key string) (interface{}, error) { 55 return defv2, errors.New("") 56 }) 57 So(v, ShouldEqual, defv2) 58 So(l, ShouldBeFalse) 59 So(e, ShouldNotBeNil) 60 } 61 fg := []func(key string, cf func(key string) interface{}) (value interface{}, loaded bool){tr.GetOrSetFuncLock} 62 for _, f := range fg { 63 v, l := f(__formatKTypeToStringAny(7), func(key string) interface{} { 64 return defv2 65 }) 66 So(v, ShouldEqual, defv2) 67 So(l, ShouldBeFalse) 68 } 69 70 v, ok = tr.LoadOrStore(__formatKTypeToStringAny(8), __formatVTypeToStringAny(9)) 71 So(v, ShouldEqual, __formatVTypeToStringAny(9)) 72 So(ok, ShouldBeFalse) 73 74 So(func() { 75 tr.Range(func(key string, value interface{}) bool { 76 return true 77 }) 78 }, ShouldNotPanic) 79 80 } 81 }) 82 }