]> gitweb.factorcode.org Git - factor.git/blob - extra/ulid/ulid-tests.factor
Fixes #2966
[factor.git] / extra / ulid / ulid-tests.factor
1 ! Copyright (C) 2019 Alexander Ilin.
2 ! See http://factorcode.org/license.txt for BSD license.
3 USING: accessors endian kernel math namespaces sequences
4 strings tools.test ulid ulid.private ;
5 IN: ulid.tests
6
7 { "0123456789ABCDEFGH1JK1MN0PQRSTUVWXYZ" }
8 [ "0123456789abcdefghijklmnopqrstuvwxyz" normalize-ulid ] unit-test
9
10 { "ABCDEFGH1JK1MN0PQRSTUVWXYZ" }
11 [ "ABCDEFGHIJKLMNOPQRSTUVWXYZ" normalize-ulid ] unit-test
12
13 [ "aoeu" ulid>bytes ] [
14     [ ulid>bytes-bad-length? ] keep n>> 4 = and
15 ] must-fail-with
16
17 [ "aBCDEFGH1JK1MN0PQRSTUVWXYZ" ulid>bytes ] [
18     [ ulid>bytes-bad-character? ] keep ch>> CHAR: a = and
19 ] must-fail-with
20
21 [ "ABCDEFGH1JK1MN0PQRSTUVWXYZ" ulid>bytes ] [
22     [ ulid>bytes-bad-character? ] keep ch>> CHAR: U = and
23 ] must-fail-with
24
25 [ "ABCDEFGH1JK1MN0PQRST0VWXYZ" ulid>bytes ]
26 [ ulid>bytes-overflow? ] must-fail-with
27
28 { B{ 235 99 92 248 68 50 152 105 80 90 248 206 129 190 119 223 } }
29 [ "7BCDEFGH1JK1MN0PQRST0VWXYZ" ulid>bytes ] unit-test
30
31 { "7BCDEFGH1JK1MN0PQRST0VWXYZ" }
32 [ B{ 235 99 92 248 68 50 152 105 80 90 248 206 129 190 119 223 } bytes>ulid ] unit-test
33
34 [ B{ 235 99 92 248 68 50 152 105 80 90 248 206 129 190 119 } bytes>ulid ] [
35     [ bytes>ulid-bad-length? ] keep n>> 15 = and
36 ] must-fail-with
37
38 { t } [ ulid string? ] unit-test
39 { 26 } [ ulid length ] unit-test
40 { f } [ ulid ulid = ] unit-test
41
42 : ulid-less-than-80-bits ( -- ulid )
43     ulid last-random-bits get 80-bits >=
44     [ drop ulid-less-than-80-bits ] when ;
45
46 { t } [
47     ulid-less-than-80-bits t (ulid) [ ulid>bytes be> ] bi@ 1 - =
48 ] unit-test
49
50 [ 80-bits \ last-random-bits set t (ulid) ]
51 [ ulid-overflow? ] must-fail-with