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