Something went wrong. Try again.
wip outbox library design
Something went wrong. Try again.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960package outpost
import ( "strings" "testing" "time")
func TestNewID(t *testing.T) { const n = 1000
ids := make([]string, n) for i := range ids { id, err := newID() if err != nil { t.Fatalf("newID: %v", err) } ids[i] = id }
t.Run("unique", func(t *testing.T) { seen := make(map[string]bool, len(ids)) for _, id := range ids { if seen[id] { t.Fatalf("duplicate id %q", id) } seen[id] = true } })
t.Run("26 Crockford characters", func(t *testing.T) { for _, id := range ids { if len(id) != 26 { t.Fatalf("len(%q) = %d, want 26", id, len(id)) } for _, r := range id { if !strings.ContainsRune(crockford, r) { t.Fatalf("id %q contains %q, which is not Crockford", id, r) } } } })
t.Run("timestamp decodes to now", func(t *testing.T) { for _, id := range ids { raw, err := idEncoding.DecodeString(id) if err != nil { t.Fatalf("decode %q: %v", id, err) } var ms int64 for j := 0; j < 6; j++ { ms = ms<<8 | int64(raw[j]) } if d := time.Since(time.UnixMilli(ms)); d < -time.Second || d > time.Minute { t.Fatalf("timestamp of %q is %s from now", id, d) } } })}