Browse Source

+ test for lo/hi

Jonas Maebe 24 years ago
parent
commit
377815fa81
1 changed files with 69 additions and 0 deletions
  1. 69 0
      tests/test/cg/tlohi.pp

+ 69 - 0
tests/test/cg/tlohi.pp

@@ -0,0 +1,69 @@
+procedure error(const s: string);
+begin
+  writeln('error: ',s);
+  halt(1);
+end;
+
+procedure testlohiword;
+var
+  w: word;
+  i: smallint;
+begin
+  w := $1234;
+  i := $1234;
+  if lo(w) <> (w and 255) then
+    error('lo word');
+  if lo(i) <> (i and 255) then
+    error('lo integer');
+
+  if hi(w) <> (w shr 8) then
+    error('hi word');
+  if hi(i) <> (i shr 8) then
+    error('hi integer');
+end;
+
+
+procedure testlohilong;
+var
+  w: cardinal;
+  i: longint;
+begin
+  w := $12345678;
+  i := $12345678;
+  if lo(w) <> (w and $ffff) then
+    error('lo cardinal');
+  if lo(i) <> (i and $ffff) then
+    error('lo longint');
+
+  if hi(w) <> (w shr 16) then
+    error('hi cardinal');
+  if hi(i) <> (i shr 16) then
+    error('hi longint');
+end;
+
+
+procedure testlohiqword;
+var
+  w: qword;
+  i: int64;
+begin
+  w := $12345678;
+  w := w shl 32;
+  w := w or $98765432;
+  i := int64(w);
+  if lo(w) <> (cardinal(w)) then
+    error('lo qword');
+  if lo(i) <> (longint(w)) then
+    error('lo int64');
+
+  if hi(w) <> (w shr 32) then
+    error('hi qword');
+  if hi(i) <> (i shr 32) then
+    error('hi int64');
+end;
+
+begin
+  testlohiword;
+  testlohilong;
+  testlohiqword;
+end.