diff --git a/Test12.obn b/Test12.obn
index 05273a2d7d519c39122ecf1d524a6f6a58a9d5bb..74562f62e4c09611d36ce1cc2e39a3e6894e877a 100644 (file)
--- a/Test12.obn
+++ b/Test12.obn
MODULE Test12;
MODULE Test12;
-IMPORT SYSTEM;
+IMPORT SYSTEM, Out;
CONST
CONST
- con = -32;
- comp = 32;
+ xConI = -33;
+ xConJ = 33;
+ nConK = -5;
+ nConL = 5;
VAR
VAR
- i, j : INTEGER;
+ i, j : HUGEINT;
+PROCEDURE Chk(a, b : HUGEINT);
BEGIN
BEGIN
- i := con;
- j := comp;
-
- ASSERT(ASH(i, -5) = ASH(con, -5));
- ASSERT(ASH(i, 5) = ASH(con, 5));
- ASSERT(ASH(j, -5) = ASH(comp, -5));
- ASSERT(ASH(j, 5) = ASH(comp, 5));
-
-(*
- (* Константы вычисляются с максимальной точностью, поэтому всегда провал *)
- ASSERT(SYSTEM.LSH(i, -5) = SYSTEM.LSH(con, -5));
-*)
-
- ASSERT(SYSTEM.LSH(i, 5) = SYSTEM.LSH(con, 5));
- ASSERT(SYSTEM.LSH(j, -5) = SYSTEM.LSH(comp, -5));
- ASSERT(SYSTEM.LSH(j, 5) = SYSTEM.LSH(comp, 5));
+ Out.Int(a, 0); Out.String(" = "); Out.Int(b, 0); Out.Ln;
+ ASSERT(a = b);
+END Chk;
+
+BEGIN
+ i := xConI;
+ j := xConJ;
+
+ Chk(ASH(i, nConK), ASH(xConI, nConK));
+ Chk(ASH(i, nConL), ASH(xConI, nConL));
+ Chk(ASH(j, nConK), ASH(xConJ, nConK));
+ Chk(ASH(j, nConL), ASH(xConJ, nConL));
+
+ Chk(SYSTEM.LSH(i, nConK), SYSTEM.LSH(xConI, nConK));
+ Chk(SYSTEM.LSH(i, nConL), SYSTEM.LSH(xConI, nConL));
+ Chk(SYSTEM.LSH(j, nConK), SYSTEM.LSH(xConJ, nConK));
+ Chk(SYSTEM.LSH(j, nConL), SYSTEM.LSH(xConJ, nConL));
+
+ Chk(SYSTEM.ROT(i, nConK), SYSTEM.ROT(xConI, nConK));
+ Chk(SYSTEM.ROT(i, nConL), SYSTEM.ROT(xConI, nConL));
+ Chk(SYSTEM.ROT(j, nConK), SYSTEM.ROT(xConJ, nConK));
+ Chk(SYSTEM.ROT(j, nConL), SYSTEM.ROT(xConJ, nConL));
END Test12.
Проверка сдвигов.
END Test12.
Проверка сдвигов.