github.com/sandwich-go/boost@v1.3.29/xcontainer/syncmap/gen_int16_uint_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 TestInt16Uint(t *testing.T) { 15 Convey("test sync map", t, func() { 16 for _, tr := range []*Int16Uint{NewInt16Uint()} { 17 So(tr.Len(), ShouldBeZeroValue) 18 var k, v = __formatKTypeToInt16Uint(3), __formatVTypeToInt16Uint(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, []int16{__formatKTypeToInt16Uint(3)}) 26 So(tr.Get(__formatKTypeToInt16Uint(3)), ShouldEqual, __formatVTypeToInt16Uint(4)) 27 So(tr.Contains(__formatKTypeToInt16Uint(3)), ShouldBeTrue) 28 29 tr.Store(__formatKTypeToInt16Uint(4), __formatVTypeToInt16Uint(5)) 30 tr.Store(__formatKTypeToInt16Uint(5), __formatVTypeToInt16Uint(6)) 31 ol := tr.Len() 32 tr.DeleteMultiple(__formatKTypeToInt16Uint(4), __formatKTypeToInt16Uint(5)) 33 So(tr.Len(), ShouldEqual, ol-2) 34 35 ol = tr.Len() 36 tr.Store(__formatKTypeToInt16Uint(4), __formatVTypeToInt16Uint(5)) 37 tr.Store(__formatKTypeToInt16Uint(5), __formatVTypeToInt16Uint(6)) 38 vl, ok := tr.LoadAndDelete(__formatKTypeToInt16Uint(4)) 39 So(vl, ShouldEqual, __formatVTypeToInt16Uint(5)) 40 So(ok, ShouldBeTrue) 41 So(tr.Len(), ShouldEqual, ol+1) 42 43 tr.Store(__formatKTypeToInt16Uint(4), __formatVTypeToInt16Uint(5)) 44 fge := []func(key int16, cf func(key int16) (uint, error)) (value uint, loaded bool, err error){tr.GetOrSetFuncErrorLock} 45 defv, defv2 := __formatVTypeToInt16Uint(6), __formatVTypeToInt16Uint(7) 46 for _, f := range fge { 47 v, l, e := f(__formatKTypeToInt16Uint(6), func(key int16) (uint, 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(__formatKTypeToInt16Uint(7), func(key int16) (uint, 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 int16, cf func(key int16) uint) (value uint, loaded bool){tr.GetOrSetFuncLock} 62 for _, f := range fg { 63 v, l := f(__formatKTypeToInt16Uint(7), func(key int16) uint { 64 return defv2 65 }) 66 So(v, ShouldEqual, defv2) 67 So(l, ShouldBeFalse) 68 } 69 70 v, ok = tr.LoadOrStore(__formatKTypeToInt16Uint(8), __formatVTypeToInt16Uint(9)) 71 So(v, ShouldEqual, __formatVTypeToInt16Uint(9)) 72 So(ok, ShouldBeFalse) 73 74 So(func() { 75 tr.Range(func(key int16, value uint) bool { 76 return true 77 }) 78 }, ShouldNotPanic) 79 80 } 81 }) 82 }