RegressionTests__SmallIntegerTest.st
author Jan Vrany <jan.vrany@labware.com>
Mon, 08 Mar 2021 11:25:35 +0000
branchjv
changeset 2594 e5f39c0a5bd6
parent 1500 d406a10b2965
permissions -rwxr-xr-x
Improve UTF8 read/write tests in `ChangeSetTests`
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1447
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
     1
"{ Package: 'stx:goodies/regression' }"
310
f7a1f000a281 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     2
f7a1f000a281 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     3
"{ NameSpace: RegressionTests }"
f7a1f000a281 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     4
f7a1f000a281 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     5
TestCase subclass:#SmallIntegerTest
f7a1f000a281 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     6
	instanceVariableNames:''
f7a1f000a281 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     7
	classVariableNames:''
f7a1f000a281 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     8
	poolDictionaries:''
1074
905aea054cf4 category
Claus Gittinger <cg@exept.de>
parents: 619
diff changeset
     9
	category:'tests-Regression-Numbers'
310
f7a1f000a281 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    10
!
f7a1f000a281 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    11
f7a1f000a281 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    12
619
f918fa22ad81 Circumvent compiler error about div by zero
Stefan Vogel <sv@exept.de>
parents: 364
diff changeset
    13
!SmallIntegerTest class methodsFor:'others'!
f918fa22ad81 Circumvent compiler error about div by zero
Stefan Vogel <sv@exept.de>
parents: 364
diff changeset
    14
f918fa22ad81 Circumvent compiler error about div by zero
Stefan Vogel <sv@exept.de>
parents: 364
diff changeset
    15
version_CVS
f918fa22ad81 Circumvent compiler error about div by zero
Stefan Vogel <sv@exept.de>
parents: 364
diff changeset
    16
    ^ '$Header$'
f918fa22ad81 Circumvent compiler error about div by zero
Stefan Vogel <sv@exept.de>
parents: 364
diff changeset
    17
! !
f918fa22ad81 Circumvent compiler error about div by zero
Stefan Vogel <sv@exept.de>
parents: 364
diff changeset
    18
310
f7a1f000a281 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    19
!SmallIntegerTest methodsFor:'tests-arithmetic'!
f7a1f000a281 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    20
1347
e965d238a810 #DOCUMENTATION
Claus Gittinger <cg@exept.de>
parents: 1306
diff changeset
    21
testBitShift
1447
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
    22
    #(
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
    23
	(1 1 2)
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
    24
	(1 2 4)
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
    25
	(1 3 8)
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
    26
	(1 7 16r080)
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
    27
	(1 8 16r100)
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
    28
	(1 15 16r08000)
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
    29
	(1 16 16r10000)
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
    30
	(1 17 16r20000)
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
    31
	(1 30 16r040000000)
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
    32
	(1 31 16r080000000)
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
    33
	(1 32 16r100000000)
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
    34
	(1 33 16r200000000)
1347
e965d238a810 #DOCUMENTATION
Claus Gittinger <cg@exept.de>
parents: 1306
diff changeset
    35
1447
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
    36
	(1 62 16r04000000000000000)
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
    37
	(1 63 16r08000000000000000)
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
    38
	(1 64 16r10000000000000000)
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
    39
	(1 65 16r20000000000000000)
1347
e965d238a810 #DOCUMENTATION
Claus Gittinger <cg@exept.de>
parents: 1306
diff changeset
    40
1447
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
    41
	(1 126 16r040000000000000000000000000000000)
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
    42
	(1 127 16r080000000000000000000000000000000)
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
    43
	(1 128 16r100000000000000000000000000000000)
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
    44
	(1 129 16r200000000000000000000000000000000)
1347
e965d238a810 #DOCUMENTATION
Claus Gittinger <cg@exept.de>
parents: 1306
diff changeset
    45
1447
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
    46
	(16r10 1 16r20)
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
    47
	(16r10 2 16r40)
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
    48
	(16r10 3 16r80)
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
    49
	(16r10 7 16r0800)
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
    50
	(16r10 8 16r1000)
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
    51
	(16r10 15 16r080000)
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
    52
	(16r10 16 16r100000)
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
    53
	(16r10 17 16r200000)
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
    54
	(16r10 30 16r0400000000)
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
    55
	(16r10 31 16r0800000000)
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
    56
	(16r10 32 16r1000000000)
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
    57
	(16r10 33 16r2000000000)
