From 714c4164adfb56973e37f0c72bb6bf94dc44b9ae Mon Sep 17 00:00:00 2001 From: paul Date: Fri, 24 Dec 2010 06:05:17 +0000 Subject: [PATCH] tests: add also test for +,-,or,xor,and operators git-svn-id: trunk@16625 - --- tests/test/terecs6.pp | 48 ++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 47 insertions(+), 1 deletion(-) diff --git a/tests/test/terecs6.pp b/tests/test/terecs6.pp index 04311f13ad..faa9d25f17 100644 --- a/tests/test/terecs6.pp +++ b/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.