1
unit TestHighlighterLfm;
8
Classes, SysUtils, testregistry, TestBase, Forms, LCLProc, TestHighlightFoldBase,
9
SynEdit, SynEditTypes, SynHighlighterLFM, SynEditHighlighterFoldBase;
13
{ TTestBaseHighlighterLem }
15
TTestBaseHighlighterLem = class(TTestBaseHighlighterFoldBase)
17
function LfmHighLighter: TSynLFMSyn;
18
function CreateTheHighLighter: TSynCustomFoldHighlighter; override;
19
procedure EnableFolds(AEnbledTypes: TLfmCodeFoldBlockTypes;
20
AHideTypes: TLfmCodeFoldBlockTypes = [];
21
ANoFoldTypes: TLfmCodeFoldBlockTypes = []
23
//procedure DebugFoldInfo(ALineIdx: Integer; AFilter: TSynFoldActions; Group: Integer=0);
24
//procedure DebugFoldInfo(AFilter: TSynFoldActions; Group: Integer=0);
25
//function FoldActionsToString(AFoldActions: TSynFoldActions): String;
28
{ TTestHighlighterLfm }
30
TTestHighlighterLfm = class(TTestBaseHighlighterLem)
32
function TestTextFoldInfo1: TStringArray;
34
procedure CheckTokensForLine(Name: String; LineIdx: Integer; ExpTokens: Array of TtkTokenKind);
36
procedure TestFoldInfo;
41
{ TTestBaseHighlighterLem }
43
function TTestBaseHighlighterLem.LfmHighLighter: TSynLFMSyn;
45
Result := TSynLFMSyn(FTheHighLighter);
48
function TTestBaseHighlighterLem.CreateTheHighLighter: TSynCustomFoldHighlighter;
50
Result := TSynLFMSyn.Create(nil);
53
procedure TTestBaseHighlighterLem.EnableFolds(AEnbledTypes: TLfmCodeFoldBlockTypes;
54
AHideTypes: TLfmCodeFoldBlockTypes; ANoFoldTypes: TLfmCodeFoldBlockTypes);
56
i: TLfmCodeFoldBlockType;
58
for i := low(TLfmCodeFoldBlockType) to high(TLfmCodeFoldBlockType) do begin
59
LfmHighLighter.FoldConfig[ord(i)].Enabled := i in AEnbledTypes;
60
if (i in ANoFoldTypes) then
61
LfmHighLighter.FoldConfig[ord(i)].Modes := []
63
LfmHighLighter.FoldConfig[ord(i)].Modes := [fmFold];
64
if i in AHideTypes then
65
LfmHighLighter.FoldConfig[ord(i)].Modes := LfmHighLighter.FoldConfig[ord(i)].Modes + [fmHide]
69
function TTestHighlighterLfm.TestTextFoldInfo1: TStringArray;
71
SetLength(Result, 11);
72
Result[0] := 'object BreakPointGroupDlg: TBreakPointGroupDlg';
73
Result[1] := ' Left = 431';
74
Result[2] := ' Height = 225';
75
Result[3] := ' object ButtonPanel1: TButtonPanel';
76
Result[4] := ' Left = 6';
78
Result[6] := ' object Label1: TLabel';
79
Result[7] := ' Left = 0';
87
procedure TTestHighlighterLfm.CheckTokensForLine(Name: String; LineIdx: Integer;
88
ExpTokens: array of TtkTokenKind);
92
LfmHighLighter.StartAtLineIndex(LineIdx);
94
while not LfmHighLighter.GetEol do begin
95
//DebugLn([LfmHighLighter.GetToken,' (',PasHighLighter.GetTokenID ,') at ', PasHighLighter.GetTokenPos]);
96
AssertEquals(Name + 'TokenId Line='+IntToStr(LineIdx)+' pos='+IntToStr(c), ord(ExpTokens[c]), ord(LfmHighLighter.GetTokenID));
99
if c >= length(ExpTokens) then
102
AssertEquals(Name+ 'TokenId Line='+IntToStr(LineIdx)+' amount of tokens', length(ExpTokens), c );
105
procedure TTestHighlighterLfm.TestFoldInfo;
109
// DebugFoldInfo([]);
112
SetLines(TestTextFoldInfo1);
113
EnableFolds([cfbtLfmObject..cfbtLfmNone]);
114
PushBaseName('Text 1 all folds');
116
EnableFolds([cfbtLfmObject..cfbtLfmNone], [cfbtLfmNone]);
117
AssertEquals('Len 0', 9, LfmHighLighter.FoldLineLength(0,0));
118
//AssertEquals('Len 1', 0, LfmHighLighter.FoldLineLength(1,0));
119
AssertEquals('Len 3', 2, LfmHighLighter.FoldLineLength(3,0));
120
//AssertEquals('Len 4', 0, LfmHighLighter.FoldLineLength(4,0));
121
//AssertEquals('Len 5', 0, LfmHighLighter.FoldLineLength(5,0));
122
AssertEquals('Len 6', 2, LfmHighLighter.FoldLineLength(6,0));
124
CheckFoldOpenCounts('', [1, 0, 0, 1, 0, 0, 1, 0, 0, 0]);
134
RegisterTest(TTestHighlighterLfm);