Port updated tests and binary snapping, with corrected Reals code, from tidy branch.

This commit is contained in:
David Brown 2016-08-24 14:10:06 +01:00
parent b1dc7d77e8
commit ca2cc52a44
221 changed files with 949 additions and 550 deletions

View file

@ -91,11 +91,51 @@ BEGIN
(* Also need full tests for CHAR, and poossibly SYSTEM.BYTE. Here's a simple one *)
c := 1X; c := SYSTEM.LSH(c,2); c := SYSTEM.ROT(c,-2); ASSERT(c=1X, 93);
b := 1; b := SYSTEM.LSH(b,2); b := SYSTEM.ROT(b,-2); ASSERT(SYSTEM.VAL(INTEGER,b)=1, 94);
b := 1; b := SYSTEM.LSH(b,2); b := SYSTEM.ROT(b,-2); ASSERT(SYSTEM.VAL(CHAR,b)=1X, 94);
END Shift;
PROCEDURE TestValue(v,e: LONGINT; name: ARRAY OF CHAR);
BEGIN
IF v # e THEN
Console.String(name);
Console.String(" = ");
Console.Int(v,1);
Console.String(", expected ");
Console.Int(e,1);
Console.Ln;
END
END TestValue;
PROCEDURE IntSize;
VAR l: LONGINT;
BEGIN
TestValue(MIN(SHORTINT), -80H, "MIN(SHORTINT)");
TestValue(MAX(SHORTINT), 7FH, "MAX(SHORTINT)");
IF SIZE(INTEGER) = 2 THEN (* 32 bit machine *)
TestValue(MIN(INTEGER), -7FFFH - 1, "MIN(INTEGER)");
TestValue(MAX(INTEGER), 7FFFH, "MAX(INTEGER)");
TestValue(MIN(LONGINT), -7FFFFFFFH - 1, "MIN(LONGINT)");
TestValue(MAX(LONGINT), 7FFFFFFFH, "MAX(LONGINT)");
ELSIF SIZE(INTEGER) = 4 THEN (* 64 bit machine *)
TestValue(MIN(INTEGER), -7FFFFFFFH - 1, "MIN(INTEGER)");
TestValue(MAX(INTEGER), 7FFFFFFFH, "MAX(INTEGER)");
(* Since we need to be compilable on 32 bit machines we cannot use
a 64 bit constant, so use arithmetic. *)
l := 1; l := SYSTEM.LSH(l, 63); l := l-1; (* Generate l = 7FFFFFFFFFFFFFFFH *)
TestValue(MIN(LONGINT), -l - 1, "MIN(LONGINT)");
TestValue(MAX(LONGINT), l, "MAX(LONGINT)");
ELSE
Console.String("SIZE(INTEGER) = ");
Console.Int(SIZE(INTEGER),1);
Console.String(", expected 2 or 4.");
Console.Ln;
END;
END IntSize;
BEGIN
Shift;
IntSize;
Console.String("Language tests successful."); Console.Ln;
END TestLanguage.