[🤖] 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
+240
View File
@@ -0,0 +1,240 @@
package tst
import (
"testing"
)
// These tests exercise the success-paths of each assertion: i.e. the cases
// where the assertion should NOT mark the test as failed. They verify the
// boolean/conditional logic of each function. We avoid testing the failure
// branches because the assertions take a concrete *testing.T (not an
// interface), so substituting a mock would require unsafe/reflection tricks
// that are brittle and cascade failures to the parent test.
// --- AssertEqual ----------------------------------------------------------
func TestAssertEqual_Int(t *testing.T) {
AssertEqual(t, 42, 42)
AssertEqual(t, -1, -1)
AssertEqual(t, 0, 0)
}
func TestAssertEqual_String(t *testing.T) {
AssertEqual(t, "hello", "hello")
AssertEqual(t, "", "")
}
func TestAssertEqual_Bool(t *testing.T) {
AssertEqual(t, true, true)
AssertEqual(t, false, false)
}
func TestAssertEqual_Float(t *testing.T) {
AssertEqual(t, 3.14, 3.14)
}
// --- AssertArrayEqual -----------------------------------------------------
func TestAssertArrayEqual_Empty(t *testing.T) {
AssertArrayEqual(t, []int{}, []int{})
}
func TestAssertArrayEqual_Equal(t *testing.T) {
AssertArrayEqual(t, []int{1, 2, 3}, []int{1, 2, 3})
AssertArrayEqual(t, []string{"a", "b"}, []string{"a", "b"})
}
func TestAssertArrayEqual_SingleElement(t *testing.T) {
AssertArrayEqual(t, []int{7}, []int{7})
}
// --- AssertNotEqual -------------------------------------------------------
func TestAssertNotEqual_Int(t *testing.T) {
AssertNotEqual(t, 1, 2)
AssertNotEqual(t, 0, -1)
}
func TestAssertNotEqual_String(t *testing.T) {
AssertNotEqual(t, "foo", "bar")
AssertNotEqual(t, "", "x")
}
func TestAssertNotEqual_Bool(t *testing.T) {
AssertNotEqual(t, true, false)
}
// --- AssertDeepEqual ------------------------------------------------------
func TestAssertDeepEqual_Struct(t *testing.T) {
type s struct {
A int
B string
}
AssertDeepEqual(t, s{A: 1, B: "x"}, s{A: 1, B: "x"})
}
func TestAssertDeepEqual_Slice(t *testing.T) {
AssertDeepEqual(t, []int{1, 2, 3}, []int{1, 2, 3})
}
func TestAssertDeepEqual_Map(t *testing.T) {
AssertDeepEqual(t, map[string]int{"a": 1, "b": 2}, map[string]int{"a": 1, "b": 2})
}
func TestAssertDeepEqual_NilSlice(t *testing.T) {
var a, b []int
AssertDeepEqual(t, a, b)
}
func TestAssertDeepEqual_NestedStruct(t *testing.T) {
type inner struct{ X int }
type outer struct {
I inner
S []string
}
a := outer{I: inner{X: 1}, S: []string{"a", "b"}}
b := outer{I: inner{X: 1}, S: []string{"a", "b"}}
AssertDeepEqual(t, a, b)
}
// --- AssertSetDeepEqual ---------------------------------------------------
func TestAssertSetDeepEqual_Empty(t *testing.T) {
AssertSetDeepEqual(t, []int{}, []int{})
}
func TestAssertSetDeepEqual_SameOrder(t *testing.T) {
AssertSetDeepEqual(t, []int{1, 2, 3}, []int{1, 2, 3})
}
func TestAssertSetDeepEqual_DifferentOrder(t *testing.T) {
AssertSetDeepEqual(t, []int{3, 1, 2}, []int{1, 2, 3})
}
func TestAssertSetDeepEqual_Strings(t *testing.T) {
AssertSetDeepEqual(t, []string{"b", "a", "c"}, []string{"a", "b", "c"})
}
func TestAssertSetDeepEqual_Structs(t *testing.T) {
type s struct{ V int }
AssertSetDeepEqual(t, []s{{V: 2}, {V: 1}}, []s{{V: 1}, {V: 2}})
}
// --- AssertNotDeepEqual ---------------------------------------------------
func TestAssertNotDeepEqual_Struct(t *testing.T) {
type s struct {
A int
}
AssertNotDeepEqual(t, s{A: 1}, s{A: 2})
}
func TestAssertNotDeepEqual_Slice(t *testing.T) {
AssertNotDeepEqual(t, []int{1, 2}, []int{1, 2, 3})
}
func TestAssertNotDeepEqual_Map(t *testing.T) {
AssertNotDeepEqual(t, map[string]int{"a": 1}, map[string]int{"b": 1})
}
// --- AssertDeRefEqual -----------------------------------------------------
func TestAssertDeRefEqual_Int(t *testing.T) {
v := 42
AssertDeRefEqual(t, &v, 42)
}
func TestAssertDeRefEqual_String(t *testing.T) {
v := "hello"
AssertDeRefEqual(t, &v, "hello")
}
func TestAssertDeRefEqual_Bool(t *testing.T) {
v := true
AssertDeRefEqual(t, &v, true)
}
// --- AssertPtrEqual -------------------------------------------------------
func TestAssertPtrEqual_BothNil(t *testing.T) {
var a, b *int
AssertPtrEqual(t, a, b)
}
func TestAssertPtrEqual_SameValue(t *testing.T) {
a, b := 5, 5
AssertPtrEqual(t, &a, &b)
}
func TestAssertPtrEqual_DifferentPointersSameValue(t *testing.T) {
a, b := "hi", "hi"
AssertPtrEqual(t, &a, &b)
}
func TestAssertPtrEqual_SamePointer(t *testing.T) {
a := 99
AssertPtrEqual(t, &a, &a)
}
// --- AssertHexEqual -------------------------------------------------------
func TestAssertHexEqual_Empty(t *testing.T) {
AssertHexEqual(t, "", []byte{})
}
func TestAssertHexEqual_Bytes(t *testing.T) {
AssertHexEqual(t, "deadbeef", []byte{0xde, 0xad, 0xbe, 0xef})
}
func TestAssertHexEqual_SingleByte(t *testing.T) {
AssertHexEqual(t, "ff", []byte{0xff})
}
func TestAssertHexEqual_AllZero(t *testing.T) {
AssertHexEqual(t, "0000", []byte{0x00, 0x00})
}
// --- AssertTrue / AssertFalse ---------------------------------------------
func TestAssertTrue(t *testing.T) {
AssertTrue(t, true)
}
func TestAssertFalse(t *testing.T) {
AssertFalse(t, false)
}
// --- AssertNoErr ----------------------------------------------------------
func TestAssertNoErr_Nil(t *testing.T) {
AssertNoErr(t, nil)
}
// --- AssertStrRepEqual ----------------------------------------------------
func TestAssertStrRepEqual_Same(t *testing.T) {
AssertStrRepEqual(t, 42, 42)
AssertStrRepEqual(t, "abc", "abc")
}
func TestAssertStrRepEqual_DifferentTypesSameRep(t *testing.T) {
// 42 and "42" both stringify to "42" via %v
AssertStrRepEqual(t, 42, "42")
}
func TestAssertStrRepEqual_Bool(t *testing.T) {
AssertStrRepEqual(t, true, true)
}
// --- AssertStrRepNotEqual -------------------------------------------------
func TestAssertStrRepNotEqual_Different(t *testing.T) {
AssertStrRepNotEqual(t, 42, 43)
AssertStrRepNotEqual(t, "abc", "xyz")
}
func TestAssertStrRepNotEqual_BoolVsInt(t *testing.T) {
// "true" != "1"
AssertStrRepNotEqual(t, true, 1)
}