Files
RuntimeBuilder/Tests/Unit1.pas
2018-03-27 00:56:30 +03:00

64 lines
1.4 KiB
ObjectPascal

unit Unit1;
interface
uses
System.SysUtils,DUnitX.TestFramework,RuntimeBuilder,RuntimeBuilder.Fasm;
type
[TestFixture]
TRuntimeBuilderTestObject=class(TObject)
public
[TestCase]
procedure Test1();
[TestCase]
procedure Test2();
end;
implementation
procedure TRuntimeBuilderTestObject.Test1();
var
Fasm:TRTBFasmCompiler;
Src:TRTBSource;
Func1:TRTBFunc;
begin
Fasm:=TRTBFasmCompiler.Create('..\..\..\FasmOnDelphi\fasmw172\fasm');
Src:=Fasm.GenNewSrc;
Src.Text:='use32'+sLineBreak+'pop ecx'+sLineBreak+'pop eax'+sLineBreak+'jmp ecx';
Func1:=src.CompilateAsFunc;
if 454<>Func1.Call(TypeInfo(integer),[454],CRTBCallTypeStdCall).AsInteger then
begin
raise Exception.Create('Error in test1');
end;
FreeAndNil(Func1);
FreeAndNil(Src);
FreeAndNil(Fasm);
end;
procedure TRuntimeBuilderTestObject.Test2();
var
Fasm:TRTBFasmCompiler;
Src:TRTBSource;
lib:TRTBLib;
Func1:TRTBFunc;
begin
Fasm:=TRTBFasmCompiler.Create('..\..\..\FasmOnDelphi\fasmw172\fasm');
Src:=Fasm.GenNewSrc;
Src.LoadFromFile('..\..\testlib.fasm');
Fasm.LoadLib('W:\RuntimeBuilder\FasmOnDelphi\fasmw172\INCLUDE\win32a.inc');
lib:=Src.CompilateAsLib;
Func1:=lib.Funtion['MyEcho'];
if 234665<>Func1.Call(TypeInfo(integer),[234665],CRTBCallTypeStdCall).AsInteger then
begin
raise Exception.Create('Error in test2');
end;
FreeAndNil(Func1);
FreeAndNil(Src);
FreeAndNil(Fasm);
end;
initialization
TDUnitX.RegisterTestFixture(TRuntimeBuilderTestObject);
end.