v2 / vlib / rand / cuid2 / cuid2_test.v
64 lines · 55 sloc · 1.41 KB · a1de8dbd106caa90679ad5416b22bfc20ffd6d0b
Raw
1module cuid2
2
3import rand.musl
4import rand.mt19937
5
6fn test_cuid2() {
7 // default prng(wyrand), default id length = 24
8 mut g24 := new()
9 uuid24 := g24.generate()
10 assert uuid24.len == 24
11 assert is_cuid(uuid24)
12
13 // default prng(wyrand), id length = 2
14 mut g2 := new(length: 2)
15 uuid2 := g2.generate()
16 assert uuid2.len == 2
17 assert is_cuid(uuid2)
18
19 // default prng(wyrand), id length = 32
20 mut g32 := new(length: 32)
21 uuid32 := g32.generate()
22 assert uuid32.len == 32
23 assert is_cuid(uuid32)
24
25 // musl prng, id length = 28
26 mut g_musl := new(prng: &musl.MuslRNG{}, length: 28)
27 uuid_musl := g_musl.generate()
28 assert uuid_musl.len == 28
29 assert is_cuid(uuid_musl)
30
31 // mt19937 prng, default id length = 24
32 mut g_mt19937 := new(prng: &mt19937.MT19937RNG{})
33 uuid_mt19937 := g_mt19937.generate()
34 assert uuid_mt19937.len == 24
35 assert is_cuid(uuid_mt19937)
36
37 // successive calls
38 // default prng(wyrand), default id length = 24
39 mut g := new()
40 mut ids := []string{}
41 for id in g {
42 eprintln(id)
43 // id length should be default length(24)
44 assert id.len == 24
45 assert is_cuid(id)
46
47 ids << id
48 if ids.len == 5 {
49 break
50 }
51 }
52
53 // successive calls to g.next() in a row should be unique
54 assert ids[0] != ids[1]
55 assert ids[0] != ids[2]
56 assert ids[0] != ids[3]
57 assert ids[0] != ids[4]
58 assert ids[1] != ids[2]
59 assert ids[1] != ids[3]
60 assert ids[1] != ids[4]
61 assert ids[2] != ids[3]
62 assert ids[2] != ids[4]
63 assert ids[3] != ids[4]
64}
65