#FEATURE by cg
class: RegressionTests::IntegerTest
added:
#testReading3
#testReading4
category of:29 methods
--- a/RegressionTests__IntegerTest.st Sat Jul 13 14:16:52 2019 +0200
+++ b/RegressionTests__IntegerTest.st Sun Jul 21 21:03:08 2019 +0200
@@ -12,7 +12,7 @@
!
-!IntegerTest methodsFor:'misc'!
+!IntegerTest methodsFor:'helpers'!
do:a plus:b
^ a + b
@@ -31,6 +31,50 @@
"Modified: / 9.6.1999 / 16:57:20 / cg"
!
+doCompare:a againstEqual:b
+ self assert:(a < b) not.
+ self assert:(a <= b).
+ self assert:(a = b).
+ self assert:(a ~= b) not.
+ self assert:(a > b) not.
+ self assert:(a >= b).
+
+ self assert:(a perform:#< with:b) not.
+ self assert:(a perform:#<= with:b).
+ self assert:(a perform:#= with:b).
+ self assert:(a perform:#~= with:b) not.
+ self assert:(a perform:#> with:b) not.
+ self assert:(a perform:#>= with:b).
+
+ "
+ self basicNew doCompare:12 againstEqual:12
+ "
+!
+
+doCompare:a againstGreater:b
+ self assert:(a < b).
+ self assert:(a <= b).
+ self assert:(a = b) not.
+ self assert:(a ~= b).
+ self assert:(a == b) not.
+ self assert:(a ~~ b).
+ self assert:(a > b) not.
+ self assert:(a >= b) not.
+
+ self assert:(a perform:#< with:b).
+ self assert:(a perform:#<= with:b).
+ self assert:(a perform:#= with:b) not.
+ self assert:(a perform:#~= with:b).
+ self assert:(a perform:#== with:b) not.
+ self assert:(a perform:#~~ with:b).
+ self assert:(a perform:#> with:b) not.
+ self assert:(a perform:#>= with:b) not.
+
+ "
+ self basicNew doCompare:12 againstGreater:16r80000000
+ "
+!
+
doMul0_a:arg
^ arg * 0
@@ -665,50 +709,6 @@
!IntegerTest methodsFor:'tests'!
-doCompare:a againstEqual:b
- self assert:(a < b) not.
- self assert:(a <= b).
- self assert:(a = b).
- self assert:(a ~= b) not.
- self assert:(a > b) not.
- self assert:(a >= b).
-
- self assert:(a perform:#< with:b) not.
- self assert:(a perform:#<= with:b).
- self assert:(a perform:#= with:b).
- self assert:(a perform:#~= with:b) not.
- self assert:(a perform:#> with:b) not.
- self assert:(a perform:#>= with:b).
-
- "
- self basicNew doCompare:12 againstEqual:12
- "
-!
-
-doCompare:a againstGreater:b
- self assert:(a < b).
- self assert:(a <= b).
- self assert:(a = b) not.
- self assert:(a ~= b).
- self assert:(a == b) not.
- self assert:(a ~~ b).
- self assert:(a > b) not.
- self assert:(a >= b) not.
-
- self assert:(a perform:#< with:b).
- self assert:(a perform:#<= with:b).
- self assert:(a perform:#= with:b) not.
- self assert:(a perform:#~= with:b).
- self assert:(a perform:#== with:b) not.
- self assert:(a perform:#~~ with:b).
- self assert:(a perform:#> with:b) not.
- self assert:(a perform:#>= with:b) not.
-
- "
- self basicNew doCompare:12 againstGreater:16r80000000
- "
-!
-
doTestAll
"general conversion & arithmetic tests.
Notice, the arithmetic tests are both performed via regular sends
@@ -3867,59 +3867,6 @@
"
!
-testLiteralNumbers
- self assert:(self num_00000000000010000 hexPrintString = '10000').
- self assert:(self num_00000000000100000 hexPrintString = '100000').
- self assert:(self num_00000000001000000 hexPrintString = '1000000').
- self assert:(self num_00000000010000000 hexPrintString = '10000000').
- self assert:(self num_00000000100000000 hexPrintString = '100000000').
- self assert:(self num_00000001000000000 hexPrintString = '1000000000').
- self assert:(self num_00000010000000000 hexPrintString = '10000000000').
- self assert:(self num_00000100000000000 hexPrintString = '100000000000').
- self assert:(self num_00001000000000000 hexPrintString = '1000000000000').
- self assert:(self num_00010000000000000 hexPrintString = '10000000000000').
- self assert:(self num_00100000000000000 hexPrintString = '100000000000000').
- self assert:(self num_01000000000000000 hexPrintString = '1000000000000000').
- self assert:(self num_10000000000000000 hexPrintString = '10000000000000000').
-
- self assert:(self num_00000000000007FFF hexPrintString = '7FFF').
- self assert:(self num_00000000000008000 hexPrintString = '8000').
- self assert:(self num_0000000000000FFFF hexPrintString = 'FFFF').
- self assert:(self num_000000000007FFFFF hexPrintString = '7FFFFF').
- self assert:(self num_00000000000800000 hexPrintString = '800000').
- self assert:(self num_00000000000FFFFFF hexPrintString = 'FFFFFF').
- self assert:(self num_0000000007FFFFFFF hexPrintString = '7FFFFFFF').
- self assert:(self num_00000000080000000 hexPrintString = '80000000').
- self assert:(self num_000000000FFFFFFFF hexPrintString = 'FFFFFFFF').
- self assert:(self num_0000000FFFFFFFFFF hexPrintString = 'FFFFFFFFFF').
- self assert:(self num_00000FFFFFFFFFFFF hexPrintString = 'FFFFFFFFFFFF').
- self assert:(self num_000FFFFFFFFFFFFFF hexPrintString = 'FFFFFFFFFFFFFF').
- self assert:(self num_0FFFFFFFFFFFFFFFF hexPrintString = 'FFFFFFFFFFFFFFFF').
- self assert:(self num_1FFFFFFFFFFFFFFFF hexPrintString = '1FFFFFFFFFFFFFFFF').
- self assert:(self num_20000000000000000 hexPrintString = '20000000000000000').
- self assert:(self num_3FFFFFFFFFFFFFFFF hexPrintString = '3FFFFFFFFFFFFFFFF').
- self assert:(self num_40000000000000000 hexPrintString = '40000000000000000').
- self assert:(self num_7FFFFFFFFFFFFFFFF hexPrintString = '7FFFFFFFFFFFFFFFF').
- self assert:(self num_80000000000000000 hexPrintString = '80000000000000000').
-
- self assert:(self num_00000FFFFFFFFFFFE hexPrintString = 'FFFFFFFFFFFE').
- self assert:(self num_00000FFFFFFFFFFFC hexPrintString = 'FFFFFFFFFFFC').
- self assert:(self num_00000FFFFFFFFFFF8 hexPrintString = 'FFFFFFFFFFF8').
- self assert:(self num_00000FFFFFFFFFFF0 hexPrintString = 'FFFFFFFFFFF0').
- self assert:(self num_00000FFFFFFFFFFE0 hexPrintString = 'FFFFFFFFFFE0').
- self assert:(self num_00000FFFFFFFFFFC0 hexPrintString = 'FFFFFFFFFFC0').
- self assert:(self num_00000FFFFFFFFFF80 hexPrintString = 'FFFFFFFFFF80').
- self assert:(self num_00000FFFFFFFFFF00 hexPrintString = 'FFFFFFFFFF00').
-
- self assert:(self num_0000000000FFF0000 hexPrintString = 'FFF0000').
-
- "
- self basicNew testLiteralNumbers
- "
-
- "Modified: / 4.6.1999 / 18:41:09 / cg"
-!
-
testMiscMath
self assert:(2 raisedTo:2) == 4.
self assert:(2 raisedTo:2.0) = 4.0.
@@ -4206,284 +4153,6 @@
"
!
-testPrinting1
- self assert:(10 printString = '10').
- self assert:(100 printString = '100').
- self assert:(1000 printString = '1000').
- self assert:(10000 printString = '10000').
- self assert:(100000 printString = '100000').
- self assert:(1000000 printString = '1000000').
- self assert:(10000000 printString = '10000000').
- self assert:(100000000 printString = '100000000').
- self assert:(1000000000 printString = '1000000000').
- self assert:(10000000000 printString = '10000000000').
- self assert:(100000000000 printString = '100000000000').
- self assert:(1000000000000 printString = '1000000000000').
- self assert:(10000000000000 printString = '10000000000000').
- self assert:(100000000000000 printString = '100000000000000').
- self assert:(1000000000000000 printString = '1000000000000000').
- self assert:(10000000000000000 printString = '10000000000000000').
- self assert:(100000000000000000 printString = '100000000000000000').
- self assert:(1000000000000000000 printString = '1000000000000000000').
- self assert:(10000000000000000000 printString = '10000000000000000000').
-
- self assert:(16rF hexPrintString = 'F').
- self assert:(16rFF hexPrintString = 'FF').
- self assert:(16rFFF hexPrintString = 'FFF').
- self assert:(16rFFFF hexPrintString = 'FFFF').
- self assert:(16rFFFFF hexPrintString = 'FFFFF').
- self assert:(16rFFFFFF hexPrintString = 'FFFFFF').
- self assert:(16rFFFFFFF hexPrintString = 'FFFFFFF').
- self assert:(16rFFFFFFFF hexPrintString = 'FFFFFFFF').
- self assert:(16rFFFFFFFFF hexPrintString = 'FFFFFFFFF').
- self assert:(16rFFFFFFFFFF hexPrintString = 'FFFFFFFFFF').
- self assert:(16rFFFFFFFFFFF hexPrintString = 'FFFFFFFFFFF').
- self assert:(16rFFFFFFFFFFFF hexPrintString = 'FFFFFFFFFFFF').
- self assert:(16rFFFFFFFFFFFFF hexPrintString = 'FFFFFFFFFFFFF').
- self assert:(16rFFFFFFFFFFFFFF hexPrintString = 'FFFFFFFFFFFFFF').
- self assert:(16rFFFFFFFFFFFFFFF hexPrintString = 'FFFFFFFFFFFFFFF').
- self assert:(16rFFFFFFFFFFFFFFFF hexPrintString = 'FFFFFFFFFFFFFFFF').
- self assert:(16rFFFFFFFFFFFFFFFFF hexPrintString = 'FFFFFFFFFFFFFFFFF').
- self assert:(16rFFFFFFFFFFFFFFFFFF hexPrintString = 'FFFFFFFFFFFFFFFFFF').
- self assert:(16rFFFFFFFFFFFFFFFFFFF hexPrintString = 'FFFFFFFFFFFFFFFFFFF').
- self assert:(16rFFFFFFFFFFFFFFFFFFFF hexPrintString = 'FFFFFFFFFFFFFFFFFFFF').
- self assert:(16rFFFFFFFFFFFFFFFFFFFFF hexPrintString = 'FFFFFFFFFFFFFFFFFFFFF').
- self assert:(16rFFFFFFFFFFFFFFFFFFFFFF hexPrintString = 'FFFFFFFFFFFFFFFFFFFFFF').
-
- self assert:(16r10 hexPrintString = '10').
- self assert:(16r100 hexPrintString = '100').
- self assert:(16r1000 hexPrintString = '1000').
- self assert:(16r10000 hexPrintString = '10000').
- self assert:(16r100000 hexPrintString = '100000').
- self assert:(16r1000000 hexPrintString = '1000000').
- self assert:(16r10000000 hexPrintString = '10000000').
- self assert:(16r100000000 hexPrintString = '100000000').
- self assert:(16r1000000000 hexPrintString = '1000000000').
- self assert:(16r10000000000 hexPrintString = '10000000000').
- self assert:(16r100000000000 hexPrintString = '100000000000').
- self assert:(16r1000000000000 hexPrintString = '1000000000000').
- self assert:(16r10000000000000 hexPrintString = '10000000000000').
- self assert:(16r100000000000000 hexPrintString = '100000000000000').
- self assert:(16r1000000000000000 hexPrintString = '1000000000000000').
- self assert:(16r10000000000000000 hexPrintString = '10000000000000000').
- self assert:(16r100000000000000000 hexPrintString = '100000000000000000').
-
- self assert:(126 printString) = '126'.
- self assert:(127 printString) = '127'.
- self assert:(128 printString) = '128'.
-
- self assert:(255 printString) = '255'.
- self assert:(256 printString) = '256'.
- self assert:(257 printString) = '257'.
-
- self assert:(32767 printString) = '32767'.
- self assert:(32768 printString) = '32768'.
- self assert:(32769 printString) = '32769'.
-
- self assert:(65535 printString) = '65535'.
- self assert:(65536 printString) = '65536'.
- self assert:(65537 printString) = '65537'.
-
- self assert:(2147483647 printString) = '2147483647'.
- self assert:(2147483648 printString) = '2147483648'.
- self assert:(2147483649 printString) = '2147483649'.
-
- self assert:(4294967295 printString) = '4294967295'.
- self assert:(4294967296 printString) = '4294967296'.
- self assert:(4294967297 printString) = '4294967297'.
-
- self assert:(127 printStringRadix:16) = '7F'.
- self assert:(123 printStringRadix:12) = 'A3'.
- self assert:(123 printStringRadix:10) = '123'.
- self assert:(123 printStringRadix:8 ) = '173'.
- self assert:(123 printStringRadix:3 ) = '11120'.
- self assert:(123 printStringRadix:2 ) = '1111011'.
- self should:[ 123 printStringRadix:1 ] raise:Error.
-
- "
- self basicNew testPrinting1
- "
-
- "Modified: / 26.10.1999 / 22:01:35 / stefan"
-!
-
-testReading1
- |t|
-
- self assert:((Integer readFrom:'4865804016353280000') printString = '4865804016353280000').
- self assert:((Integer readFrom:'4294967295') printString = '4294967295').
- self assert:((Integer readFrom:'4294967295') = 4294967295).
- self assert:((Integer readFrom:'4294967296') printString = '4294967296').
- self assert:((Integer readFrom:'4294967296') = 4294967296).
- self assert:((Integer readFrom:'4294967297') printString = '4294967297').
- self assert:((Integer readFrom:'4294967297') = 4294967297).
-
- "/ max-smallint on 32bit machines
- self assert:((Integer readFrom:'1073741823') printString = '1073741823').
- self assert:((Integer readFrom:'1073741823') class == SmallInteger).
-
- "/ min-smallint on 32bit machines
- self assert:((Integer readFrom:'-1073741824') printString = '-1073741824').
- self assert:((Integer readFrom:'-1073741824') class == SmallInteger).
-
- "/ max-smallint on 64bit machines
- self assert:((Integer readFrom:'4611686018427387903') printString = '4611686018427387903').
- SmallInteger maxBytes == 8 ifTrue:[
- self assert:((Integer readFrom:'4611686018427387903') class == SmallInteger)
- ].
- "/ max-smallint+1 on 64bit machines
- self assert:((Integer readFrom:'4611686018427387900') printString = '4611686018427387900').
- SmallInteger maxBytes == 8 ifTrue:[
- |tt t3 t3b t4a t4b t4c|
-
- self assert:((Integer readFrom:'4611686018427387900') class == SmallInteger).
- tt := (Integer readFrom:'4611686018427387900').
- t3 := tt + 3.
- self assert:(t3 class == SmallInteger).
- self assert:(t3 printString = '4611686018427387903').
- t3b := (self do:tt plus:3).
- self assert:(t3b class == SmallInteger).
- self assert:(t3b printString = '4611686018427387903').
- t4a := t3 + 1.
- self assert:(t4a class == LargeInteger).
- self assert:(t4a printString = '4611686018427387904').
- t4b := tt + 4.
- self assert:(t4b class == LargeInteger).
- self assert:(t4b printString = '4611686018427387904').
- t4c := (self do:tt plus:4).
- self assert:(t4c class == LargeInteger).
- self assert:(t4c printString = '4611686018427387904').
- ].
- self assert:((Integer readFrom:'4611686018427387904') printString = '4611686018427387904').
- self assert:((Integer readFrom:'4611686018427387904') class == LargeInteger).
-
- "/ min-smallint on 64bit machines
- self assert:((Integer readFrom:'-4611686018427387904') printString = '-4611686018427387904').
- SmallInteger maxBytes == 8 ifTrue:[
- self assert:((Integer readFrom:'-4611686018427387904') class == SmallInteger)
- ].
- self assert:((Integer readFrom:'-4611686018427387904') printString = '-4611686018427387904').
- SmallInteger maxBytes == 8 ifTrue:[
- self assert:((Integer readFrom:'-4611686018427387904') class == SmallInteger)
- ].
- self assert:((Integer readFrom:'FFFFFFFF' radix:16) hexPrintString = 'FFFFFFFF').
- self assert:((Integer readFrom:'FFFFFFFFF' radix:16) hexPrintString = 'FFFFFFFFF').
- self assert:((Integer readFrom:'FFFFFFFFFF' radix:16) hexPrintString = 'FFFFFFFFFF').
- self assert:((Integer readFrom:'FFFFFFFFFFF' radix:16) hexPrintString = 'FFFFFFFFFFF').
- self assert:((Integer readFrom:'FFFFFFFFFFFF' radix:16) hexPrintString = 'FFFFFFFFFFFF').
- self assert:((Integer readFrom:'FFFFFFFFFFFFF' radix:16) hexPrintString = 'FFFFFFFFFFFFF').
- self assert:((Integer readFrom:'FFFFFFFFFFFFFF' radix:16) hexPrintString = 'FFFFFFFFFFFFFF').
- self assert:((Integer readFrom:'FFFFFFFFFFFFFFF' radix:16) hexPrintString = 'FFFFFFFFFFFFFFF').
- self assert:((Integer readFrom:'3FFFFFFFFFFFFFF' radix:16) hexPrintString = '3FFFFFFFFFFFFFF').
- self assert:((Integer readFrom:'7FFFFFFFFFFFFFF' radix:16) hexPrintString = '7FFFFFFFFFFFFFF').
- self assert:((Integer readFrom:'400000000000000' radix:16) hexPrintString = '400000000000000').
- self assert:((Integer readFrom:'800000000000000' radix:16) hexPrintString = '800000000000000').
-
- self assert:((Integer readFrom:'16r-FFFFFFFF') printString = '-4294967295').
- self assert:((Integer readFrom:'16r-FFFFFFFFF') hexPrintString = '-FFFFFFFFF').
- self assert:((Integer readFrom:'16r-FFFFFFFFFF') hexPrintString = '-FFFFFFFFFF').
- self assert:((Integer readFrom:'16r-FFFFFFFFFFF') hexPrintString = '-FFFFFFFFFFF').
- self assert:((Integer readFrom:'16r-FFFFFFFFFFFF') hexPrintString = '-FFFFFFFFFFFF').
- self assert:((Integer readFrom:'16r-FFFFFFFFFFFFF') hexPrintString = '-FFFFFFFFFFFFF').
- self assert:((Integer readFrom:'16r-FFFFFFFFFFFFFF') hexPrintString = '-FFFFFFFFFFFFFF').
- self assert:((Integer readFrom:'16r-FFFFFFFFFFFFFFF') hexPrintString = '-FFFFFFFFFFFFFFF').
- self assert:((Integer readFrom:'16r-3FFFFFFFFFFFFFF') hexPrintString = '-3FFFFFFFFFFFFFF').
- self assert:((Integer readFrom:'16r-7FFFFFFFFFFFFFF') hexPrintString = '-7FFFFFFFFFFFFFF').
- self assert:((Integer readFrom:'16r-400000000000000') hexPrintString = '-400000000000000').
- self assert:((Integer readFrom:'16r-800000000000000') hexPrintString = '-800000000000000').
-
- self assert:((Integer readFrom:'10000000' radix:16) hexPrintString = '10000000').
- self assert:((Integer readFrom:'100000000' radix:16) hexPrintString = '100000000').
- self assert:((Integer readFrom:'1000000000' radix:16) hexPrintString = '1000000000').
- self assert:((Integer readFrom:'10000000000' radix:16) hexPrintString = '10000000000').
- self assert:((Integer readFrom:'100000000000' radix:16) hexPrintString = '100000000000').
- self assert:((Integer readFrom:'1000000000000' radix:16) hexPrintString = '1000000000000').
- self assert:((Integer readFrom:'10000000000000' radix:16) hexPrintString = '10000000000000').
-
- self assert:((Integer readFrom:'1152921504606846975' radix:10) hexPrintString = 'FFFFFFFFFFFFFFF').
- self assert:((Integer readFrom:'288230376151711743' radix:10) hexPrintString = '3FFFFFFFFFFFFFF').
- self assert:((Integer readFrom:'576460752303423487' radix:10) hexPrintString = '7FFFFFFFFFFFFFF').
- self assert:((Integer readFrom:'288230376151711744' radix:10) hexPrintString = '400000000000000').
- self assert:((Integer readFrom:'576460752303423488' radix:10) hexPrintString = '800000000000000').
-
- t := Integer readFrom:'FFFFFFFF' radix:16.
- self assert:((t + 1) hexPrintString = '100000000').
- t := Integer readFrom:'FFFFFFFFF' radix:16.
- self assert:((t + 1) hexPrintString = '1000000000').
- t := Integer readFrom:'FFFFFFFFFF' radix:16.
- self assert:((t + 1) hexPrintString = '10000000000').
- t := Integer readFrom:'FFFFFFFFFFF' radix:16.
- self assert:((t + 1) hexPrintString = '100000000000').
-
- t := Integer readFrom:'10000000' radix:16.
- self assert:((t + 1) hexPrintString = '10000001').
- t := Integer readFrom:'100000000' radix:16.
- self assert:((t + 1) hexPrintString = '100000001').
- t := Integer readFrom:'1000000000' radix:16.
- self assert:((t + 1) hexPrintString = '1000000001').
- t := Integer readFrom:'10000000000' radix:16.
- self assert:((t + 1) hexPrintString = '10000000001').
-
- "
- self basicNew testReading1
- "
-
- "Modified: / 19-09-2017 / 16:27:56 / stefan"
-!
-
-testReading2
- #(
- 305419896
- 16r1FFFFFFF
- 16r3FFFFFFF
- 16r7FFFFFFF
- 16rFFFFFFFF
- 16r1FFFFFFFFFFFFFFF
- 16r3FFFFFFFFFFFFFFF
- 16r7FFFFFFFFFFFFFFF
- 16rFFFFFFFFFFFFFFFF
- 16r1FFFFFFFFFFFFFFFFFFFFFFF
- 16r3FFFFFFFFFFFFFFFFFFFFFFF
- 16r7FFFFFFFFFFFFFFFFFFFFFFF
- 16rFFFFFFFFFFFFFFFFFFFFFFFF
- 16r1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
- 16r3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
- 16r7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
- 16rFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
- ) do:[:each |
- |s|
-
- 2 to:35 do:[:radix |
- s := each printStringRadix:radix.
- self assert:(Integer readFrom:s radix:radix) = each
- ]
- ].
-
- "
- self basicNew testReading2
- "
-
- "Created: / 27-03-2019 / 18:00:54 / Claus Gittinger"
-!
-
-testReadingPrinting1
- |nr inString outString|
-
- #(2 3 4 5 8 10 16) do:[:radix |
- "/ Transcript showCR:('testing radix %1...' bindWith:radix).
- 1 to:1000 do:[:len |
- inString := '1',(String new:len withAll:$0).
- nr := Integer readFrom:inString radix:radix.
- outString := nr printStringRadix:radix.
- self assert:(outString = inString) description:('read/print failed for radix ',radix printString).
- ].
- ].
-
- "
- self basicNew testReadingPrinting1
- "
-!
-
testSignExtension
"/ 8bit
self assert:( 16r80 signExtendedByteValue = -128 ).
@@ -5616,6 +5285,399 @@
= #(2 2 3 5 5 7 7 11 11 11 11 13 13 17 17 17 17 19 19 23 23 23 23 29 29 29 29 29 29 31 31).
! !
+!IntegerTest methodsFor:'tests-reading & printing'!
+
+testLiteralNumbers
+ self assert:(self num_00000000000010000 hexPrintString = '10000').
+ self assert:(self num_00000000000100000 hexPrintString = '100000').
+ self assert:(self num_00000000001000000 hexPrintString = '1000000').
+ self assert:(self num_00000000010000000 hexPrintString = '10000000').
+ self assert:(self num_00000000100000000 hexPrintString = '100000000').
+ self assert:(self num_00000001000000000 hexPrintString = '1000000000').
+ self assert:(self num_00000010000000000 hexPrintString = '10000000000').
+ self assert:(self num_00000100000000000 hexPrintString = '100000000000').
+ self assert:(self num_00001000000000000 hexPrintString = '1000000000000').
+ self assert:(self num_00010000000000000 hexPrintString = '10000000000000').
+ self assert:(self num_00100000000000000 hexPrintString = '100000000000000').
+ self assert:(self num_01000000000000000 hexPrintString = '1000000000000000').
+ self assert:(self num_10000000000000000 hexPrintString = '10000000000000000').
+
+ self assert:(self num_00000000000007FFF hexPrintString = '7FFF').
+ self assert:(self num_00000000000008000 hexPrintString = '8000').
+ self assert:(self num_0000000000000FFFF hexPrintString = 'FFFF').
+ self assert:(self num_000000000007FFFFF hexPrintString = '7FFFFF').
+ self assert:(self num_00000000000800000 hexPrintString = '800000').
+ self assert:(self num_00000000000FFFFFF hexPrintString = 'FFFFFF').
+ self assert:(self num_0000000007FFFFFFF hexPrintString = '7FFFFFFF').
+ self assert:(self num_00000000080000000 hexPrintString = '80000000').
+ self assert:(self num_000000000FFFFFFFF hexPrintString = 'FFFFFFFF').
+ self assert:(self num_0000000FFFFFFFFFF hexPrintString = 'FFFFFFFFFF').
+ self assert:(self num_00000FFFFFFFFFFFF hexPrintString = 'FFFFFFFFFFFF').
+ self assert:(self num_000FFFFFFFFFFFFFF hexPrintString = 'FFFFFFFFFFFFFF').
+ self assert:(self num_0FFFFFFFFFFFFFFFF hexPrintString = 'FFFFFFFFFFFFFFFF').
+ self assert:(self num_1FFFFFFFFFFFFFFFF hexPrintString = '1FFFFFFFFFFFFFFFF').
+ self assert:(self num_20000000000000000 hexPrintString = '20000000000000000').
+ self assert:(self num_3FFFFFFFFFFFFFFFF hexPrintString = '3FFFFFFFFFFFFFFFF').
+ self assert:(self num_40000000000000000 hexPrintString = '40000000000000000').
+ self assert:(self num_7FFFFFFFFFFFFFFFF hexPrintString = '7FFFFFFFFFFFFFFFF').
+ self assert:(self num_80000000000000000 hexPrintString = '80000000000000000').
+
+ self assert:(self num_00000FFFFFFFFFFFE hexPrintString = 'FFFFFFFFFFFE').
+ self assert:(self num_00000FFFFFFFFFFFC hexPrintString = 'FFFFFFFFFFFC').
+ self assert:(self num_00000FFFFFFFFFFF8 hexPrintString = 'FFFFFFFFFFF8').
+ self assert:(self num_00000FFFFFFFFFFF0 hexPrintString = 'FFFFFFFFFFF0').
+ self assert:(self num_00000FFFFFFFFFFE0 hexPrintString = 'FFFFFFFFFFE0').
+ self assert:(self num_00000FFFFFFFFFFC0 hexPrintString = 'FFFFFFFFFFC0').
+ self assert:(self num_00000FFFFFFFFFF80 hexPrintString = 'FFFFFFFFFF80').
+ self assert:(self num_00000FFFFFFFFFF00 hexPrintString = 'FFFFFFFFFF00').
+
+ self assert:(self num_0000000000FFF0000 hexPrintString = 'FFF0000').
+
+ "
+ self basicNew testLiteralNumbers
+ "
+
+ "Modified: / 4.6.1999 / 18:41:09 / cg"
+!
+
+testPrinting1
+ self assert:(10 printString = '10').
+ self assert:(100 printString = '100').
+ self assert:(1000 printString = '1000').
+ self assert:(10000 printString = '10000').
+ self assert:(100000 printString = '100000').
+ self assert:(1000000 printString = '1000000').
+ self assert:(10000000 printString = '10000000').
+ self assert:(100000000 printString = '100000000').
+ self assert:(1000000000 printString = '1000000000').
+ self assert:(10000000000 printString = '10000000000').
+ self assert:(100000000000 printString = '100000000000').
+ self assert:(1000000000000 printString = '1000000000000').
+ self assert:(10000000000000 printString = '10000000000000').
+ self assert:(100000000000000 printString = '100000000000000').
+ self assert:(1000000000000000 printString = '1000000000000000').
+ self assert:(10000000000000000 printString = '10000000000000000').
+ self assert:(100000000000000000 printString = '100000000000000000').
+ self assert:(1000000000000000000 printString = '1000000000000000000').
+ self assert:(10000000000000000000 printString = '10000000000000000000').
+
+ self assert:(16rF hexPrintString = 'F').
+ self assert:(16rFF hexPrintString = 'FF').
+ self assert:(16rFFF hexPrintString = 'FFF').
+ self assert:(16rFFFF hexPrintString = 'FFFF').
+ self assert:(16rFFFFF hexPrintString = 'FFFFF').
+ self assert:(16rFFFFFF hexPrintString = 'FFFFFF').
+ self assert:(16rFFFFFFF hexPrintString = 'FFFFFFF').
+ self assert:(16rFFFFFFFF hexPrintString = 'FFFFFFFF').
+ self assert:(16rFFFFFFFFF hexPrintString = 'FFFFFFFFF').
+ self assert:(16rFFFFFFFFFF hexPrintString = 'FFFFFFFFFF').
+ self assert:(16rFFFFFFFFFFF hexPrintString = 'FFFFFFFFFFF').
+ self assert:(16rFFFFFFFFFFFF hexPrintString = 'FFFFFFFFFFFF').
+ self assert:(16rFFFFFFFFFFFFF hexPrintString = 'FFFFFFFFFFFFF').
+ self assert:(16rFFFFFFFFFFFFFF hexPrintString = 'FFFFFFFFFFFFFF').
+ self assert:(16rFFFFFFFFFFFFFFF hexPrintString = 'FFFFFFFFFFFFFFF').
+ self assert:(16rFFFFFFFFFFFFFFFF hexPrintString = 'FFFFFFFFFFFFFFFF').
+ self assert:(16rFFFFFFFFFFFFFFFFF hexPrintString = 'FFFFFFFFFFFFFFFFF').
+ self assert:(16rFFFFFFFFFFFFFFFFFF hexPrintString = 'FFFFFFFFFFFFFFFFFF').
+ self assert:(16rFFFFFFFFFFFFFFFFFFF hexPrintString = 'FFFFFFFFFFFFFFFFFFF').
+ self assert:(16rFFFFFFFFFFFFFFFFFFFF hexPrintString = 'FFFFFFFFFFFFFFFFFFFF').
+ self assert:(16rFFFFFFFFFFFFFFFFFFFFF hexPrintString = 'FFFFFFFFFFFFFFFFFFFFF').
+ self assert:(16rFFFFFFFFFFFFFFFFFFFFFF hexPrintString = 'FFFFFFFFFFFFFFFFFFFFFF').
+
+ self assert:(16r10 hexPrintString = '10').
+ self assert:(16r100 hexPrintString = '100').
+ self assert:(16r1000 hexPrintString = '1000').
+ self assert:(16r10000 hexPrintString = '10000').
+ self assert:(16r100000 hexPrintString = '100000').
+ self assert:(16r1000000 hexPrintString = '1000000').
+ self assert:(16r10000000 hexPrintString = '10000000').
+ self assert:(16r100000000 hexPrintString = '100000000').
+ self assert:(16r1000000000 hexPrintString = '1000000000').
+ self assert:(16r10000000000 hexPrintString = '10000000000').
+ self assert:(16r100000000000 hexPrintString = '100000000000').
+ self assert:(16r1000000000000 hexPrintString = '1000000000000').
+ self assert:(16r10000000000000 hexPrintString = '10000000000000').
+ self assert:(16r100000000000000 hexPrintString = '100000000000000').
+ self assert:(16r1000000000000000 hexPrintString = '1000000000000000').
+ self assert:(16r10000000000000000 hexPrintString = '10000000000000000').
+ self assert:(16r100000000000000000 hexPrintString = '100000000000000000').
+
+ self assert:(126 printString) = '126'.
+ self assert:(127 printString) = '127'.
+ self assert:(128 printString) = '128'.
+
+ self assert:(255 printString) = '255'.
+ self assert:(256 printString) = '256'.
+ self assert:(257 printString) = '257'.
+
+ self assert:(32767 printString) = '32767'.
+ self assert:(32768 printString) = '32768'.
+ self assert:(32769 printString) = '32769'.
+
+ self assert:(65535 printString) = '65535'.
+ self assert:(65536 printString) = '65536'.
+ self assert:(65537 printString) = '65537'.
+
+ self assert:(2147483647 printString) = '2147483647'.
+ self assert:(2147483648 printString) = '2147483648'.
+ self assert:(2147483649 printString) = '2147483649'.
+
+ self assert:(4294967295 printString) = '4294967295'.
+ self assert:(4294967296 printString) = '4294967296'.
+ self assert:(4294967297 printString) = '4294967297'.
+
+ self assert:(127 printStringRadix:16) = '7F'.
+ self assert:(123 printStringRadix:12) = 'A3'.
+ self assert:(123 printStringRadix:10) = '123'.
+ self assert:(123 printStringRadix:8 ) = '173'.
+ self assert:(123 printStringRadix:3 ) = '11120'.
+ self assert:(123 printStringRadix:2 ) = '1111011'.
+ self should:[ 123 printStringRadix:1 ] raise:Error.
+
+ "
+ self basicNew testPrinting1
+ "
+
+ "Modified: / 26.10.1999 / 22:01:35 / stefan"
+!
+
+testReading1
+ |t|
+
+ self assert:((Integer readFrom:'4865804016353280000') printString = '4865804016353280000').
+ self assert:((Integer readFrom:'4294967295') printString = '4294967295').
+ self assert:((Integer readFrom:'4294967295') = 4294967295).
+ self assert:((Integer readFrom:'4294967296') printString = '4294967296').
+ self assert:((Integer readFrom:'4294967296') = 4294967296).
+ self assert:((Integer readFrom:'4294967297') printString = '4294967297').
+ self assert:((Integer readFrom:'4294967297') = 4294967297).
+
+ "/ max-smallint on 32bit machines
+ self assert:((Integer readFrom:'1073741823') printString = '1073741823').
+ self assert:((Integer readFrom:'1073741823') class == SmallInteger).
+
+ "/ min-smallint on 32bit machines
+ self assert:((Integer readFrom:'-1073741824') printString = '-1073741824').
+ self assert:((Integer readFrom:'-1073741824') class == SmallInteger).
+
+ "/ max-smallint on 64bit machines
+ self assert:((Integer readFrom:'4611686018427387903') printString = '4611686018427387903').
+ SmallInteger maxBytes == 8 ifTrue:[
+ self assert:((Integer readFrom:'4611686018427387903') class == SmallInteger)
+ ].
+ "/ max-smallint+1 on 64bit machines
+ self assert:((Integer readFrom:'4611686018427387900') printString = '4611686018427387900').
+ SmallInteger maxBytes == 8 ifTrue:[
+ |tt t3 t3b t4a t4b t4c|
+
+ self assert:((Integer readFrom:'4611686018427387900') class == SmallInteger).
+ tt := (Integer readFrom:'4611686018427387900').
+ t3 := tt + 3.
+ self assert:(t3 class == SmallInteger).
+ self assert:(t3 printString = '4611686018427387903').
+ t3b := (self do:tt plus:3).
+ self assert:(t3b class == SmallInteger).
+ self assert:(t3b printString = '4611686018427387903').
+ t4a := t3 + 1.
+ self assert:(t4a class == LargeInteger).
+ self assert:(t4a printString = '4611686018427387904').
+ t4b := tt + 4.
+ self assert:(t4b class == LargeInteger).
+ self assert:(t4b printString = '4611686018427387904').
+ t4c := (self do:tt plus:4).
+ self assert:(t4c class == LargeInteger).
+ self assert:(t4c printString = '4611686018427387904').
+ ].
+ self assert:((Integer readFrom:'4611686018427387904') printString = '4611686018427387904').
+ self assert:((Integer readFrom:'4611686018427387904') class == LargeInteger).
+
+ "/ min-smallint on 64bit machines
+ self assert:((Integer readFrom:'-4611686018427387904') printString = '-4611686018427387904').
+ SmallInteger maxBytes == 8 ifTrue:[
+ self assert:((Integer readFrom:'-4611686018427387904') class == SmallInteger)
+ ].
+ self assert:((Integer readFrom:'-4611686018427387904') printString = '-4611686018427387904').
+ SmallInteger maxBytes == 8 ifTrue:[
+ self assert:((Integer readFrom:'-4611686018427387904') class == SmallInteger)
+ ].
+ self assert:((Integer readFrom:'FFFFFFFF' radix:16) hexPrintString = 'FFFFFFFF').
+ self assert:((Integer readFrom:'FFFFFFFFF' radix:16) hexPrintString = 'FFFFFFFFF').
+ self assert:((Integer readFrom:'FFFFFFFFFF' radix:16) hexPrintString = 'FFFFFFFFFF').
+ self assert:((Integer readFrom:'FFFFFFFFFFF' radix:16) hexPrintString = 'FFFFFFFFFFF').
+ self assert:((Integer readFrom:'FFFFFFFFFFFF' radix:16) hexPrintString = 'FFFFFFFFFFFF').
+ self assert:((Integer readFrom:'FFFFFFFFFFFFF' radix:16) hexPrintString = 'FFFFFFFFFFFFF').
+ self assert:((Integer readFrom:'FFFFFFFFFFFFFF' radix:16) hexPrintString = 'FFFFFFFFFFFFFF').
+ self assert:((Integer readFrom:'FFFFFFFFFFFFFFF' radix:16) hexPrintString = 'FFFFFFFFFFFFFFF').
+ self assert:((Integer readFrom:'3FFFFFFFFFFFFFF' radix:16) hexPrintString = '3FFFFFFFFFFFFFF').
+ self assert:((Integer readFrom:'7FFFFFFFFFFFFFF' radix:16) hexPrintString = '7FFFFFFFFFFFFFF').
+ self assert:((Integer readFrom:'400000000000000' radix:16) hexPrintString = '400000000000000').
+ self assert:((Integer readFrom:'800000000000000' radix:16) hexPrintString = '800000000000000').
+
+ self assert:((Integer readFrom:'16r-FFFFFFFF') printString = '-4294967295').
+ self assert:((Integer readFrom:'16r-FFFFFFFFF') hexPrintString = '-FFFFFFFFF').
+ self assert:((Integer readFrom:'16r-FFFFFFFFFF') hexPrintString = '-FFFFFFFFFF').
+ self assert:((Integer readFrom:'16r-FFFFFFFFFFF') hexPrintString = '-FFFFFFFFFFF').
+ self assert:((Integer readFrom:'16r-FFFFFFFFFFFF') hexPrintString = '-FFFFFFFFFFFF').
+ self assert:((Integer readFrom:'16r-FFFFFFFFFFFFF') hexPrintString = '-FFFFFFFFFFFFF').
+ self assert:((Integer readFrom:'16r-FFFFFFFFFFFFFF') hexPrintString = '-FFFFFFFFFFFFFF').
+ self assert:((Integer readFrom:'16r-FFFFFFFFFFFFFFF') hexPrintString = '-FFFFFFFFFFFFFFF').
+ self assert:((Integer readFrom:'16r-3FFFFFFFFFFFFFF') hexPrintString = '-3FFFFFFFFFFFFFF').
+ self assert:((Integer readFrom:'16r-7FFFFFFFFFFFFFF') hexPrintString = '-7FFFFFFFFFFFFFF').
+ self assert:((Integer readFrom:'16r-400000000000000') hexPrintString = '-400000000000000').
+ self assert:((Integer readFrom:'16r-800000000000000') hexPrintString = '-800000000000000').
+
+ self assert:((Integer readFrom:'10000000' radix:16) hexPrintString = '10000000').
+ self assert:((Integer readFrom:'100000000' radix:16) hexPrintString = '100000000').
+ self assert:((Integer readFrom:'1000000000' radix:16) hexPrintString = '1000000000').
+ self assert:((Integer readFrom:'10000000000' radix:16) hexPrintString = '10000000000').
+ self assert:((Integer readFrom:'100000000000' radix:16) hexPrintString = '100000000000').
+ self assert:((Integer readFrom:'1000000000000' radix:16) hexPrintString = '1000000000000').
+ self assert:((Integer readFrom:'10000000000000' radix:16) hexPrintString = '10000000000000').
+
+ self assert:((Integer readFrom:'1152921504606846975' radix:10) hexPrintString = 'FFFFFFFFFFFFFFF').
+ self assert:((Integer readFrom:'288230376151711743' radix:10) hexPrintString = '3FFFFFFFFFFFFFF').
+ self assert:((Integer readFrom:'576460752303423487' radix:10) hexPrintString = '7FFFFFFFFFFFFFF').
+ self assert:((Integer readFrom:'288230376151711744' radix:10) hexPrintString = '400000000000000').
+ self assert:((Integer readFrom:'576460752303423488' radix:10) hexPrintString = '800000000000000').
+
+ t := Integer readFrom:'FFFFFFFF' radix:16.
+ self assert:((t + 1) hexPrintString = '100000000').
+ t := Integer readFrom:'FFFFFFFFF' radix:16.
+ self assert:((t + 1) hexPrintString = '1000000000').
+ t := Integer readFrom:'FFFFFFFFFF' radix:16.
+ self assert:((t + 1) hexPrintString = '10000000000').
+ t := Integer readFrom:'FFFFFFFFFFF' radix:16.
+ self assert:((t + 1) hexPrintString = '100000000000').
+
+ t := Integer readFrom:'10000000' radix:16.
+ self assert:((t + 1) hexPrintString = '10000001').
+ t := Integer readFrom:'100000000' radix:16.
+ self assert:((t + 1) hexPrintString = '100000001').
+ t := Integer readFrom:'1000000000' radix:16.
+ self assert:((t + 1) hexPrintString = '1000000001').
+ t := Integer readFrom:'10000000000' radix:16.
+ self assert:((t + 1) hexPrintString = '10000000001').
+
+ "
+ self basicNew testReading1
+ "
+
+ "Modified: / 19-09-2017 / 16:27:56 / stefan"
+!
+
+testReading2
+ #(
+ 305419896
+ 16r1FFFFFFF
+ 16r3FFFFFFF
+ 16r7FFFFFFF
+ 16rFFFFFFFF
+ 16r1FFFFFFFFFFFFFFF
+ 16r3FFFFFFFFFFFFFFF
+ 16r7FFFFFFFFFFFFFFF
+ 16rFFFFFFFFFFFFFFFF
+ 16r1FFFFFFFFFFFFFFFFFFFFFFF
+ 16r3FFFFFFFFFFFFFFFFFFFFFFF
+ 16r7FFFFFFFFFFFFFFFFFFFFFFF
+ 16rFFFFFFFFFFFFFFFFFFFFFFFF
+ 16r1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ 16r3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ 16r7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ 16rFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ ) do:[:each |
+ |s|
+
+ 2 to:35 do:[:radix |
+ s := each printStringRadix:radix.
+ self assert:(Integer readFrom:s radix:radix) = each
+ ]
+ ].
+
+ "
+ self basicNew testReading2
+ "
+
+ "Created: / 27-03-2019 / 18:00:54 / Claus Gittinger"
+!
+
+testReading3
+ "thousands character - german"
+
+ #(
+ ('1.234' 1234)
+ ('1.234.567' 1234567)
+ ('1234.567' 1234567)
+ ('12345.67' nil)
+ ('12345.6789' nil)
+ ('12345.' nil)
+ ('12345.1' nil)
+ ('12345.a' nil)
+ ) pairsDo:[:string :expected |
+ |value|
+
+ value := Integer
+ fromString:string
+ decimalPointCharacter:$,
+ thousandsSeparator:$.
+ onError:nil.
+ self assert:(value = expected)
+ ].
+
+ "
+ self basicNew testReading3
+ "
+
+ "Created: / 21-07-2019 / 19:51:58 / Claus Gittinger"
+!
+
+testReading4
+ "thousands character - us"
+
+ #(
+ ('1,234' 1234)
+ ('1,234,567' 1234567)
+ ('1234,567' 1234567)
+ ('12345,67' nil)
+ ('12345,6789' nil)
+ ('12345,' nil)
+ ('12345,1' nil)
+ ('12345,a' nil)
+ ) pairsDo:[:string :expected |
+ |value|
+
+ value := Integer
+ fromString:string
+ decimalPointCharacter:$.
+ thousandsSeparator:$,
+ onError:nil.
+ self assert:(value = expected)
+ ].
+
+ "
+ self basicNew testReading4
+ "
+
+ "Created: / 21-07-2019 / 19:54:51 / Claus Gittinger"
+!
+
+testReadingPrinting1
+ |nr inString outString|
+
+ #(2 3 4 5 8 10 16) do:[:radix |
+ "/ Transcript showCR:('testing radix %1...' bindWith:radix).
+ 1 to:1000 do:[:len |
+ inString := '1',(String new:len withAll:$0).
+ nr := Integer readFrom:inString radix:radix.
+ outString := nr printStringRadix:radix.
+ self assert:(outString = inString) description:('read/print failed for radix ',radix printString).
+ ].
+ ].
+
+ "
+ self basicNew testReadingPrinting1
+ "
+! !
+
!IntegerTest class methodsFor:'documentation'!
version