adding tests

This commit is contained in:
samuraiGH 2024-06-28 17:21:00 +03:00
parent c2ef6fdcd7
commit 4fd020d084
3 changed files with 106 additions and 0 deletions

View file

@ -0,0 +1,48 @@
{$reference 'foreach_resolver_lib.dll'}
type
c0 = class
procedure pr:= exit;
end;
begin
var v1:= new c1<integer, c0>;
v1._element:= new c0;
foreach var item in v1 do
item.pr;
Assert(check);
check:= false;
var v2:= new c2;
v2._element:= 'myStr';
foreach var item in v2 do
item.Replace('my', 'your');
Assert(check);
check:= false;
var v3:= new c3;
v3._element:= 'myStr';
foreach var item in v3 do
print(item);
Assert(check);
check:= false;
var v4:= new c4;
v4._element:= 'myStr';
foreach var item in v4 do
item.Replace('my', 'your');
Assert(check);
check:= false;
var v5:= new c5;
v5._element:= 4;
foreach var item in v5 do
Assert(item = 4);
Assert(check);
end.

Binary file not shown.

View file

@ -0,0 +1,58 @@
library foreach_resolver_lib;
uses System.Collections, System.Collections.Generic;
var check:= false;
type
c1<T1, T2> = class (IEnumerable<T1>, IEnumerable<T2>)
public
_element: T2;
function GetEnumerator: IEnumerator<T2>;
begin
check:= true;
result:= lst( _element ).GetEnumerator;
end;
function IEnumerable<T1>.GetEnumerator: IEnumerator<T1>;
begin end;
function IEnumerable.GetEnumerator: IEnumerator;
begin end;
end;
c2 = class (IEnumerable<integer>, IEnumerable<string>)
public
_element: string;
function GetEnumerator: IEnumerator<string>;
begin
check:= true;
result:= lst(_element).GetEnumerator;
end;
function IEnumerable<integer>.GetEnumerator: IEnumerator<integer>;
begin end;
function IEnumerable.GetEnumerator: IEnumerator;
begin end;
end;
c3 = class (IEnumerable<string>)
public
_element: object;
function IEnumerable<string>.GetEnumerator: IEnumerator<string>;
begin end;
function GetEnumerator: IEnumerator;
begin
check:= true;
result:= |_element|.GetEnumerator;
end;
end;
c4 = class (c2) end;
c5 = class (c1<string, integer>) end;
end.