123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- { %OPT=-Oonofastmath }
- { this tests that the correct helper is used for constants }
- program tthlp4;
- {$mode objfpc}
- {$apptype console}
- uses
- uthlp;
- procedure TestResult(aActual, aExpected, aError: LongInt);
- begin
- if aActual <> aExpected then begin
- Writeln('Expected: ', aExpected, ' got: ', aActual, ' error: ', aError);
- Halt(aError);
- end;
- end;
- var
- ml: MyLongInt;
- begin
- Writeln('Ordinal constants');
- TestResult(2.Test, -1, 1);
- TestResult(-2.Test, -1, 2);
- TestResult(200.Test, 1, 3);
- TestResult(-200.Test, -2, 4);
- TestResult(40000.Test, 2, 5);
- TestResult(-20000.Test, -2, 6);
- TestResult(-40000.Test, -4, 7);
- TestResult(70000.Test, -4, 8);
- TestResult(3000000000.Test, 4, 9);
- TestResult($1ffffffff.Test, -8, 10);
- TestResult($1fffffffffffffff.Test, -8, 11);
- Writeln('Float constants');
- TestResult(1.25.Test, 4, 12);
- {$if sizeof(Extended) = sizeof(Double)}
- TestResult(1.25e10.Test, 8, 14);
- {$else}
- TestResult(1.25e10.Test, 10, 14);
- {$endif}
- Writeln('Boolean constants');
- TestResult(True.Test, 1, 15);
- TestResult(False.Test, 1, 16);
- Writeln('String constants');
- TestResult('ShortString'.Test, 1, 17);
- TestResult('UnicodeString'#1234.Test, 4, 18);
- Writeln('Misc constants');
- TestResult(Nil.Test, 1, 19);
- TestResult(teOne.Test, 1, 20);
- TestResult('a'.Test, - 1, 21);
- TestResult(#1234.Test, - 2, 22);
- {$push}
- {$T-}
- // => Pointer
- TestResult((@ml).Test, 1, 23);
- {$T+}
- // => Pointer as well
- TestResult((@ml).Test, 1, 24);
- {$pop}
- Writeln('OK');
- end.
|