mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-16 00:42:06 +02:00
1176 lines
19 KiB
ObjectPascal
1176 lines
19 KiB
ObjectPascal
{ Program to test Code generator secondadd() }
|
|
{ with boolean values. }
|
|
{ FUNCTIONAL PRE-REQUISITES: }
|
|
{ - assignments function correctly. }
|
|
{ - if statements function correctly. }
|
|
{ - subroutine calls function correctly. }
|
|
Program TAddBool;
|
|
|
|
|
|
{$IFDEF VER70}
|
|
TYPE
|
|
cardinal = longint;
|
|
{$ENDIF}
|
|
|
|
|
|
procedure fail;
|
|
begin
|
|
WriteLn('Failed!');
|
|
halt(1);
|
|
end;
|
|
|
|
{ ---------------------------- BOOLEAN TEST ----------------------------- }
|
|
{ secondadd() }
|
|
{ ----------------------------------------------------------------------- }
|
|
|
|
procedure BoolTestAnd;
|
|
var
|
|
b1, b2: boolean;
|
|
b161, b162: boolean16;
|
|
b321, b322: boolean32;
|
|
b641, b642: boolean64;
|
|
bb1, bb2: bytebool;
|
|
wb1, wb2: wordbool;
|
|
lb1, lb2: longbool;
|
|
result : boolean;
|
|
begin
|
|
result := true;
|
|
{ BOOLEAN AND BOOLEAN }
|
|
Write('boolean AND boolean test...');
|
|
b1 := true;
|
|
b2 := false;
|
|
if b1 and b2 then
|
|
result := false;
|
|
if b2 then
|
|
result := false;
|
|
b1 := false;
|
|
b2 := false;
|
|
if b1 and b2 then
|
|
result := false;
|
|
|
|
b1 := b1 and b2;
|
|
if b1 then
|
|
result := false;
|
|
if b1 and FALSE then
|
|
result := false;
|
|
b1 := true;
|
|
b2 := true;
|
|
if b1 and b2 then
|
|
begin
|
|
if result then
|
|
WriteLn('Success.')
|
|
else
|
|
Fail;
|
|
end
|
|
else
|
|
Fail;
|
|
|
|
{ BOOLEAN16 AND BOOLEAN16 }
|
|
Write('boolean16 AND boolean16 test...');
|
|
b161 := true;
|
|
b162 := false;
|
|
if b161 and b162 then
|
|
result := false;
|
|
if b162 then
|
|
result := false;
|
|
b161 := false;
|
|
b162 := false;
|
|
if b161 and b162 then
|
|
result := false;
|
|
|
|
b161 := b161 and b162;
|
|
if b161 then
|
|
result := false;
|
|
if b161 and FALSE then
|
|
result := false;
|
|
b161 := true;
|
|
b162 := true;
|
|
if b161 and b162 then
|
|
begin
|
|
if result then
|
|
WriteLn('Success.')
|
|
else
|
|
Fail;
|
|
end
|
|
else
|
|
Fail;
|
|
|
|
{ BOOLEAN32 AND BOOLEAN32 }
|
|
Write('boolean32 AND boolean32 test...');
|
|
b321 := true;
|
|
b322 := false;
|
|
if b321 and b322 then
|
|
result := false;
|
|
if b322 then
|
|
result := false;
|
|
b321 := false;
|
|
b322 := false;
|
|
if b321 and b322 then
|
|
result := false;
|
|
|
|
b321 := b321 and b322;
|
|
if b321 then
|
|
result := false;
|
|
if b321 and FALSE then
|
|
result := false;
|
|
b321 := true;
|
|
b322 := true;
|
|
if b321 and b322 then
|
|
begin
|
|
if result then
|
|
WriteLn('Success.')
|
|
else
|
|
Fail;
|
|
end
|
|
else
|
|
Fail;
|
|
|
|
{ BOOLEAN64 AND BOOLEAN64 }
|
|
Write('boolean64 AND boolean64 test...');
|
|
b641 := true;
|
|
b642 := false;
|
|
if b641 and b642 then
|
|
result := false;
|
|
if b642 then
|
|
result := false;
|
|
b641 := false;
|
|
b642 := false;
|
|
if b641 and b642 then
|
|
result := false;
|
|
|
|
b641 := b641 and b642;
|
|
if b641 then
|
|
result := false;
|
|
if b641 and FALSE then
|
|
result := false;
|
|
b641 := true;
|
|
b642 := true;
|
|
if b641 and b642 then
|
|
begin
|
|
if result then
|
|
WriteLn('Success.')
|
|
else
|
|
Fail;
|
|
end
|
|
else
|
|
Fail;
|
|
|
|
{ BYTEBOOL AND BYTEBOOL }
|
|
Write('bytebool AND bytebool test...');
|
|
bb1 := true;
|
|
bb2 := false;
|
|
if bb1 and bb2 then
|
|
result := false;
|
|
if bb2 then
|
|
result := false;
|
|
bb1 := false;
|
|
bb2 := false;
|
|
if bb1 and bb2 then
|
|
result := false;
|
|
|
|
bb1 := bb1 and bb2;
|
|
if bb1 then
|
|
result := false;
|
|
if bb1 and FALSE then
|
|
result := false;
|
|
bb1 := true;
|
|
bb2 := true;
|
|
if bb1 and bb2 then
|
|
begin
|
|
if result then
|
|
WriteLn('Success.')
|
|
else
|
|
Fail;
|
|
end
|
|
else
|
|
Fail;
|
|
|
|
{ WORDBOOL AND WORDBOOL }
|
|
result := true;
|
|
Write('wordbool AND wordbool test...');
|
|
wb1 := true;
|
|
wb2 := false;
|
|
if wb1 and wb2 then
|
|
result := false;
|
|
if wb2 then
|
|
result := false;
|
|
wb1 := false;
|
|
wb2 := false;
|
|
if wb1 and wb2 then
|
|
result := false;
|
|
|
|
wb1 := wb1 and wb2;
|
|
if wb1 then
|
|
result := false;
|
|
if wb1 and FALSE then
|
|
result := false;
|
|
|
|
wb1 := true;
|
|
wb2 := true;
|
|
if wb1 and wb2 then
|
|
begin
|
|
if result then
|
|
WriteLn('Success.')
|
|
else
|
|
Fail;
|
|
end
|
|
else
|
|
Fail;
|
|
|
|
{ LONGBOOL AND LONGBOOL }
|
|
result := true;
|
|
Write('longbool AND longbool test...');
|
|
lb1 := true;
|
|
lb2 := false;
|
|
if lb1 and lb2 then
|
|
result := false;
|
|
if lb2 then
|
|
result := false;
|
|
lb1 := false;
|
|
lb2 := false;
|
|
if lb1 and lb2 then
|
|
result := false;
|
|
|
|
lb1 := lb1 and lb2;
|
|
if lb1 then
|
|
result := false;
|
|
if lb1 and FALSE then
|
|
result := false;
|
|
|
|
lb1 := true;
|
|
lb2 := true;
|
|
if lb1 and lb2 then
|
|
begin
|
|
if result then
|
|
WriteLn('Success.')
|
|
else
|
|
Fail;
|
|
end
|
|
else
|
|
Fail;
|
|
end;
|
|
|
|
|
|
procedure BoolTestOr;
|
|
var
|
|
b1, b2: boolean;
|
|
b161, b162: boolean16;
|
|
b321, b322: boolean32;
|
|
b641, b642: boolean64;
|
|
bb1, bb2: bytebool;
|
|
wb1, wb2: wordbool;
|
|
lb1, lb2: longbool;
|
|
result : boolean;
|
|
begin
|
|
result := false;
|
|
{ BOOLEAN OR BOOLEAN }
|
|
Write('boolean OR boolean test...');
|
|
b1 := true;
|
|
b2 := false;
|
|
if b1 or b2 then
|
|
result := true;
|
|
b1 := false;
|
|
b2 := false;
|
|
if b1 or b2 then
|
|
result := false;
|
|
|
|
b1 := b1 or b2;
|
|
if b1 then
|
|
result := false;
|
|
if b1 or FALSE then
|
|
result := false;
|
|
|
|
|
|
b1 := true;
|
|
b2 := true;
|
|
if b1 or b2 then
|
|
begin
|
|
if result then
|
|
WriteLn('Success.')
|
|
else
|
|
Fail;
|
|
end
|
|
else
|
|
Fail;
|
|
|
|
{ BOOLEAN16 OR BOOLEAN16 }
|
|
Write('boolean16 OR boolean16 test...');
|
|
b161 := true;
|
|
b162 := false;
|
|
if b161 or b162 then
|
|
result := true;
|
|
b161 := false;
|
|
b162 := false;
|
|
if b161 or b162 then
|
|
result := false;
|
|
|
|
b161 := b161 or b162;
|
|
if b161 then
|
|
result := false;
|
|
if b161 or FALSE then
|
|
result := false;
|
|
|
|
|
|
b161 := true;
|
|
b162 := true;
|
|
if b161 or b162 then
|
|
begin
|
|
if result then
|
|
WriteLn('Success.')
|
|
else
|
|
Fail;
|
|
end
|
|
else
|
|
Fail;
|
|
|
|
{ BOOLEAN32 OR BOOLEAN32 }
|
|
Write('boolean32 OR boolean32 test...');
|
|
b321 := true;
|
|
b322 := false;
|
|
if b321 or b322 then
|
|
result := true;
|
|
b321 := false;
|
|
b322 := false;
|
|
if b321 or b322 then
|
|
result := false;
|
|
|
|
b321 := b321 or b322;
|
|
if b321 then
|
|
result := false;
|
|
if b321 or FALSE then
|
|
result := false;
|
|
|
|
|
|
b321 := true;
|
|
b322 := true;
|
|
if b321 or b322 then
|
|
begin
|
|
if result then
|
|
WriteLn('Success.')
|
|
else
|
|
Fail;
|
|
end
|
|
else
|
|
Fail;
|
|
|
|
{ BOOLEAN64 OR BOOLEAN64 }
|
|
Write('boolean64 OR boolean64 test...');
|
|
b641 := true;
|
|
b642 := false;
|
|
if b641 or b642 then
|
|
result := true;
|
|
b641 := false;
|
|
b642 := false;
|
|
if b641 or b642 then
|
|
result := false;
|
|
|
|
b641 := b641 or b642;
|
|
if b641 then
|
|
result := false;
|
|
if b641 or FALSE then
|
|
result := false;
|
|
|
|
|
|
b641 := true;
|
|
b642 := true;
|
|
if b641 or b642 then
|
|
begin
|
|
if result then
|
|
WriteLn('Success.')
|
|
else
|
|
Fail;
|
|
end
|
|
else
|
|
Fail;
|
|
|
|
{ BYTEBOOL OR BYTEBOOL }
|
|
Write('bytebool OR bytebool test...');
|
|
bb1 := true;
|
|
bb2 := false;
|
|
if bb1 or bb2 then
|
|
result := true;
|
|
bb1 := false;
|
|
bb2 := false;
|
|
if bb1 or bb2 then
|
|
result := false;
|
|
|
|
bb1 := bb1 or bb2;
|
|
if bb1 then
|
|
result := false;
|
|
if bb1 or FALSE then
|
|
result := false;
|
|
|
|
|
|
bb1 := true;
|
|
bb2 := true;
|
|
if bb1 or bb2 then
|
|
begin
|
|
if result then
|
|
WriteLn('Success.')
|
|
else
|
|
Fail;
|
|
end
|
|
else
|
|
Fail;
|
|
|
|
{ WORDBOOL OR WORDBOOL }
|
|
result := false;
|
|
Write('wordbool OR wordbool test...');
|
|
wb1 := true;
|
|
wb2 := false;
|
|
if wb1 or wb2 then
|
|
result := true;
|
|
wb1 := false;
|
|
wb2 := false;
|
|
if wb1 or wb2 then
|
|
result := false;
|
|
|
|
wb1 := wb1 or wb2;
|
|
if wb1 then
|
|
result := false;
|
|
if wb1 or FALSE then
|
|
result := false;
|
|
|
|
wb1 := true;
|
|
wb2 := true;
|
|
if wb1 or wb2 then
|
|
begin
|
|
if result then
|
|
WriteLn('Success.')
|
|
else
|
|
Fail;
|
|
end
|
|
else
|
|
Fail;
|
|
|
|
{ LONGBOOL OR LONGBOOL }
|
|
result := false;
|
|
Write('longbool OR longbool test...');
|
|
lb1 := true;
|
|
lb2 := false;
|
|
if lb1 or lb2 then
|
|
result := true;
|
|
if lb2 then
|
|
result := false;
|
|
lb1 := false;
|
|
lb2 := false;
|
|
if lb1 or lb2 then
|
|
result := false;
|
|
|
|
lb1 := lb1 or lb2;
|
|
if lb1 then
|
|
result := false;
|
|
if lb1 or FALSE then
|
|
result := false;
|
|
|
|
lb1 := true;
|
|
lb2 := true;
|
|
if lb1 or lb2 then
|
|
begin
|
|
if result then
|
|
WriteLn('Success.')
|
|
else
|
|
Fail;
|
|
end
|
|
else
|
|
Fail;
|
|
end;
|
|
|
|
|
|
Procedure BoolTestXor;
|
|
var
|
|
b1, b2: boolean;
|
|
b161, b162: boolean16;
|
|
b321, b322: boolean32;
|
|
b641, b642: boolean64;
|
|
bb1, bb2: bytebool;
|
|
wb1, wb2: wordbool;
|
|
lb1, lb2: longbool;
|
|
result : boolean;
|
|
begin
|
|
result := false;
|
|
{ BOOLEAN XOR BOOLEAN }
|
|
Write('boolean XOR boolean test...');
|
|
b1 := true;
|
|
b2 := false;
|
|
if b1 xor b2 then
|
|
result := true;
|
|
b1 := false;
|
|
b2 := false;
|
|
if b1 xor b2 then
|
|
result := false;
|
|
|
|
b1 := b1 xor b2;
|
|
if b1 then
|
|
result := false;
|
|
if b1 xor FALSE then
|
|
result := false;
|
|
|
|
|
|
b1 := true;
|
|
b2 := true;
|
|
if b1 xor b2 then
|
|
begin
|
|
Fail;
|
|
end
|
|
else
|
|
begin
|
|
if result then
|
|
WriteLn('Success.')
|
|
else
|
|
Fail;
|
|
end;
|
|
|
|
{ BOOLEAN16 XOR BOOLEAN16 }
|
|
Write('boolean16 XOR boolean16 test...');
|
|
b161 := true;
|
|
b162 := false;
|
|
if b161 xor b162 then
|
|
result := true;
|
|
b161 := false;
|
|
b162 := false;
|
|
if b161 xor b162 then
|
|
result := false;
|
|
|
|
b161 := b161 xor b162;
|
|
if b161 then
|
|
result := false;
|
|
if b161 xor FALSE then
|
|
result := false;
|
|
|
|
|
|
b161 := true;
|
|
b162 := true;
|
|
if b161 xor b162 then
|
|
begin
|
|
Fail;
|
|
end
|
|
else
|
|
begin
|
|
if result then
|
|
WriteLn('Success.')
|
|
else
|
|
Fail;
|
|
end;
|
|
|
|
{ BOOLEAN32 XOR BOOLEAN32 }
|
|
Write('boolean32 XOR boolean32 test...');
|
|
b321 := true;
|
|
b322 := false;
|
|
if b321 xor b322 then
|
|
result := true;
|
|
b321 := false;
|
|
b322 := false;
|
|
if b321 xor b322 then
|
|
result := false;
|
|
|
|
b321 := b321 xor b322;
|
|
if b321 then
|
|
result := false;
|
|
if b321 xor FALSE then
|
|
result := false;
|
|
|
|
|
|
b321 := true;
|
|
b322 := true;
|
|
if b321 xor b322 then
|
|
begin
|
|
Fail;
|
|
end
|
|
else
|
|
begin
|
|
if result then
|
|
WriteLn('Success.')
|
|
else
|
|
Fail;
|
|
end;
|
|
|
|
{ BOOLEAN64 XOR BOOLEAN64 }
|
|
Write('boolean64 XOR boolean64 test...');
|
|
b641 := true;
|
|
b642 := false;
|
|
if b641 xor b642 then
|
|
result := true;
|
|
b641 := false;
|
|
b642 := false;
|
|
if b641 xor b642 then
|
|
result := false;
|
|
|
|
b641 := b641 xor b642;
|
|
if b641 then
|
|
result := false;
|
|
if b641 xor FALSE then
|
|
result := false;
|
|
|
|
|
|
b641 := true;
|
|
b642 := true;
|
|
if b641 xor b642 then
|
|
begin
|
|
Fail;
|
|
end
|
|
else
|
|
begin
|
|
if result then
|
|
WriteLn('Success.')
|
|
else
|
|
Fail;
|
|
end;
|
|
|
|
{ BYTEBOOL XOR BYTEBOOL }
|
|
Write('bytebool XOR bytebool test...');
|
|
bb1 := true;
|
|
bb2 := false;
|
|
if bb1 xor bb2 then
|
|
result := true;
|
|
bb1 := false;
|
|
bb2 := false;
|
|
if bb1 xor bb2 then
|
|
result := false;
|
|
|
|
bb1 := bb1 xor bb2;
|
|
if bb1 then
|
|
result := false;
|
|
if bb1 xor FALSE then
|
|
result := false;
|
|
|
|
|
|
bb1 := true;
|
|
bb2 := true;
|
|
if bb1 xor bb2 then
|
|
begin
|
|
Fail;
|
|
end
|
|
else
|
|
begin
|
|
if result then
|
|
WriteLn('Success.')
|
|
else
|
|
Fail;
|
|
end;
|
|
|
|
{ WORDBOOL XOR WORDBOOL }
|
|
result := false;
|
|
Write('wordbool XOR wordbool test...');
|
|
wb1 := true;
|
|
wb2 := false;
|
|
if wb1 xor wb2 then
|
|
result := true;
|
|
wb1 := false;
|
|
wb2 := false;
|
|
if wb1 xor wb2 then
|
|
result := false;
|
|
|
|
wb1 := wb1 xor wb2;
|
|
if wb1 then
|
|
result := false;
|
|
if wb1 xor FALSE then
|
|
result := false;
|
|
|
|
wb1 := true;
|
|
wb2 := true;
|
|
if wb1 xor wb2 then
|
|
begin
|
|
Fail;
|
|
end
|
|
else
|
|
begin
|
|
if result then
|
|
WriteLn('Success.')
|
|
else
|
|
Fail;
|
|
end;
|
|
|
|
{ LONGBOOL XOR LONGBOOL }
|
|
result := false;
|
|
Write('longbool XOR longbool test...');
|
|
lb1 := true;
|
|
lb2 := false;
|
|
if lb1 xor lb2 then
|
|
result := true;
|
|
if lb2 then
|
|
result := false;
|
|
lb1 := false;
|
|
lb2 := false;
|
|
if lb1 xor lb2 then
|
|
result := false;
|
|
|
|
lb1 := lb1 xor lb2;
|
|
if lb1 then
|
|
result := false;
|
|
if lb1 xor FALSE then
|
|
result := false;
|
|
|
|
lb1 := true;
|
|
lb2 := true;
|
|
if lb1 xor lb2 then
|
|
begin
|
|
Fail;
|
|
end
|
|
else
|
|
begin
|
|
if result then
|
|
WriteLn('Success.')
|
|
else
|
|
Fail;
|
|
end;
|
|
end;
|
|
|
|
Procedure BoolTestEqual;
|
|
var
|
|
b1, b2, b3: boolean;
|
|
b161, b162, b163: boolean16;
|
|
b321, b322, b323: boolean32;
|
|
b641, b642, b643: boolean64;
|
|
bb1, bb2, bb3: bytebool;
|
|
wb1, wb2, wb3: wordbool;
|
|
lb1, lb2, lb3: longbool;
|
|
result : boolean;
|
|
values : longint;
|
|
Begin
|
|
values := $02020202;
|
|
|
|
{ BOOLEAN = BOOLEAN }
|
|
result := true;
|
|
Write('boolean = boolean test...');
|
|
b1 := true;
|
|
b2 := true;
|
|
b3 := false;
|
|
b1 := (b1 = b2) and (b2 and false);
|
|
if b1 then
|
|
result := false;
|
|
b1 := true;
|
|
b2 := true;
|
|
b3 := false;
|
|
b1 := (b1 = b2) and (b2 and true);
|
|
if not b1 then
|
|
result := false;
|
|
if b1 = b2 then
|
|
begin
|
|
if result then
|
|
WriteLn('Success.')
|
|
else
|
|
Fail;
|
|
end
|
|
else
|
|
Fail;
|
|
|
|
{ BOOLEAN16 = BOOLEAN16 }
|
|
result := true;
|
|
Write('boolean16 = boolean16 test...');
|
|
b161 := true;
|
|
b162 := true;
|
|
b163 := false;
|
|
b161 := (b161 = b162) and (b162 and false);
|
|
if b161 then
|
|
result := false;
|
|
b161 := true;
|
|
b162 := true;
|
|
b163 := false;
|
|
b161 := (b161 = b162) and (b162 and true);
|
|
if not b161 then
|
|
result := false;
|
|
if b161 = b162 then
|
|
begin
|
|
if result then
|
|
WriteLn('Success.')
|
|
else
|
|
Fail;
|
|
end
|
|
else
|
|
Fail;
|
|
|
|
{ BOOLEAN32 = BOOLEAN32 }
|
|
result := true;
|
|
Write('boolean32 = boolean32 test...');
|
|
b321 := true;
|
|
b322 := true;
|
|
b323 := false;
|
|
b321 := (b321 = b322) and (b322 and false);
|
|
if b321 then
|
|
result := false;
|
|
b321 := true;
|
|
b322 := true;
|
|
b323 := false;
|
|
b321 := (b321 = b322) and (b322 and true);
|
|
if not b321 then
|
|
result := false;
|
|
if b321 = b322 then
|
|
begin
|
|
if result then
|
|
WriteLn('Success.')
|
|
else
|
|
Fail;
|
|
end
|
|
else
|
|
Fail;
|
|
|
|
{ BOOLEAN64 = BOOLEAN64 }
|
|
result := true;
|
|
Write('boolean64 = boolean64 test...');
|
|
b641 := true;
|
|
b642 := true;
|
|
b643 := false;
|
|
b641 := (b641 = b642) and (b642 and false);
|
|
if b641 then
|
|
result := false;
|
|
b641 := true;
|
|
b642 := true;
|
|
b643 := false;
|
|
b641 := (b641 = b642) and (b642 and true);
|
|
if not b641 then
|
|
result := false;
|
|
if b641 = b642 then
|
|
begin
|
|
if result then
|
|
WriteLn('Success.')
|
|
else
|
|
Fail;
|
|
end
|
|
else
|
|
Fail;
|
|
|
|
{ BYTEBOOL = BYTEBOOL }
|
|
result := true;
|
|
Write('bytebool = bytebool test...');
|
|
bb1 := true;
|
|
bb2 := true;
|
|
bb3 := false;
|
|
bb1 := (bb1 = bb2) and (bb2 and false);
|
|
if bb1 then
|
|
result := false;
|
|
bb1 := true;
|
|
bb2 := true;
|
|
bb3 := false;
|
|
bb1 := (bb1 = bb2) and (bb2 and true);
|
|
if not bb1 then
|
|
result := false;
|
|
if bb1 = bb2 then
|
|
begin
|
|
if result then
|
|
WriteLn('Success.')
|
|
else
|
|
Fail;
|
|
end
|
|
else
|
|
Fail;
|
|
|
|
{ WORDBOOL = WORDBOOL }
|
|
result := true;
|
|
Write('wordbool = wordbool test...');
|
|
wb1 := true;
|
|
wb2 := true;
|
|
wb3 := false;
|
|
wb1 := (wb1 = wb2) and (wb2 and false);
|
|
if wb1 then
|
|
result := false;
|
|
wb1 := true;
|
|
wb2 := true;
|
|
wb3 := false;
|
|
wb1 := (wb1 = wb2) and (wb2 and true);
|
|
if not wb1 then
|
|
result := false;
|
|
if wb1 = wb2 then
|
|
begin
|
|
if result then
|
|
WriteLn('Success.')
|
|
else
|
|
Fail;
|
|
end
|
|
else
|
|
Fail;
|
|
Write('wordbool conversion to boolean...');
|
|
result := TRUE;
|
|
move(values,lb1,sizeof(lb1));
|
|
if lb1 <> TRUE then
|
|
result := false;
|
|
if result then
|
|
WriteLn('Success.')
|
|
else
|
|
Fail;
|
|
|
|
{ LONGBOOL = LONGBOOL }
|
|
result := true;
|
|
Write('longbool = longbool test...');
|
|
lb1 := true;
|
|
lb2 := true;
|
|
lb3 := false;
|
|
lb1 := (lb1 = lb2) and (lb2 and false);
|
|
if lb1 then
|
|
result := false;
|
|
lb1 := true;
|
|
lb2 := true;
|
|
lb3 := false;
|
|
lb1 := (lb1 = lb2) and (lb2 and true);
|
|
if not lb1 then
|
|
result := false;
|
|
if lb1 = lb2 then
|
|
begin
|
|
if result then
|
|
WriteLn('Success.')
|
|
else
|
|
Fail;
|
|
end
|
|
else
|
|
Fail;
|
|
Write('longbool conversion to boolean...');
|
|
result := TRUE;
|
|
move(values,lb1,sizeof(lb1));
|
|
if lb1 <> TRUE then
|
|
result := false;
|
|
if result then
|
|
WriteLn('Success.')
|
|
else
|
|
Fail;
|
|
end;
|
|
|
|
|
|
Procedure BoolTestNotEqual;
|
|
var
|
|
b1, b2, b3: boolean;
|
|
b161, b162, b163: boolean16;
|
|
b321, b322, b323: boolean32;
|
|
b641, b642, b643: boolean64;
|
|
bb1, bb2, bb3: bytebool;
|
|
wb1, wb2, wb3: wordbool;
|
|
lb1, lb2, lb3: longbool;
|
|
result : boolean;
|
|
Begin
|
|
{ BOOLEAN <> BOOLEAN }
|
|
result := true;
|
|
Write('boolean <> boolean test...');
|
|
b1 := true;
|
|
b2 := true;
|
|
b3 := false;
|
|
b1 := (b1 <> b2) and (b2 <> false);
|
|
if b1 then
|
|
result := false;
|
|
b1 := true;
|
|
b2 := true;
|
|
b3 := false;
|
|
b1 := (b1 <> b2) and (b2 <> true);
|
|
if b1 then
|
|
result := false;
|
|
b1 := false;
|
|
b2 := false;
|
|
if b1 <> b2 then
|
|
begin
|
|
Fail;
|
|
end
|
|
else
|
|
begin
|
|
if result then
|
|
WriteLn('Success.')
|
|
else
|
|
Fail;
|
|
end;
|
|
|
|
{ BOOLEAN16 <> BOOLEAN16 }
|
|
result := true;
|
|
Write('boolean16 <> boolean16 test...');
|
|
b161 := true;
|
|
b162 := true;
|
|
b163 := false;
|
|
b161 := (b161 <> b162) and (b162 <> false);
|
|
if b161 then
|
|
result := false;
|
|
b161 := true;
|
|
b162 := true;
|
|
b163 := false;
|
|
b161 := (b161 <> b162) and (b162 <> true);
|
|
if b161 then
|
|
result := false;
|
|
b161 := false;
|
|
b162 := false;
|
|
if b161 <> b162 then
|
|
begin
|
|
Fail;
|
|
end
|
|
else
|
|
begin
|
|
if result then
|
|
WriteLn('Success.')
|
|
else
|
|
Fail;
|
|
end;
|
|
|
|
{ BOOLEAN32 <> BOOLEAN32 }
|
|
result := true;
|
|
Write('boolean32 <> boolean32 test...');
|
|
b321 := true;
|
|
b322 := true;
|
|
b323 := false;
|
|
b321 := (b321 <> b322) and (b322 <> false);
|
|
if b321 then
|
|
result := false;
|
|
b321 := true;
|
|
b322 := true;
|
|
b323 := false;
|
|
b321 := (b321 <> b322) and (b322 <> true);
|
|
if b321 then
|
|
result := false;
|
|
b321 := false;
|
|
b322 := false;
|
|
if b321 <> b322 then
|
|
begin
|
|
Fail;
|
|
end
|
|
else
|
|
begin
|
|
if result then
|
|
WriteLn('Success.')
|
|
else
|
|
Fail;
|
|
end;
|
|
|
|
{ BOOLEAN64 <> BOOLEAN64 }
|
|
result := true;
|
|
Write('boolean64 <> boolean64 test...');
|
|
b641 := true;
|
|
b642 := true;
|
|
b643 := false;
|
|
b641 := (b641 <> b642) and (b642 <> false);
|
|
if b641 then
|
|
result := false;
|
|
b641 := true;
|
|
b642 := true;
|
|
b643 := false;
|
|
b641 := (b641 <> b642) and (b642 <> true);
|
|
if b641 then
|
|
result := false;
|
|
b641 := false;
|
|
b642 := false;
|
|
if b641 <> b642 then
|
|
begin
|
|
Fail;
|
|
end
|
|
else
|
|
begin
|
|
if result then
|
|
WriteLn('Success.')
|
|
else
|
|
Fail;
|
|
end;
|
|
|
|
{ BYTEBOOL <> BYTEBOOL }
|
|
result := true;
|
|
Write('bytebool <> bytebool test...');
|
|
bb1 := true;
|
|
bb2 := true;
|
|
bb3 := false;
|
|
bb1 := (bb1 <> bb2) and (bb2 <> false);
|
|
if bb1 then
|
|
result := false;
|
|
bb1 := true;
|
|
bb2 := true;
|
|
bb3 := false;
|
|
bb1 := (bb1 <> bb2) and (bb2 <> true);
|
|
if bb1 then
|
|
result := false;
|
|
bb1 := false;
|
|
bb2 := false;
|
|
if bb1 <> bb2 then
|
|
begin
|
|
Fail;
|
|
end
|
|
else
|
|
begin
|
|
if result then
|
|
WriteLn('Success.')
|
|
else
|
|
Fail;
|
|
end;
|
|
|
|
{ WORDBOOL <> WORDBOOL }
|
|
result := true;
|
|
Write('wordbool <> wordbool test...');
|
|
wb1 := true;
|
|
wb2 := true;
|
|
wb3 := false;
|
|
wb1 := (wb1 <> wb2) and (wb2 <> false);
|
|
if wb1 then
|
|
result := false;
|
|
wb1 := true;
|
|
wb2 := true;
|
|
wb3 := false;
|
|
wb1 := (wb1 <> wb2) and (wb2 <> true);
|
|
if wb1 then
|
|
result := false;
|
|
wb1 := false;
|
|
wb2 := false;
|
|
if wb1 <> wb2 then
|
|
begin
|
|
Fail;
|
|
end
|
|
else
|
|
begin
|
|
if result then
|
|
WriteLn('Success.')
|
|
else
|
|
Fail;
|
|
end;
|
|
|
|
{ LONGBOOL <> LONGBOOL }
|
|
result := true;
|
|
Write('longbool <> longbool test...');
|
|
lb1 := true;
|
|
lb2 := true;
|
|
lb3 := false;
|
|
lb1 := (lb1 <> lb2) and (lb2 <> false);
|
|
if lb1 then
|
|
result := false;
|
|
lb1 := true;
|
|
lb2 := true;
|
|
lb3 := false;
|
|
lb1 := (lb1 <> lb2) and (lb2 <> true);
|
|
if lb1 then
|
|
result := false;
|
|
lb1 := false;
|
|
lb2 := false;
|
|
if lb1 <> lb2 then
|
|
begin
|
|
Fail;
|
|
end
|
|
else
|
|
begin
|
|
if result then
|
|
WriteLn('Success.')
|
|
else
|
|
Fail;
|
|
end;
|
|
|
|
end;
|
|
|
|
Procedure BoolLessThen;
|
|
var
|
|
bb1, bb2: boolean;
|
|
wb1, wb2: wordbool;
|
|
lb1, lb2: longbool;
|
|
Begin
|
|
{!!!!!!!!!!!}
|
|
end;
|
|
|
|
|
|
Procedure BoolGreaterThen;
|
|
var
|
|
bb1, bb2: boolean;
|
|
wb1, wb2: wordbool;
|
|
lb1, lb2: longbool;
|
|
Begin
|
|
{!!!!!!!!!!!!}
|
|
End;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Begin
|
|
BoolTestAnd;
|
|
BoolTestOr;
|
|
BoolTestXor;
|
|
BoolTestEqual;
|
|
BoolTestNotEqual;
|
|
end.
|