mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-05-15 07:42:52 +02:00
136 lines
4.0 KiB
ObjectPascal
136 lines
4.0 KiB
ObjectPascal
unit TestHighlighterLfm;
|
|
|
|
{$mode objfpc}{$H+}
|
|
|
|
interface
|
|
|
|
uses
|
|
SysUtils, testregistry, TestBase, TestHighlightFoldBase, SynHighlighterLFM, SynEditHighlighterFoldBase;
|
|
|
|
type
|
|
|
|
{ TTestBaseHighlighterLem }
|
|
|
|
TTestBaseHighlighterLem = class(TTestBaseHighlighterFoldBase)
|
|
protected
|
|
function LfmHighLighter: TSynLFMSyn;
|
|
function CreateTheHighLighter: TSynCustomFoldHighlighter; override;
|
|
procedure EnableFolds(AEnbledTypes: TLfmCodeFoldBlockTypes;
|
|
AHideTypes: TLfmCodeFoldBlockTypes = [];
|
|
ANoFoldTypes: TLfmCodeFoldBlockTypes = []
|
|
);
|
|
//procedure DebugFoldInfo(ALineIdx: Integer; AFilter: TSynFoldActions; Group: Integer=0);
|
|
//procedure DebugFoldInfo(AFilter: TSynFoldActions; Group: Integer=0);
|
|
//function FoldActionsToString(AFoldActions: TSynFoldActions): String;
|
|
end;
|
|
|
|
{ TTestHighlighterLfm }
|
|
|
|
TTestHighlighterLfm = class(TTestBaseHighlighterLem)
|
|
protected
|
|
function TestTextFoldInfo1: TStringArray;
|
|
|
|
procedure CheckTokensForLine(Name: String; LineIdx: Integer; ExpTokens: Array of TtkTokenKind);
|
|
published
|
|
procedure TestFoldInfo;
|
|
end;
|
|
|
|
implementation
|
|
|
|
{ TTestBaseHighlighterLem }
|
|
|
|
function TTestBaseHighlighterLem.LfmHighLighter: TSynLFMSyn;
|
|
begin
|
|
Result := TSynLFMSyn(FTheHighLighter);
|
|
end;
|
|
|
|
function TTestBaseHighlighterLem.CreateTheHighLighter: TSynCustomFoldHighlighter;
|
|
begin
|
|
Result := TSynLFMSyn.Create(nil);
|
|
end;
|
|
|
|
procedure TTestBaseHighlighterLem.EnableFolds(AEnbledTypes: TLfmCodeFoldBlockTypes;
|
|
AHideTypes: TLfmCodeFoldBlockTypes; ANoFoldTypes: TLfmCodeFoldBlockTypes);
|
|
var
|
|
i: TLfmCodeFoldBlockType;
|
|
begin
|
|
for i := low(TLfmCodeFoldBlockType) to high(TLfmCodeFoldBlockType) do begin
|
|
LfmHighLighter.FoldConfig[ord(i)].Enabled := i in AEnbledTypes;
|
|
if (i in ANoFoldTypes) then
|
|
LfmHighLighter.FoldConfig[ord(i)].Modes := []
|
|
else
|
|
LfmHighLighter.FoldConfig[ord(i)].Modes := [fmFold];
|
|
if i in AHideTypes then
|
|
LfmHighLighter.FoldConfig[ord(i)].Modes := LfmHighLighter.FoldConfig[ord(i)].Modes + [fmHide]
|
|
end;
|
|
end;
|
|
|
|
function TTestHighlighterLfm.TestTextFoldInfo1: TStringArray;
|
|
begin
|
|
SetLength(Result, 11);
|
|
Result[0] := 'object BreakPointGroupDlg: TBreakPointGroupDlg';
|
|
Result[1] := ' Left = 431';
|
|
Result[2] := ' Height = 225';
|
|
Result[3] := ' object ButtonPanel1: TButtonPanel';
|
|
Result[4] := ' Left = 6';
|
|
Result[5] := ' end';
|
|
Result[6] := ' object Label1: TLabel';
|
|
Result[7] := ' Left = 0';
|
|
Result[8] := ' end';
|
|
Result[9] := 'end';
|
|
Result[10] := '';
|
|
|
|
|
|
end;
|
|
|
|
procedure TTestHighlighterLfm.CheckTokensForLine(Name: String; LineIdx: Integer;
|
|
ExpTokens: array of TtkTokenKind);
|
|
var
|
|
c: Integer;
|
|
begin
|
|
LfmHighLighter.StartAtLineIndex(LineIdx);
|
|
c := 0;
|
|
while not LfmHighLighter.GetEol do begin
|
|
//DebugLn([LfmHighLighter.GetToken,' (',PasHighLighter.GetTokenID ,') at ', PasHighLighter.GetTokenPos]);
|
|
AssertEquals(Name + 'TokenId Line='+IntToStr(LineIdx)+' pos='+IntToStr(c), ord(ExpTokens[c]), ord(LfmHighLighter.GetTokenID));
|
|
LfmHighLighter.Next;
|
|
inc(c);
|
|
if c >= length(ExpTokens) then
|
|
break;
|
|
end;
|
|
AssertEquals(Name+ 'TokenId Line='+IntToStr(LineIdx)+' amount of tokens', length(ExpTokens), c );
|
|
end;
|
|
|
|
procedure TTestHighlighterLfm.TestFoldInfo;
|
|
begin
|
|
ReCreateEdit;
|
|
|
|
// DebugFoldInfo([]);
|
|
|
|
{%region}
|
|
SetLines(TestTextFoldInfo1);
|
|
EnableFolds([cfbtLfmObject..cfbtLfmNone]);
|
|
PushBaseName('Text 1 all folds');
|
|
|
|
EnableFolds([cfbtLfmObject..cfbtLfmNone], [cfbtLfmNone]);
|
|
AssertEquals('Len 0', 9, LfmHighLighter.FoldLineLength(0,0));
|
|
//AssertEquals('Len 1', 0, LfmHighLighter.FoldLineLength(1,0));
|
|
AssertEquals('Len 3', 2, LfmHighLighter.FoldLineLength(3,0));
|
|
//AssertEquals('Len 4', 0, LfmHighLighter.FoldLineLength(4,0));
|
|
//AssertEquals('Len 5', 0, LfmHighLighter.FoldLineLength(5,0));
|
|
AssertEquals('Len 6', 2, LfmHighLighter.FoldLineLength(6,0));
|
|
|
|
CheckFoldOpenCounts('', [1, 0, 0, 1, 0, 0, 1, 0, 0, 0]);
|
|
|
|
{%endregion}
|
|
|
|
end;
|
|
|
|
|
|
|
|
initialization
|
|
|
|
RegisterTest(TTestHighlighterLfm);
|
|
end.
|
|
|