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