[🤖] Add Unit-Tests
Build Docker and Deploy / Run goext test-suite (push) Successful in 1m34s

This commit is contained in:
2026-04-27 10:46:08 +02:00
parent dad0e3240d
commit 02d6894ec6
116 changed files with 18795 additions and 1 deletions
+118
View File
@@ -0,0 +1,118 @@
package langext
import (
"git.blackforestbytes.com/BlackForestBytes/goext/tst"
"testing"
)
func TestSortInPlace(t *testing.T) {
arr := []int{3, 1, 2}
Sort(arr)
tst.AssertArrayEqual(t, arr, []int{1, 2, 3})
}
func TestSortStrings(t *testing.T) {
arr := []string{"c", "a", "b"}
Sort(arr)
tst.AssertArrayEqual(t, arr, []string{"a", "b", "c"})
}
func TestAsSorted(t *testing.T) {
src := []int{3, 1, 2}
out := AsSorted(src)
tst.AssertArrayEqual(t, out, []int{1, 2, 3})
// original unchanged
tst.AssertArrayEqual(t, src, []int{3, 1, 2})
}
func TestSortStable(t *testing.T) {
arr := []int{3, 1, 2, 1}
SortStable(arr)
tst.AssertArrayEqual(t, arr, []int{1, 1, 2, 3})
}
func TestAsSortedStable(t *testing.T) {
src := []int{3, 1, 2, 1}
out := AsSortedStable(src)
tst.AssertArrayEqual(t, out, []int{1, 1, 2, 3})
tst.AssertArrayEqual(t, src, []int{3, 1, 2, 1})
}
func TestIsSorted(t *testing.T) {
tst.AssertEqual(t, IsSorted([]int{1, 2, 3}), true)
tst.AssertEqual(t, IsSorted([]int{3, 2, 1}), false)
tst.AssertEqual(t, IsSorted([]int{1, 1, 1}), true)
tst.AssertEqual(t, IsSorted([]int{}), true)
}
func TestSortSlice(t *testing.T) {
arr := []int{3, 1, 2}
SortSlice(arr, func(a, b int) bool { return a < b })
tst.AssertArrayEqual(t, arr, []int{1, 2, 3})
}
func TestAsSortedSlice(t *testing.T) {
src := []int{3, 1, 2}
out := AsSortedSlice(src, func(a, b int) bool { return a > b })
tst.AssertArrayEqual(t, out, []int{3, 2, 1})
tst.AssertArrayEqual(t, src, []int{3, 1, 2})
}
func TestSortSliceStable(t *testing.T) {
arr := []int{3, 1, 2, 1}
SortSliceStable(arr, func(a, b int) bool { return a < b })
tst.AssertArrayEqual(t, arr, []int{1, 1, 2, 3})
}
func TestAsSortedSliceStable(t *testing.T) {
src := []int{3, 1, 2, 1}
out := AsSortedSliceStable(src, func(a, b int) bool { return a < b })
tst.AssertArrayEqual(t, out, []int{1, 1, 2, 3})
tst.AssertArrayEqual(t, src, []int{3, 1, 2, 1})
}
func TestIsSliceSorted(t *testing.T) {
tst.AssertEqual(t, IsSliceSorted([]int{1, 2, 3}, func(a, b int) bool { return a < b }), true)
tst.AssertEqual(t, IsSliceSorted([]int{3, 2, 1}, func(a, b int) bool { return a < b }), false)
}
type byKey struct {
key int
v string
}
func TestSortBy(t *testing.T) {
arr := []byKey{{3, "c"}, {1, "a"}, {2, "b"}}
SortBy(arr, func(v byKey) int { return v.key })
tst.AssertEqual(t, arr[0].v, "a")
tst.AssertEqual(t, arr[1].v, "b")
tst.AssertEqual(t, arr[2].v, "c")
}
func TestAsSortedBy(t *testing.T) {
src := []byKey{{3, "c"}, {1, "a"}, {2, "b"}}
out := AsSortedBy(src, func(v byKey) int { return v.key })
tst.AssertEqual(t, out[0].v, "a")
tst.AssertEqual(t, out[2].v, "c")
// source unchanged
tst.AssertEqual(t, src[0].v, "c")
}
func TestSortByStable(t *testing.T) {
arr := []byKey{{1, "a1"}, {1, "a2"}, {0, "b"}}
SortByStable(arr, func(v byKey) int { return v.key })
tst.AssertEqual(t, arr[0].v, "b")
// stable order for ties
tst.AssertEqual(t, arr[1].v, "a1")
tst.AssertEqual(t, arr[2].v, "a2")
}
func TestAsSortedByStable(t *testing.T) {
src := []byKey{{1, "a1"}, {1, "a2"}, {0, "b"}}
out := AsSortedByStable(src, func(v byKey) int { return v.key })
tst.AssertEqual(t, out[0].v, "b")
tst.AssertEqual(t, out[1].v, "a1")
tst.AssertEqual(t, out[2].v, "a2")
// source unchanged
tst.AssertEqual(t, src[0].v, "a1")
}