diff --git a/g/container/garray/garray_z_unit_int_test.go b/g/container/garray/garray_z_unit_int_test.go index aba95f5c8..6d7e53377 100644 --- a/g/container/garray/garray_z_unit_int_test.go +++ b/g/container/garray/garray_z_unit_int_test.go @@ -170,9 +170,16 @@ func TestIntArray_Rand(t *testing.T) { func TestIntArray_PopRands(t *testing.T) { gtest.Case(t, func() { - a1 := []interface{}{100, 200, 300, 400, 500, 600} - array := garray.NewFromCopy(a1) - gtest.AssertIN(array.PopRands(2), a1) + a1 := []int{100, 200, 300, 400, 500, 600} + array := garray.NewIntArrayFrom(a1) + ns1 := array.PopRands(2) + gtest.AssertIN(ns1, []int{100, 200, 300, 400, 500, 600}) + gtest.AssertIN(len(ns1), 2) + + ns2 := array.PopRands(7) + gtest.AssertIN(len(ns2), 6) + gtest.AssertIN(ns2, []int{100, 200, 300, 400, 500, 600}) + }) } @@ -212,8 +219,7 @@ func TestNewSortedIntArrayFromCopy(t *testing.T) { gtest.Case(t, func() { a1 := []int{0, 5, 2, 1, 4, 3, 6} array1 := garray.NewSortedIntArrayFromCopy(a1, false) - //@todo - gtest.Assert(array1.Join("."), "0.5.2.1.4.3.6") + gtest.Assert(array1.Join("."), "0.1.2.3.4.5.6") }) } @@ -268,17 +274,19 @@ func TestSortedIntArray_Remove(t *testing.T) { gtest.Assert(i2, 0) gtest.Assert(array1.Search(5), 1) - a2 := []int{1, 3} + a2 := []int{1, 3, 4} array2 := garray.NewSortedIntArrayFrom(a2) i3 := array2.Remove(1) gtest.Assert(array2.Search(1), 0) - gtest.Assert(i3, 3) + i3 = array2.Remove(1) + gtest.Assert(array2.Search(4), -1) + gtest.Assert(i3, 4) }) } -func TestSortedArray_PopLeft(t *testing.T) { +func TestSortedIntArray_PopLeft(t *testing.T) { gtest.Case(t, func() { a1 := []int{1, 3, 5, 2} array1 := garray.NewSortedIntArrayFrom(a1) @@ -290,7 +298,7 @@ func TestSortedArray_PopLeft(t *testing.T) { }) } -func TestSortedArray_PopRight(t *testing.T) { +func TestSortedIntArray_PopRight(t *testing.T) { gtest.Case(t, func() { a1 := []int{1, 3, 5, 2} array1 := garray.NewSortedIntArrayFrom(a1) @@ -301,7 +309,7 @@ func TestSortedArray_PopRight(t *testing.T) { }) } -func TestSortedArray_PopRand(t *testing.T) { +func TestSortedIntArray_PopRand(t *testing.T) { gtest.Case(t, func() { a1 := []int{1, 3, 5, 2} array1 := garray.NewSortedIntArrayFrom(a1) @@ -312,7 +320,7 @@ func TestSortedArray_PopRand(t *testing.T) { }) } -func TestSortedArray_PopRands(t *testing.T) { +func TestSortedIntArray_PopRands(t *testing.T) { gtest.Case(t, func() { a1 := []int{1, 3, 5, 2} array1 := garray.NewSortedIntArrayFrom(a1) @@ -330,7 +338,7 @@ func TestSortedArray_PopRands(t *testing.T) { }) } -func TestSortedArray_PopLefts(t *testing.T) { +func TestSortedIntArray_PopLefts(t *testing.T) { gtest.Case(t, func() { a1 := []int{1, 3, 5, 2} array1 := garray.NewSortedIntArrayFrom(a1) @@ -347,7 +355,7 @@ func TestSortedArray_PopLefts(t *testing.T) { }) } -func TestSortedArray_PopRights(t *testing.T) { +func TestSortedIntArray_PopRights(t *testing.T) { gtest.Case(t, func() { a1 := []int{1, 3, 5, 2} array1 := garray.NewSortedIntArrayFrom(a1) @@ -363,7 +371,7 @@ func TestSortedArray_PopRights(t *testing.T) { }) } -func TestSortedArray_Range(t *testing.T) { +func TestSortedIntArray_Range(t *testing.T) { gtest.Case(t, func() { a1 := []int{1, 3, 5, 2, 6, 7} array1 := garray.NewSortedIntArrayFrom(a1) @@ -383,7 +391,7 @@ func TestSortedArray_Range(t *testing.T) { }) } -func TestSortedArray_Sum(t *testing.T) { +func TestSortedIntArray_Sum(t *testing.T) { gtest.Case(t, func() { a1 := []int{1, 3, 5} array1 := garray.NewSortedIntArrayFrom(a1) @@ -412,83 +420,191 @@ func TestSortedIntArray_Clone(t *testing.T) { } func TestSortedIntArray_Clear(t *testing.T) { - gtest.Case(t, func() { - a1 := []int{1, 3, 5} - array1 := garray.NewSortedIntArrayFrom(a1) - array1.Clear() - gtest.Assert(array1.Len(), 0) + gtest.Case(t, func() { + a1 := []int{1, 3, 5} + array1 := garray.NewSortedIntArrayFrom(a1) + array1.Clear() + gtest.Assert(array1.Len(), 0) - }) + }) } func TestSortedIntArray_Chunk(t *testing.T) { - gtest.Case(t, func() { - a1 := []int{1,2, 3,4, 5} - array1 := garray.NewSortedIntArrayFrom(a1) - ns1:=array1.Chunk(2) //按每几个元素切成一个数组 - ns2:=array1.Chunk(-1) - t.Log(ns1) - gtest.Assert(len(ns1), 3) - gtest.Assert(ns1[0], []int{1,2}) - gtest.Assert(ns1[2], []int{5}) - gtest.Assert(len(ns2), 0) + gtest.Case(t, func() { + a1 := []int{1, 2, 3, 4, 5} + array1 := garray.NewSortedIntArrayFrom(a1) + ns1 := array1.Chunk(2) //按每几个元素切成一个数组 + ns2 := array1.Chunk(-1) + t.Log(ns1) + gtest.Assert(len(ns1), 3) + gtest.Assert(ns1[0], []int{1, 2}) + gtest.Assert(ns1[2], []int{5}) + gtest.Assert(len(ns2), 0) - }) + }) } func TestSortedIntArray_SubSlice(t *testing.T) { - gtest.Case(t, func() { - a1 := []int{1,2, 3,4, 5} - array1 := garray.NewSortedIntArrayFrom(a1) - ns1:=array1.SubSlice(1,2) - gtest.Assert(len(ns1), 2) - gtest.Assert(ns1,[]int{2,3}) + gtest.Case(t, func() { + a1 := []int{1, 2, 3, 4, 5} + array1 := garray.NewSortedIntArrayFrom(a1) + ns1 := array1.SubSlice(1, 2) + gtest.Assert(len(ns1), 2) + gtest.Assert(ns1, []int{2, 3}) - ns2:=array1.SubSlice(7,2) - gtest.Assert(len(ns2), 0) + ns2 := array1.SubSlice(7, 2) + gtest.Assert(len(ns2), 0) - ns3:=array1.SubSlice(3,5) - gtest.Assert(len(ns3), 2) - gtest.Assert(ns3,[]int{4,5}) + ns3 := array1.SubSlice(3, 5) + gtest.Assert(len(ns3), 2) + gtest.Assert(ns3, []int{4, 5}) - ns4:=array1.SubSlice(3,1) - gtest.Assert(len(ns4), 1) - gtest.Assert(ns4,[]int{4}) - }) + ns4 := array1.SubSlice(3, 1) + gtest.Assert(len(ns4), 1) + gtest.Assert(ns4, []int{4}) + }) } func TestSortedIntArray_Rand(t *testing.T) { - gtest.Case(t, func() { - a1 := []int{1,2, 3,4, 5} - array1 := garray.NewSortedIntArrayFrom(a1) - ns1:=array1.Rand() //按每几个元素切成一个数组 - gtest.AssertIN(ns1,a1) - }) + gtest.Case(t, func() { + a1 := []int{1, 2, 3, 4, 5} + array1 := garray.NewSortedIntArrayFrom(a1) + ns1 := array1.Rand() //按每几个元素切成一个数组 + gtest.AssertIN(ns1, a1) + }) } func TestSortedIntArray_Rands(t *testing.T) { - gtest.Case(t, func() { - a1 := []int{1,2, 3,4, 5} - array1 := garray.NewSortedIntArrayFrom(a1) - ns1:=array1.Rands(2) //按每几个元素切成一个数组 - gtest.AssertIN(ns1,a1) - gtest.Assert(len(ns1),2) + gtest.Case(t, func() { + a1 := []int{1, 2, 3, 4, 5} + array1 := garray.NewSortedIntArrayFrom(a1) + ns1 := array1.Rands(2) //按每几个元素切成一个数组 + gtest.AssertIN(ns1, a1) + gtest.Assert(len(ns1), 2) - ns2:=array1.Rands(6) //按每几个元素切成一个数组 - gtest.AssertIN(ns2,a1) - gtest.Assert(len(ns2),5) - }) + ns2 := array1.Rands(6) //按每几个元素切成一个数组 + gtest.AssertIN(ns2, a1) + gtest.Assert(len(ns2), 5) + }) } func TestSortedIntArray_CountValues(t *testing.T) { - gtest.Case(t, func() { - a1 := []int{1,2, 3,4, 5,3} - array1 := garray.NewSortedIntArrayFrom(a1) - ns1:=array1.CountValues() //按每几个元素切成一个数组 - gtest.Assert(len(ns1),5) - gtest.Assert(ns1[2],1) - gtest.Assert(ns1[3],2) - }) + gtest.Case(t, func() { + a1 := []int{1, 2, 3, 4, 5, 3} + array1 := garray.NewSortedIntArrayFrom(a1) + ns1 := array1.CountValues() //按每几个元素切成一个数组 + gtest.Assert(len(ns1), 5) + gtest.Assert(ns1[2], 1) + gtest.Assert(ns1[3], 2) + }) } +func TestSortedIntArray_SetUnique(t *testing.T) { + gtest.Case(t, func() { + a1 := []int{1, 2, 3, 4, 5, 3} + array1 := garray.NewSortedIntArrayFrom(a1) + array1.SetUnique(true) + gtest.Assert(array1.Len(), 5) + gtest.Assert(array1, []int{1, 2, 3, 4, 5}) + }) +} + +func TestIntArray_SetArray(t *testing.T) { + gtest.Case(t, func() { + a1 := []int{1, 2, 3, 5} + a2 := []int{6, 7} + array1 := garray.NewIntArrayFrom(a1) + array1.SetArray(a2) + gtest.Assert(array1.Len(), 2) + gtest.Assert(array1, []int{6, 7}) + + }) +} + +func TestIntArray_Replace(t *testing.T) { + gtest.Case(t, func() { + a1 := []int{1, 2, 3, 5} + a2 := []int{6, 7} + a3 := []int{9, 10, 11, 12, 13} + array1 := garray.NewIntArrayFrom(a1) + array1.Replace(a2) + gtest.Assert(array1, []int{6, 7, 3, 5}) + + array1.Replace(a3) + gtest.Assert(array1, []int{9, 10, 11, 12}) + }) +} + +func TestIntArray_Clear(t *testing.T) { + gtest.Case(t, func() { + a1 := []int{1, 2, 3, 5} + array1 := garray.NewIntArrayFrom(a1) + array1.Clear() + gtest.Assert(array1.Len(), 0) + }) +} + +func TestIntArray_Clone(t *testing.T) { + gtest.Case(t, func() { + a1 := []int{1, 2, 3, 5} + array1 := garray.NewIntArrayFrom(a1) + array2 := array1.Clone() + gtest.Assert(array1, array2) + }) +} + +func TestArray_Get(t *testing.T) { + gtest.Case(t, func() { + a1 := []int{1, 2, 3, 5} + array1 := garray.NewIntArrayFrom(a1) + gtest.Assert(array1.Get(2), 3) + gtest.Assert(array1.Len(), 4) + }) +} + +func TestIntArray_Sum(t *testing.T) { + gtest.Case(t, func() { + a1 := []int{1, 2, 3, 5} + array1 := garray.NewIntArrayFrom(a1) + gtest.Assert(array1.Sum(), 11) + }) +} + +func TestIntArray_CountValues(t *testing.T) { + gtest.Case(t, func() { + a1 := []int{1, 2, 3, 5, 3} + array1 := garray.NewIntArrayFrom(a1) + m1 := array1.CountValues() + gtest.Assert(len(m1), 4) + gtest.Assert(m1[1], 1) + gtest.Assert(m1[3], 2) + }) +} + +func TestNewIntArrayFromCopy(t *testing.T) { + gtest.Case(t, func() { + a1 := []int{1, 2, 3, 5, 3} + array1 := garray.NewIntArrayFromCopy(a1) + gtest.Assert(array1.Len(), 5) + gtest.Assert(array1, a1) + }) +} + +func TestIntArray_Remove(t *testing.T) { + gtest.Case(t, func() { + a1 := []int{1, 2, 3, 5, 4} + array1 := garray.NewIntArrayFrom(a1) + n1 := array1.Remove(1) + gtest.Assert(n1, 2) + gtest.Assert(array1.Len(), 4) + + n1 = array1.Remove(0) + gtest.Assert(n1, 1) + gtest.Assert(array1.Len(), 3) + + n1 = array1.Remove(2) + gtest.Assert(n1, 4) + gtest.Assert(array1.Len(), 2) + }) +} diff --git a/g/container/garray/garray_z_unit_interface_test.go b/g/container/garray/garray_z_unit_interface_test.go index 9dbce416c..90ed36d6b 100644 --- a/g/container/garray/garray_z_unit_interface_test.go +++ b/g/container/garray/garray_z_unit_interface_test.go @@ -9,272 +9,670 @@ package garray_test import ( - "github.com/gogf/gf/g/container/garray" - "github.com/gogf/gf/g/test/gtest" - "testing" + "github.com/gogf/gf/g/container/garray" + "github.com/gogf/gf/g/test/gtest" + "github.com/gogf/gf/g/util/gconv" + "strings" + "testing" ) func Test_Array_Basic(t *testing.T) { - gtest.Case(t, func() { - expect := []interface{}{0, 1, 2, 3} - array := garray.NewArrayFrom(expect) - gtest.Assert(array.Slice(), expect) - array.Set(0, 100) - gtest.Assert(array.Get(0), 100) - gtest.Assert(array.Get(1), 1) - gtest.Assert(array.Search(100), 0) - gtest.Assert(array.Contains(100), true) - gtest.Assert(array.Remove(0), 100) - gtest.Assert(array.Contains(100), false) - array.Append(4) - gtest.Assert(array.Len(), 4) - array.InsertBefore(0, 100) - array.InsertAfter(0, 200) - gtest.Assert(array.Slice(), []interface{}{100, 200, 1, 2, 3, 4}) - array.InsertBefore(5, 300) - array.InsertAfter(6, 400) - gtest.Assert(array.Slice(), []interface{}{100, 200, 1, 2, 3, 300, 4, 400}) - gtest.Assert(array.Clear().Len(), 0) - }) + gtest.Case(t, func() { + expect := []interface{}{0, 1, 2, 3} + array := garray.NewArrayFrom(expect) + gtest.Assert(array.Slice(), expect) + array.Set(0, 100) + gtest.Assert(array.Get(0), 100) + gtest.Assert(array.Get(1), 1) + gtest.Assert(array.Search(100), 0) + gtest.Assert(array.Contains(100), true) + gtest.Assert(array.Remove(0), 100) + gtest.Assert(array.Contains(100), false) + array.Append(4) + gtest.Assert(array.Len(), 4) + array.InsertBefore(0, 100) + array.InsertAfter(0, 200) + gtest.Assert(array.Slice(), []interface{}{100, 200, 1, 2, 3, 4}) + array.InsertBefore(5, 300) + array.InsertAfter(6, 400) + gtest.Assert(array.Slice(), []interface{}{100, 200, 1, 2, 3, 300, 4, 400}) + gtest.Assert(array.Clear().Len(), 0) + }) } func TestArray_Sort(t *testing.T) { - gtest.Case(t, func() { - expect1 := []interface{}{0, 1, 2, 3} - expect2 := []interface{}{3, 2, 1, 0} - array := garray.NewArray() - for i := 3; i >= 0; i-- { - array.Append(i) - } - array.SortFunc(func(v1, v2 interface{}) bool { - return v1.(int) < v2.(int) - }) - gtest.Assert(array.Slice(), expect1) - array.SortFunc(func(v1, v2 interface{}) bool { - return v1.(int) > v2.(int) - }) - gtest.Assert(array.Slice(), expect2) - }) + gtest.Case(t, func() { + expect1 := []interface{}{0, 1, 2, 3} + expect2 := []interface{}{3, 2, 1, 0} + array := garray.NewArray() + for i := 3; i >= 0; i-- { + array.Append(i) + } + array.SortFunc(func(v1, v2 interface{}) bool { + return v1.(int) < v2.(int) + }) + gtest.Assert(array.Slice(), expect1) + array.SortFunc(func(v1, v2 interface{}) bool { + return v1.(int) > v2.(int) + }) + gtest.Assert(array.Slice(), expect2) + }) } func TestArray_Unique(t *testing.T) { - gtest.Case(t, func() { - expect := []interface{}{1, 1, 2, 3} - array := garray.NewArrayFrom(expect) - gtest.Assert(array.Unique().Slice(), []interface{}{1, 2, 3}) - }) + gtest.Case(t, func() { + expect := []interface{}{1, 1, 2, 3} + array := garray.NewArrayFrom(expect) + gtest.Assert(array.Unique().Slice(), []interface{}{1, 2, 3}) + }) } func TestArray_PushAndPop(t *testing.T) { - gtest.Case(t, func() { - expect := []interface{}{0, 1, 2, 3} - array := garray.NewArrayFrom(expect) - gtest.Assert(array.Slice(), expect) - gtest.Assert(array.PopLeft(), 0) - gtest.Assert(array.PopRight(), 3) - gtest.AssertIN(array.PopRand(), []interface{}{1, 2}) - gtest.AssertIN(array.PopRand(), []interface{}{1, 2}) - gtest.Assert(array.Len(), 0) - array.PushLeft(1).PushRight(2) - gtest.Assert(array.Slice(), []interface{}{1, 2}) - }) + gtest.Case(t, func() { + expect := []interface{}{0, 1, 2, 3} + array := garray.NewArrayFrom(expect) + gtest.Assert(array.Slice(), expect) + gtest.Assert(array.PopLeft(), 0) + gtest.Assert(array.PopRight(), 3) + gtest.AssertIN(array.PopRand(), []interface{}{1, 2}) + gtest.AssertIN(array.PopRand(), []interface{}{1, 2}) + gtest.Assert(array.Len(), 0) + array.PushLeft(1).PushRight(2) + gtest.Assert(array.Slice(), []interface{}{1, 2}) + }) } func TestArray_PopRands(t *testing.T) { - gtest.Case(t, func() { - a1 := []interface{}{100, 200, 300, 400, 500, 600} - array := garray.NewFromCopy(a1) - gtest.AssertIN(array.PopRands(2), a1) - }) + gtest.Case(t, func() { + a1 := []interface{}{100, 200, 300, 400, 500, 600} + array := garray.NewFromCopy(a1) + gtest.AssertIN(array.PopRands(2), a1) + }) } func TestArray_PopLeftsAndPopRights(t *testing.T) { - gtest.Case(t, func() { - value1 := []interface{}{0,1,2,3,4,5,6} - value2 := []interface{}{0,1,2,3,4,5,6} - array1 := garray.NewArrayFrom(value1) - array2 := garray.NewArrayFrom(value2) - gtest.Assert(array1.PopLefts(2), []interface{}{0,1}) - gtest.Assert(array1.Slice(), []interface{}{2,3,4,5,6}) - gtest.Assert(array1.PopRights(2), []interface{}{5,6}) - gtest.Assert(array1.Slice(), []interface{}{2,3,4}) - gtest.Assert(array1.PopRights(20), []interface{}{2,3,4}) - gtest.Assert(array1.Slice(), []interface{}{}) - gtest.Assert(array2.PopLefts(20), []interface{}{0,1,2,3,4,5,6}) - gtest.Assert(array2.Slice(), []interface{}{}) - }) + gtest.Case(t, func() { + value1 := []interface{}{0, 1, 2, 3, 4, 5, 6} + value2 := []interface{}{0, 1, 2, 3, 4, 5, 6} + array1 := garray.NewArrayFrom(value1) + array2 := garray.NewArrayFrom(value2) + gtest.Assert(array1.PopLefts(2), []interface{}{0, 1}) + gtest.Assert(array1.Slice(), []interface{}{2, 3, 4, 5, 6}) + gtest.Assert(array1.PopRights(2), []interface{}{5, 6}) + gtest.Assert(array1.Slice(), []interface{}{2, 3, 4}) + gtest.Assert(array1.PopRights(20), []interface{}{2, 3, 4}) + gtest.Assert(array1.Slice(), []interface{}{}) + gtest.Assert(array2.PopLefts(20), []interface{}{0, 1, 2, 3, 4, 5, 6}) + gtest.Assert(array2.Slice(), []interface{}{}) + }) } func TestArray_Range(t *testing.T) { - gtest.Case(t, func() { - value1 := []interface{}{0,1,2,3,4,5,6} - array1 := garray.NewArrayFrom(value1) - gtest.Assert(array1.Range(0, 1), []interface{}{0}) - gtest.Assert(array1.Range(1, 2), []interface{}{1}) - gtest.Assert(array1.Range(0, 2), []interface{}{0, 1}) - gtest.Assert(array1.Range(-1, 10), value1) - }) + gtest.Case(t, func() { + value1 := []interface{}{0, 1, 2, 3, 4, 5, 6} + array1 := garray.NewArrayFrom(value1) + gtest.Assert(array1.Range(0, 1), []interface{}{0}) + gtest.Assert(array1.Range(1, 2), []interface{}{1}) + gtest.Assert(array1.Range(0, 2), []interface{}{0, 1}) + gtest.Assert(array1.Range(-1, 10), value1) + }) } func TestArray_Merge(t *testing.T) { - gtest.Case(t, func() { - a1 := []interface{}{0, 1, 2, 3} - a2 := []interface{}{4, 5, 6, 7} - array1 := garray.NewArrayFrom(a1) - array2 := garray.NewArrayFrom(a2) - gtest.Assert(array1.Merge(array2).Slice(), []interface{}{0,1,2,3,4,5,6,7}) - }) + gtest.Case(t, func() { + a1 := []interface{}{0, 1, 2, 3} + a2 := []interface{}{4, 5, 6, 7} + array1 := garray.NewArrayFrom(a1) + array2 := garray.NewArrayFrom(a2) + gtest.Assert(array1.Merge(array2).Slice(), []interface{}{0, 1, 2, 3, 4, 5, 6, 7}) + }) } func TestArray_Fill(t *testing.T) { - gtest.Case(t, func() { - a1 := []interface{}{0} - a2 := []interface{}{0} - array1 := garray.NewArrayFrom(a1) - array2 := garray.NewArrayFrom(a2) - gtest.Assert(array1.Fill(1, 2, 100).Slice(), []interface{}{0,100,100}) - gtest.Assert(array2.Fill(0, 2, 100).Slice(), []interface{}{100,100}) - }) + gtest.Case(t, func() { + a1 := []interface{}{0} + a2 := []interface{}{0} + array1 := garray.NewArrayFrom(a1) + array2 := garray.NewArrayFrom(a2) + gtest.Assert(array1.Fill(1, 2, 100).Slice(), []interface{}{0, 100, 100}) + gtest.Assert(array2.Fill(0, 2, 100).Slice(), []interface{}{100, 100}) + }) } func TestArray_Chunk(t *testing.T) { - gtest.Case(t, func() { - a1 := []interface{}{1,2,3,4,5} - array1 := garray.NewArrayFrom(a1) - chunks := array1.Chunk(2) - gtest.Assert(len(chunks), 3) - gtest.Assert(chunks[0], []interface{}{1,2}) - gtest.Assert(chunks[1], []interface{}{3,4}) - gtest.Assert(chunks[2], []interface{}{5}) - }) + gtest.Case(t, func() { + a1 := []interface{}{1, 2, 3, 4, 5} + array1 := garray.NewArrayFrom(a1) + chunks := array1.Chunk(2) + gtest.Assert(len(chunks), 3) + gtest.Assert(chunks[0], []interface{}{1, 2}) + gtest.Assert(chunks[1], []interface{}{3, 4}) + gtest.Assert(chunks[2], []interface{}{5}) + }) } func TestArray_Pad(t *testing.T) { - gtest.Case(t, func() { - a1 := []interface{}{0} - array1 := garray.NewArrayFrom(a1) - gtest.Assert(array1.Pad(3, 1).Slice(), []interface{}{0,1,1}) - gtest.Assert(array1.Pad(-4, 1).Slice(), []interface{}{1,0,1,1}) - gtest.Assert(array1.Pad(3, 1).Slice(), []interface{}{1,0,1,1}) - }) + gtest.Case(t, func() { + a1 := []interface{}{0} + array1 := garray.NewArrayFrom(a1) + gtest.Assert(array1.Pad(3, 1).Slice(), []interface{}{0, 1, 1}) + gtest.Assert(array1.Pad(-4, 1).Slice(), []interface{}{1, 0, 1, 1}) + gtest.Assert(array1.Pad(3, 1).Slice(), []interface{}{1, 0, 1, 1}) + }) } func TestArray_SubSlice(t *testing.T) { - gtest.Case(t, func() { - a1 := []interface{}{0,1,2,3,4,5,6} - array1 := garray.NewArrayFrom(a1) - gtest.Assert(array1.SubSlice(0, 2), []interface{}{0,1}) - gtest.Assert(array1.SubSlice(2, 2), []interface{}{2,3}) - gtest.Assert(array1.SubSlice(5, 8), []interface{}{5,6}) - }) + gtest.Case(t, func() { + a1 := []interface{}{0, 1, 2, 3, 4, 5, 6} + array1 := garray.NewArrayFrom(a1) + gtest.Assert(array1.SubSlice(0, 2), []interface{}{0, 1}) + gtest.Assert(array1.SubSlice(2, 2), []interface{}{2, 3}) + gtest.Assert(array1.SubSlice(5, 8), []interface{}{5, 6}) + }) } func TestArray_Rand(t *testing.T) { - gtest.Case(t, func() { - a1 := []interface{}{0,1,2,3,4,5,6} - array1 := garray.NewArrayFrom(a1) - gtest.Assert(len(array1.Rands(2)), 2) - gtest.Assert(len(array1.Rands(10)), 7) - gtest.AssertIN(array1.Rands(1)[0], a1) - }) + gtest.Case(t, func() { + a1 := []interface{}{0, 1, 2, 3, 4, 5, 6} + array1 := garray.NewArrayFrom(a1) + gtest.Assert(len(array1.Rands(2)), 2) + gtest.Assert(len(array1.Rands(10)), 7) + gtest.AssertIN(array1.Rands(1)[0], a1) + }) } func TestArray_Shuffle(t *testing.T) { - gtest.Case(t, func() { - a1 := []interface{}{0,1,2,3,4,5,6} - array1 := garray.NewArrayFrom(a1) - gtest.Assert(array1.Shuffle().Len(), 7) - }) + gtest.Case(t, func() { + a1 := []interface{}{0, 1, 2, 3, 4, 5, 6} + array1 := garray.NewArrayFrom(a1) + gtest.Assert(array1.Shuffle().Len(), 7) + }) } func TestArray_Reverse(t *testing.T) { - gtest.Case(t, func() { - a1 := []interface{}{0,1,2,3,4,5,6} - array1 := garray.NewArrayFrom(a1) - gtest.Assert(array1.Reverse().Slice(), []interface{}{6,5,4,3,2,1,0}) - }) + gtest.Case(t, func() { + a1 := []interface{}{0, 1, 2, 3, 4, 5, 6} + array1 := garray.NewArrayFrom(a1) + gtest.Assert(array1.Reverse().Slice(), []interface{}{6, 5, 4, 3, 2, 1, 0}) + }) } func TestArray_Join(t *testing.T) { - gtest.Case(t, func() { - a1 := []interface{}{0,1,2,3,4,5,6} - array1 := garray.NewArrayFrom(a1) - gtest.Assert(array1.Join("."), "0.1.2.3.4.5.6") - }) + gtest.Case(t, func() { + a1 := []interface{}{0, 1, 2, 3, 4, 5, 6} + array1 := garray.NewArrayFrom(a1) + gtest.Assert(array1.Join("."), "0.1.2.3.4.5.6") + }) } func TestArray_Replace(t *testing.T) { - gtest.Case(t, func() { - a1 := []interface{}{0,1,2,3,4,5,6} - a2 := []interface{}{"a","b","c"} - a3 := []interface{}{"m","n","p","z","x","y","d","u"} - array1 := garray.NewArrayFrom(a1) - array2:=array1.Replace(a2) - gtest.Assert(array2.Len(), 7) - gtest.Assert(array2.Contains("b"),true) - gtest.Assert(array2.Contains(4),true) - gtest.Assert(array2.Contains("v"),false) - array3:=array1.Replace(a3) - gtest.Assert(array3.Len(), 7) - gtest.Assert(array3.Contains(4),false) - gtest.Assert(array3.Contains("p"),true) - gtest.Assert(array3.Contains("u"),false) - }) + gtest.Case(t, func() { + a1 := []interface{}{0, 1, 2, 3, 4, 5, 6} + a2 := []interface{}{"a", "b", "c"} + a3 := []interface{}{"m", "n", "p", "z", "x", "y", "d", "u"} + array1 := garray.NewArrayFrom(a1) + array2 := array1.Replace(a2) + gtest.Assert(array2.Len(), 7) + gtest.Assert(array2.Contains("b"), true) + gtest.Assert(array2.Contains(4), true) + gtest.Assert(array2.Contains("v"), false) + array3 := array1.Replace(a3) + gtest.Assert(array3.Len(), 7) + gtest.Assert(array3.Contains(4), false) + gtest.Assert(array3.Contains("p"), true) + gtest.Assert(array3.Contains("u"), false) + }) } func TestArray_SetArray(t *testing.T) { - gtest.Case(t, func() { - a1 := []interface{}{0,1,2,3,4,5,6} - a2 := []interface{}{"a","b","c"} + gtest.Case(t, func() { + a1 := []interface{}{0, 1, 2, 3, 4, 5, 6} + a2 := []interface{}{"a", "b", "c"} - array1 := garray.NewArrayFrom(a1) - array1=array1.SetArray(a2) - gtest.Assert(array1.Len(), 3) - gtest.Assert(array1.Contains("b"), true) - gtest.Assert(array1.Contains("5"), false) - }) + array1 := garray.NewArrayFrom(a1) + array1 = array1.SetArray(a2) + gtest.Assert(array1.Len(), 3) + gtest.Assert(array1.Contains("b"), true) + gtest.Assert(array1.Contains("5"), false) + }) } func TestArray_Sum(t *testing.T) { - gtest.Case(t, func() { - a1 := []interface{}{0,1,2,3} - a2 := []interface{}{"a","b","c"} - a3 := []interface{}{"a","1","2"} + gtest.Case(t, func() { + a1 := []interface{}{0, 1, 2, 3} + a2 := []interface{}{"a", "b", "c"} + a3 := []interface{}{"a", "1", "2"} - array1 := garray.NewArrayFrom(a1) - array2 := garray.NewArrayFrom(a2) - array3 := garray.NewArrayFrom(a3) + array1 := garray.NewArrayFrom(a1) + array2 := garray.NewArrayFrom(a2) + array3 := garray.NewArrayFrom(a3) - gtest.Assert(array1.Sum(), 6) - gtest.Assert(array2.Sum(), 0) - gtest.Assert(array3.Sum(), 3) + gtest.Assert(array1.Sum(), 6) + gtest.Assert(array2.Sum(), 0) + gtest.Assert(array3.Sum(), 3) - }) + }) } func TestArray_Clone(t *testing.T) { - gtest.Case(t, func() { - a1 := []interface{}{0,1,2,3} + gtest.Case(t, func() { + a1 := []interface{}{0, 1, 2, 3} + array1 := garray.NewArrayFrom(a1) + array2 := array1.Clone() + gtest.Assert(array1.Len(), 4) + gtest.Assert(array2.Sum(), 6) + gtest.AssertEQ(array1, array2) - array1 := garray.NewArrayFrom(a1) - array2:=array1.Clone() - - gtest.Assert(array1.Len(), 4) - gtest.Assert(array2.Sum(), 6) - gtest.AssertEQ(array1, array2) - - - }) + }) } func TestArray_CountValues(t *testing.T) { - gtest.Case(t, func() { - a1 := []interface{}{"a","b","c","d","e","d"} - array1 := garray.NewArrayFrom(a1) - array2:=array1.CountValues() - gtest.Assert(len(array2),5) - gtest.Assert(array2["b"], 1) - gtest.Assert(array2["d"], 2) - }) -} \ No newline at end of file + gtest.Case(t, func() { + a1 := []interface{}{"a", "b", "c", "d", "e", "d"} + array1 := garray.NewArrayFrom(a1) + array2 := array1.CountValues() + gtest.Assert(len(array2), 5) + gtest.Assert(array2["b"], 1) + gtest.Assert(array2["d"], 2) + }) +} + +func TestSortedArray_NewSortedArrayFrom(t *testing.T) { + gtest.Case(t, func() { + a1 := []interface{}{"a", "f", "c"} + a2 := []interface{}{"h", "j", "i", "k"} + func1 := func(v1, v2 interface{}) int { + return strings.Compare(gconv.String(v1), gconv.String(v2)) + } + func2 := func(v1, v2 interface{}) int { + return -1 + } + array1 := garray.NewSortedArrayFrom(a1, func1) + array2 := garray.NewSortedArrayFrom(a2, func2) + + gtest.Assert(array1.Len(), 3) + gtest.Assert(array1, []interface{}{"a", "c", "f"}) + + gtest.Assert(array2.Len(), 4) + gtest.Assert(array2, []interface{}{"k", "i", "j", "h"}) + }) +} + +func TestNewSortedArrayFromCopy(t *testing.T) { + gtest.Case(t, func() { + a1 := []interface{}{"a", "f", "c"} + + func1 := func(v1, v2 interface{}) int { + return strings.Compare(gconv.String(v1), gconv.String(v2)) + } + func2 := func(v1, v2 interface{}) int { + return -1 + } + array1 := garray.NewSortedArrayFromCopy(a1, func1) + array2 := garray.NewSortedArrayFromCopy(a1, func2) + gtest.Assert(array1.Len(), 3) + gtest.Assert(array1, []interface{}{"a", "c", "f"}) + gtest.Assert(array1.Len(), 3) + gtest.Assert(array2, []interface{}{"c", "f", "a"}) + }) +} + +func TestSortedArray_SetArray(t *testing.T) { + gtest.Case(t, func() { + a1 := []interface{}{"a", "f", "c"} + a2 := []interface{}{"e", "h", "g", "k"} + + func1 := func(v1, v2 interface{}) int { + return strings.Compare(gconv.String(v1), gconv.String(v2)) + } + + array1 := garray.NewSortedArrayFrom(a1, func1) + array1.SetArray(a2) + gtest.Assert(array1.Len(), 4) + gtest.Assert(array1, []interface{}{"e", "g", "h", "k"}) + }) + +} + +func TestSortedArray_Sort(t *testing.T) { + gtest.Case(t, func() { + a1 := []interface{}{"a", "f", "c"} + func1 := func(v1, v2 interface{}) int { + return strings.Compare(gconv.String(v1), gconv.String(v2)) + } + array1 := garray.NewSortedArrayFrom(a1, func1) + array1.Sort() + gtest.Assert(array1.Len(), 3) + gtest.Assert(array1, []interface{}{"a", "c", "f"}) + }) + +} + +func TestSortedArray_Get(t *testing.T) { + gtest.Case(t, func() { + a1 := []interface{}{"a", "f", "c"} + func1 := func(v1, v2 interface{}) int { + return strings.Compare(gconv.String(v1), gconv.String(v2)) + } + array1 := garray.NewSortedArrayFrom(a1, func1) + gtest.Assert(array1.Get(2), "f") + gtest.Assert(array1.Get(1), "c") + }) + +} + +func TestSortedArray_Remove(t *testing.T) { + gtest.Case(t, func() { + a1 := []interface{}{"a", "d", "c", "b"} + func1 := func(v1, v2 interface{}) int { + return strings.Compare(gconv.String(v1), gconv.String(v2)) + } + array1 := garray.NewSortedArrayFrom(a1, func1) + i1 := array1.Remove(1) + gtest.Assert(gconv.String(i1), "b") + gtest.Assert(array1.Len(), 3) + gtest.Assert(array1.Contains("b"), false) + + i2 := array1.Remove(0) + gtest.Assert(gconv.String(i2), "a") + gtest.Assert(array1.Len(), 2) + gtest.Assert(array1.Contains("a"), false) + + i3 := array1.Remove(1) + gtest.Assert(gconv.String(i3), "d") + gtest.Assert(array1.Len(), 1) + gtest.Assert(array1.Contains("d"), false) + }) + +} + +func TestSortedArray_PopLeft(t *testing.T) { + gtest.Case(t, func() { + a1 := []interface{}{"a", "d", "c", "b"} + func1 := func(v1, v2 interface{}) int { + return strings.Compare(gconv.String(v1), gconv.String(v2)) + } + array1 := garray.NewSortedArrayFrom(a1, func1) + i1 := array1.PopLeft() + gtest.Assert(gconv.String(i1), "a") + gtest.Assert(array1.Len(), 3) + gtest.Assert(array1, []interface{}{"b", "c", "d"}) + }) + +} + +func TestSortedArray_PopRight(t *testing.T) { + gtest.Case(t, func() { + a1 := []interface{}{"a", "d", "c", "b"} + func1 := func(v1, v2 interface{}) int { + return strings.Compare(gconv.String(v1), gconv.String(v2)) + } + array1 := garray.NewSortedArrayFrom(a1, func1) + i1 := array1.PopRight() + gtest.Assert(gconv.String(i1), "d") + gtest.Assert(array1.Len(), 3) + gtest.Assert(array1, []interface{}{"a", "b", "c"}) + }) + +} + +func TestSortedArray_PopRand(t *testing.T) { + gtest.Case(t, func() { + a1 := []interface{}{"a", "d", "c", "b"} + func1 := func(v1, v2 interface{}) int { + return strings.Compare(gconv.String(v1), gconv.String(v2)) + } + array1 := garray.NewSortedArrayFrom(a1, func1) + i1 := array1.PopRand() + gtest.AssertIN(i1, []interface{}{"a", "d", "c", "b"}) + gtest.Assert(array1.Len(), 3) + + }) +} + +func TestSortedArray_PopRands(t *testing.T) { + gtest.Case(t, func() { + a1 := []interface{}{"a", "d", "c", "b"} + func1 := func(v1, v2 interface{}) int { + return strings.Compare(gconv.String(v1), gconv.String(v2)) + } + array1 := garray.NewSortedArrayFrom(a1, func1) + i1 := array1.PopRands(2) + gtest.Assert(len(i1), 2) + gtest.AssertIN(i1, []interface{}{"a", "d", "c", "b"}) + gtest.Assert(array1.Len(), 2) + + i2 := array1.PopRands(3) + gtest.Assert(len(i1), 2) + gtest.AssertIN(i2, []interface{}{"a", "d", "c", "b"}) + gtest.Assert(array1.Len(), 0) + + }) +} + +func TestSortedArray_PopLefts(t *testing.T) { + gtest.Case(t, func() { + a1 := []interface{}{"a", "d", "c", "b", "e", "f"} + func1 := func(v1, v2 interface{}) int { + return strings.Compare(gconv.String(v1), gconv.String(v2)) + } + array1 := garray.NewSortedArrayFrom(a1, func1) + i1 := array1.PopLefts(2) + gtest.Assert(len(i1), 2) + gtest.AssertIN(i1, []interface{}{"a", "d", "c", "b", "e", "f"}) + gtest.Assert(array1.Len(), 4) + + i2 := array1.PopLefts(5) + gtest.Assert(len(i2), 4) + gtest.AssertIN(i1, []interface{}{"a", "d", "c", "b", "e", "f"}) + gtest.Assert(array1.Len(), 0) + + }) +} + +func TestSortedArray_PopRights(t *testing.T) { + gtest.Case(t, func() { + a1 := []interface{}{"a", "d", "c", "b", "e", "f"} + func1 := func(v1, v2 interface{}) int { + return strings.Compare(gconv.String(v1), gconv.String(v2)) + } + array1 := garray.NewSortedArrayFrom(a1, func1) + i1 := array1.PopRights(2) + gtest.Assert(len(i1), 2) + gtest.Assert(i1, []interface{}{"e", "f"}) + gtest.Assert(array1.Len(), 4) + + i2 := array1.PopRights(10) + gtest.Assert(len(i2), 4) + + }) +} + +func TestSortedArray_Range(t *testing.T) { + gtest.Case(t, func() { + a1 := []interface{}{"a", "d", "c", "b", "e", "f"} + func1 := func(v1, v2 interface{}) int { + return strings.Compare(gconv.String(v1), gconv.String(v2)) + } + array1 := garray.NewSortedArrayFrom(a1, func1) + i1 := array1.Range(2, 5) + gtest.Assert(i1, []interface{}{"c", "d", "e"}) + gtest.Assert(array1.Len(), 6) + + i2 := array1.Range(7, 5) + gtest.Assert(len(i2), 0) + i2 = array1.Range(-1, 2) + gtest.Assert(i2, []interface{}{"a", "b"}) + + i2 = array1.Range(4, 10) + gtest.Assert(len(i2), 2) + gtest.Assert(i2, []interface{}{"e", "f"}) + + }) +} + +func TestSortedArray_Sum(t *testing.T) { + gtest.Case(t, func() { + a1 := []interface{}{"a", "d", "c", "b", "e", "f"} + a2 := []interface{}{"1", "2", "3", "b", "e", "f"} + a3 := []interface{}{"4", "5", "6"} + func1 := func(v1, v2 interface{}) int { + return strings.Compare(gconv.String(v1), gconv.String(v2)) + } + array1 := garray.NewSortedArrayFrom(a1, func1) + array2 := garray.NewSortedArrayFrom(a2, func1) + array3 := garray.NewSortedArrayFrom(a3, func1) + gtest.Assert(array1.Sum(), 0) + gtest.Assert(array2.Sum(), 6) + gtest.Assert(array3.Sum(), 15) + + }) +} + +func TestSortedArray_Clone(t *testing.T) { + gtest.Case(t, func() { + a1 := []interface{}{"a", "d", "c", "b", "e", "f"} + + func1 := func(v1, v2 interface{}) int { + return strings.Compare(gconv.String(v1), gconv.String(v2)) + } + array1 := garray.NewSortedArrayFrom(a1, func1) + array2 := array1.Clone() + gtest.Assert(array1, array2) + array1.Remove(1) + gtest.AssertNE(array1, array2) + + }) +} + +func TestSortedArray_Clear(t *testing.T) { + gtest.Case(t, func() { + a1 := []interface{}{"a", "d", "c", "b", "e", "f"} + + func1 := func(v1, v2 interface{}) int { + return strings.Compare(gconv.String(v1), gconv.String(v2)) + } + array1 := garray.NewSortedArrayFrom(a1, func1) + gtest.Assert(array1.Len(), 6) + array1.Clear() + gtest.Assert(array1.Len(), 0) + + }) +} + +func TestSortedArray_Chunk(t *testing.T) { + gtest.Case(t, func() { + a1 := []interface{}{"a", "d", "c", "b", "e"} + + func1 := func(v1, v2 interface{}) int { + return strings.Compare(gconv.String(v1), gconv.String(v2)) + } + array1 := garray.NewSortedArrayFrom(a1, func1) + i1 := array1.Chunk(2) + gtest.Assert(len(i1), 3) + gtest.Assert(i1[0], []interface{}{"a", "b"}) + gtest.Assert(i1[2], []interface{}{"e"}) + + i1 = array1.Chunk(0) + gtest.Assert(len(i1), 0) + }) +} + +func TestSortedArray_SubSlice(t *testing.T) { + gtest.Case(t, func() { + a1 := []interface{}{"a", "d", "c", "b", "e"} + + func1 := func(v1, v2 interface{}) int { + return strings.Compare(gconv.String(v1), gconv.String(v2)) + } + array1 := garray.NewSortedArrayFrom(a1, func1) + i1 := array1.SubSlice(2, 3) + gtest.Assert(len(i1), 3) + gtest.Assert(i1, []interface{}{"c", "d", "e"}) + + i1 = array1.SubSlice(2, 6) + gtest.Assert(len(i1), 3) + gtest.Assert(i1, []interface{}{"c", "d", "e"}) + + i1 = array1.SubSlice(7, 2) + gtest.Assert(len(i1), 0) + + }) +} + +func TestSortedArray_Rand(t *testing.T) { + gtest.Case(t, func() { + a1 := []interface{}{"a", "d", "c"} + + func1 := func(v1, v2 interface{}) int { + return strings.Compare(gconv.String(v1), gconv.String(v2)) + } + array1 := garray.NewSortedArrayFrom(a1, func1) + i1 := array1.Rand() + gtest.AssertIN(i1, []interface{}{"a", "d", "c"}) + gtest.Assert(array1.Len(), 3) + }) +} + +func TestSortedArray_Rands(t *testing.T) { + gtest.Case(t, func() { + a1 := []interface{}{"a", "d", "c"} + + func1 := func(v1, v2 interface{}) int { + return strings.Compare(gconv.String(v1), gconv.String(v2)) + } + array1 := garray.NewSortedArrayFrom(a1, func1) + i1 := array1.Rands(2) + gtest.AssertIN(i1, []interface{}{"a", "d", "c"}) + gtest.Assert(len(i1), 2) + gtest.Assert(array1.Len(), 3) + + i1 = array1.Rands(4) + gtest.Assert(len(i1), 3) + }) +} + +func TestSortedArray_Join(t *testing.T) { + gtest.Case(t, func() { + a1 := []interface{}{"a", "d", "c"} + + func1 := func(v1, v2 interface{}) int { + return strings.Compare(gconv.String(v1), gconv.String(v2)) + } + array1 := garray.NewSortedArrayFrom(a1, func1) + gtest.Assert(array1.Join(","), "a,c,d") + gtest.Assert(array1.Join("."), "a.c.d") + + }) +} + +func TestSortedArray_CountValues(t *testing.T) { + gtest.Case(t, func() { + a1 := []interface{}{"a", "d", "c", "c"} + + func1 := func(v1, v2 interface{}) int { + return strings.Compare(gconv.String(v1), gconv.String(v2)) + } + array1 := garray.NewSortedArrayFrom(a1, func1) + m1 := array1.CountValues() + gtest.Assert(len(m1), 3) + gtest.Assert(m1["c"], 2) + gtest.Assert(m1["a"], 1) + + }) +} + +func TestSortedArray_SetUnique(t *testing.T) { + gtest.Case(t, func() { + a1 := []interface{}{"a", "d", "c", "c"} + + func1 := func(v1, v2 interface{}) int { + return strings.Compare(gconv.String(v1), gconv.String(v2)) + } + array1 := garray.NewSortedArrayFrom(a1, func1) + array1.SetUnique(true) + gtest.Assert(array1.Len(), 3) + gtest.Assert(array1, []interface{}{"a", "c", "d"}) + }) +} diff --git a/g/container/garray/garray_z_unit_string_test.go b/g/container/garray/garray_z_unit_string_test.go index db0ec7b26..b7c912e63 100644 --- a/g/container/garray/garray_z_unit_string_test.go +++ b/g/container/garray/garray_z_unit_string_test.go @@ -124,6 +124,8 @@ func TestStringArray_Fill(t *testing.T) { array2 := garray.NewStringArrayFrom(a2) gtest.Assert(array1.Fill(1, 2, "100").Slice(), []string{"0", "100", "100"}) gtest.Assert(array2.Fill(0, 2, "100").Slice(), []string{"100", "100"}) + s1 := array2.Fill(-1, 2, "100") + gtest.Assert(s1.Len(), 2) }) } @@ -136,6 +138,8 @@ func TestStringArray_Chunk(t *testing.T) { gtest.Assert(chunks[0], []string{"1", "2"}) gtest.Assert(chunks[1], []string{"3", "4"}) gtest.Assert(chunks[2], []string{"5"}) + gtest.Assert(len(array1.Chunk(0)), 0) + }) } @@ -166,6 +170,9 @@ func TestStringArray_Rand(t *testing.T) { gtest.Assert(len(array1.Rands(2)), "2") gtest.Assert(len(array1.Rands(10)), "7") gtest.AssertIN(array1.Rands(1)[0], a1) + gtest.Assert(len(array1.Rand()), 1) + gtest.AssertIN(array1.Rand(), a1) + }) } @@ -321,21 +328,312 @@ func TestStringArray_CountValues(t *testing.T) { }) } -func TestNewSortedStringArrayFrom(t *testing.T){ +func TestNewSortedStringArrayFrom(t *testing.T) { gtest.Case(t, func() { - a1:=[]string{"a", "d", "c","b"} - s1 :=garray.NewSortedStringArrayFrom(a1,true) - gtest.Assert(s1,[]string{"a", "b", "c","d"}) - s2 :=garray.NewSortedStringArrayFrom(a1,false) - gtest.Assert(s2,[]string{"a", "b", "c","d"}) + a1 := []string{"a", "d", "c", "b"} + s1 := garray.NewSortedStringArrayFrom(a1, true) + gtest.Assert(s1, []string{"a", "b", "c", "d"}) + s2 := garray.NewSortedStringArrayFrom(a1, false) + gtest.Assert(s2, []string{"a", "b", "c", "d"}) }) } -func TestNewSortedStringArrayFromCopy(t *testing.T){ +func TestNewSortedStringArrayFromCopy(t *testing.T) { gtest.Case(t, func() { - a1:=[]string{"a", "d", "c","b"} - s1 :=garray.NewSortedStringArrayFromCopy(a1,true) - gtest.Assert(s1.Len(),4) - // gtest.Assert(s1,[]string{"a", "b", "c","d"}) //todo 这里没有排序,需主库修正 + a1 := []string{"a", "d", "c", "b"} + s1 := garray.NewSortedStringArrayFromCopy(a1, true) + gtest.Assert(s1.Len(), 4) + gtest.Assert(s1, []string{"a", "b", "c", "d"}) + }) +} + +func TestSortedStringArray_SetArray(t *testing.T) { + gtest.Case(t, func() { + a1 := []string{"a", "d", "c", "b"} + a2 := []string{"f", "g", "h"} + array1 := garray.NewSortedStringArrayFrom(a1) + array1.SetArray(a2) + gtest.Assert(array1.Len(), 3) + gtest.Assert(array1.Contains("d"), false) + gtest.Assert(array1.Contains("b"), false) + gtest.Assert(array1.Contains("g"), true) + + }) +} + +func TestSortedStringArray_Sort(t *testing.T) { + gtest.Case(t, func() { + a1 := []string{"a", "d", "c", "b"} + array1 := garray.NewSortedStringArrayFrom(a1) + + gtest.Assert(array1, []string{"a", "b", "c", "d"}) + array1.Sort() //todo 这个SortedStringArray.sort这个方法没有必要, + gtest.Assert(array1.Len(), 4) + gtest.Assert(array1.Contains("c"), true) + gtest.Assert(array1, []string{"a", "b", "c", "d"}) + }) +} + +func TestSortedStringArray_Get(t *testing.T) { + gtest.Case(t, func() { + a1 := []string{"a", "d", "c", "b"} + array1 := garray.NewSortedStringArrayFrom(a1) + gtest.Assert(array1.Get(2), "c") + gtest.Assert(array1.Get(0), "a") + + }) +} + +func TestSortedStringArray_Remove(t *testing.T) { + gtest.Case(t, func() { + a1 := []string{"a", "d", "c", "b"} + array1 := garray.NewSortedStringArrayFrom(a1) + gtest.Assert(array1.Remove(2), "c") + gtest.Assert(array1.Get(2), "d") + gtest.Assert(array1.Len(), 3) + gtest.Assert(array1.Contains("c"), false) + + gtest.Assert(array1.Remove(0), "a") + gtest.Assert(array1.Len(), 2) + gtest.Assert(array1.Contains("a"), false) + + // 此时array1里的元素只剩下2个 + gtest.Assert(array1.Remove(1), "d") + gtest.Assert(array1.Len(), 1) + + }) +} + +func TestSortedStringArray_PopLeft(t *testing.T) { + gtest.Case(t, func() { + a1 := []string{"e", "a", "d", "c", "b"} + array1 := garray.NewSortedStringArrayFrom(a1) + s1 := array1.PopLeft() + gtest.Assert(s1, "a") + gtest.Assert(array1.Len(), 4) + gtest.Assert(array1.Contains("a"), false) + }) +} + +func TestSortedStringArray_PopRight(t *testing.T) { + gtest.Case(t, func() { + a1 := []string{"e", "a", "d", "c", "b"} + array1 := garray.NewSortedStringArrayFrom(a1) + s1 := array1.PopRight() + gtest.Assert(s1, "e") + gtest.Assert(array1.Len(), 4) + gtest.Assert(array1.Contains("e"), false) + }) +} + +func TestSortedStringArray_PopRand(t *testing.T) { + gtest.Case(t, func() { + a1 := []string{"e", "a", "d", "c", "b"} + array1 := garray.NewSortedStringArrayFrom(a1) + s1 := array1.PopRand() + gtest.AssertIN(s1, []string{"e", "a", "d", "c", "b"}) + gtest.Assert(array1.Len(), 4) + gtest.Assert(array1.Contains(s1), false) + }) +} + +func TestSortedStringArray_PopRands(t *testing.T) { + gtest.Case(t, func() { + a1 := []string{"e", "a", "d", "c", "b"} + array1 := garray.NewSortedStringArrayFrom(a1) + s1 := array1.PopRands(2) + gtest.AssertIN(s1, []string{"e", "a", "d", "c", "b"}) + gtest.Assert(array1.Len(), 3) + gtest.Assert(len(s1), 2) + + s1 = array1.PopRands(4) + gtest.Assert(len(s1), 3) + gtest.AssertIN(s1, []string{"e", "a", "d", "c", "b"}) + }) +} + +func TestSortedStringArray_PopLefts(t *testing.T) { + gtest.Case(t, func() { + a1 := []string{"e", "a", "d", "c", "b"} + array1 := garray.NewSortedStringArrayFrom(a1) + s1 := array1.PopLefts(2) + gtest.Assert(s1, []string{"a", "b"}) + gtest.Assert(array1.Len(), 3) + gtest.Assert(len(s1), 2) + + s1 = array1.PopLefts(4) + gtest.Assert(len(s1), 3) + gtest.Assert(s1, []string{"c", "d", "e"}) + }) +} + +func TestSortedStringArray_PopRights(t *testing.T) { + gtest.Case(t, func() { + a1 := []string{"e", "a", "d", "c", "b", "f", "g"} + array1 := garray.NewSortedStringArrayFrom(a1) + s1 := array1.PopRights(2) + gtest.Assert(s1, []string{"f", "g"}) + gtest.Assert(array1.Len(), 5) + gtest.Assert(len(s1), 2) + s1 = array1.PopRights(6) + gtest.Assert(len(s1), 5) + gtest.Assert(s1, []string{"a", "b", "c", "d", "e"}) + gtest.Assert(array1.Len(), 0) + }) +} + +func TestSortedStringArray_Range(t *testing.T) { + gtest.Case(t, func() { + a1 := []string{"e", "a", "d", "c", "b", "f", "g"} + array1 := garray.NewSortedStringArrayFrom(a1) + s1 := array1.Range(2, 4) + gtest.Assert(len(s1), 2) + gtest.Assert(s1, []string{"c", "d"}) + + s1 = array1.Range(-1, 2) + gtest.Assert(len(s1), 2) + gtest.Assert(s1, []string{"a", "b"}) + + s1 = array1.Range(4, 8) + gtest.Assert(len(s1), 3) + gtest.Assert(s1, []string{"e", "f", "g"}) + }) +} + +func TestSortedStringArray_Sum(t *testing.T) { + gtest.Case(t, func() { + a1 := []string{"e", "a", "d", "c", "b", "f", "g"} + a2 := []string{"1", "2", "3", "4", "a"} + array1 := garray.NewSortedStringArrayFrom(a1) + array2 := garray.NewSortedStringArrayFrom(a2) + gtest.Assert(array1.Sum(), 0) + gtest.Assert(array2.Sum(), 10) + }) +} + +func TestSortedStringArray_Clone(t *testing.T) { + gtest.Case(t, func() { + a1 := []string{"e", "a", "d", "c", "b", "f", "g"} + array1 := garray.NewSortedStringArrayFrom(a1) + array2 := array1.Clone() + gtest.Assert(array1, array2) + array1.Remove(1) + gtest.Assert(array2.Len(), 7) + }) +} + +func TestSortedStringArray_Clear(t *testing.T) { + gtest.Case(t, func() { + a1 := []string{"e", "a", "d", "c", "b", "f", "g"} + array1 := garray.NewSortedStringArrayFrom(a1) + array1.Clear() + gtest.Assert(array1.Len(), 0) + + }) +} + +func TestSortedStringArray_SubSlice(t *testing.T) { + gtest.Case(t, func() { + a1 := []string{"e", "a", "d", "c", "b", "f", "g"} + array1 := garray.NewSortedStringArrayFrom(a1) + s1 := array1.SubSlice(1, 3) + gtest.Assert(len(s1), 3) + gtest.Assert(s1, []string{"b", "c", "d"}) + gtest.Assert(array1.Len(), 7) + + s2 := array1.SubSlice(1, 10) + gtest.Assert(len(s2), 6) + + s3 := array1.SubSlice(10, 2) + gtest.Assert(len(s3), 0) + + }) +} + +func TestSortedStringArray_Len(t *testing.T) { + gtest.Case(t, func() { + a1 := []string{"e", "a", "d", "c", "b", "f", "g"} + array1 := garray.NewSortedStringArrayFrom(a1) + gtest.Assert(array1.Len(), 7) + + }) +} + +func TestSortedStringArray_Rand(t *testing.T) { + gtest.Case(t, func() { + a1 := []string{"e", "a", "d"} + array1 := garray.NewSortedStringArrayFrom(a1) + gtest.AssertIN(array1.Rand(), []string{"e", "a", "d"}) + + }) +} + +func TestSortedStringArray_Rands(t *testing.T) { + gtest.Case(t, func() { + a1 := []string{"e", "a", "d"} + array1 := garray.NewSortedStringArrayFrom(a1) + s1 := array1.Rands(2) + + gtest.AssertIN(s1, []string{"e", "a", "d"}) + gtest.Assert(len(s1), 2) + + s1 = array1.Rands(4) + gtest.AssertIN(s1, []string{"e", "a", "d"}) + gtest.Assert(len(s1), 3) + }) +} + +func TestSortedStringArray_Join(t *testing.T) { + gtest.Case(t, func() { + a1 := []string{"e", "a", "d"} + array1 := garray.NewSortedStringArrayFrom(a1) + gtest.Assert(array1.Join(","), "a,d,e") + gtest.Assert(array1.Join("."), "a.d.e") + }) +} + +func TestSortedStringArray_CountValues(t *testing.T) { + gtest.Case(t, func() { + a1 := []string{"e", "a", "d", "a", "c"} + array1 := garray.NewSortedStringArrayFrom(a1) + m1 := array1.CountValues() + gtest.Assert(m1["a"], 2) + gtest.Assert(m1["d"], 1) + + }) +} + +func TestSortedStringArray_Chunk(t *testing.T) { + gtest.Case(t, func() { + a1 := []string{"e", "a", "d", "a", "c"} + array1 := garray.NewSortedStringArrayFrom(a1) + array2 := array1.Chunk(2) + gtest.Assert(len(array2), 3) + gtest.Assert(len(array2[0]), 2) + gtest.Assert(array2[1], []string{"c", "d"}) + }) +} + +func TestSortedStringArray_SetUnique(t *testing.T) { + gtest.Case(t, func() { + a1 := []string{"e", "a", "d", "a", "c"} + array1 := garray.NewSortedStringArrayFrom(a1) + array2 := array1.SetUnique(true) + gtest.Assert(array2.Len(), 4) + gtest.Assert(array2, []string{"a", "c", "d", "e"}) + }) +} + +func TestStringArray_Remove(t *testing.T) { + gtest.Case(t, func() { + a1 := []string{"e", "a", "d", "a", "c"} + array1 := garray.NewStringArrayFrom(a1) + s1 := array1.Remove(1) + gtest.Assert(s1, "a") + gtest.Assert(array1.Len(), 4) + s1 = array1.Remove(3) + gtest.Assert(s1, "c") + gtest.Assert(array1.Len(), 3) + }) }