USING: arrays assocs fry kernel linked-assocs punycode
-tools.test urls ;
+punycode.private tools.test urls ;
+
+{ 0 } [ CHAR: A decode-digit ] unit-test
+{ 1 } [ CHAR: B decode-digit ] unit-test
+{ 25 } [ CHAR: Z decode-digit ] unit-test
+{ 26 } [ CHAR: 0 decode-digit ] unit-test
+{ 35 } [ CHAR: 9 decode-digit ] unit-test
+[ CHAR: & decode-digit ] [ invalid-digit? ] must-fail-with
{
! Wikipedia Examples
ERROR: invalid-digit char ;
-:: decode-digit ( ch -- digit )
+: decode-digit ( ch -- digit )
{
- { [ ch CHAR: A CHAR: Z between? ] [ ch CHAR: A - ] }
- { [ ch CHAR: 0 CHAR: 9 between? ] [ ch CHAR: 0 26 - - ] }
- [ ch invalid-digit ]
+ { [ dup LETTER? ] [ CHAR: A - ] }
+ { [ dup digit? ] [ CHAR: 0 26 - - ] }
+ [ invalid-digit ]
} cond ;
:: decode-delta ( extended extpos! bias -- extpos' delta )