mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-06-06 01:38:19 +02:00
117 lines
3.1 KiB
ObjectPascal
117 lines
3.1 KiB
ObjectPascal
unit TestHighlightFoldBase;
|
|
|
|
{$mode objfpc}{$H+}
|
|
|
|
interface
|
|
|
|
uses
|
|
Classes, SysUtils, testregistry, TestBase, Forms, LCLProc,
|
|
SynEdit, SynEditTypes, SynEditHighlighterFoldBase;
|
|
|
|
type
|
|
|
|
// used by Fold / MarkupWord
|
|
|
|
{ TTestBaseHighlighterPas }
|
|
|
|
{ TTestBaseHighlighterFoldBase }
|
|
|
|
TTestBaseHighlighterFoldBase = class(TTestBase)
|
|
protected
|
|
FTheHighLighter: TSynCustomFoldHighlighter;
|
|
function CreateTheHighLighter: TSynCustomFoldHighlighter; virtual; abstract;
|
|
procedure SetUp; override;
|
|
procedure TearDown; override;
|
|
procedure ReCreateEdit; reintroduce;
|
|
|
|
procedure CheckFoldOpenCounts(Name: String; Expected: Array of Integer);
|
|
procedure CheckFoldInfoCounts(Name: String; Filter: TSynFoldActions; Expected: Array of Integer);
|
|
procedure CheckFoldInfoCounts(Name: String; Filter: TSynFoldActions; Group: Integer; Expected: Array of Integer);
|
|
|
|
function FoldActionsToString(AFoldActions: TSynFoldActions): String;
|
|
end;
|
|
|
|
|
|
implementation
|
|
|
|
{ TTestBaseHighlighterFoldBase }
|
|
|
|
procedure TTestBaseHighlighterFoldBase.SetUp;
|
|
begin
|
|
FTheHighLighter := nil;
|
|
inherited SetUp;
|
|
end;
|
|
|
|
procedure TTestBaseHighlighterFoldBase.TearDown;
|
|
begin
|
|
if Assigned(SynEdit) then
|
|
SynEdit.Highlighter := nil;
|
|
FreeAndNil(FTheHighLighter);
|
|
inherited TearDown;
|
|
end;
|
|
|
|
procedure TTestBaseHighlighterFoldBase.ReCreateEdit;
|
|
begin
|
|
if Assigned(SynEdit) then
|
|
SynEdit.Highlighter := nil;
|
|
FreeAndNil(FTheHighLighter);
|
|
inherited ReCreateEdit;
|
|
FTheHighLighter := CreateTheHighLighter;
|
|
SynEdit.Highlighter := FTheHighLighter;
|
|
end;
|
|
|
|
procedure TTestBaseHighlighterFoldBase.CheckFoldOpenCounts(Name: String;
|
|
Expected: array of Integer);
|
|
var
|
|
i: Integer;
|
|
begin
|
|
for i := 0 to high(Expected) do
|
|
AssertEquals(Name + 'OpenCount Line OLD='+IntToStr(i), Expected[i], FTheHighLighter.FoldOpenCount(i));
|
|
|
|
for i := 0 to high(Expected) do
|
|
AssertEquals(Name + 'OpenCount Line='+IntToStr(i), Expected[i], FTheHighLighter.FoldBlockOpeningCount(i));
|
|
end;
|
|
|
|
procedure TTestBaseHighlighterFoldBase.CheckFoldInfoCounts(Name: String;
|
|
Filter: TSynFoldActions; Expected: array of Integer);
|
|
begin
|
|
CheckFoldInfoCounts(Name, Filter, 0, Expected);
|
|
end;
|
|
|
|
procedure TTestBaseHighlighterFoldBase.CheckFoldInfoCounts(Name: String;
|
|
Filter: TSynFoldActions; Group: Integer; Expected: array of Integer);
|
|
var
|
|
i: Integer;
|
|
l: TLazSynFoldNodeInfoList;
|
|
begin
|
|
for i := 0 to high(Expected) do begin
|
|
l := FTheHighLighter.FoldNodeInfo[i];
|
|
AssertEquals(Name + 'InfoCount(Ex) Line='+IntToStr(i),
|
|
Expected[i],
|
|
l.CountEx(Filter, Group));
|
|
l.ClearFilter;
|
|
l.ActionFilter := Filter;
|
|
l.GroupFilter := Group;
|
|
AssertEquals(Name + 'InfoCount Line='+IntToStr(i),
|
|
Expected[i],
|
|
FTheHighLighter.FoldNodeInfo[i].Count);
|
|
end;
|
|
end;
|
|
|
|
function TTestBaseHighlighterFoldBase.FoldActionsToString(AFoldActions: TSynFoldActions): String;
|
|
var
|
|
s: string;
|
|
i: TSynFoldAction;
|
|
begin
|
|
Result:='';
|
|
for i := low(TSynFoldAction) to high(TSynFoldAction) do
|
|
if i in AFoldActions then begin
|
|
WriteStr(s, i);
|
|
Result := Result + s + ',';
|
|
end;
|
|
if Result <> '' then SetLength(Result, Length(Result)-1);
|
|
end;
|
|
|
|
end.
|
|
|