1347
e965d238a810 #DOCUMENTATION
Claus Gittinger <cg@exept.de>
parents: 1306
diff changeset
    58
1447
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
    59
	(16r10 62 16r040000000000000000)
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
    60
	(16r10 63 16r080000000000000000)
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
    61
	(16r10 64 16r100000000000000000)
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
    62
	(16r10 65 16r200000000000000000)
1347
e965d238a810 #DOCUMENTATION
Claus Gittinger <cg@exept.de>
parents: 1306
diff changeset
    63
1447
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
    64
	(16r10 126 16r0400000000000000000000000000000000)
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
    65
	(16r10 127 16r0800000000000000000000000000000000)
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
    66
	(16r10 128 16r1000000000000000000000000000000000)
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
    67
	(16r10 129 16r2000000000000000000000000000000000)
1347
e965d238a810 #DOCUMENTATION
Claus Gittinger <cg@exept.de>
parents: 1306
diff changeset
    68
    ) triplesDo:[:val :cnt :expected |
1447
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
    69
	|rslt1 rslt2|
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
    70
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
    71
	rslt1 := val bitShift:cnt.
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
    72
	self assert:(rslt1 = expected).
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
    73
	expected class == SmallInteger ifTrue:[
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
    74
	    self assert:(rslt1 == expected)
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
    75
	].
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
    76
	rslt2 := rslt1 bitShift:cnt negated.
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
    77
	self assert:(rslt2 = val).
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
    78
	val class == SmallInteger ifTrue:[
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
    79
	    self assert:(rslt2 == val)
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
    80
	].
1347
e965d238a810 #DOCUMENTATION
Claus Gittinger <cg@exept.de>
parents: 1306
diff changeset
    81
    ].
e965d238a810 #DOCUMENTATION
Claus Gittinger <cg@exept.de>
parents: 1306
diff changeset
    82
!
e965d238a810 #DOCUMENTATION
Claus Gittinger <cg@exept.de>
parents: 1306
diff changeset
    83
e965d238a810 #DOCUMENTATION
Claus Gittinger <cg@exept.de>
parents: 1306
diff changeset
    84
testBitShiftNegative
1447
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
    85
    #(
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
    86
	(-1 1 -2)
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
    87
	(-1 2 -4)
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
    88
	(-1 3 -8)
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
    89
	(-1 7 -16r080)
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
    90
	(-1 8 -16r100)
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
    91
	(-1 15 -16r08000)
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
    92
	(-1 16 -16r10000)
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
    93
	(-1 17 -16r20000)
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
    94
	(-1 30 -16r040000000)
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
    95
	(-1 31 -16r080000000)
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
    96
	(-1 32 -16r100000000)
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
    97
	(-1 33 -16r200000000)
1347
e965d238a810 #DOCUMENTATION
Claus Gittinger <cg@exept.de>
parents: 1306
diff changeset
    98
1447
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
    99
	(-1 62 -16r04000000000000000)
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
   100
	(-1 63 -16r08000000000000000)
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
   101
	(-1 64 -16r10000000000000000)
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
   102
	(-1 65 -16r20000000000000000)
1347
e965d238a810 #DOCUMENTATION
Claus Gittinger <cg@exept.de>
parents: 1306
diff changeset
   103
1447
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
   104
	(-1 126 -16r040000000000000000000000000000000)
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
   105
	(-1 127 -16r080000000000000000000000000000000)
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
   106
	(-1 128 -16r100000000000000000000000000000000)
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
   107
	(-1 129 -16r200000000000000000000000000000000)
1347
e965d238a810 #DOCUMENTATION
Claus Gittinger <cg@exept.de>
parents: 1306
diff changeset
   108
1447
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
   109
	(-16r10 1 -16r20)
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
   110
	(-16r10 2 -16r40)
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
   111
	(-16r10 3 -16r80)
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
   112
	(-16r10 7 -16r0800)
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
   113
	(-16r10 8 -16r1000)
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
   114
	(-16r10 15 -16r080000)
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
   115
	(-16r10 16 -16r100000)
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
   116
	(-16r10 17 -16r200000)
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
   117
	(-16r10 30 -16r0400000000)
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
   118
	(-16r10 31 -16r0800000000)
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
   119
	(-16r10 32 -16r1000000000)
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
   120
	(-16r10 33 -16r2000000000)
