v/vlib/rand/cuid2/cuid2_test.v
2024-12-17 16:32:24 +02:00

64 lines
1.4 KiB
V

module cuid2
import rand.musl
import rand.mt19937
fn test_cuid2() {
// default prng(wyrand), default id length = 24
mut g24 := new()
uuid24 := g24.generate()
assert uuid24.len == 24
assert is_cuid(uuid24)
// default prng(wyrand), id length = 2
mut g2 := new(length: 2)
uuid2 := g2.generate()
assert uuid2.len == 2
assert is_cuid(uuid2)
// default prng(wyrand), id length = 32
mut g32 := new(length: 32)
uuid32 := g32.generate()
assert uuid32.len == 32
assert is_cuid(uuid32)
// musl prng, id length = 28
mut g_musl := new(prng: &musl.MuslRNG{}, length: 28)
uuid_musl := g_musl.generate()
assert uuid_musl.len == 28
assert is_cuid(uuid_musl)
// mt19937 prng, default id length = 24
mut g_mt19937 := new(prng: &mt19937.MT19937RNG{})
uuid_mt19937 := g_mt19937.generate()
assert uuid_mt19937.len == 24
assert is_cuid(uuid_mt19937)
// successive calls
// default prng(wyrand), default id length = 24
mut g := new()
mut ids := []string{}
for id in g {
eprintln(id)
// id length should be default length(24)
assert id.len == 24
assert is_cuid(id)
ids << id
if ids.len == 5 {
break
}
}
// successive calls to g.next() in a row should be unique
assert ids[0] != ids[1]
assert ids[0] != ids[2]
assert ids[0] != ids[3]
assert ids[0] != ids[4]
assert ids[1] != ids[2]
assert ids[1] != ids[3]
assert ids[1] != ids[4]
assert ids[2] != ids[3]
assert ids[2] != ids[4]
assert ids[3] != ids[4]
}