X-Git-Url: http://deadsoftware.ru/gitweb?p=dsw-obn.git;a=blobdiff_plain;f=Test12.obn;h=74562f62e4c09611d36ce1cc2e39a3e6894e877a;hp=05273a2d7d519c39122ecf1d524a6f6a58a9d5bb;hb=789adb9354da345b13aa284f3f4f8f1046cadbc4;hpb=2e868cbd80ac5144b08154aaf2cf7bf7be455b61 diff --git a/Test12.obn b/Test12.obn index 05273a2..74562f6 100644 --- a/Test12.obn +++ b/Test12.obn @@ -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. Проверка сдвигов.