38 lines
908 B
Go
38 lines
908 B
Go
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")
|
|
}
|
|
}
|