1347
e965d238a810 #DOCUMENTATION
Claus Gittinger <cg@exept.de>
parents: 1306
diff changeset
   121
1447
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
   122
	(-16r10 62 -16r040000000000000000)
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
   123
	(-16r10 63 -16r080000000000000000)
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
   124
	(-16r10 64 -16r100000000000000000)
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
   125
	(-16r10 65 -16r200000000000000000)
1347
e965d238a810 #DOCUMENTATION
Claus Gittinger <cg@exept.de>
parents: 1306
diff changeset
   126
1447
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
   127
	(-16r10 126 -16r0400000000000000000000000000000000)
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
   128
	(-16r10 127 -16r0800000000000000000000000000000000)
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
   129
	(-16r10 128 -16r1000000000000000000000000000000000)
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
   130
	(-16r10 129 -16r2000000000000000000000000000000000)
1347
e965d238a810 #DOCUMENTATION
Claus Gittinger <cg@exept.de>
parents: 1306
diff changeset
   131
    ) triplesDo:[:val :cnt :expected |
1447
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
   132
	|rslt1 rslt2|
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
   133
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
   134
	rslt1 := val bitShift:cnt.
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
   135
	self assert:(rslt1 = expected).
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
   136
	expected class == SmallInteger ifTrue:[
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
   137
	    self assert:(rslt1 == expected)
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
   138
	].
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
   139
	rslt2 := rslt1 bitShift:cnt negated.
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
   140
	self assert:(rslt2 = val).
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
   141
	val class == SmallInteger ifTrue:[
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
   142
	    self assert:(rslt2 == val)
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
   143
	].
1347
e965d238a810 #DOCUMENTATION
Claus Gittinger <cg@exept.de>
parents: 1306
diff changeset
   144
    ].
e965d238a810 #DOCUMENTATION
Claus Gittinger <cg@exept.de>
parents: 1306
diff changeset
   145
!
e965d238a810 #DOCUMENTATION
Claus Gittinger <cg@exept.de>
parents: 1306
diff changeset
   146
310
f7a1f000a281 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   147
testDivide
1447
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
   148
	|zero _1 _2 _3 _4 _m2 _m4|
619
f918fa22ad81 Circumvent compiler error about div by zero
Stefan Vogel <sv@exept.de>
parents: 364
diff changeset
   149
1447
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
   150
	"circumvent compiler error about division by zero"
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
   151
	zero := 0.
619
f918fa22ad81 Circumvent compiler error about div by zero
Stefan Vogel <sv@exept.de>
parents: 364
diff changeset
   152
1447
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
   153
	self assert: 2 / 1 = 2.
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
   154
	self assert: (3 / 2) isFraction.
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
   155
	self assert: 4 / 2 = 2.
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
   156
	self assert: 4 / -2 = -2.
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
   157
	self assert: -4 / 2 = -2.
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
   158
	self assert: -4 / -2 = 2.
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
   159
	self should: [ 1 / zero ] raise: ZeroDivide.
1223
708a62eac280 class: RegressionTests::SmallIntegerTest
Claus Gittinger <cg@exept.de>
parents: 1074
diff changeset
   160
1447
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
   161
	_1 := 1.
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
   162
	_2 := 2.
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
   163
	_3 := 3.
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
   164
	_4 := 4.
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
   165
	_m2 := -2.
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
   166
	_m4 := -4.
1223
708a62eac280 class: RegressionTests::SmallIntegerTest
Claus Gittinger <cg@exept.de>
parents: 1074
diff changeset
   167
1447
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
   168
	self assert: _2 / _1 = _2.
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
   169
	self assert: (_3 / _2) isFraction.
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
   170
	self assert: _4 / _2 = 2.
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
   171
	self assert: _4 / _m2 = -2.
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
   172
	self assert: _m4 / _2 = -2.
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
   173
	self assert: _m4 / _m2 = 2.
364
fd3ff5ad69f5 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 310
diff changeset
   174
!
fd3ff5ad69f5 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 310
diff changeset
   175
fd3ff5ad69f5 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 310
diff changeset
   176
testMultiply
fd3ff5ad69f5 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 310
diff changeset
   177
    |i ii|
fd3ff5ad69f5 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 310
diff changeset
   178
