This commit is contained in:
@@ -0,0 +1,88 @@
|
||||
package sq
|
||||
|
||||
import (
|
||||
"git.blackforestbytes.com/BlackForestBytes/goext/tst"
|
||||
"strings"
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestPPID(t *testing.T) {
|
||||
id := PPID()
|
||||
tst.AssertTrue(t, strings.HasPrefix(id, "p_"))
|
||||
if len(id) != 2+8 {
|
||||
t.Errorf("expected length 10, got %d (id=%q)", len(id), id)
|
||||
}
|
||||
|
||||
// uniqueness - very high probability with 8 base62 chars
|
||||
seen := map[string]bool{}
|
||||
for range 1000 {
|
||||
x := PPID()
|
||||
if seen[x] {
|
||||
t.Errorf("duplicate PPID: %s", x)
|
||||
}
|
||||
seen[x] = true
|
||||
}
|
||||
}
|
||||
|
||||
func TestPPAdd(t *testing.T) {
|
||||
pp := PP{}
|
||||
id1 := pp.Add(123)
|
||||
id2 := pp.Add("hello")
|
||||
|
||||
tst.AssertNotEqual(t, id1, id2)
|
||||
tst.AssertEqual(t, 123, pp[id1])
|
||||
tst.AssertEqual(t, "hello", pp[id2])
|
||||
tst.AssertEqual(t, 2, len(pp))
|
||||
}
|
||||
|
||||
func TestPPAddAll(t *testing.T) {
|
||||
a := PP{"a": 1, "b": 2}
|
||||
b := PP{"c": 3, "d": 4}
|
||||
a.AddAll(b)
|
||||
|
||||
tst.AssertEqual(t, 4, len(a))
|
||||
tst.AssertEqual(t, 1, a["a"])
|
||||
tst.AssertEqual(t, 2, a["b"])
|
||||
tst.AssertEqual(t, 3, a["c"])
|
||||
tst.AssertEqual(t, 4, a["d"])
|
||||
}
|
||||
|
||||
func TestPPAddAllOverwrite(t *testing.T) {
|
||||
a := PP{"a": 1, "b": 2}
|
||||
b := PP{"a": 99}
|
||||
a.AddAll(b)
|
||||
|
||||
tst.AssertEqual(t, 2, len(a))
|
||||
tst.AssertEqual(t, 99, a["a"])
|
||||
tst.AssertEqual(t, 2, a["b"])
|
||||
}
|
||||
|
||||
func TestJoin(t *testing.T) {
|
||||
a := PP{"a": 1, "b": 2}
|
||||
b := PP{"c": 3}
|
||||
c := PP{"d": 4, "a": 99}
|
||||
|
||||
r := Join(a, b, c)
|
||||
|
||||
tst.AssertEqual(t, 4, len(r))
|
||||
tst.AssertEqual(t, 99, r["a"])
|
||||
tst.AssertEqual(t, 2, r["b"])
|
||||
tst.AssertEqual(t, 3, r["c"])
|
||||
tst.AssertEqual(t, 4, r["d"])
|
||||
|
||||
// Source maps must remain unchanged
|
||||
tst.AssertEqual(t, 2, len(a))
|
||||
tst.AssertEqual(t, 1, a["a"])
|
||||
}
|
||||
|
||||
func TestJoinEmpty(t *testing.T) {
|
||||
r := Join()
|
||||
tst.AssertEqual(t, 0, len(r))
|
||||
}
|
||||
|
||||
func TestJoinSingle(t *testing.T) {
|
||||
a := PP{"a": 1}
|
||||
r := Join(a)
|
||||
tst.AssertEqual(t, 1, len(r))
|
||||
tst.AssertEqual(t, 1, r["a"])
|
||||
}
|
||||
Reference in New Issue
Block a user