RegressionTests__IntegerTest.st
changeset 2263 7b3944adf308
parent 2246 60269925599c
child 2264 3e8bba774202
equal deleted inserted replaced
2262:9339c5883dad 2263:7b3944adf308
  5323     ].
  5323     ].
  5324 
  5324 
  5325     "Created: / 24-03-2019 / 11:36:18 / Claus Gittinger"
  5325     "Created: / 24-03-2019 / 11:36:18 / Claus Gittinger"
  5326     "Modified: / 27-03-2019 / 15:16:43 / stefan"
  5326     "Modified: / 27-03-2019 / 15:16:43 / stefan"
  5327     "Modified: / 28-03-2019 / 16:59:52 / Claus Gittinger"
  5327     "Modified: / 28-03-2019 / 16:59:52 / Claus Gittinger"
       
  5328 !
       
  5329 
       
  5330 testBitShift
       
  5331     self assert:(1 bitShift:1) = 2.
       
  5332     self assert:(-1 bitShift:1) = -2.
       
  5333 
       
  5334     self assert:(1 bitShift:7) = 128.
       
  5335     self assert:(-1 bitShift:7) = -128.
       
  5336 
       
  5337     self assert:(1 bitShift:8) = 16r100.
       
  5338     self assert:(-1 bitShift:8) = 16r-100.
       
  5339 
       
  5340     self assert:(1 bitShift:16) = 16r10000.
       
  5341     self assert:(-1 bitShift:16) = 16r-10000.
       
  5342 
       
  5343     self assert:(1 bitShift:24) = 16r1000000.
       
  5344     self assert:(-1 bitShift:24) = 16r-1000000.
       
  5345 
       
  5346     "/ the following are out of the smallInteger range on 32bit systems
       
  5347     self assert:(1 bitShift:30) = 16r40000000.
       
  5348     self assert:(-1 bitShift:30) = 16r-40000000.
       
  5349 
       
  5350     self assert:(1 bitShift:31) = 16r80000000.
       
  5351     self assert:(-1 bitShift:31) = 16r-80000000.
       
  5352 
       
  5353     self assert:(1 bitShift:32) = 16r100000000.
       
  5354     self assert:(-1 bitShift:32) = 16r-100000000.
       
  5355 
       
  5356     self assert:(1 bitShift:40) = 16r10000000000.
       
  5357     self assert:(-1 bitShift:40) = 16r-10000000000.
       
  5358 
       
  5359     self assert:(1 bitShift:56) = 16r100000000000000.
       
  5360     self assert:(-1 bitShift:56) = 16r-100000000000000.
       
  5361 
       
  5362     "/ the following are out of the smallInteger range on 32bit systems
       
  5363     self assert:(1 bitShift:62) = 16r4000000000000000.
       
  5364     self assert:(-1 bitShift:62) = 16r-4000000000000000.
       
  5365 
       
  5366     self assert:(1 bitShift:63) = 16r8000000000000000.
       
  5367     self assert:(-1 bitShift:63) = 16r-8000000000000000.
       
  5368 
       
  5369     self assert:(1 bitShift:64) = 16r10000000000000000.
       
  5370     self assert:(-1 bitShift:64) = 16r-10000000000000000.
       
  5371 
       
  5372     "Created: / 04-06-2019 / 00:58:47 / Claus Gittinger"
       
  5373 !
       
  5374 
       
  5375 testRightShift
       
  5376     "right shifts must preserve the sign - even for large integers"
       
  5377     
       
  5378     #(1 7 8 16 24 
       
  5379       30 31 32 33
       
  5380       40 48 56
       
  5381       62 63 64
       
  5382       65
       
  5383       126 127 128
       
  5384       1000 2000
       
  5385     ) do:[:cnt |
       
  5386         self assert:((1 bitShift:cnt) bitShift:cnt negated) = 1.
       
  5387         self assert:((-1 bitShift:cnt) bitShift:cnt negated) = -1.
       
  5388     ].
       
  5389 
       
  5390     "Created: / 04-06-2019 / 01:05:30 / Claus Gittinger"
       
  5391 !
       
  5392 
       
  5393 testZigZagCoding
       
  5394     "zigzag is used by google's protocol buffer encoding"
       
  5395     
       
  5396     #(1 7 8 
       
  5397       16r1fffFFFF 16r-1fffFFFF
       
  5398       16r20000000 16r-20000000
       
  5399       16r3fffFFFF 16r-3fffFFFF
       
  5400       16r40000000 16r-40000000
       
  5401       16r7fffFFFF 16r-7fffFFFF
       
  5402       16r-80000000
       
  5403     ) do:[:val |
       
  5404         self assert:(val zigZagEncoded32BitValue zigZagDecodedValue) = val.
       
  5405         self assert:(val zigZagEncoded64BitValue zigZagDecodedValue) = val.
       
  5406     ].
       
  5407 
       
  5408     #(
       
  5409       16r1fffFFFFffffFFFF 16r-1fffFFFFffffFFFF
       
  5410       16r2000000000000000 16r-2000000000000000
       
  5411       16r3fffFFFFffffFFFF 16r-3fffFFFFffffFFFF
       
  5412       16r4000000000000000 16r-4000000000000000
       
  5413       16r7fffFFFFffffFFFF 16r-7fffFFFFffffFFFF
       
  5414       16r-8000000000000000
       
  5415     ) do:[:val |
       
  5416         self assert:(val zigZagEncoded64BitValue zigZagDecodedValue) = val.
       
  5417     ].
       
  5418 
       
  5419     "Created: / 04-06-2019 / 01:10:43 / Claus Gittinger"
  5328 ! !
  5420 ! !
  5329 
  5421 
  5330 !IntegerTest methodsFor:'tests-class protocol'!
  5422 !IntegerTest methodsFor:'tests-class protocol'!
  5331 
  5423 
  5332 testCreationFromBytes1
  5424 testCreationFromBytes1