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"]) }