|
|
|
@@ -10,11 +10,37 @@ uses |
|
|
|
|
|
|
|
type |
|
|
|
TShaderFileTestCase = class(TTestCase) |
|
|
|
private |
|
|
|
protected |
|
|
|
procedure DoTest(const aCode: String; const aValue: Integer; const aResult: String); |
|
|
|
procedure DoTest(const aCode: String; const aResult: String); |
|
|
|
end; |
|
|
|
|
|
|
|
TTestCase_IfElseElifEnd = class(TShaderFileTestCase) |
|
|
|
published |
|
|
|
procedure IfElseElifEnd; |
|
|
|
procedure InlineIf; |
|
|
|
procedure IfElifElseEnd0; |
|
|
|
procedure IfElifElseEnd1; |
|
|
|
procedure IfElifElseEnd2; |
|
|
|
|
|
|
|
procedure InlineIf0; |
|
|
|
procedure InlineIf1; |
|
|
|
end; |
|
|
|
|
|
|
|
TTestCase_FuncProcMain = class(TShaderFileTestCase) |
|
|
|
published |
|
|
|
procedure SimpleMain; |
|
|
|
|
|
|
|
procedure SimpleFunc0; |
|
|
|
procedure SimpleFunc1; |
|
|
|
|
|
|
|
procedure InlineProc; |
|
|
|
|
|
|
|
procedure InlineFuncSingleReturn; |
|
|
|
procedure InlineFuncMultiReturn; |
|
|
|
end; |
|
|
|
|
|
|
|
TTestCase_Include = class(TShaderFileTestCase) |
|
|
|
published |
|
|
|
procedure SimpleInclude; |
|
|
|
end; |
|
|
|
|
|
|
|
implementation |
|
|
|
@@ -23,7 +49,7 @@ uses |
|
|
|
Forms; |
|
|
|
|
|
|
|
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// |
|
|
|
//TShaderFileTestCase/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// |
|
|
|
//TShaderFileTestCase/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// |
|
|
|
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// |
|
|
|
procedure TShaderFileTestCase.DoTest(const aCode: String; const aValue: Integer; const aResult: String); |
|
|
|
var |
|
|
|
@@ -36,12 +62,12 @@ begin |
|
|
|
code := TengShaderCode.Create; |
|
|
|
sl := TStringList.Create; |
|
|
|
try |
|
|
|
shdr.LoadFromFile(ExpandFileName(aCode)); |
|
|
|
shdr.LoadFromFile(ExpandFileName('testfiles\' + aCode)); |
|
|
|
gen := shdr.Generator['']; |
|
|
|
if (gen.PropertyCount > 0) then |
|
|
|
gen.PropertyByIndex[0] := aValue; |
|
|
|
gen.GenerateCode(code); |
|
|
|
sl.LoadFromFile(ExpandFileName(aResult)); |
|
|
|
sl.LoadFromFile(ExpandFileName('testfiles\' + aResult)); |
|
|
|
AssertEquals(sl.Text, code.Text); |
|
|
|
finally |
|
|
|
FreeAndNil(sl); |
|
|
|
@@ -50,23 +76,85 @@ begin |
|
|
|
end; |
|
|
|
end; |
|
|
|
|
|
|
|
procedure TShaderFileTestCase.DoTest(const aCode: String; const aResult: String); |
|
|
|
begin |
|
|
|
DoTest(aCode, 0, aResult); |
|
|
|
end; |
|
|
|
|
|
|
|
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// |
|
|
|
//TTestCase_IfElseElifEnd/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// |
|
|
|
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// |
|
|
|
procedure TShaderFileTestCase.IfElseElifEnd; |
|
|
|
procedure TTestCase_IfElseElifEnd.IfElifElseEnd0; |
|
|
|
begin |
|
|
|
DoTest('code_IfElseElifEnd.shdr', 0, 'result_IfElseElifEnd_0.shdr'); |
|
|
|
end; |
|
|
|
|
|
|
|
procedure TTestCase_IfElseElifEnd.IfElifElseEnd1; |
|
|
|
begin |
|
|
|
DoTest('code_IfElseElifEnd.shdr', 1, 'result_IfElseElifEnd_1.shdr'); |
|
|
|
end; |
|
|
|
|
|
|
|
procedure TTestCase_IfElseElifEnd.IfElifElseEnd2; |
|
|
|
begin |
|
|
|
DoTest('code_IfElseElifEnd.shdr', 2, 'result_IfElseElifEnd_2.shdr'); |
|
|
|
end; |
|
|
|
|
|
|
|
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// |
|
|
|
procedure TShaderFileTestCase.InlineIf; |
|
|
|
procedure TTestCase_IfElseElifEnd.InlineIf0; |
|
|
|
begin |
|
|
|
DoTest('code_InlineIf.shdr', 0, 'result_InlineIf_0.shdr'); |
|
|
|
end; |
|
|
|
|
|
|
|
procedure TTestCase_IfElseElifEnd.InlineIf1; |
|
|
|
begin |
|
|
|
DoTest('code_InlineIf.shdr', 1, 'result_InlineIf_1.shdr'); |
|
|
|
end; |
|
|
|
|
|
|
|
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// |
|
|
|
//TTestCase_MainSimple////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// |
|
|
|
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// |
|
|
|
procedure TTestCase_FuncProcMain.SimpleMain; |
|
|
|
begin |
|
|
|
DoTest('code_SimpleMain.shdr', 'result_SimpleMain.shdr'); |
|
|
|
end; |
|
|
|
|
|
|
|
procedure TTestCase_FuncProcMain.SimpleFunc0; |
|
|
|
begin |
|
|
|
DoTest('code_SimpleFunc.shdr', 0, 'result_SimpleFunc_0.shdr'); |
|
|
|
end; |
|
|
|
|
|
|
|
procedure TTestCase_FuncProcMain.SimpleFunc1; |
|
|
|
begin |
|
|
|
DoTest('code_SimpleFunc.shdr', 1, 'result_SimpleFunc_1.shdr'); |
|
|
|
end; |
|
|
|
|
|
|
|
procedure TTestCase_FuncProcMain.InlineProc; |
|
|
|
begin |
|
|
|
DoTest('code_InlineProc.shdr', 'result_InlineProc.shdr'); |
|
|
|
end; |
|
|
|
|
|
|
|
procedure TTestCase_FuncProcMain.InlineFuncSingleReturn; |
|
|
|
begin |
|
|
|
DoTest('code_InlineFuncSingleReturn.shdr', 'result_InlineFuncSingleReturn.shdr'); |
|
|
|
end; |
|
|
|
|
|
|
|
procedure TTestCase_FuncProcMain.InlineFuncMultiReturn; |
|
|
|
begin |
|
|
|
DoTest('code_InlineFuncMultiReturn.shdr', 'result_InlineFuncMultiReturn.shdr'); |
|
|
|
end; |
|
|
|
|
|
|
|
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// |
|
|
|
//TTestCase_Include///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// |
|
|
|
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// |
|
|
|
procedure TTestCase_Include.SimpleInclude; |
|
|
|
begin |
|
|
|
DoTest('code_SimpleInclude.shdr', 0, 'result_SimpleInclude.shdr'); |
|
|
|
end; |
|
|
|
|
|
|
|
initialization |
|
|
|
RegisterTest(TShaderFileTestCase); |
|
|
|
RegisterTest(TTestCase_IfElseElifEnd); |
|
|
|
RegisterTest(TTestCase_FuncProcMain); |
|
|
|
RegisterTest(TTestCase_Include); |
|
|
|
|
|
|
|
end. |
|
|
|
|