>NUMBER
drom opened this issue · 1 comments
drom commented
\ >NUMBER TESTS
CREATE GN-BUF 0 C,
: GN-STRING GN-BUF 1 ;
: GN-CONSUMED GN-BUF CHAR+ 0 ;
: GN' [CHAR] ' WORD CHAR+ C@ GN-BUF C! GN-STRING ;
T{ 0 0 GN' 0' >NUMBER -> 0 0 GN-CONSUMED }T
T{ 0 0 GN' 1' >NUMBER -> 1 0 GN-CONSUMED }T
T{ 1 0 GN' 1' >NUMBER -> BASE @ 1+ 0 GN-CONSUMED }T
T{ 0 0 GN' -' >NUMBER -> 0 0 GN-STRING }T \ SHOULD FAIL TO CONVERT THESE
T{ 0 0 GN' +' >NUMBER -> 0 0 GN-STRING }T
T{ 0 0 GN' .' >NUMBER -> 0 0 GN-STRING }T
: >NUMBER-BASED
BASE @ >R BASE ! >NUMBER R> BASE ! ;
T{ 0 0 GN' 2' 10 >NUMBER-BASED -> 2 0 GN-CONSUMED }T
T{ 0 0 GN' 2' 2 >NUMBER-BASED -> 0 0 GN-STRING }T
T{ 0 0 GN' F' 10 >NUMBER-BASED -> F 0 GN-CONSUMED }T
T{ 0 0 GN' G' 10 >NUMBER-BASED -> 0 0 GN-STRING }T
T{ 0 0 GN' G' MAX-BASE >NUMBER-BASED -> 10 0 GN-CONSUMED }T
T{ 0 0 GN' Z' MAX-BASE >NUMBER-BASED -> 23 0 GN-CONSUMED }T
: GN1 \ ( UD BASE -- UD' LEN ) UD SHOULD EQUAL UD' AND LEN SHOULD BE ZERO.
BASE @ >R BASE !
<# #S #>
0 0 2SWAP >NUMBER SWAP DROP \ RETURN LENGTH ONLY
R> BASE ! ;
T{ 0 0 2 GN1 -> 0 0 0 }T
T{ MAX-UINT 0 2 GN1 -> MAX-UINT 0 0 }T
T{ MAX-UINT DUP 2 GN1 -> MAX-UINT DUP 0 }T
T{ 0 0 MAX-BASE GN1 -> 0 0 0 }T
T{ MAX-UINT 0 MAX-BASE GN1 -> MAX-UINT 0 0 }T
T{ MAX-UINT DUP MAX-BASE GN1 -> MAX-UINT DUP 0 }T
Errors:
Error: in line: 886 T{ 0 0 GN' 0' >NUMBER -> 0 0 GN-CONSUMED }T expected [ 0, 0, 147, 1 ] to deeply equal [ 0, 0, 148, 0 ].
Error: in line: 887 T{ 0 0 GN' 1' >NUMBER -> 1 0 GN-CONSUMED }T expected [ 0, 0, 147, 1 ] to deeply equal [ 1, 0, 148, 0 ].
Error: in line: 888 T{ 1 0 GN' 1' >NUMBER -> BASE @ 1+ 0 GN-CONSUMED }T expected [ 1, 0, 147, 1 ] to deeply equal [ 17, 0, 148, 0 ].
.
.
.
Error: in line: 896 T{ 0 0 GN' 2' 10 >NUMBER-BASED -> 2 0 GN-CONSUMED }T expected [ 0, 0, 147, 1 ] to deeply equal [ 2, 0, 148, 0 ].
.
Error: in line: 898 T{ 0 0 GN' F' 10 >NUMBER-BASED -> F 0 GN-CONSUMED }T expected [ 0, 0, 147, 1 ] to deeply equal [ 15, 0, 148, 0 ].
.
Error: in line: 900 T{ 0 0 GN' G' MAX-BASE >NUMBER-BASED -> 10 0 GN-CONSUMED }T expected [ 0, 0, 147, 1 ] to deeply equal [ 16, 0, 148, 0 ].
Error: in line: 901 T{ 0 0 GN' Z' MAX-BASE >NUMBER-BASED -> 23 0 GN-CONSUMED }T expected [ 0, 0, 147, 1 ] to deeply equal [ 35, 0, 148, 0 ].
Error: in line: 908 T{ 0 0 2 GN1 -> 0 0 0 }T expected [ 0, 0, 1 ] to deeply equal [ 0, 0, 0 ].
Error: in line: 909 T{ MAX-UINT 0 2 GN1 -> MAX-UINT 0 0 }T expected [ 0, 0, 32 ] to deeply equal [ -1, 0, 0 ].
Error: in line: 910 T{ MAX-UINT DUP 2 GN1 -> MAX-UINT DUP 0 }T expected [ 0, 0, 64 ] to deeply equal [ -1, -1, 0 ].
Error: in line: 911 T{ 0 0 MAX-BASE GN1 -> 0 0 0 }T expected [ 0, 0, 1 ] to deeply equal [ 0, 0, 0 ].
Error: in line: 912 T{ MAX-UINT 0 MAX-BASE GN1 -> MAX-UINT 0 0 }T expected [ 0, 0, 7 ] to deeply equal [ -1, 0, 0 ].
Error: in line: 913 T{ MAX-UINT DUP MAX-BASE GN1 -> MAX-UINT DUP 0 }T expected [ 0, 0, 13 ] to deeply equal [ -1, -1, 0 ].
drom commented