unit TestHighlightXml;
{$mode objfpc}{$H+}
interface
uses
testregistry, TestBase, TestHighlightFoldBase, SynHighlighterXML,
SynEditHighlighterFoldBase;
type
{ THighlightXml }
THighlightXml = class(TTestBaseHighlighterFoldBase)
protected
function CreateTheHighLighter: TSynCustomFoldHighlighter; override;
published
procedure TestXml;
end;
implementation
function THighlightXml.CreateTheHighLighter: TSynCustomFoldHighlighter;
begin
Result := TSynXMLSyn.Create(nil);
end;
procedure THighlightXml.TestXml;
function TestText: TStringArray;
begin
SetLength(Result, 4);
Result[0] := '';
Result[1] := ' a ';
Result[2] := '';
Result[3] := '';
end;
begin
ReCreateEdit;
SetLines(TestText);
CheckFoldOpenCounts('simple', [1,0,0]);
CheckFoldLengths ('simple', [ExpVLine(0,[2])]);
CheckFoldEndLines ('simple', [ExpVLine(0,[2])]);
SetLines(['', '', '', '', '', '']);
CheckFoldOpenCounts('nested', [1,2,0,0,0]);
CheckFoldLengths ('nested', [ExpVLine(0, [4]), ExpVLine(1, [3,1]) ]);
CheckFoldEndLines ('nested', [ExpVLine(0, [4]), ExpVLine(1, [4,2]) ]);
// c is not closed, and ended by b
SetLines(['', '', '', '', '', '']);
CheckFoldOpenCounts('bad nested', [1,2,0,0,0]);
CheckFoldLengths ('bad nested', [ExpVLine(0, [4]), ExpVLine(1, [3,3]) ]);
CheckFoldEndLines ('bad nested', [ExpVLine(0, [4]), ExpVLine(1, [4,4]) ]);
// a is not closed
SetLines(['', '', '', '', '', '']);
CheckFoldOpenCounts('open end', [1,2,0,0,0]);
CheckFoldLengths ('open end', [ExpVLine(0, [4]), ExpVLine(1, [3,1]) ]);
CheckFoldEndLines ('open end', [ExpVLine(0, [4]), ExpVLine(1, [4,2]) ]);
// a is not closed
SetLines(['', '']);
CheckFoldOpenCounts('open end (one line)', [0]);
//CheckFoldLengths ('open end (one line)', [ExpVLine(0, [0]) ]);
//CheckFoldEndLines ('open end (one line)', [ExpVLine(0, [0]) ]);
end;
initialization
RegisterTest(THighlightXml);
end.