adding tests
This commit is contained in:
parent
c2ef6fdcd7
commit
4fd020d084
48
TestSuite/ForeachResolver/foreach_resolver.pas
Normal file
48
TestSuite/ForeachResolver/foreach_resolver.pas
Normal 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.
|
||||
BIN
TestSuite/ForeachResolver/foreach_resolver_lib.dll
Normal file
BIN
TestSuite/ForeachResolver/foreach_resolver_lib.dll
Normal file
Binary file not shown.
58
TestSuite/ForeachResolver/foreach_resolver_lib.pas
Normal file
58
TestSuite/ForeachResolver/foreach_resolver_lib.pas
Normal 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.
|
||||
Loading…
Reference in a new issue