--- a/RegressionTests__IntegerTest.st Mon May 13 16:09:56 2013 +0200
+++ b/RegressionTests__IntegerTest.st Mon May 13 16:43:21 2013 +0200
@@ -228,8 +228,13 @@
self assert: ( (self doPlus1_a:0) = 1 ).
self assert: ( (self doPlus1_a:1) = 2 ).
self assert: ( (self doPlus1_a:-1) = 0 ).
- self assert: ( (self doPlus1_a:SmallInteger maxVal) = 1073741824).
- self assert: ( (self doPlus1_a:SmallInteger minVal) = -1073741823 ).
+ ExternalAddress pointerSize == 8 ifTrue:[
+ self assert: ( (self doPlus1_a:SmallInteger maxVal) = 4611686018427387904).
+ self assert: ( (self doPlus1_a:SmallInteger minVal) = -4611686018427387903 ).
+ ] ifFalse:[
+ self assert: ( (self doPlus1_a:SmallInteger maxVal) = 1073741824).
+ self assert: ( (self doPlus1_a:SmallInteger minVal) = -1073741823 ).
+ ].
"
self basicNew testPlus1
@@ -240,8 +245,13 @@
self assert: ( (self doPlus1_b:0) = 1 ).
self assert: ( (self doPlus1_b:1) = 2 ).
self assert: ( (self doPlus1_b:-1) = 0 ).
- self assert: ( (self doPlus1_b:SmallInteger maxVal) = 1073741824).
- self assert: ( (self doPlus1_b:SmallInteger minVal) = -1073741823 ).
+ ExternalAddress pointerSize == 8 ifTrue:[
+ self assert: ( (self doPlus1_b:SmallInteger maxVal) = 4611686018427387904).
+ self assert: ( (self doPlus1_b:SmallInteger minVal) = -4611686018427387903 ).
+ ] ifFalse:[
+ self assert: ( (self doPlus1_b:SmallInteger maxVal) = 1073741824).
+ self assert: ( (self doPlus1_b:SmallInteger minVal) = -1073741823 ).
+ ].
"
self basicNew testPlus1perform
@@ -3002,27 +3012,42 @@
"self run: #testCreationFromBytes1"
" it is illegal for a LargeInteger to be less than SmallInteger maxVal."
- " here we test that Integer>>byte!!byte2:byte3:byte4: resconstructs SmallInteger maxVal as an instance of SmallInteger. "
-
- | maxSmallInt hexString byte1 byte2 byte3 byte4 builtInteger |
+ " here we test that Integer>>byte!!byte2:byte3:byte4: reconstructs SmallInteger maxVal as an instance of SmallInteger. "
+
+ | maxSmallInt hexString
+ byte1 byte2 byte3 byte4
+ byte5 byte6 byte7 byte8
+ builtInteger builtIntegerH builtIntegerL|
maxSmallInt := SmallInteger maxVal.
hexString := maxSmallInt printStringHex.
- self assert: hexString size = 8.
- Smalltalk isSmalltalkX ifTrue:[
- "/ only Integers support radix-reading
+ ExternalAddress pointerSize == 8 ifTrue:[
+ self assert: hexString size = 16.
+
+ byte8 := Integer readFrom: (hexString copyFrom: 1 to: 2) base: 16.
+ byte7 := Integer readFrom: (hexString copyFrom: 3 to: 4) base: 16.
+ byte6 := Integer readFrom: (hexString copyFrom: 5 to: 6) base: 16.
+ byte5 := Integer readFrom: (hexString copyFrom: 7 to: 8) base: 16.
+ byte4 := Integer readFrom: (hexString copyFrom: 9 to: 10) base: 16.
+ byte3 := Integer readFrom: (hexString copyFrom: 11 to: 12) base: 16.
+ byte2 := Integer readFrom: (hexString copyFrom: 13 to: 14) base: 16.
+ byte1 := Integer readFrom: (hexString copyFrom: 15 to: 16) base: 16.
+
+ builtIntegerH := Integer byte1: byte5 byte2: byte6 byte3: byte7 byte4: byte8.
+ builtIntegerL := Integer byte1: byte1 byte2: byte2 byte3: byte3 byte4: byte4.
+ builtInteger := (builtIntegerH bitShift:32) bitOr:builtIntegerL.
+ self assert: builtInteger = maxSmallInt.
+ ] ifFalse:[
+ self assert: hexString size = 8.
+
byte4 := Integer readFrom: (hexString copyFrom: 1 to: 2) base: 16.
byte3 := Integer readFrom: (hexString copyFrom: 3 to: 4) base: 16.
byte2 := Integer readFrom: (hexString copyFrom: 5 to: 6) base: 16.
byte1 := Integer readFrom: (hexString copyFrom: 7 to: 8) base: 16.
- ] ifFalse:[
- byte4 := Number readFrom: (hexString copyFrom: 1 to: 2) base: 16.
- byte3 := Number readFrom: (hexString copyFrom: 3 to: 4) base: 16.
- byte2 := Number readFrom: (hexString copyFrom: 5 to: 6) base: 16.
- byte1 := Number readFrom: (hexString copyFrom: 7 to: 8) base: 16.
+
+ builtInteger := Integer byte1: byte1 byte2: byte2 byte3: byte3 byte4: byte4.
+ self assert: builtInteger = maxSmallInt.
].
- builtInteger := Integer byte1: byte1 byte2: byte2 byte3: byte3 byte4: byte4.
- self assert: builtInteger = maxSmallInt.
self assert: builtInteger class = SmallInteger
! !