package entity import ( "math" "testing" ) func TestDefaultSparkID(t *testing.T) { a := DefaultSparkID(100) b := DefaultSparkID(101) if a == b || a[0] != 's' || !ValidSparkID(a) || !ValidSparkID(b) { t.Fatalf("%s %s", a, b) } if len(a) != 1+sparkIDBodyLen || len(a) > SparkIDMax || len(a) < SparkIDMin { t.Fatalf("len %s", a) } if DefaultSparkID(100) != a { t.Fatal("not deterministic") } if DefaultSparkID(math.MaxInt64) == a || !ValidSparkID(DefaultSparkID(math.MaxInt64)) { t.Fatal("max int64") } seen := map[string]int64{} for id := int64(0); id < 4000; id++ { s := DefaultSparkID(id) if !ValidSparkID(s) { t.Fatalf("invalid %d %s", id, s) } if other, ok := seen[s]; ok { t.Fatalf("collision %d %d %s", other, id, s) } seen[s] = id } if ValidSparkID("1abcdef") || ValidSparkID("abcdefg") || ValidSparkID("abcdefghijklmnopq") { t.Fatal("spark_id rules") } }