File: testhighlightxml.pas

package info (click to toggle)
lazarus 2.0.0%2Bdfsg-2
  • links: PTS, VCS
  • area: main
  • in suites: buster
  • size: 214,460 kB
  • sloc: pascal: 1,862,622; xml: 265,709; cpp: 56,595; sh: 3,008; java: 609; makefile: 535; perl: 297; sql: 222; ansic: 137
file content (77 lines) | stat: -rw-r--r-- 2,049 bytes parent folder | download | duplicates (9)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
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] := '<qwe>';
    Result[1] := '<abc> a </abc>';
    Result[2] := '</qwe>';
    Result[3] := '';
  end;
begin
  ReCreateEdit;
  SetLines(TestText);

  CheckFoldOpenCounts('simple', [1,0,0]);
  CheckFoldLengths   ('simple', [ExpVLine(0,[2])]);
  CheckFoldEndLines  ('simple', [ExpVLine(0,[2])]);

  SetLines(['<a>', '<b><c>', '</c>', '', '</b></a>', '']);
  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(['<a>', '<b><c>', '', '', '</b></a>', '']);
  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(['<a>', '<b><c>', '</c>', '', '</b>', '']);
  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(['<a>', '']);
  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.