46 lines
848 B
Go
46 lines
848 B
Go
package lib
|
|
|
|
import (
|
|
"testing"
|
|
)
|
|
|
|
func TestNewID_unique(t *testing.T) {
|
|
ids := make(map[int64]bool)
|
|
for i := 0; i < 1000; i++ {
|
|
id := NewID()
|
|
if id <= 0 {
|
|
t.Fatalf("ID should be positive, got %d", id)
|
|
}
|
|
if ids[id] {
|
|
t.Fatalf("duplicate ID after %d iterations", i)
|
|
}
|
|
ids[id] = true
|
|
}
|
|
}
|
|
|
|
func TestIDToHex_and_back(t *testing.T) {
|
|
id := NewID()
|
|
hex := IDToHex(id)
|
|
if len(hex) != 16 {
|
|
t.Fatalf("hex should be 16 chars, got %d: %s", len(hex), hex)
|
|
}
|
|
back, err := HexToID(hex)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if back != id {
|
|
t.Errorf("roundtrip failed: %d -> %s -> %d", id, hex, back)
|
|
}
|
|
}
|
|
|
|
func TestHexToID_invalid(t *testing.T) {
|
|
_, err := HexToID("short")
|
|
if err == nil {
|
|
t.Error("should reject short hex")
|
|
}
|
|
_, err = HexToID("zzzzzzzzzzzzzzzz")
|
|
if err == nil {
|
|
t.Error("should reject non-hex chars")
|
|
}
|
|
}
|