-
Notifications
You must be signed in to change notification settings - Fork 0
/
iid_test.go
130 lines (97 loc) · 1.98 KB
/
iid_test.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
package iid
import (
"encoding/binary"
"fmt"
"github.com/stretchr/testify/assert"
"log"
"os"
"testing"
)
const fixedTime uint32 = 1562658708
type mockReader struct {}
func (*mockReader) Read(b []byte) (n int, e error) {
return len(b), nil
}
func TestMain(m *testing.M) {
// Mock all inputs.
RandReader = &mockReader{}
Timestamp = func () uint32 {
return fixedTime
}
os.Exit(m.Run())
}
func TestEncoding(t *testing.T) {
// Verify that the encoding is sortable.
for i := 1; i < len(encoder); i++ {
assert.True(t, encoder[i - 1] < encoder[i])
}
}
func TestNew(t *testing.T) {
id := New()
idTime := binary.BigEndian.Uint32(id)
assert.True(t, idTime == (fixedTime >> 1))
}
func ExampleNew() {
id := New()
fmt.Println(id)
// Output: Ad7YmV-----
}
func TestFromString(t *testing.T) {
ex := New()
s := Enc.EncodeToString(ex)[:StrLen]
id, err := FromString(s)
assert.Nil(t, err)
assert.Equal(t, ex, id)
}
func ExampleFromString() {
str := "MHDSedbNhXB"
s, err := FromString(str)
if err != nil {
log.Fatal(err)
}
fmt.Println(s.String())
// Output: MHDSedbNhXB
}
func TestFromUint64(t *testing.T) {
ex := New()
i := binary.BigEndian.Uint64(ex)
id := FromUint64(i)
assert.Equal(t, ex, id)
}
func ExampleFromUint64() {
var i uint64 = 6711382541547442289
id := FromUint64(i)
fmt.Println(id.Uint64())
// Output: 6711382541547442289
}
func TestFromInt(t *testing.T) {
ex := New()
i := int64(binary.BigEndian.Uint64(ex))
id := FromInt(i)
assert.Equal(t, ex, id)
}
func ExampleFromInt() {
var i int64 = 6711382541547442289
id := FromInt(i)
fmt.Println(id.Int())
// Output: 6711382541547442289
}
func TestIid_String(t *testing.T) {
ex := New()
str := ex.String()
id, err := FromString(str)
assert.Nil(t, err)
assert.Equal(t, ex, id)
}
func TestIid_Uint64(t *testing.T) {
ex := New()
i := ex.Uint64()
id := FromUint64(i)
assert.Equal(t, ex, id)
}
func TestIid_Int(t *testing.T) {
ex := New()
i := ex.Int()
id := FromInt(i)
assert.Equal(t, ex, id)
}