1447
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
   179
    #(
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
   180
	16r3fff
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
   181
	16r7fff
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
   182
	16rffff
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
   183
	16r3fffffff
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
   184
	16r7fffffff
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
   185
	16rffffffff
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
   186
	16r20000000
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
   187
	16r40000000
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
   188
	16r80000000
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
   189
	16r100000000
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
   190
	16r20000001
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
   191
	16r40000001
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
   192
	16r80000001
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
   193
	16r100000001
1223
708a62eac280 class: RegressionTests::SmallIntegerTest
Claus Gittinger <cg@exept.de>
parents: 1074
diff changeset
   194
1447
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
   195
	"/ for 64 bit machines:
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
   196
	16r3fffffffffffffff
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
   197
	16r7fffffffffffffff
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
   198
	16rffffffffffffffff
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
   199
	16r2000000000000000
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
   200
	16r4000000000000000
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
   201
	16r8000000000000000
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
   202
	16r10000000000000000
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
   203
	16r2000000000000001
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
   204
	16r4000000000000001
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
   205
	16r8000000000000001
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
   206
	16r10000000000000001
364
fd3ff5ad69f5 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 310
diff changeset
   207
    ) do:[:x |
1447
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
   208
	i := x.
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
   209
	ii := i * i.
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
   210
	self assert:((ii / i) = i).
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
   211
	i class == SmallInteger ifTrue:[
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
   212
	    self assert:((ii / i) == i).
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
   213
	].
364
fd3ff5ad69f5 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 310
diff changeset
   214
1447
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
   215
	i := x negated.
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
   216
	ii := i * i.
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
   217
	self assert:((ii / i) = i).
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
   218
	i class == SmallInteger ifTrue:[
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
   219
	    self assert:((ii / i) == i).
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
   220
	].
364
fd3ff5ad69f5 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 310
diff changeset
   221
    ].
fd3ff5ad69f5 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 310
diff changeset
   222
!
fd3ff5ad69f5 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 310
diff changeset
   223
fd3ff5ad69f5 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 310
diff changeset
   224
testNegation
fd3ff5ad69f5 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 310
diff changeset
   225
    |i iN iNN|
fd3ff5ad69f5 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 310
diff changeset
   226
1447
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
   227
    #(
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
   228
	16r3fffffff
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
   229
	16r7fffffff
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
   230
	16rffffffff
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
   231
	16r20000000
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
   232
	16r40000000
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
   233
	16r80000000
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
   234
	16r100000000
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
   235
	16r20000001
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
   236
	16r40000001
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
   237
	16r80000001
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
   238
	16r100000001
1223
708a62eac280 class: RegressionTests::SmallIntegerTest
Claus Gittinger <cg@exept.de>
parents: 1074
diff changeset
   239
1447
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
   240
	"/ for 64bit machines:
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
   241
	16r3fffffffffffffff
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
   242
	16r7fffffffffffffff
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
   243
	16rffffffffffffffff
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
   244
	16r2000000000000000
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
   245
	16r4000000000000000
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
   246
	16r8000000000000000
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
   247
	16r10000000000000000
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
   248
	16r2000000000000001
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
   249
	16r4000000000000001
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
   250
	16r8000000000000001
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
   251
	16r10000000000000001
364
fd3ff5ad69f5 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 310
diff changeset
   252
    ) do:[:x |
1447
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
   253
	i := x.
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
   254
	iN := i negated.
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
   255
	iNN := iN negated.
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
   256
	self assert:(i = iNN).
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
   257
	i class == SmallInteger ifTrue:[
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
   258
	    self assert:(i == iNN).
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
   259
	].
364
fd3ff5ad69f5 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 310
diff changeset
   260
    ].
1306
9b2ba728b70e #FEATURE
Claus Gittinger <cg@exept.de>
parents: 1223
diff changeset
   261
    self assert:(SmallInteger maxVal negated class == SmallInteger).
9b2ba728b70e #FEATURE
Claus Gittinger <cg@exept.de>
parents: 1223
diff changeset
   262
    self assert:(SmallInteger maxVal negated negated == SmallInteger maxVal).
1447
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
   263
1306
9b2ba728b70e #FEATURE
Claus Gittinger <cg@exept.de>
parents: 1223
diff changeset
   264
    self assert:(SmallInteger maxVal negated -1 == SmallInteger minVal).
9b2ba728b70e #FEATURE
Claus Gittinger <cg@exept.de>
parents: 1223
diff changeset
   265
    self assert:(SmallInteger minVal negated negated class == SmallInteger).
