lazarus/test/codetoolstests/testcompleteblock.pas
mattias dbd54e5026 codetools test: added test for try if finally
git-svn-id: trunk@21424 -
2009-08-23 12:57:23 +00:00

70 lines
2.8 KiB
ObjectPascal

unit TestCompleteBlock;
{$mode objfpc}{$H+}
interface
uses
fpcunit, Classes, SysUtils;
type
{ TCodeBlocksTest }
TCodeBlocksTest = class(TTestCase)
protected
function CompareComplete(const InputDefines, ResultFile: String): Boolean;
published
procedure TestCompleteBlocks;
end;
implementation
{ TCodeBlocksTest }
function TCodeBlocksTest.CompareComplete(const InputFile, InputDefines, ResultFile: String): Boolean;
var
st : TStringList;
rs : TStringList;
function StripSpaceChars(const s: string): String;
begin
// removes all [#10,#13,#9, #32] chars, giving a line: "beginwriteln('helloworld');end."
Result:=s;
for i:=length(Result) downto 1 do
if Result[i] in [#10,#13,#9,' '] then
System.Delete(Result,i,1);
end;
begin
// ToDo: fix path to completeblock, InputFile nd ResultFile
st := GetProcessOutput('completeblock '+InputFile+' '+inputdefines); // reads all output from blockcompleted file
// remove debugging output and take only the new source
while (st.Count>0) and (st[0]<>'{%MainUnit unit1.pas}') do st.Delete(0);
// reads the correct result file
rs.LoadFromFile(resultfile);
// check result
AssertEquals(StripSpaceChars(st.text), StripSpaceChars(rs.text)); // compares resulting strings
end;
procedure TCodeBlocksTest.TestCompleteBlocks;
begin
CompareComplete('ifbeginelse1.inc','6 28 ifbeginelse fpcunit', 'ifbeginelse1_result.inc');
CompareComplete('whilebegin1.inc','5 10 whilebegin fpcunit', 'whilebegin1_result.inc');
CompareComplete('beginwithoutindent1.inc','4 21 beginwithoutindent fpcunit', 'beginwithoutindent1_result1.inc');
CompareComplete('beginwithoutindent1.inc','5 6 beginwithoutindent fpcunit', 'beginwithoutindent1_result2.inc');
CompareComplete('casecolon1.inc','5 5 casecolon fpcunit', 'casecolon1_result.inc');
CompareComplete('caseelseend1.inc','5 7 caseelseend fpcunit', 'caseelseend1_result.inc');
CompareComplete('caseend1.inc','4 12 caseend fpcunit', 'caseend1_result.inc');
CompareComplete('class1.inc','3 19 class fpcunit', 'class1_result.inc');
CompareComplete('ifbegin1.inc','4 21 ifbegin fpcunit', 'ifbegin1_result.inc');
CompareComplete('ifbeginelse1.inc','6 28 ifbeginelse fpcunit', 'ifbeginelse1_result.inc');
CompareComplete('procedurebegin1.inc','3 6 procedurebegin fpcunit', 'procedurebegin1_result.inc');
CompareComplete('procedurebeginend1.inc','4 8 procedurebeginend fpcunit', 'procedurebeginend1_result.inc');
CompareComplete('procedurebeginifbegin1.inc','11 74 procedurebeginifbegin fpcunit', 'procedurebeginifbegin1_result.inc');
CompareComplete('record1.inc','3 22 record fpcunit', 'record1_result1.inc');
CompareComplete('repeatifelse1.inc','11 18 repeatifelse fpcunit', 'repeatifelse1_result.inc');
CompareComplete('tryif1.inc','4 6 tryif fpcunit', 'tryif1_result.inc');
end;
end.