pascalabcnet/TestSuite/nullable.pas

166 lines
2.7 KiB
ObjectPascal
Raw Normal View History

type TRec = record
a: integer;
b: real;
end;
type TClass = class
v1: System.Nullable<integer>;
v2: System.Nullable<TRec>;
constructor;
begin
v1 := nil;
assert(v1 = nil);
v1 := 4;
assert(v1 <> nil);
v2 := nil;
assert(v2 = nil);
v2 := new TRec;
assert(v2 <> nil);
end;
procedure Test(v1 : System.Nullable<integer>; v2: System.Nullable<TRec>);
begin
assert(v1 = nil);
v1 := 4;
assert(v1 <> nil);
assert(v2 = nil);
v2 := new TRec;
assert(v2 <> nil);
end;
end;
type TClass2 = class
class v1: System.Nullable<integer>;
class v2: System.Nullable<TRec>;
class procedure Test;
begin
v1 := nil;
assert(v1 = nil);
v1 := 4;
assert(v1 <> nil);
v2 := nil;
assert(v2 = nil);
v2 := new TRec;
assert(v2 <> nil);
end;
class procedure Test2(v1 : System.Nullable<integer>; v2: System.Nullable<TRec>);
begin
assert(v1 = nil);
v1 := 4;
assert(v1 <> nil);
assert(v2 = nil);
v2 := new TRec;
assert(v2 <> nil);
end;
end;
procedure Test3(v1 : System.Nullable<integer>; v2: System.Nullable<TRec>);
begin
v1 := nil;
assert(v1 = nil);
v1 := 4;
assert(v1 <> nil);
v2 := nil;
assert(v2 = nil);
v2 := new TRec;
assert(v2 <> nil);
end;
procedure Test4(var v1 : System.Nullable<integer>; var v2: System.Nullable<TRec>);
begin
v1 := nil;
assert(v1 = nil);
v1 := 4;
assert(v1 <> nil);
v2 := nil;
assert(v2 = nil);
v2 := new TRec;
assert(v2 <> nil);
end;
procedure Test2;
begin
var v1 : System.Nullable<integer>;
var v2 : System.Nullable<TRec>;
v1 := nil;
assert(v1 = nil);
v1 := 4;
assert(v1 <> nil);
v2 := nil;
assert(v2 = nil);
v2 := new TRec;
assert(v2 <> nil);
end;
procedure Test;
var
v1 : System.Nullable<integer>;
v2 : System.Nullable<TRec>;
begin
v1 := nil;
assert(v1 = nil);
v1 := 4;
assert(v1 <> nil);
v2 := nil;
assert(v2 = nil);
v2 := new TRec;
assert(v2 <> nil);
end;
procedure Test6;
var
v1 : System.Nullable<integer>;
v2 : System.Nullable<TRec>;
procedure Nested;
begin
v1 := nil;
assert(v1 = nil);
v1 := 4;
assert(v1 <> nil);
v2 := nil;
assert(v2 = nil);
v2 := new TRec;
assert(v2 <> nil);
end;
begin
Nested;
end;
procedure Test5(v1 : System.Nullable<integer>; v2: System.Nullable<TRec>);
begin
assert(v1 = nil);
v1 := 4;
assert(v1 <> nil);
assert(v2 = nil);
v2 := new TRec;
assert(v2 <> nil);
end;
var
v1 : System.Nullable<integer>;
v2 : System.Nullable<TRec>;
begin
v1 := nil;
assert(v1 = nil);
v1 := 4;
assert(v1 <> nil);
v2 := nil;
assert(v2 = nil);
v2 := new TRec;
assert(v2 <> nil);
Test;
Test2;
var obj := new TClass;
obj.Test(nil, nil);
TClass2.Test;
Test3(v1, v2);
Test4(v1, v2);
v1 := nil;
v2 := nil;
Test5(v1, v2);
Test6;
Test5(nil, nil);
TClass2.Test2(nil, nil);
end.