310
f7a1f000a281 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   266
! !
f7a1f000a281 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   267
f7a1f000a281 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   268
!SmallIntegerTest methodsFor:'tests-class protocol'!
f7a1f000a281 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   269
f7a1f000a281 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   270
testBasicNew
1447
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
   271
    self should: [SmallInteger basicNew] raise: TestResult error.
310
f7a1f000a281 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   272
!
f7a1f000a281 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   273
f7a1f000a281 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   274
testMaxVal
f7a1f000a281 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   275
    "/ the original code did not check for pointer-size;
f7a1f000a281 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   276
f7a1f000a281 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   277
    Smalltalk isSmalltalkX ifTrue:[
1447
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
   278
	SmallInteger maxBytes == 4 ifTrue:[
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
   279
	    self should: [SmallInteger maxVal = 16r3FFFFFFF].
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
   280
	    self should: [SmallInteger maxVal == 16r3FFFFFFF].
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
   281
	] ifFalse:[
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
   282
	    self should: [SmallInteger maxVal = 16r3FFFFFFFFFFFFFFF].
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
   283
	    self should: [SmallInteger maxVal == 16r3FFFFFFFFFFFFFFF].
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
   284
	].
310
f7a1f000a281 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   285
    ] ifFalse:[
1447
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
   286
	self should: [SmallInteger maxVal = 16r3FFFFFFF].
310
f7a1f000a281 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   287
    ]
f7a1f000a281 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   288
!
f7a1f000a281 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   289
1347
e965d238a810 #DOCUMENTATION
Claus Gittinger <cg@exept.de>
parents: 1306
diff changeset
   290
testMaxValPointerSizeConsistency
e965d238a810 #DOCUMENTATION
Claus Gittinger <cg@exept.de>
parents: 1306
diff changeset
   291
    SmallInteger maxBytes == 4 ifTrue:[
1447
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
   292
	self assert: ((SmallInteger maxBits == 31) or:[SmallInteger maxBits == 32]).
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
   293
	self assert: (ExternalAddress pointerSize == 4).
1347
e965d238a810 #DOCUMENTATION
Claus Gittinger <cg@exept.de>
parents: 1306
diff changeset
   294
    ] ifFalse:[
1447
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
   295
	self assert: ((SmallInteger maxBits == 63) or:[SmallInteger maxBits == 64]).
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
   296
	self assert: (ExternalAddress pointerSize == 8).
1347
e965d238a810 #DOCUMENTATION
Claus Gittinger <cg@exept.de>
parents: 1306
diff changeset
   297
    ]
e965d238a810 #DOCUMENTATION
Claus Gittinger <cg@exept.de>
parents: 1306
diff changeset
   298
!
e965d238a810 #DOCUMENTATION
Claus Gittinger <cg@exept.de>
parents: 1306
diff changeset
   299
310
f7a1f000a281 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   300
testMinVal
f7a1f000a281 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   301
    "/ the original code did not check for pointer-size;
f7a1f000a281 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   302
f7a1f000a281 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   303
    Smalltalk isSmalltalkX ifTrue:[
1447
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
   304
	SmallInteger maxBytes == 4 ifTrue:[
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
   305
	    self should: [SmallInteger minVal = -16r40000000].
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
   306
	    self should: [SmallInteger minVal == -16r40000000].
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
   307
	] ifFalse:[
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
   308
	    self should: [SmallInteger minVal = -16r4000000000000000].
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
   309
	    self should: [SmallInteger minVal == -16r4000000000000000].
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
   310
	].
310
f7a1f000a281 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   311
    ] ifFalse:[
1447
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
   312
	self should: [SmallInteger minVal = -16r40000000].
310
f7a1f000a281 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   313
    ]
f7a1f000a281 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   314
!
f7a1f000a281 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   315
f7a1f000a281 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   316
testNew
1447
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1347
diff changeset
   317
    self should: [SmallInteger new] raise: TestResult error.
310
f7a1f000a281 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   318
! !
f7a1f000a281 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   319
f7a1f000a281 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   320
!SmallIntegerTest class methodsFor:'documentation'!
f7a1f000a281 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   321
f7a1f000a281 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   322
version
f7a1f000a281 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   323
    ^ '$Header$'
f7a1f000a281 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   324
! !
1074
905aea054cf4 category
Claus Gittinger <cg@exept.de>
parents: 619
diff changeset
   325