1
0
mirror of https://github.com/duke-git/lancet.git synced 2026-02-06 21:52:28 +08:00

refactor: clean code

This commit is contained in:
dudaodong
2023-06-01 16:58:42 +08:00
parent a8761eefb0
commit b1c6614549

View File

@@ -128,42 +128,46 @@ func TestEqualWith(t *testing.T) {
}
func TestEvery(t *testing.T) {
assert := internal.NewAssert(t, "TestEvery")
nums := []int{1, 2, 3, 5}
isEven := func(i, num int) bool {
return num%2 == 0
}
assert := internal.NewAssert(t, "TestEvery")
assert.Equal(false, Every(nums, isEven))
}
func TestNone(t *testing.T) {
assert := internal.NewAssert(t, "TestNone")
nums := []int{1, 2, 3, 5}
check := func(i, num int) bool {
return num%2 == 1
}
assert := internal.NewAssert(t, "TestNone")
assert.Equal(false, None(nums, check))
}
func TestSome(t *testing.T) {
assert := internal.NewAssert(t, "TestSome")
nums := []int{1, 2, 3, 5}
hasEven := func(i, num int) bool {
return num%2 == 0
}
assert := internal.NewAssert(t, "TestSome")
assert.Equal(true, Some(nums, hasEven))
}
func TestFilter(t *testing.T) {
assert := internal.NewAssert(t, "TestFilter")
nums := []int{1, 2, 3, 4, 5}
isEven := func(i, num int) bool {
return num%2 == 0
}
assert := internal.NewAssert(t, "TestFilter")
assert.Equal([]int{2, 4}, Filter(nums, isEven))
type student struct {
@@ -189,17 +193,16 @@ func TestFilter(t *testing.T) {
}
func TestGroupBy(t *testing.T) {
assert := internal.NewAssert(t, "TestGroupBy")
nums := []int{1, 2, 3, 4, 5, 6}
evenFunc := func(i, num int) bool {
return (num % 2) == 0
}
expectedEven := []int{2, 4, 6}
expectedOdd := []int{1, 3, 5}
even, odd := GroupBy(nums, evenFunc)
assert := internal.NewAssert(t, "TestGroupBy")
assert.Equal(expectedEven, even)
assert.Equal(expectedOdd, odd)
assert.Equal([]int{2, 4, 6}, even)
assert.Equal([]int{1, 3, 5}, odd)
}
func TestGroupWith(t *testing.T) {
@@ -240,65 +243,64 @@ func TestFind(t *testing.T) {
even := func(i, num int) bool {
return num%2 == 0
}
res, ok := Find(nums, even)
if !ok {
t.Fatal("found nothing")
}
result, ok := Find(nums, even)
assert := internal.NewAssert(t, "TestFind")
assert.Equal(2, *res)
assert.Equal(true, ok)
assert.Equal(2, *result)
}
func TestFindBy(t *testing.T) {
assert := internal.NewAssert(t, "TestFindBy")
nums := []int{1, 2, 3, 4, 5}
even := func(i, num int) bool {
return num%2 == 0
}
res, ok := FindBy(nums, even)
if !ok {
t.Fatal("found nothing")
}
assert.Equal(2, res)
res, ok = FindBy(nums, func(_ int, v int) bool {
result, ok := FindBy(nums, func(i, num int) bool {
return num%2 == 0
})
assert.Equal(true, ok)
assert.Equal(2, result)
result, ok = FindBy(nums, func(_ int, v int) bool {
return v == 6
})
assert.Equal(res == 0 && ok == false, true)
assert.Equal(false, ok)
assert.Equal(0, result)
}
func TestFindLastBy(t *testing.T) {
assert := internal.NewAssert(t, "TestFindBy")
assert := internal.NewAssert(t, "TestFindLastBy")
nums := []int{1, 2, 3, 4, 5}
even := func(i, num int) bool {
return num%2 == 0
}
res, ok := FindLastBy(nums, even)
result, ok := FindLastBy(nums, even)
if !ok {
t.Fatal("found nothing")
}
assert.Equal(4, res)
assert.Equal(4, result)
res, ok = FindLastBy(nums, func(_ int, v int) bool {
result, ok = FindLastBy(nums, func(_ int, v int) bool {
return v == 6
})
assert.Equal(res == 0 && ok == false, true)
assert.Equal(result == 0 && ok == false, true)
}
func TestFindLast(t *testing.T) {
assert := internal.NewAssert(t, "TestFindLast")
nums := []int{1, 2, 3, 4, 5}
even := func(i, num int) bool {
return num%2 == 0
}
res, ok := FindLast(nums, even)
result, ok := FindLast(nums, even)
if !ok {
t.Fatal("found nothing")
}
assert := internal.NewAssert(t, "TestFindLast")
assert.Equal(4, *res)
assert.Equal(4, *result)
}
func TestFindFoundNothing(t *testing.T) {
@@ -307,45 +309,47 @@ func TestFindFoundNothing(t *testing.T) {
return num > 1
}
_, ok := Find(nums, findFunc)
// if ok {
// t.Fatal("found something")
// }
assert := internal.NewAssert(t, "TestFindFoundNothing")
assert.Equal(false, ok)
}
func TestFlatten(t *testing.T) {
assert := internal.NewAssert(t, "TestFlatten")
input := [][][]string{{{"a", "b"}}, {{"c", "d"}}}
expected := [][]string{{"a", "b"}, {"c", "d"}}
assert := internal.NewAssert(t, "TestFlatten")
assert.Equal(expected, Flatten(input))
}
func TestFlattenDeep(t *testing.T) {
assert := internal.NewAssert(t, "TestFlattenDeep")
input := [][][]string{{{"a", "b"}}, {{"c", "d"}}}
expected := []string{"a", "b", "c", "d"}
assert := internal.NewAssert(t, "TestFlattenDeep")
assert.Equal(expected, FlattenDeep(input))
}
func TestForEach(t *testing.T) {
numbers := []int{1, 2, 3, 4, 5}
expected := []int{3, 4, 5, 6, 7}
assert := internal.NewAssert(t, "TestForEach")
var numbersAddTwo []int
numbers := []int{1, 2, 3, 4, 5}
var result []int
addTwo := func(index int, value int) {
numbersAddTwo = append(numbersAddTwo, value+2)
result = append(result, value+2)
}
ForEach(numbers, addTwo)
assert := internal.NewAssert(t, "TestForEach")
assert.Equal(expected, numbersAddTwo)
assert.Equal([]int{3, 4, 5, 6, 7}, result)
}
func TestForEachWithBreak(t *testing.T) {
assert := internal.NewAssert(t, "TestForEach")
numbers := []int{1, 2, 3, 4, 5}
var sum int
@@ -358,17 +362,17 @@ func TestForEachWithBreak(t *testing.T) {
return true
})
assert := internal.NewAssert(t, "TestForEach")
assert.Equal(6, sum)
}
func TestMap(t *testing.T) {
assert := internal.NewAssert(t, "TestMap")
nums := []int{1, 2, 3, 4}
multiplyTwo := func(i, num int) int {
return num * 2
}
assert := internal.NewAssert(t, "TestMap")
assert.Equal([]int{2, 4, 6, 8}, Map(nums, multiplyTwo))
type student struct {
@@ -424,6 +428,8 @@ func TestFlatMap(t *testing.T) {
}
func TestReduce(t *testing.T) {
assert := internal.NewAssert(t, "TestReduce")
cases := [][]int{
{},
{1},
@@ -435,8 +441,6 @@ func TestReduce(t *testing.T) {
return v1 + v2
}
assert := internal.NewAssert(t, "TestReduce")
for i := 0; i < len(cases); i++ {
actual := Reduce(cases[i], f, 0)
assert.Equal(expected[i], actual)
@@ -460,7 +464,7 @@ func TestReduceBy(t *testing.T) {
}
func TestReduceRight(t *testing.T) {
assert := internal.NewAssert(t, "ReduceRight")
assert := internal.NewAssert(t, "TestReduceRight")
result := ReduceRight([]int{1, 2, 3, 4}, "", func(_ int, item int, agg string) string {
return agg + fmt.Sprintf("%v", item)
@@ -470,26 +474,29 @@ func TestReduceRight(t *testing.T) {
}
func TestIntSlice(t *testing.T) {
assert := internal.NewAssert(t, "TestIntSlice")
var nums []any
nums = append(nums, 1, 2, 3)
assert := internal.NewAssert(t, "TestIntSlice")
assert.Equal([]int{1, 2, 3}, IntSlice(nums))
}
func TestStringSlice(t *testing.T) {
assert := internal.NewAssert(t, "TestStringSlice")
var strs []any
strs = append(strs, "a", "b", "c")
assert := internal.NewAssert(t, "TestStringSlice")
assert.Equal([]string{"a", "b", "c"}, StringSlice(strs))
}
func TestInterfaceSlice(t *testing.T) {
assert := internal.NewAssert(t, "TestInterfaceSlice")
strs := []string{"a", "b", "c"}
expect := []any{"a", "b", "c"}
assert := internal.NewAssert(t, "TestInterfaceSlice")
assert.Equal(expect, InterfaceSlice(strs))
}
@@ -657,6 +664,8 @@ func TestMerge(t *testing.T) {
}
func TestIntersection(t *testing.T) {
assert := internal.NewAssert(t, "TestIntersection")
s1 := []int{1, 2, 2, 3}
s2 := []int{1, 2, 3, 4}
s3 := []int{0, 2, 3, 5, 6}
@@ -668,17 +677,15 @@ func TestIntersection(t *testing.T) {
{1, 2, 3},
{},
}
res := []any{
result := []any{
Intersection(s1, s2, s3),
Intersection(s1, s2),
Intersection(s1),
Intersection(s1, s4),
}
assert := internal.NewAssert(t, "TestIntersection")
for i := 0; i < len(res); i++ {
assert.Equal(expected[i], res[i])
for i := 0; i < len(result); i++ {
assert.Equal(expected[i], result[i])
}
}
@@ -711,6 +718,7 @@ func TestDifference(t *testing.T) {
s1 := []int{1, 2, 3, 4, 5}
s2 := []int{4, 5, 6}
assert.Equal([]int{1, 2, 3}, Difference(s1, s2))
}
@@ -722,6 +730,7 @@ func TestDifferenceWith(t *testing.T) {
isDouble := func(v1, v2 int) bool {
return v2 == 2*v1
}
assert.Equal([]int{1, 5}, DifferenceWith(s1, s2, isDouble))
}
@@ -733,6 +742,7 @@ func TestDifferenceBy(t *testing.T) {
addOne := func(i int, v int) int {
return v + 1
}
assert.Equal([]int{1, 2}, DifferenceBy(s1, s2, addOne))
}
@@ -848,7 +858,7 @@ func TestSortByFielDesc(t *testing.T) {
err := SortByField(students, "age", "desc")
assert.IsNil(err)
assert.Equal(students, studentsOfSortByAge)
assert.Equal(studentsOfSortByAge, students)
}
func TestSortByFieldAsc(t *testing.T) {
@@ -874,7 +884,7 @@ func TestSortByFieldAsc(t *testing.T) {
err := SortByField(students, "age")
assert.IsNil(err)
assert.Equal(students, studentsOfSortByAge)
assert.Equal(studentsOfSortByAge, students)
}
func TestWithout(t *testing.T) {
@@ -886,10 +896,10 @@ func TestWithout(t *testing.T) {
func TestShuffle(t *testing.T) {
assert := internal.NewAssert(t, "TestShuffle")
s := []int{1, 2, 3, 4, 5}
res := Shuffle(s)
numbers := []int{1, 2, 3, 4, 5}
result := Shuffle(numbers)
assert.Equal(5, len(res))
assert.Equal(5, len(result))
}
func TestIndexOf(t *testing.T) {
@@ -1000,13 +1010,12 @@ func TestKeyBy(t *testing.T) {
return len(str)
})
assert.Equal(result, map[int]string{1: "a", 2: "ab", 3: "abc"})
assert.Equal(map[int]string{1: "a", 2: "ab", 3: "abc"}, result)
}
func TestRepeat(t *testing.T) {
assert := internal.NewAssert(t, "TestRepeat")
result := Repeat("a", 6)
assert.Equal(result, []string{"a", "a", "a", "a", "a", "a"})
assert.Equal([]string{}, Repeat("a", 0))
assert.Equal([]string{"a", "a", "a", "a", "a", "a"}, Repeat("a", 6))
}