#DOCUMENTATION by cg
class: RegressionTests::IntegerTest
added: #testSmallIntegerNegation
--- a/RegressionTests__IntegerTest.st Thu Sep 01 20:25:42 2016 +0200
+++ b/RegressionTests__IntegerTest.st Thu Sep 01 20:28:55 2016 +0200
@@ -4628,6 +4628,74 @@
"Modified: / 9.6.1999 / 17:47:56 / cg"
"Created: / 9.6.1999 / 17:49:45 / cg"
+!
+
+testSmallIntegerNegation
+ "tests boundary conditions at small/large phase change."
+
+ |n1 n2 n3|
+
+ n1 := 16r3fffffff.
+ n2 := n1 negated.
+ n3 := n2 negated.
+
+ self assert:(n1 class == SmallInteger).
+ self assert:(n2 class == SmallInteger).
+ self assert:(n3 == n1).
+
+ self assert:(n1 = 16r3FFFFFFF).
+ self assert:(n2 = -16r3FFFFFFF).
+ self assert:(n1 == 16r3FFFFFFF).
+ self assert:(n2 == -16r3FFFFFFF).
+ self assert:(n1 printString = '1073741823').
+ self assert:(n2 printString = '-1073741823').
+
+ "/ ---------------------
+
+ n1 := 16rffffffff.
+ n2 := n1 negated.
+ n3 := n2 negated.
+
+ self assert:(n1 class == SmallInteger).
+ self assert:(n2 class == SmallInteger).
+ self assert:(n3 == n1).
+
+ self assert:(n1 = 16rfFFFFFFF).
+ self assert:(n2 = -16rfFFFFFFF).
+ self assert:(n1 == 16rfFFFFFFF).
+ self assert:(n2 == -16rfFFFFFFF).
+ self assert:(n1 printString = '4294967295').
+ self assert:(n2 printString = '-4294967295').
+
+ "/ ---------------------
+
+ n1 := SmallInteger maxVal.
+ n2 := n1 negated.
+ n3 := n2 negated.
+
+ self assert:(n1 class == SmallInteger).
+ self assert:(n2 class == SmallInteger).
+ self assert:(n3 == n1).
+
+ SmallInteger maxBytes == 4 ifTrue:[
+ self assert:(n1 = 16r3FFFFFFF).
+ self assert:(n2 = -16r3FFFFFFF).
+ self assert:(n1 == 16r3FFFFFFF).
+ self assert:(n2 == -16r3FFFFFFF).
+ self assert:(n1 printString = '1073741823').
+ self assert:(n2 printString = '-1073741823').
+ ] ifFalse:[
+ self assert:(n1 = 16r3FFFFFFFFFFFFFFF).
+ self assert:(n2 = -16r3FFFFFFFFFFFFFFFF).
+ self assert:(n1 == 16r3FFFFFFFFFFFFFFFF).
+ self assert:(n2 == -16r3FFFFFFFFFFFFFFFF).
+ self assert:(n1 printString = '4611686018427387903').
+ self assert:(n2 printString = '-4611686018427387903').
+ ].
+
+ "
+ self basicNew testSmallIntegerNegation
+ "
! !
!IntegerTest methodsFor:'tests-class protocol'!