| 1 | module cuid2 |
| 2 | |
| 3 | import rand.musl |
| 4 | import rand.mt19937 |
| 5 | |
| 6 | fn 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 | |