From 6d8ced21b92d49e667ef60f78cc5d116303c6874 Mon Sep 17 00:00:00 2001 From: farmer chen <10946081@qq.com> Date: Tue, 9 Apr 2019 17:27:58 +0800 Subject: [PATCH 1/9] Add unit test for gring --- g/container/gring/gring_unit_test.go | 179 +++++++++++++++++++++++++++ 1 file changed, 179 insertions(+) create mode 100644 g/container/gring/gring_unit_test.go diff --git a/g/container/gring/gring_unit_test.go b/g/container/gring/gring_unit_test.go new file mode 100644 index 000000000..c80913b72 --- /dev/null +++ b/g/container/gring/gring_unit_test.go @@ -0,0 +1,179 @@ +package gring_test + +import ( + "container/ring" + "github.com/gogf/gf/g/container/gring" + "github.com/gogf/gf/g/test/gtest" + "testing" +) +type Student struct { + position int + name string + upgrade bool +} + +func TestRing_Val(t *testing.T) { + gtest.Case(t, func() { + //定义cap 为3的ring类型数据 + r := gring.New(3, true) + //分别给3个元素初始化赋值 + r.Put(&Student{1,"jimmy", true}) + r.Put(&Student{2,"tom", true}) + r.Put(&Student{3,"alon", false}) + + //元素取值并判断和预设值是否相等 + gtest.AssertEQ(r.Val().(*Student).name,"jimmy") + //从当前位置往后移两个元素 + r.Move(2) + gtest.AssertEQ(r.Val().(*Student).name,"alon") + if r.Val().(*Student).upgrade == false { + r.Val().(*Student).upgrade = true + //更新元素值 + r.Set(&Student{3, "jack", true}) + } + + + }) +} +func TestRing_CapLen(t *testing.T) { + gtest.Case(t, func() { + r := gring.New(10) + r.Put("goframe") + //cap长度 10 + gtest.AssertEQ(r.Cap(), 10) + //已有数据项 1 + gtest.AssertEQ(r.Len(), 1) + }) +} + +func TestRing_Position(t *testing.T) { + gtest.Case(t, func() { + r := gring.New(2) + r.Put(1) + r.Put(2) + //往后移动1个元素 + r.Next() + gtest.AssertEQ(r.Val(),2) + //往前移动1个元素 + r.Prev() + gtest.AssertEQ(r.Val(),1) + + }) +} + +func TestRing_Link(t *testing.T) { + gtest.Case(t, func() { + r := gring.New(3) + r.Put(1) + r.Put(2) + r.Put(3) + s := gring.New(2) + s.Put("a") + s.Put("b") + + rs := r.Link(s) + gtest.AssertEQ(rs.Move(2).Val(), "b") + + }) +} + +func TestRing_Unlink(t *testing.T) { + gtest.Case(t, func() { + r := gring.New(5) + for i := 0; i< 5; i++ { + r.Put(i+1) + } + // 1 2 3 4 5 + // 删除当前位置往后的2个数据,返回被删除的数据 + s := r.Unlink(2) // 2 3 + gtest.AssertEQ(s.Val(), 2) + }) +} + +func TestRing_Slice(t *testing.T) { + gtest.Case(t, func() { + ringLen := 5 + r := gring.New(ringLen) + for i := 0; i< ringLen; i++ { + r.Put(i+1) + } + r.Move(2) // 3 + array := r.SliceNext() // [3 4 5 1 2] + gtest.AssertEQ(array[0], 3) + gtest.AssertEQ(len(array), 5) + + //判断array是否等于[3 4 5 1 2] + ra := []int{3,4,5,1,2} + eq := true + for i, v := range array { + if v != ra[i] { + eq = false + } + } + gtest.AssertEQ(eq, true) + + //第3个元素设为nil + r.Set(nil) + array2 := r.SliceNext() //[4 5 1 2] + //返回当前位置往后不为空的元素数组,长度为4 + gtest.AssertEQ(len(array2), 4) + + array3 := r.SlicePrev() //[2 1 5 4] + //数组array3第一个元素为2 + gtest.AssertEQ(array3[0], 2) + //数组长度4 + gtest.AssertEQ(len(array3), 4) + + }) +} + +func TestRing_RLockIterator(t *testing.T) { + gtest.Case(t, func() { + ringLen := 5 + r := gring.New(ringLen) + for i := 0; i< ringLen; i++ { + r.Put(i+1) + } + var i,j int + //回调函数返回true,RLockIteratorNext遍历5次 + r.RLockIteratorNext(func(value interface{}) bool { + i++; + return true + }) + gtest.AssertEQ(i, 5) + + //RLockIteratorPrev遍历3次返回 false,退出遍历 + r.RLockIteratorPrev(func(value interface{}) bool { + if j++; j < 3 { + return true + } + return false + }) + gtest.AssertEQ(j, 3) + }) +} + +func TestRing_LockIterator(t *testing.T) { + gtest.Case(t, func() { + ringLen := 5 + r := gring.New(ringLen) + for i := 0; i< ringLen; i++ { + r.Put(i+1) + } + var i,j int + r.LockIteratorNext(func(item *ring.Ring) bool { + i++; + return true + }) + gtest.AssertEQ(i, 5) + + r.LockIteratorPrev(func(item *ring.Ring) bool { + if j++; j < 3 { + return true + } + return false + }) + + gtest.AssertEQ(j, 3) + }) +} \ No newline at end of file From 4f792b347ddf135f08c6a2c9f7981ff0304c58c7 Mon Sep 17 00:00:00 2001 From: farmer chen <10946081@qq.com> Date: Tue, 9 Apr 2019 17:27:58 +0800 Subject: [PATCH 2/9] Add unit test for gring --- g/container/gring/gring_unit_test.go | 179 +++++++++++++++++++++++++++ 1 file changed, 179 insertions(+) create mode 100644 g/container/gring/gring_unit_test.go diff --git a/g/container/gring/gring_unit_test.go b/g/container/gring/gring_unit_test.go new file mode 100644 index 000000000..c80913b72 --- /dev/null +++ b/g/container/gring/gring_unit_test.go @@ -0,0 +1,179 @@ +package gring_test + +import ( + "container/ring" + "github.com/gogf/gf/g/container/gring" + "github.com/gogf/gf/g/test/gtest" + "testing" +) +type Student struct { + position int + name string + upgrade bool +} + +func TestRing_Val(t *testing.T) { + gtest.Case(t, func() { + //定义cap 为3的ring类型数据 + r := gring.New(3, true) + //分别给3个元素初始化赋值 + r.Put(&Student{1,"jimmy", true}) + r.Put(&Student{2,"tom", true}) + r.Put(&Student{3,"alon", false}) + + //元素取值并判断和预设值是否相等 + gtest.AssertEQ(r.Val().(*Student).name,"jimmy") + //从当前位置往后移两个元素 + r.Move(2) + gtest.AssertEQ(r.Val().(*Student).name,"alon") + if r.Val().(*Student).upgrade == false { + r.Val().(*Student).upgrade = true + //更新元素值 + r.Set(&Student{3, "jack", true}) + } + + + }) +} +func TestRing_CapLen(t *testing.T) { + gtest.Case(t, func() { + r := gring.New(10) + r.Put("goframe") + //cap长度 10 + gtest.AssertEQ(r.Cap(), 10) + //已有数据项 1 + gtest.AssertEQ(r.Len(), 1) + }) +} + +func TestRing_Position(t *testing.T) { + gtest.Case(t, func() { + r := gring.New(2) + r.Put(1) + r.Put(2) + //往后移动1个元素 + r.Next() + gtest.AssertEQ(r.Val(),2) + //往前移动1个元素 + r.Prev() + gtest.AssertEQ(r.Val(),1) + + }) +} + +func TestRing_Link(t *testing.T) { + gtest.Case(t, func() { + r := gring.New(3) + r.Put(1) + r.Put(2) + r.Put(3) + s := gring.New(2) + s.Put("a") + s.Put("b") + + rs := r.Link(s) + gtest.AssertEQ(rs.Move(2).Val(), "b") + + }) +} + +func TestRing_Unlink(t *testing.T) { + gtest.Case(t, func() { + r := gring.New(5) + for i := 0; i< 5; i++ { + r.Put(i+1) + } + // 1 2 3 4 5 + // 删除当前位置往后的2个数据,返回被删除的数据 + s := r.Unlink(2) // 2 3 + gtest.AssertEQ(s.Val(), 2) + }) +} + +func TestRing_Slice(t *testing.T) { + gtest.Case(t, func() { + ringLen := 5 + r := gring.New(ringLen) + for i := 0; i< ringLen; i++ { + r.Put(i+1) + } + r.Move(2) // 3 + array := r.SliceNext() // [3 4 5 1 2] + gtest.AssertEQ(array[0], 3) + gtest.AssertEQ(len(array), 5) + + //判断array是否等于[3 4 5 1 2] + ra := []int{3,4,5,1,2} + eq := true + for i, v := range array { + if v != ra[i] { + eq = false + } + } + gtest.AssertEQ(eq, true) + + //第3个元素设为nil + r.Set(nil) + array2 := r.SliceNext() //[4 5 1 2] + //返回当前位置往后不为空的元素数组,长度为4 + gtest.AssertEQ(len(array2), 4) + + array3 := r.SlicePrev() //[2 1 5 4] + //数组array3第一个元素为2 + gtest.AssertEQ(array3[0], 2) + //数组长度4 + gtest.AssertEQ(len(array3), 4) + + }) +} + +func TestRing_RLockIterator(t *testing.T) { + gtest.Case(t, func() { + ringLen := 5 + r := gring.New(ringLen) + for i := 0; i< ringLen; i++ { + r.Put(i+1) + } + var i,j int + //回调函数返回true,RLockIteratorNext遍历5次 + r.RLockIteratorNext(func(value interface{}) bool { + i++; + return true + }) + gtest.AssertEQ(i, 5) + + //RLockIteratorPrev遍历3次返回 false,退出遍历 + r.RLockIteratorPrev(func(value interface{}) bool { + if j++; j < 3 { + return true + } + return false + }) + gtest.AssertEQ(j, 3) + }) +} + +func TestRing_LockIterator(t *testing.T) { + gtest.Case(t, func() { + ringLen := 5 + r := gring.New(ringLen) + for i := 0; i< ringLen; i++ { + r.Put(i+1) + } + var i,j int + r.LockIteratorNext(func(item *ring.Ring) bool { + i++; + return true + }) + gtest.AssertEQ(i, 5) + + r.LockIteratorPrev(func(item *ring.Ring) bool { + if j++; j < 3 { + return true + } + return false + }) + + gtest.AssertEQ(j, 3) + }) +} \ No newline at end of file From 78010d2bd759b474086e9bda3939e808a5d16fe2 Mon Sep 17 00:00:00 2001 From: aloncn <10946081@qq.com> Date: Wed, 10 Apr 2019 00:22:10 +0800 Subject: [PATCH 3/9] Update unit test for gring --- g/container/gring/gring_unit_test.go | 81 +++++++++++++++------------- 1 file changed, 43 insertions(+), 38 deletions(-) diff --git a/g/container/gring/gring_unit_test.go b/g/container/gring/gring_unit_test.go index c80913b72..214d9e3d1 100644 --- a/g/container/gring/gring_unit_test.go +++ b/g/container/gring/gring_unit_test.go @@ -2,6 +2,7 @@ package gring_test import ( "container/ring" + "github.com/gogf/gf/g" "github.com/gogf/gf/g/container/gring" "github.com/gogf/gf/g/test/gtest" "testing" @@ -22,17 +23,16 @@ func TestRing_Val(t *testing.T) { r.Put(&Student{3,"alon", false}) //元素取值并判断和预设值是否相等 - gtest.AssertEQ(r.Val().(*Student).name,"jimmy") + gtest.Assert(r.Val().(*Student).name,"jimmy") //从当前位置往后移两个元素 r.Move(2) - gtest.AssertEQ(r.Val().(*Student).name,"alon") - if r.Val().(*Student).upgrade == false { - r.Val().(*Student).upgrade = true - //更新元素值 - r.Set(&Student{3, "jack", true}) - } - - + gtest.Assert(r.Val().(*Student).name,"alon") + //更新元素值 + //测试 value == nil + r.Set(nil) + gtest.Assert(r.Val(),nil) + //测试value != nil + r.Set(&Student{3, "jack", true}) }) } func TestRing_CapLen(t *testing.T) { @@ -40,9 +40,9 @@ func TestRing_CapLen(t *testing.T) { r := gring.New(10) r.Put("goframe") //cap长度 10 - gtest.AssertEQ(r.Cap(), 10) + gtest.Assert(r.Cap(), 10) //已有数据项 1 - gtest.AssertEQ(r.Len(), 1) + gtest.Assert(r.Len(), 1) }) } @@ -53,10 +53,10 @@ func TestRing_Position(t *testing.T) { r.Put(2) //往后移动1个元素 r.Next() - gtest.AssertEQ(r.Val(),2) + gtest.Assert(r.Val(),2) //往前移动1个元素 r.Prev() - gtest.AssertEQ(r.Val(),1) + gtest.Assert(r.Val(),1) }) } @@ -72,7 +72,7 @@ func TestRing_Link(t *testing.T) { s.Put("b") rs := r.Link(s) - gtest.AssertEQ(rs.Move(2).Val(), "b") + gtest.Assert(rs.Move(2).Val(), "b") }) } @@ -86,7 +86,7 @@ func TestRing_Unlink(t *testing.T) { // 1 2 3 4 5 // 删除当前位置往后的2个数据,返回被删除的数据 s := r.Unlink(2) // 2 3 - gtest.AssertEQ(s.Val(), 2) + gtest.Assert(s.Val(), 2) }) } @@ -99,30 +99,25 @@ func TestRing_Slice(t *testing.T) { } r.Move(2) // 3 array := r.SliceNext() // [3 4 5 1 2] - gtest.AssertEQ(array[0], 3) - gtest.AssertEQ(len(array), 5) + gtest.Assert(array[0], 3) + gtest.Assert(len(array), 5) //判断array是否等于[3 4 5 1 2] ra := []int{3,4,5,1,2} - eq := true - for i, v := range array { - if v != ra[i] { - eq = false - } - } - gtest.AssertEQ(eq, true) + gtest.Assert(ra, array) //第3个元素设为nil r.Set(nil) array2 := r.SliceNext() //[4 5 1 2] //返回当前位置往后不为空的元素数组,长度为4 - gtest.AssertEQ(len(array2), 4) + gtest.Assert(array2, g.Slice{4,5,1,2}) array3 := r.SlicePrev() //[2 1 5 4] - //数组array3第一个元素为2 - gtest.AssertEQ(array3[0], 2) - //数组长度4 - gtest.AssertEQ(len(array3), 4) + gtest.Assert(array3, g.Slice{2,1,5,4}) + + s := gring.New(ringLen) + array4 := s.SlicePrev() // [] + gtest.Assert(array4, g.Slice{}) }) } @@ -131,25 +126,35 @@ func TestRing_RLockIterator(t *testing.T) { gtest.Case(t, func() { ringLen := 5 r := gring.New(ringLen) + + //ring不存在有值元素 + r.RLockIteratorNext(func(value interface{}) bool { + gtest.Assert(r.Val(), nil) + return true + }) + + + r.RLockIteratorPrev(func(value interface{}) bool { + gtest.Assert(r.Val(), nil) + return true + }) + for i := 0; i< ringLen; i++ { r.Put(i+1) } - var i,j int + //回调函数返回true,RLockIteratorNext遍历5次 r.RLockIteratorNext(func(value interface{}) bool { - i++; + gtest.Assert(r.Val(), 1) return true }) - gtest.AssertEQ(i, 5) //RLockIteratorPrev遍历3次返回 false,退出遍历 r.RLockIteratorPrev(func(value interface{}) bool { - if j++; j < 3 { - return true - } + gtest.Assert(r.Val(), 1) return false }) - gtest.AssertEQ(j, 3) + }) } @@ -165,7 +170,7 @@ func TestRing_LockIterator(t *testing.T) { i++; return true }) - gtest.AssertEQ(i, 5) + gtest.Assert(i, 5) r.LockIteratorPrev(func(item *ring.Ring) bool { if j++; j < 3 { @@ -174,6 +179,6 @@ func TestRing_LockIterator(t *testing.T) { return false }) - gtest.AssertEQ(j, 3) + gtest.Assert(j, 3) }) } \ No newline at end of file From 4b5153950f04e8749e48db0c9975e20e010a8446 Mon Sep 17 00:00:00 2001 From: farmer chen <10946081@qq.com> Date: Tue, 9 Apr 2019 17:27:58 +0800 Subject: [PATCH 4/9] Add unit test for gring --- g/container/gring/gring_unit_test.go | 179 +++++++++++++++++++++++++++ 1 file changed, 179 insertions(+) create mode 100644 g/container/gring/gring_unit_test.go diff --git a/g/container/gring/gring_unit_test.go b/g/container/gring/gring_unit_test.go new file mode 100644 index 000000000..c80913b72 --- /dev/null +++ b/g/container/gring/gring_unit_test.go @@ -0,0 +1,179 @@ +package gring_test + +import ( + "container/ring" + "github.com/gogf/gf/g/container/gring" + "github.com/gogf/gf/g/test/gtest" + "testing" +) +type Student struct { + position int + name string + upgrade bool +} + +func TestRing_Val(t *testing.T) { + gtest.Case(t, func() { + //定义cap 为3的ring类型数据 + r := gring.New(3, true) + //分别给3个元素初始化赋值 + r.Put(&Student{1,"jimmy", true}) + r.Put(&Student{2,"tom", true}) + r.Put(&Student{3,"alon", false}) + + //元素取值并判断和预设值是否相等 + gtest.AssertEQ(r.Val().(*Student).name,"jimmy") + //从当前位置往后移两个元素 + r.Move(2) + gtest.AssertEQ(r.Val().(*Student).name,"alon") + if r.Val().(*Student).upgrade == false { + r.Val().(*Student).upgrade = true + //更新元素值 + r.Set(&Student{3, "jack", true}) + } + + + }) +} +func TestRing_CapLen(t *testing.T) { + gtest.Case(t, func() { + r := gring.New(10) + r.Put("goframe") + //cap长度 10 + gtest.AssertEQ(r.Cap(), 10) + //已有数据项 1 + gtest.AssertEQ(r.Len(), 1) + }) +} + +func TestRing_Position(t *testing.T) { + gtest.Case(t, func() { + r := gring.New(2) + r.Put(1) + r.Put(2) + //往后移动1个元素 + r.Next() + gtest.AssertEQ(r.Val(),2) + //往前移动1个元素 + r.Prev() + gtest.AssertEQ(r.Val(),1) + + }) +} + +func TestRing_Link(t *testing.T) { + gtest.Case(t, func() { + r := gring.New(3) + r.Put(1) + r.Put(2) + r.Put(3) + s := gring.New(2) + s.Put("a") + s.Put("b") + + rs := r.Link(s) + gtest.AssertEQ(rs.Move(2).Val(), "b") + + }) +} + +func TestRing_Unlink(t *testing.T) { + gtest.Case(t, func() { + r := gring.New(5) + for i := 0; i< 5; i++ { + r.Put(i+1) + } + // 1 2 3 4 5 + // 删除当前位置往后的2个数据,返回被删除的数据 + s := r.Unlink(2) // 2 3 + gtest.AssertEQ(s.Val(), 2) + }) +} + +func TestRing_Slice(t *testing.T) { + gtest.Case(t, func() { + ringLen := 5 + r := gring.New(ringLen) + for i := 0; i< ringLen; i++ { + r.Put(i+1) + } + r.Move(2) // 3 + array := r.SliceNext() // [3 4 5 1 2] + gtest.AssertEQ(array[0], 3) + gtest.AssertEQ(len(array), 5) + + //判断array是否等于[3 4 5 1 2] + ra := []int{3,4,5,1,2} + eq := true + for i, v := range array { + if v != ra[i] { + eq = false + } + } + gtest.AssertEQ(eq, true) + + //第3个元素设为nil + r.Set(nil) + array2 := r.SliceNext() //[4 5 1 2] + //返回当前位置往后不为空的元素数组,长度为4 + gtest.AssertEQ(len(array2), 4) + + array3 := r.SlicePrev() //[2 1 5 4] + //数组array3第一个元素为2 + gtest.AssertEQ(array3[0], 2) + //数组长度4 + gtest.AssertEQ(len(array3), 4) + + }) +} + +func TestRing_RLockIterator(t *testing.T) { + gtest.Case(t, func() { + ringLen := 5 + r := gring.New(ringLen) + for i := 0; i< ringLen; i++ { + r.Put(i+1) + } + var i,j int + //回调函数返回true,RLockIteratorNext遍历5次 + r.RLockIteratorNext(func(value interface{}) bool { + i++; + return true + }) + gtest.AssertEQ(i, 5) + + //RLockIteratorPrev遍历3次返回 false,退出遍历 + r.RLockIteratorPrev(func(value interface{}) bool { + if j++; j < 3 { + return true + } + return false + }) + gtest.AssertEQ(j, 3) + }) +} + +func TestRing_LockIterator(t *testing.T) { + gtest.Case(t, func() { + ringLen := 5 + r := gring.New(ringLen) + for i := 0; i< ringLen; i++ { + r.Put(i+1) + } + var i,j int + r.LockIteratorNext(func(item *ring.Ring) bool { + i++; + return true + }) + gtest.AssertEQ(i, 5) + + r.LockIteratorPrev(func(item *ring.Ring) bool { + if j++; j < 3 { + return true + } + return false + }) + + gtest.AssertEQ(j, 3) + }) +} \ No newline at end of file From 922eaf4d4232e9215d920e8f249aa502ac87ab9b Mon Sep 17 00:00:00 2001 From: aloncn <10946081@qq.com> Date: Wed, 10 Apr 2019 00:22:10 +0800 Subject: [PATCH 5/9] Update unit test for gring --- g/container/gring/gring_unit_test.go | 81 +++++++++++++++------------- 1 file changed, 43 insertions(+), 38 deletions(-) diff --git a/g/container/gring/gring_unit_test.go b/g/container/gring/gring_unit_test.go index c80913b72..214d9e3d1 100644 --- a/g/container/gring/gring_unit_test.go +++ b/g/container/gring/gring_unit_test.go @@ -2,6 +2,7 @@ package gring_test import ( "container/ring" + "github.com/gogf/gf/g" "github.com/gogf/gf/g/container/gring" "github.com/gogf/gf/g/test/gtest" "testing" @@ -22,17 +23,16 @@ func TestRing_Val(t *testing.T) { r.Put(&Student{3,"alon", false}) //元素取值并判断和预设值是否相等 - gtest.AssertEQ(r.Val().(*Student).name,"jimmy") + gtest.Assert(r.Val().(*Student).name,"jimmy") //从当前位置往后移两个元素 r.Move(2) - gtest.AssertEQ(r.Val().(*Student).name,"alon") - if r.Val().(*Student).upgrade == false { - r.Val().(*Student).upgrade = true - //更新元素值 - r.Set(&Student{3, "jack", true}) - } - - + gtest.Assert(r.Val().(*Student).name,"alon") + //更新元素值 + //测试 value == nil + r.Set(nil) + gtest.Assert(r.Val(),nil) + //测试value != nil + r.Set(&Student{3, "jack", true}) }) } func TestRing_CapLen(t *testing.T) { @@ -40,9 +40,9 @@ func TestRing_CapLen(t *testing.T) { r := gring.New(10) r.Put("goframe") //cap长度 10 - gtest.AssertEQ(r.Cap(), 10) + gtest.Assert(r.Cap(), 10) //已有数据项 1 - gtest.AssertEQ(r.Len(), 1) + gtest.Assert(r.Len(), 1) }) } @@ -53,10 +53,10 @@ func TestRing_Position(t *testing.T) { r.Put(2) //往后移动1个元素 r.Next() - gtest.AssertEQ(r.Val(),2) + gtest.Assert(r.Val(),2) //往前移动1个元素 r.Prev() - gtest.AssertEQ(r.Val(),1) + gtest.Assert(r.Val(),1) }) } @@ -72,7 +72,7 @@ func TestRing_Link(t *testing.T) { s.Put("b") rs := r.Link(s) - gtest.AssertEQ(rs.Move(2).Val(), "b") + gtest.Assert(rs.Move(2).Val(), "b") }) } @@ -86,7 +86,7 @@ func TestRing_Unlink(t *testing.T) { // 1 2 3 4 5 // 删除当前位置往后的2个数据,返回被删除的数据 s := r.Unlink(2) // 2 3 - gtest.AssertEQ(s.Val(), 2) + gtest.Assert(s.Val(), 2) }) } @@ -99,30 +99,25 @@ func TestRing_Slice(t *testing.T) { } r.Move(2) // 3 array := r.SliceNext() // [3 4 5 1 2] - gtest.AssertEQ(array[0], 3) - gtest.AssertEQ(len(array), 5) + gtest.Assert(array[0], 3) + gtest.Assert(len(array), 5) //判断array是否等于[3 4 5 1 2] ra := []int{3,4,5,1,2} - eq := true - for i, v := range array { - if v != ra[i] { - eq = false - } - } - gtest.AssertEQ(eq, true) + gtest.Assert(ra, array) //第3个元素设为nil r.Set(nil) array2 := r.SliceNext() //[4 5 1 2] //返回当前位置往后不为空的元素数组,长度为4 - gtest.AssertEQ(len(array2), 4) + gtest.Assert(array2, g.Slice{4,5,1,2}) array3 := r.SlicePrev() //[2 1 5 4] - //数组array3第一个元素为2 - gtest.AssertEQ(array3[0], 2) - //数组长度4 - gtest.AssertEQ(len(array3), 4) + gtest.Assert(array3, g.Slice{2,1,5,4}) + + s := gring.New(ringLen) + array4 := s.SlicePrev() // [] + gtest.Assert(array4, g.Slice{}) }) } @@ -131,25 +126,35 @@ func TestRing_RLockIterator(t *testing.T) { gtest.Case(t, func() { ringLen := 5 r := gring.New(ringLen) + + //ring不存在有值元素 + r.RLockIteratorNext(func(value interface{}) bool { + gtest.Assert(r.Val(), nil) + return true + }) + + + r.RLockIteratorPrev(func(value interface{}) bool { + gtest.Assert(r.Val(), nil) + return true + }) + for i := 0; i< ringLen; i++ { r.Put(i+1) } - var i,j int + //回调函数返回true,RLockIteratorNext遍历5次 r.RLockIteratorNext(func(value interface{}) bool { - i++; + gtest.Assert(r.Val(), 1) return true }) - gtest.AssertEQ(i, 5) //RLockIteratorPrev遍历3次返回 false,退出遍历 r.RLockIteratorPrev(func(value interface{}) bool { - if j++; j < 3 { - return true - } + gtest.Assert(r.Val(), 1) return false }) - gtest.AssertEQ(j, 3) + }) } @@ -165,7 +170,7 @@ func TestRing_LockIterator(t *testing.T) { i++; return true }) - gtest.AssertEQ(i, 5) + gtest.Assert(i, 5) r.LockIteratorPrev(func(item *ring.Ring) bool { if j++; j < 3 { @@ -174,6 +179,6 @@ func TestRing_LockIterator(t *testing.T) { return false }) - gtest.AssertEQ(j, 3) + gtest.Assert(j, 3) }) } \ No newline at end of file From bd0207c938ebbd756949a24bf8f240b1574a6674 Mon Sep 17 00:00:00 2001 From: aloncn <10946081@qq.com> Date: Wed, 10 Apr 2019 01:16:45 +0800 Subject: [PATCH 6/9] update unit test for gring --- g/container/gring/gring_unit_test.go | 41 ++++++++++++++++++++++------ 1 file changed, 32 insertions(+), 9 deletions(-) diff --git a/g/container/gring/gring_unit_test.go b/g/container/gring/gring_unit_test.go index 214d9e3d1..eb9eb9a7f 100644 --- a/g/container/gring/gring_unit_test.go +++ b/g/container/gring/gring_unit_test.go @@ -162,23 +162,46 @@ func TestRing_LockIterator(t *testing.T) { gtest.Case(t, func() { ringLen := 5 r := gring.New(ringLen) + + //不存在有值元素 + r.LockIteratorNext(func(item *ring.Ring) bool { + gtest.Assert(item.Value, nil) + return true + }) + + r.LockIteratorPrev(func(item *ring.Ring) bool { + gtest.Assert(item.Value, nil) + return true + }) + + //ring初始化元素值 for i := 0; i< ringLen; i++ { r.Put(i+1) } - var i,j int + + //往后遍历组成数据 [1,2,3,4,5] + array1 := g.Slice{1,2,3,4,5} + ii := 0 r.LockIteratorNext(func(item *ring.Ring) bool { + //校验每一次遍历取值是否是期望值 + gtest.Assert(item.Value, array1[ii]) + ii++; + return true + }) + + //往后取3个元素组成数组 + //获得 [1,5,4] + i := 0 + a := g.Slice{1,5,4} + r.LockIteratorPrev(func(item *ring.Ring) bool { + if i > 2 { + return false + } + gtest.Assert(item.Value, a[i]) i++; return true }) - gtest.Assert(i, 5) - r.LockIteratorPrev(func(item *ring.Ring) bool { - if j++; j < 3 { - return true - } - return false - }) - gtest.Assert(j, 3) }) } \ No newline at end of file From 230be66fa9c2a989399d1ce1975f719f53ddb3f6 Mon Sep 17 00:00:00 2001 From: aloncn <10946081@qq.com> Date: Wed, 10 Apr 2019 10:13:56 +0800 Subject: [PATCH 7/9] update unit test for gring --- g/container/gring/gring_unit_test.go | 2 ++ 1 file changed, 2 insertions(+) diff --git a/g/container/gring/gring_unit_test.go b/g/container/gring/gring_unit_test.go index eb9eb9a7f..8a17b2303 100644 --- a/g/container/gring/gring_unit_test.go +++ b/g/container/gring/gring_unit_test.go @@ -85,8 +85,10 @@ func TestRing_Unlink(t *testing.T) { } // 1 2 3 4 5 // 删除当前位置往后的2个数据,返回被删除的数据 + // 重新计算s len s := r.Unlink(2) // 2 3 gtest.Assert(s.Val(), 2) + gtest.Assert(s.Len(), 1) }) } From 8285c31bf1a974928cb2ffb057e21b783810e49f Mon Sep 17 00:00:00 2001 From: aloncn <10946081@qq.com> Date: Wed, 10 Apr 2019 10:44:40 +0800 Subject: [PATCH 8/9] Update unit test for gring --- g/container/gring/gring_unit_test.go | 24 +++++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/g/container/gring/gring_unit_test.go b/g/container/gring/gring_unit_test.go index 8a17b2303..e94588ee6 100644 --- a/g/container/gring/gring_unit_test.go +++ b/g/container/gring/gring_unit_test.go @@ -83,7 +83,7 @@ func TestRing_Unlink(t *testing.T) { for i := 0; i< 5; i++ { r.Put(i+1) } - // 1 2 3 4 5 + // 1 2 3 4 // 删除当前位置往后的2个数据,返回被删除的数据 // 重新计算s len s := r.Unlink(2) // 2 3 @@ -118,8 +118,11 @@ func TestRing_Slice(t *testing.T) { gtest.Assert(array3, g.Slice{2,1,5,4}) s := gring.New(ringLen) + for i := 0; i< ringLen; i++ { + s.Put(i+1) + } array4 := s.SlicePrev() // [] - gtest.Assert(array4, g.Slice{}) + gtest.Assert(array4, g.Slice{1,5,4,3,2}) }) } @@ -130,12 +133,15 @@ func TestRing_RLockIterator(t *testing.T) { r := gring.New(ringLen) //ring不存在有值元素 + r.RLockIteratorNext(func(value interface{}) bool { + gtest.Assert(r.Val(), nil) + return false + }) r.RLockIteratorNext(func(value interface{}) bool { gtest.Assert(r.Val(), nil) return true }) - r.RLockIteratorPrev(func(value interface{}) bool { gtest.Assert(r.Val(), nil) return true @@ -166,11 +172,23 @@ func TestRing_LockIterator(t *testing.T) { r := gring.New(ringLen) //不存在有值元素 + r.LockIteratorNext(func(item *ring.Ring) bool { + gtest.Assert(item.Value, nil) + return false + }) + r.LockIteratorNext(func(item *ring.Ring) bool { + gtest.Assert(item.Value, nil) + return false + }) r.LockIteratorNext(func(item *ring.Ring) bool { gtest.Assert(item.Value, nil) return true }) + r.LockIteratorPrev(func(item *ring.Ring) bool { + gtest.Assert(item.Value, nil) + return false + }) r.LockIteratorPrev(func(item *ring.Ring) bool { gtest.Assert(item.Value, nil) return true From ad50ca6e60aa57b633a3b207b6d62a0350f5e2e9 Mon Sep 17 00:00:00 2001 From: aloncn <10946081@qq.com> Date: Wed, 10 Apr 2019 14:26:21 +0800 Subject: [PATCH 9/9] update unit test for gring --- g/container/gring/gring_unit_test.go | 26 ++++++++++++++------------ 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/g/container/gring/gring_unit_test.go b/g/container/gring/gring_unit_test.go index e94588ee6..4f209d9df 100644 --- a/g/container/gring/gring_unit_test.go +++ b/g/container/gring/gring_unit_test.go @@ -133,17 +133,17 @@ func TestRing_RLockIterator(t *testing.T) { r := gring.New(ringLen) //ring不存在有值元素 - r.RLockIteratorNext(func(value interface{}) bool { - gtest.Assert(r.Val(), nil) + r.RLockIteratorNext(func(v interface{}) bool { + gtest.Assert(v, nil) return false }) - r.RLockIteratorNext(func(value interface{}) bool { - gtest.Assert(r.Val(), nil) + r.RLockIteratorNext(func(v interface{}) bool { + gtest.Assert(v, nil) return true }) - r.RLockIteratorPrev(func(value interface{}) bool { - gtest.Assert(r.Val(), nil) + r.RLockIteratorPrev(func(v interface{}) bool { + gtest.Assert(v, nil) return true }) @@ -151,15 +151,17 @@ func TestRing_RLockIterator(t *testing.T) { r.Put(i+1) } - //回调函数返回true,RLockIteratorNext遍历5次 - r.RLockIteratorNext(func(value interface{}) bool { - gtest.Assert(r.Val(), 1) + //回调函数返回true,RLockIteratorNext遍历5次,期望值分别是1、2、3、4、5 + i := 0 + r.RLockIteratorNext(func(v interface{}) bool { + gtest.Assert(v, i+1) + i++; return true }) - //RLockIteratorPrev遍历3次返回 false,退出遍历 - r.RLockIteratorPrev(func(value interface{}) bool { - gtest.Assert(r.Val(), 1) + //RLockIteratorPrev遍历1次返回 false,退出遍历 + r.RLockIteratorPrev(func(v interface{}) bool { + gtest.Assert(v, 1) return false })