Browse Source

+ forgotten test

git-svn-id: trunk@46405 -
florian 5 years ago
parent
commit
cdd80c131d
2 changed files with 176 additions and 0 deletions
  1. 1 0
      .gitattributes
  2. 175 0
      tests/webtbs/tw37554.pp

+ 1 - 0
.gitattributes

@@ -18427,6 +18427,7 @@ tests/webtbs/tw37477.pp svneol=native#text/pascal
 tests/webtbs/tw37493.pp svneol=native#text/pascal
 tests/webtbs/tw37508.pp svneol=native#text/pascal
 tests/webtbs/tw3751.pp svneol=native#text/plain
+tests/webtbs/tw37554.pp svneol=native#text/pascal
 tests/webtbs/tw3758.pp svneol=native#text/plain
 tests/webtbs/tw3764.pp svneol=native#text/plain
 tests/webtbs/tw3765.pp svneol=native#text/plain

+ 175 - 0
tests/webtbs/tw37554.pp

@@ -0,0 +1,175 @@
+{ %CPU=AARCH64 }
+
+program tw37554;
+
+{$mode objfpc}{$H+}
+
+const
+  CmpArray: array[0..88] of Int64 = (
+    -1, $FFFFFFFF, -3000000, -2147483648, -131073,
+
+    $FFFFFFFFFFFF0000, $FFFFFFFF0000FFFF, $FFFF0000FFFFFFFF, $0000FFFFFFFFFFFF,
+
+    $FFFFFFFFFFFFFFFE, $FFFFFFFFFFFFFFFD, $FFFFFFFFFFFFFFFB, $FFFFFFFFFFFFFFF7,
+    $FFFFFFFFFFFFFFEF, $FFFFFFFFFFFFFFDF, $FFFFFFFFFFFFFFBF, $FFFFFFFFFFFFFF7F,
+    $FFFFFFFFFFFFFEFF, $FFFFFFFFFFFFFDFF, $FFFFFFFFFFFFFBFF, $FFFFFFFFFFFFF7FF,
+    $FFFFFFFFFFFFEFFF, $FFFFFFFFFFFFDFFF, $FFFFFFFFFFFFBFFF, $FFFFFFFFFFFF7FFF,
+    $FFFFFFFFFFFEFFFF, $FFFFFFFFFFFDFFFF, $FFFFFFFFFFFBFFFF, $FFFFFFFFFFF7FFFF,
+    $FFFFFFFFFFEFFFFF, $FFFFFFFFFFDFFFFF, $FFFFFFFFFFBFFFFF, $FFFFFFFFFF7FFFFF,
+    $FFFFFFFFFEFFFFFF, $FFFFFFFFFDFFFFFF, $FFFFFFFFFBFFFFFF, $FFFFFFFFF7FFFFFF,
+    $FFFFFFFFEFFFFFFF, $FFFFFFFFDFFFFFFF, $FFFFFFFFBFFFFFFF, $FFFFFFFF7FFFFFFF,
+    $FFFFFFFEFFFFFFFF, $FFFFFFFDFFFFFFFF, $FFFFFFFBFFFFFFFF, $FFFFFFF7FFFFFFFF,
+    $FFFFFFEFFFFFFFFF, $FFFFFFDFFFFFFFFF, $FFFFFFBFFFFFFFFF, $FFFFFF7FFFFFFFFF,
+    $FFFFFEFFFFFFFFFF, $FFFFFDFFFFFFFFFF, $FFFFFBFFFFFFFFFF, $FFFFF7FFFFFFFFFF,
+    $FFFFEFFFFFFFFFFF, $FFFFDFFFFFFFFFFF, $FFFFBFFFFFFFFFFF, $FFFF7FFFFFFFFFFF,
+    $FFFEFFFFFFFFFFFF, $FFFDFFFFFFFFFFFF, $FFFBFFFFFFFFFFFF, $FFF7FFFFFFFFFFFF,
+    $FFEFFFFFFFFFFFFF, $FFDFFFFFFFFFFFFF, $FFBFFFFFFFFFFFFF, $FF7FFFFFFFFFFFFF,
+    $FEFFFFFFFFFFFFFF, $FDFFFFFFFFFFFFFF, $FBFFFFFFFFFFFFFF, $F7FFFFFFFFFFFFFF,
+    $EFFFFFFFFFFFFFFF, $DFFFFFFFFFFFFFFF, $BFFFFFFFFFFFFFFF, $7FFFFFFFFFFFFFFF,
+
+    $FFFFFFFFFFFF1234, $FFFFFFFF1234FFFF, $FFFF1234FFFFFFFF, $1234FFFFFFFFFFFF,
+    $FFFFFFFF12341234, $FFFF1234FFFF1234, $FFFF12341234FFFF, $FFFF123412341234,
+    $FFFFFFFFFFFF0001, $FFFFFFFF0001FFFF, $FFFF0001FFFFFFFF, $0001FFFFFFFFFFFF,
+
+    $0000000100000001, $0000000500000005, $0000AAAA0000AAAA, $0000FFFF0000FFFF
+  );
+
+var
+  Fail: Boolean;
+
+procedure CompareImmediate(CmpIndex: Integer; TestVal: Int64);
+begin
+  Write('Test ', CmpIndex, '; input constant: ', TestVal, '; comparing against: ', CmpArray[CmpIndex], ' - ');
+  if TestVal = CmpArray[CmpIndex] then
+    begin
+      WriteLn('Pass');
+      Exit;
+    end;
+
+  WriteLn('FAIL - expected ', CmpArray[CmpIndex]);
+  Fail := True;
+end;
+
+begin
+  Fail := False;
+
+  CompareImmediate(0, -1);
+  CompareImmediate(1, $FFFFFFFF);
+  CompareImmediate(2, -3000000);
+  CompareImmediate(3, -2147483648);
+  CompareImmediate(4, -131073);
+
+  CompareImmediate(5, $FFFFFFFFFFFF0000);
+  CompareImmediate(6, $FFFFFFFF0000FFFF);
+  CompareImmediate(7, $FFFF0000FFFFFFFF);
+  CompareImmediate(8, $0000FFFFFFFFFFFF);
+
+  CompareImmediate(9, $FFFFFFFFFFFFFFFE);
+  CompareImmediate(10, $FFFFFFFFFFFFFFFD);
+  CompareImmediate(11, $FFFFFFFFFFFFFFFB);
+  CompareImmediate(12, $FFFFFFFFFFFFFFF7);
+
+  CompareImmediate(13, $FFFFFFFFFFFFFFEF);
+  CompareImmediate(14, $FFFFFFFFFFFFFFDF);
+  CompareImmediate(15, $FFFFFFFFFFFFFFBF);
+  CompareImmediate(16, $FFFFFFFFFFFFFF7F);
+
+  CompareImmediate(17, $FFFFFFFFFFFFFEFF);
+  CompareImmediate(18, $FFFFFFFFFFFFFDFF);
+  CompareImmediate(19, $FFFFFFFFFFFFFBFF);
+  CompareImmediate(20, $FFFFFFFFFFFFF7FF);
+
+  CompareImmediate(21, $FFFFFFFFFFFFEFFF);
+  CompareImmediate(22, $FFFFFFFFFFFFDFFF);
+  CompareImmediate(23, $FFFFFFFFFFFFBFFF);
+  CompareImmediate(24, $FFFFFFFFFFFF7FFF);
+
+  CompareImmediate(25, $FFFFFFFFFFFEFFFF);
+  CompareImmediate(26, $FFFFFFFFFFFDFFFF);
+  CompareImmediate(27, $FFFFFFFFFFFBFFFF);
+  CompareImmediate(28, $FFFFFFFFFFF7FFFF);
+
+  CompareImmediate(29, $FFFFFFFFFFEFFFFF);
+  CompareImmediate(30, $FFFFFFFFFFDFFFFF);
+  CompareImmediate(31, $FFFFFFFFFFBFFFFF);
+  CompareImmediate(32, $FFFFFFFFFF7FFFFF);
+
+  CompareImmediate(33, $FFFFFFFFFEFFFFFF);
+  CompareImmediate(34, $FFFFFFFFFDFFFFFF);
+  CompareImmediate(35, $FFFFFFFFFBFFFFFF);
+  CompareImmediate(36, $FFFFFFFFF7FFFFFF);
+
+  CompareImmediate(37, $FFFFFFFFEFFFFFFF);
+  CompareImmediate(38, $FFFFFFFFDFFFFFFF);
+  CompareImmediate(39, $FFFFFFFFBFFFFFFF);
+  CompareImmediate(40, $FFFFFFFF7FFFFFFF);
+
+  CompareImmediate(41, $FFFFFFFEFFFFFFFF);
+  CompareImmediate(42, $FFFFFFFDFFFFFFFF);
+  CompareImmediate(43, $FFFFFFFBFFFFFFFF);
+  CompareImmediate(44, $FFFFFFF7FFFFFFFF);
+
+  CompareImmediate(45, $FFFFFFEFFFFFFFFF);
+  CompareImmediate(46, $FFFFFFDFFFFFFFFF);
+  CompareImmediate(47, $FFFFFFBFFFFFFFFF);
+  CompareImmediate(48, $FFFFFF7FFFFFFFFF);
+
+  CompareImmediate(49, $FFFFFEFFFFFFFFFF);
+  CompareImmediate(50, $FFFFFDFFFFFFFFFF);
+  CompareImmediate(51, $FFFFFBFFFFFFFFFF);
+  CompareImmediate(52, $FFFFF7FFFFFFFFFF);
+
+  CompareImmediate(53, $FFFFEFFFFFFFFFFF);
+  CompareImmediate(54, $FFFFDFFFFFFFFFFF);
+  CompareImmediate(55, $FFFFBFFFFFFFFFFF);
+  CompareImmediate(56, $FFFF7FFFFFFFFFFF);
+
+  CompareImmediate(57, $FFFEFFFFFFFFFFFF);
+  CompareImmediate(58, $FFFDFFFFFFFFFFFF);
+  CompareImmediate(59, $FFFBFFFFFFFFFFFF);
+  CompareImmediate(60, $FFF7FFFFFFFFFFFF);
+
+  CompareImmediate(61, $FFEFFFFFFFFFFFFF);
+  CompareImmediate(62, $FFDFFFFFFFFFFFFF);
+  CompareImmediate(63, $FFBFFFFFFFFFFFFF);
+  CompareImmediate(64, $FF7FFFFFFFFFFFFF);
+
+  CompareImmediate(65, $FEFFFFFFFFFFFFFF);
+  CompareImmediate(66, $FDFFFFFFFFFFFFFF);
+  CompareImmediate(67, $FBFFFFFFFFFFFFFF);
+  CompareImmediate(68, $F7FFFFFFFFFFFFFF);
+
+  CompareImmediate(69, $EFFFFFFFFFFFFFFF);
+  CompareImmediate(70, $DFFFFFFFFFFFFFFF);
+  CompareImmediate(71, $BFFFFFFFFFFFFFFF);
+  CompareImmediate(72, $7FFFFFFFFFFFFFFF);
+
+  CompareImmediate(73, $FFFFFFFFFFFF1234);
+  CompareImmediate(74, $FFFFFFFF1234FFFF);
+  CompareImmediate(75, $FFFF1234FFFFFFFF);
+  CompareImmediate(76, $1234FFFFFFFFFFFF);
+
+  CompareImmediate(77, $FFFFFFFF12341234);
+  CompareImmediate(78, $FFFF1234FFFF1234);
+  CompareImmediate(79, $FFFF12341234FFFF);
+  CompareImmediate(80, $FFFF123412341234);
+
+  CompareImmediate(81, $FFFFFFFFFFFF0001);
+  CompareImmediate(82, $FFFFFFFF0001FFFF);
+  CompareImmediate(83, $FFFF0001FFFFFFFF);
+  CompareImmediate(84, $0001FFFFFFFFFFFF);
+
+  CompareImmediate(85, $0000000100000001);
+  CompareImmediate(86, $0000000500000005);
+  CompareImmediate(87, $0000AAAA0000AAAA);
+  CompareImmediate(88, $0000FFFF0000FFFF);
+
+  { Spacing }
+  WriteLn('');
+
+  if Fail then
+    Halt(1)
+  else
+    WriteLn('ok');
+end.
+