mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-06-22 06:28:36 +02:00
70 lines
2.8 KiB
ObjectPascal
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.
|
|
|