Sfoglia il codice sorgente

tests: add also test for +,-,or,xor,and operators

git-svn-id: trunk@16625 -
paul 14 anni fa
parent
commit
714c4164ad
1 ha cambiato i file con 47 aggiunte e 1 eliminazioni
  1. 47 1
      tests/test/terecs6.pp

+ 47 - 1
tests/test/terecs6.pp

@@ -1,4 +1,4 @@
-program terecs6;
+program Project1;
 
 {$mode delphi}
 {$apptype console}
@@ -15,12 +15,23 @@ type
     class operator GreaterThanOrEqual(a, b: TFoo): Boolean;
     class operator LessThan(a, b: TFoo): Boolean;
     class operator LessThanOrEqual(a, b: TFoo): Boolean;
+    class operator Add(a, b: TFoo): Integer;
+    class operator Subtract(a, b: TFoo): Integer;
     class operator Multiply(a, b: TFoo): Integer;
     class operator Divide(a, b: TFoo): Integer;
     class operator IntDivide(a, b: TFoo): Integer;
     class operator Modulus(a, b: TFoo): Integer;
     class operator LeftShift(a, b: TFoo): Integer;
     class operator RightShift(a, b: TFoo): Integer;
+    class operator LogicalOr(a, b: TFoo): Boolean;
+    class operator LogicalAnd(a, b: TFoo): Boolean;
+    class operator LogicalXor(a, b: TFoo): Boolean;
+//    class operator LogicalNot(a: TFoo): TFoo;
+//    class operator BitwiseOr(a, b: TFoo): TFoo;
+//    class operator BitwiseAnd(a, b: TFoo): TFoo;
+//    class operator BitwiseXor(a, b: TFoo): TFoo;
+//    class operator Inc(a: TFoo): TFoo;
+//    class operator Dec(a: TFoo): TFoo;
  end;
 
 class operator TFoo.Equal(a, b: TFoo): Boolean;
@@ -58,6 +69,16 @@ begin
   Result := a.F <= b.F;
 end;
 
+class operator TFoo.Add(a, b: TFoo): Integer;
+begin
+  Result := a.F + b.F;
+end;
+
+class operator TFoo.Subtract(a, b: TFoo): Integer;
+begin
+  Result := a.F - b.F;
+end;
+
 class operator TFoo.Multiply(a, b: TFoo): Integer;
 begin
   Result := a.F * b.F;
@@ -88,6 +109,21 @@ begin
   Result := a.F shr b.F;
 end;
 
+class operator TFoo.LogicalOr(a, b: TFoo): Boolean;
+begin
+  Result := (a.F or b.F) <> 0;
+end;
+
+class operator TFoo.LogicalAnd(a, b: TFoo): Boolean;
+begin
+  Result := (a.F and b.F) <> 0;
+end;
+
+class operator TFoo.LogicalXor(a, b: TFoo): Boolean;
+begin
+  Result := (a.F xor b.F) <> 0;
+end;
+
 var
   a, b: TFoo;
 begin
@@ -121,5 +157,15 @@ begin
     halt(13);
   if b shr a <> 1 then
     halt(14);
+  if a + b <> 3 then
+    halt(15);
+  if a - b <> -1 then
+    halt(16);
+  if not (a or b) then
+    halt(17);
+  if a and b then
+    halt(18);
+  if not (a xor b) then
+    halt(19);
   WriteLn('ok');
 end.