Move source from go/core/ to root, tests from go/tests/ to tests/. Module path dappco.re/go/core resolves cleanly — builds and tests pass. Co-Authored-By: Virgil <virgil@lethean.io>
90 lines
1.9 KiB
Go
90 lines
1.9 KiB
Go
package core_test
|
|
|
|
import (
|
|
"testing"
|
|
|
|
. "dappco.re/go/core"
|
|
"github.com/stretchr/testify/assert"
|
|
)
|
|
|
|
// --- Array[T] ---
|
|
|
|
func TestArray_New_Good(t *testing.T) {
|
|
a := NewArray("a", "b", "c")
|
|
assert.Equal(t, 3, a.Len())
|
|
}
|
|
|
|
func TestArray_Add_Good(t *testing.T) {
|
|
a := NewArray[string]()
|
|
a.Add("x", "y")
|
|
assert.Equal(t, 2, a.Len())
|
|
assert.True(t, a.Contains("x"))
|
|
assert.True(t, a.Contains("y"))
|
|
}
|
|
|
|
func TestArray_AddUnique_Good(t *testing.T) {
|
|
a := NewArray("a", "b")
|
|
a.AddUnique("b", "c")
|
|
assert.Equal(t, 3, a.Len())
|
|
}
|
|
|
|
func TestArray_Contains_Good(t *testing.T) {
|
|
a := NewArray(1, 2, 3)
|
|
assert.True(t, a.Contains(2))
|
|
assert.False(t, a.Contains(99))
|
|
}
|
|
|
|
func TestArray_Filter_Good(t *testing.T) {
|
|
a := NewArray(1, 2, 3, 4, 5)
|
|
r := a.Filter(func(n int) bool { return n%2 == 0 })
|
|
assert.True(t, r.OK)
|
|
evens := r.Value.(*Array[int])
|
|
assert.Equal(t, 2, evens.Len())
|
|
assert.True(t, evens.Contains(2))
|
|
assert.True(t, evens.Contains(4))
|
|
}
|
|
|
|
func TestArray_Each_Good(t *testing.T) {
|
|
a := NewArray("a", "b", "c")
|
|
var collected []string
|
|
a.Each(func(s string) { collected = append(collected, s) })
|
|
assert.Equal(t, []string{"a", "b", "c"}, collected)
|
|
}
|
|
|
|
func TestArray_Remove_Good(t *testing.T) {
|
|
a := NewArray("a", "b", "c")
|
|
a.Remove("b")
|
|
assert.Equal(t, 2, a.Len())
|
|
assert.False(t, a.Contains("b"))
|
|
}
|
|
|
|
func TestArray_Remove_Bad(t *testing.T) {
|
|
a := NewArray("a", "b")
|
|
a.Remove("missing")
|
|
assert.Equal(t, 2, a.Len())
|
|
}
|
|
|
|
func TestArray_Deduplicate_Good(t *testing.T) {
|
|
a := NewArray("a", "b", "a", "c", "b")
|
|
a.Deduplicate()
|
|
assert.Equal(t, 3, a.Len())
|
|
}
|
|
|
|
func TestArray_Clear_Good(t *testing.T) {
|
|
a := NewArray(1, 2, 3)
|
|
a.Clear()
|
|
assert.Equal(t, 0, a.Len())
|
|
}
|
|
|
|
func TestArray_AsSlice_Good(t *testing.T) {
|
|
a := NewArray("x", "y")
|
|
s := a.AsSlice()
|
|
assert.Equal(t, []string{"x", "y"}, s)
|
|
}
|
|
|
|
func TestArray_Empty_Good(t *testing.T) {
|
|
a := NewArray[int]()
|
|
assert.Equal(t, 0, a.Len())
|
|
assert.False(t, a.Contains(0))
|
|
assert.Equal(t, []int(nil), a.AsSlice())
|
|
}
|