DEADSOFTWARE

Добавлена функция SYSTEM.ROT
[dsw-obn.git] / Test12.obn
index 05273a2d7d519c39122ecf1d524a6f6a58a9d5bb..74562f62e4c09611d36ce1cc2e39a3e6894e877a 100644 (file)
@@ -1,31 +1,40 @@
 MODULE Test12;
 
-IMPORT SYSTEM;
+IMPORT SYSTEM, Out;
 
 CONST
-  con  = -32;
-  comp = 32;
+  xConI = -33;
+  xConJ = 33;
+  nConK = -5;
+  nConL = 5;
 
 VAR
-  i, j : INTEGER;
+  i, j : HUGEINT;
 
+PROCEDURE Chk(a, b : HUGEINT);
 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.
 
 Проверка сдвигов.