seqid_test.gno

1.04 Kb ยท 68 lines
 1package seqid
 2
 3import (
 4	"fmt"
 5	"strings"
 6	"testing"
 7)
 8
 9func TestID(t *testing.T) {
10	var i ID
11
12	for j := 0; j < 100; j++ {
13		i.Next()
14	}
15	if i != 100 {
16		t.Fatalf("invalid: wanted %d got %d", 100, i)
17	}
18}
19
20func TestID_Overflow(t *testing.T) {
21	i := ID(maxID)
22
23	defer func() {
24		err := recover()
25		if !strings.Contains(fmt.Sprint(err), "next ID overflows") {
26			t.Errorf("did not overflow")
27		}
28	}()
29
30	i.Next()
31}
32
33func TestID_Binary(t *testing.T) {
34	var i ID
35	prev := i.Binary()
36
37	for j := 0; j < 1000; j++ {
38		cur := i.Next().Binary()
39		if cur <= prev {
40			t.Fatalf("cur %x > prev %x", cur, prev)
41		}
42		prev = cur
43	}
44}
45
46func TestID_String(t *testing.T) {
47	var i ID
48	prev := i.String()
49
50	for j := 0; j < 1000; j++ {
51		cur := i.Next().String()
52		if cur <= prev {
53			t.Fatalf("cur %s > prev %s", cur, prev)
54		}
55		prev = cur
56	}
57
58	// Test for when cford32 switches over to the long encoding.
59	i = 1<<34 - 512
60	for j := 0; j < 1024; j++ {
61		cur := i.Next().String()
62		// println(cur)
63		if cur <= prev {
64			t.Fatalf("cur %s > prev %s", cur, prev)
65		}
66		prev = cur
67	}
68}