52 lines
1.6 KiB
Factor
52 lines
1.6 KiB
Factor
! Copyright (C) 2019 Alexander Ilin.
|
|
! See http://factorcode.org/license.txt for BSD license.
|
|
USING: accessors io.binary kernel math namespaces sequences
|
|
strings tools.test ulid ulid.private ;
|
|
IN: ulid.tests
|
|
|
|
{ "0123456789ABCDEFGH1JK1MN0PQRSTUVWXYZ" }
|
|
[ "0123456789abcdefghijklmnopqrstuvwxyz" normalize-ulid ] unit-test
|
|
|
|
{ "ABCDEFGH1JK1MN0PQRSTUVWXYZ" }
|
|
[ "ABCDEFGHIJKLMNOPQRSTUVWXYZ" normalize-ulid ] unit-test
|
|
|
|
[ "aoeu" ulid>bytes ] [
|
|
[ ulid>bytes-bad-length? ] keep n>> 4 = and
|
|
] must-fail-with
|
|
|
|
[ "aBCDEFGH1JK1MN0PQRSTUVWXYZ" ulid>bytes ] [
|
|
[ ulid>bytes-bad-character? ] keep ch>> CHAR: a = and
|
|
] must-fail-with
|
|
|
|
[ "ABCDEFGH1JK1MN0PQRSTUVWXYZ" ulid>bytes ] [
|
|
[ ulid>bytes-bad-character? ] keep ch>> CHAR: U = and
|
|
] must-fail-with
|
|
|
|
[ "ABCDEFGH1JK1MN0PQRST0VWXYZ" ulid>bytes ]
|
|
[ ulid>bytes-overflow? ] must-fail-with
|
|
|
|
{ B{ 235 99 92 248 68 50 152 105 80 90 248 206 129 190 119 223 } }
|
|
[ "7BCDEFGH1JK1MN0PQRST0VWXYZ" ulid>bytes ] unit-test
|
|
|
|
{ "7BCDEFGH1JK1MN0PQRST0VWXYZ" }
|
|
[ B{ 235 99 92 248 68 50 152 105 80 90 248 206 129 190 119 223 } bytes>ulid ] unit-test
|
|
|
|
[ B{ 235 99 92 248 68 50 152 105 80 90 248 206 129 190 119 } bytes>ulid ] [
|
|
[ bytes>ulid-bad-length? ] keep n>> 15 = and
|
|
] must-fail-with
|
|
|
|
{ t } [ ulid string? ] unit-test
|
|
{ 26 } [ ulid length ] unit-test
|
|
{ f } [ ulid ulid = ] unit-test
|
|
|
|
: ulid-less-than-80-bits ( -- ulid )
|
|
ulid last-random-bits get 80-bits >=
|
|
[ drop ulid-less-than-80-bits ] when ;
|
|
|
|
{ t } [
|
|
ulid-less-than-80-bits t (ulid) [ ulid>bytes be> ] bi@ 1 - =
|
|
] unit-test
|
|
|
|
[ 80-bits \ last-random-bits set t (ulid) ]
|
|
[ ulid-overflow? ] must-fail-with
|