Turbopower_ipro: Add test application to check rendering of various html features.

This commit is contained in:
wp_xyz 2022-05-21 18:27:17 +02:00
parent 6073152919
commit c8481dc058
5 changed files with 1123 additions and 0 deletions

View File

@ -0,0 +1,157 @@
unit ipro_tests;
{$mode ObjFPC}{$H+}
interface
uses
Classes, SysUtils;
const
LE = LineEnding;
BRinBODY_title =
'<BR> between two words in BODY';
BRinBODY_html =
'<html>' + LE +
'<body>' + LE +
' abc<br>def' + LE +
'</body>' + LE +
'</html>';
BRinBODY_descr =
'The two words should be in separate lines, having no additional empty line between.';
TwoBRinBODY_title =
'Two <BR> tags between two words in BODY';
TwoBRinBODY_html =
'<html>' + LE +
'<body>' + LE +
' abc<br><br>def' + LE +
'</body>' + LE +
'</html>';
TwoBRinBODY_descr =
'The two words should be in separate lines with additional empty line between.';
BRinP_title =
'<BR> between two words in P nodes';
BRinP_html =
'<html>' + LE +
'<body>' + LE +
' <p>abc<br>def</p>' + LE +
'</body>' + LE +
'</html>';
BRinP_descr =
'The two words should be in separate lines, having no additional empty line between.';
TwoBRinP_title =
'Two <BR> tags between two words in P nodes';
TwoBRinP_html =
'<html>' + LE +
'<body>' + LE +
' <p>abc<br><br>def</p>' + LE +
'</body>' + LE +
'</html>';
TwoBRinP_descr =
'The two words should be in separate lines with an additional empty line between.';
BRinTableCell_title =
'<BR> between two words in a table cell';
BRinTableCell_html =
'<html>' + LE +
'<body>' + LE +
' <table border="1" cellspacing="0">' + LE +
' <tr><td>abc<br>def</td><td>ghi</td></tr>' + LE +
' </table>' + LE +
'</body>' + LE +
'</html>';
BRinTableCell_descr =
'The two words in the left cell should be in separate lines, having no additional empty line between.';
TwoBRinTableCell_title =
'Two <BR> tags between two words in a table cell';
TwoBRinTableCell_html =
'<html>' + LE +
'<body>' + LE +
' <table border="1" cellspacing="0">' + LE +
' <tr><td>abc<br><br>def</td><td>ghi</td></tr>' + LE +
' </table>' + LE +
'</body>' + LE +
'</html>';
TwoBRinTableCell_descr =
'The two words in the left cell should be in separate lines with an additional empty line between.';
BRbetweenTwoTables_title =
'<BR> between two tables';
BRbetweenTwoTables_html =
'<html>' + LE +
'<body>' + LE +
' <table border="1" cellspacing="0">' + LE +
' <tr>' + LE +
' <td>abc</td><td>def</td><td>ghi</td>' + LE +
' </tr>' + LE +
' </table>' + LE +
' <br>' + LE +
' <table border="1" cellspacing="0">' + LE +
' <tr>' + LE +
' <td>ABC</td><td>DEF</td><td>GHI</td>' + LE +
' </tr>' + LE +
' </table>' + LE +
'</body>' + LE +
'</html>';
BRbetweenTwoTables_descr =
'There should be an empty line between the two tables.';
BRbetweenTwoP_title =
'<BR> between two <p> tags';
BRbetweenTwoP_html =
'<html>' + LE +
'<body>' + LE +
' <p>abc</p>' + LE +
' <br>' + LE +
' <p>ABC</p>' + LE +
'</body>' + LE +
'</html>';
BRbetweenTwoP_descr =
'There should be an empty line between the two lines.';
TextWithBackgroundInBODY_title =
'Text with background in BODY';
TextWithBackgroundInBODY_html =
'<html>' + LE +
'<head>' + LE +
' <style type="text/css">' + LE +
' .class1 {' + LE +
' color: red;' + LE +
' background-color: yellow;' + LE +
' }' + LE +
' </style>' + LE +
'</head>' + LE +
'<body>' + LE +
' <p class="class1">Testing backcolor</p>' + LE +
'</body>' + LE +
'</html>';
TextWithBackgroundInBODY_descr =
'This test should show red text on yellow background.';
TextInColoredTableCell_title =
'Text in colored table cell';
TextInColoredTableCell_html =
'<html>' + LE +
'<body>' + LE +
' <table border="1" cellspacing="0">' + LE +
' <tr bgcolor="yellow">' + LE +
' <td>abc</td>' + LE +
' <td>def</td>' + LE +
' <td bgcolor="red">Test</td>' + LE +
' </tr>'+ LE +
' </table>' + LE +
'</body>' + LE +
'</html>';
TextInColoredTableCell_descr =
'The left and center cells should have yellow, the right cell uniform red background.';
implementation
end.

View File

@ -0,0 +1,93 @@
<?xml version="1.0" encoding="UTF-8"?>
<CONFIG>
<ProjectOptions>
<Version Value="12"/>
<PathDelim Value="\"/>
<General>
<SessionStorage Value="InProjectDir"/>
<Title Value="iprotest"/>
<Scaled Value="True"/>
<ResourceType Value="res"/>
<UseXPManifest Value="True"/>
<XPManifest>
<DpiAware Value="True"/>
</XPManifest>
<Icon Value="0"/>
</General>
<BuildModes>
<Item Name="Default" Default="True"/>
</BuildModes>
<PublishOptions>
<Version Value="2"/>
<UseFileFilters Value="True"/>
</PublishOptions>
<RunParams>
<FormatVersion Value="2"/>
</RunParams>
<RequiredPackages>
<Item>
<PackageName Value="TurboPowerIPro"/>
</Item>
<Item>
<PackageName Value="SynEditDsgn"/>
</Item>
<Item>
<PackageName Value="SynEdit"/>
</Item>
<Item>
<PackageName Value="LCL"/>
</Item>
</RequiredPackages>
<Units>
<Unit>
<Filename Value="iprotest.lpr"/>
<IsPartOfProject Value="True"/>
</Unit>
<Unit>
<Filename Value="iprotest_unit.pas"/>
<IsPartOfProject Value="True"/>
<ComponentName Value="Form1"/>
<HasResources Value="True"/>
<ResourceBaseClass Value="Form"/>
</Unit>
<Unit>
<Filename Value="ipro_tests.pas"/>
<IsPartOfProject Value="True"/>
</Unit>
</Units>
</ProjectOptions>
<CompilerOptions>
<Version Value="11"/>
<PathDelim Value="\"/>
<Target>
<Filename Value="iprotest"/>
</Target>
<SearchPaths>
<IncludeFiles Value="$(ProjOutDir)"/>
<UnitOutputDirectory Value="lib\$(TargetCPU)-$(TargetOS)"/>
</SearchPaths>
<Linking>
<Debugging>
<DebugInfoType Value="dsDwarf3"/>
</Debugging>
<Options>
<Win32>
<GraphicApplication Value="True"/>
</Win32>
</Options>
</Linking>
</CompilerOptions>
<Debugging>
<Exceptions>
<Item>
<Name Value="EAbort"/>
</Item>
<Item>
<Name Value="ECodetoolError"/>
</Item>
<Item>
<Name Value="EFOpenError"/>
</Item>
</Exceptions>
</Debugging>
</CONFIG>

View File

@ -0,0 +1,25 @@
program iprotest;
{$mode objfpc}{$H+}
uses
{$IFDEF UNIX}
cthreads,
{$ENDIF}
{$IFDEF HASAMIGA}
athreads,
{$ENDIF}
Interfaces, // this includes the LCL widgetset
Forms, iprotest_unit, ipro_tests
{ you can add units after this };
{$R *.res}
begin
RequireDerivedFormResource:=True;
Application.Scaled:=True;
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.Run;
end.

View File

@ -0,0 +1,699 @@
object Form1: TForm1
Left = 327
Height = 620
Top = 127
Width = 866
Caption = 'Form1'
ClientHeight = 620
ClientWidth = 866
OnCreate = FormCreate
LCLVersion = '2.3.0.0'
object Panel1: TPanel
Left = 6
Height = 608
Top = 6
Width = 218
Align = alLeft
BorderSpacing.Around = 6
BevelOuter = bvNone
ClientHeight = 608
ClientWidth = 218
TabOrder = 0
object Label1: TLabel
AnchorSideLeft.Control = Panel1
AnchorSideTop.Control = Panel1
Left = 0
Height = 15
Top = 0
Width = 80
Caption = 'html file name:'
end
object FileNameEdit1: TFileNameEdit
AnchorSideLeft.Control = Panel1
AnchorSideTop.Control = Label1
AnchorSideTop.Side = asrBottom
AnchorSideRight.Control = Panel1
AnchorSideRight.Side = asrBottom
Left = 0
Height = 23
Top = 17
Width = 218
FilterIndex = 0
HideDirectories = False
ButtonWidth = 23
NumGlyphs = 1
Anchors = [akTop, akLeft, akRight]
BorderSpacing.Top = 2
MaxLength = 0
TabOrder = 0
end
object TreeView1: TTreeView
Left = 0
Height = 608
Top = 0
Width = 218
Align = alClient
TabOrder = 1
OnDeletion = TreeView1Deletion
OnSelectionChanged = TreeView1SelectionChanged
end
end
object Panel2: TPanel
Left = 238
Height = 608
Top = 6
Width = 622
Align = alClient
BorderSpacing.Left = 3
BorderSpacing.Top = 6
BorderSpacing.Right = 6
BorderSpacing.Bottom = 6
BevelOuter = bvNone
ClientHeight = 608
ClientWidth = 622
TabOrder = 1
object Splitter2: TSplitter
Cursor = crVSplit
Left = 0
Height = 5
Top = 340
Width = 622
Align = alTop
ResizeAnchor = akTop
end
object IpHtmlPanel1: TIpHtmlPanel
Left = 0
Height = 260
Top = 348
Width = 622
Align = alClient
BorderSpacing.Top = 3
FixedTypeface = 'Courier New'
DefaultTypeFace = 'default'
DefaultFontSize = 12
FlagErrors = False
PrintSettings.MarginLeft = 0.5
PrintSettings.MarginTop = 0.5
PrintSettings.MarginRight = 0.5
PrintSettings.MarginBottom = 0.5
PrintSettings.Preview.Left = 640
PrintSettings.Preview.Top = 270
PrintSettings.Preview.Width = 1920
PrintSettings.Preview.Height = 810
TabOrder = 1
end
object Panel4: TPanel
Left = 0
Height = 340
Top = 0
Width = 622
Align = alTop
BevelOuter = bvNone
ClientHeight = 340
ClientWidth = 622
TabOrder = 2
object Memo1: TMemo
Left = 0
Height = 50
Top = 0
Width = 622
Align = alTop
BorderSpacing.Bottom = 3
ScrollBars = ssAutoBoth
TabOrder = 0
WantReturns = False
end
inline SynEdit1: TSynEdit
Left = 0
Height = 245
Top = 61
Width = 622
Align = alClient
BorderSpacing.Top = 3
Font.Height = -13
Font.Name = 'Courier New'
Font.Pitch = fpFixed
Font.Quality = fqNonAntialiased
ParentColor = False
ParentFont = False
TabOrder = 1
Gutter.Width = 57
Gutter.MouseActions = <>
RightGutter.Width = 0
RightGutter.MouseActions = <>
Highlighter = SynHTMLSyn1
Keystrokes = <
item
Command = ecUp
ShortCut = 38
end
item
Command = ecSelUp
ShortCut = 8230
end
item
Command = ecScrollUp
ShortCut = 16422
end
item
Command = ecDown
ShortCut = 40
end
item
Command = ecSelDown
ShortCut = 8232
end
item
Command = ecScrollDown
ShortCut = 16424
end
item
Command = ecLeft
ShortCut = 37
end
item
Command = ecSelLeft
ShortCut = 8229
end
item
Command = ecWordLeft
ShortCut = 16421
end
item
Command = ecSelWordLeft
ShortCut = 24613
end
item
Command = ecRight
ShortCut = 39
end
item
Command = ecSelRight
ShortCut = 8231
end
item
Command = ecWordRight
ShortCut = 16423
end
item
Command = ecSelWordRight
ShortCut = 24615
end
item
Command = ecPageDown
ShortCut = 34
end
item
Command = ecSelPageDown
ShortCut = 8226
end
item
Command = ecPageBottom
ShortCut = 16418
end
item
Command = ecSelPageBottom
ShortCut = 24610
end
item
Command = ecPageUp
ShortCut = 33
end
item
Command = ecSelPageUp
ShortCut = 8225
end
item
Command = ecPageTop
ShortCut = 16417
end
item
Command = ecSelPageTop
ShortCut = 24609
end
item
Command = ecLineStart
ShortCut = 36
end
item
Command = ecSelLineStart
ShortCut = 8228
end
item
Command = ecEditorTop
ShortCut = 16420
end
item
Command = ecSelEditorTop
ShortCut = 24612
end
item
Command = ecLineEnd
ShortCut = 35
end
item
Command = ecSelLineEnd
ShortCut = 8227
end
item
Command = ecEditorBottom
ShortCut = 16419
end
item
Command = ecSelEditorBottom
ShortCut = 24611
end
item
Command = ecToggleMode
ShortCut = 45
end
item
Command = ecCopy
ShortCut = 16429
end
item
Command = ecPaste
ShortCut = 8237
end
item
Command = ecDeleteChar
ShortCut = 46
end
item
Command = ecCut
ShortCut = 8238
end
item
Command = ecDeleteLastChar
ShortCut = 8
end
item
Command = ecDeleteLastChar
ShortCut = 8200
end
item
Command = ecDeleteLastWord
ShortCut = 16392
end
item
Command = ecUndo
ShortCut = 32776
end
item
Command = ecRedo
ShortCut = 40968
end
item
Command = ecLineBreak
ShortCut = 13
end
item
Command = ecSelectAll
ShortCut = 16449
end
item
Command = ecCopy
ShortCut = 16451
end
item
Command = ecBlockIndent
ShortCut = 24649
end
item
Command = ecLineBreak
ShortCut = 16461
end
item
Command = ecInsertLine
ShortCut = 16462
end
item
Command = ecDeleteWord
ShortCut = 16468
end
item
Command = ecBlockUnindent
ShortCut = 24661
end
item
Command = ecPaste
ShortCut = 16470
end
item
Command = ecCut
ShortCut = 16472
end
item
Command = ecDeleteLine
ShortCut = 16473
end
item
Command = ecDeleteEOL
ShortCut = 24665
end
item
Command = ecUndo
ShortCut = 16474
end
item
Command = ecRedo
ShortCut = 24666
end
item
Command = ecGotoMarker0
ShortCut = 16432
end
item
Command = ecGotoMarker1
ShortCut = 16433
end
item
Command = ecGotoMarker2
ShortCut = 16434
end
item
Command = ecGotoMarker3
ShortCut = 16435
end
item
Command = ecGotoMarker4
ShortCut = 16436
end
item
Command = ecGotoMarker5
ShortCut = 16437
end
item
Command = ecGotoMarker6
ShortCut = 16438
end
item
Command = ecGotoMarker7
ShortCut = 16439
end
item
Command = ecGotoMarker8
ShortCut = 16440
end
item
Command = ecGotoMarker9
ShortCut = 16441
end
item
Command = ecSetMarker0
ShortCut = 24624
end
item
Command = ecSetMarker1
ShortCut = 24625
end
item
Command = ecSetMarker2
ShortCut = 24626
end
item
Command = ecSetMarker3
ShortCut = 24627
end
item
Command = ecSetMarker4
ShortCut = 24628
end
item
Command = ecSetMarker5
ShortCut = 24629
end
item
Command = ecSetMarker6
ShortCut = 24630
end
item
Command = ecSetMarker7
ShortCut = 24631
end
item
Command = ecSetMarker8
ShortCut = 24632
end
item
Command = ecSetMarker9
ShortCut = 24633
end
item
Command = EcFoldLevel1
ShortCut = 41009
end
item
Command = EcFoldLevel2
ShortCut = 41010
end
item
Command = EcFoldLevel3
ShortCut = 41011
end
item
Command = EcFoldLevel4
ShortCut = 41012
end
item
Command = EcFoldLevel5
ShortCut = 41013
end
item
Command = EcFoldLevel6
ShortCut = 41014
end
item
Command = EcFoldLevel7
ShortCut = 41015
end
item
Command = EcFoldLevel8
ShortCut = 41016
end
item
Command = EcFoldLevel9
ShortCut = 41017
end
item
Command = EcFoldLevel0
ShortCut = 41008
end
item
Command = EcFoldCurrent
ShortCut = 41005
end
item
Command = EcUnFoldCurrent
ShortCut = 41003
end
item
Command = EcToggleMarkupWord
ShortCut = 32845
end
item
Command = ecNormalSelect
ShortCut = 24654
end
item
Command = ecColumnSelect
ShortCut = 24643
end
item
Command = ecLineSelect
ShortCut = 24652
end
item
Command = ecTab
ShortCut = 9
end
item
Command = ecShiftTab
ShortCut = 8201
end
item
Command = ecMatchBracket
ShortCut = 24642
end
item
Command = ecColSelUp
ShortCut = 40998
end
item
Command = ecColSelDown
ShortCut = 41000
end
item
Command = ecColSelLeft
ShortCut = 40997
end
item
Command = ecColSelRight
ShortCut = 40999
end
item
Command = ecColSelPageDown
ShortCut = 40994
end
item
Command = ecColSelPageBottom
ShortCut = 57378
end
item
Command = ecColSelPageUp
ShortCut = 40993
end
item
Command = ecColSelPageTop
ShortCut = 57377
end
item
Command = ecColSelLineStart
ShortCut = 40996
end
item
Command = ecColSelLineEnd
ShortCut = 40995
end
item
Command = ecColSelEditorTop
ShortCut = 57380
end
item
Command = ecColSelEditorBottom
ShortCut = 57379
end>
MouseActions = <>
MouseTextActions = <>
MouseSelActions = <>
Lines.Strings = (
''
)
VisibleSpecialChars = [vscSpace, vscTabAtLast]
SelectedColor.BackPriority = 50
SelectedColor.ForePriority = 50
SelectedColor.FramePriority = 50
SelectedColor.BoldPriority = 50
SelectedColor.ItalicPriority = 50
SelectedColor.UnderlinePriority = 50
SelectedColor.StrikeOutPriority = 50
BracketHighlightStyle = sbhsBoth
BracketMatchColor.Background = clNone
BracketMatchColor.Foreground = clNone
BracketMatchColor.Style = [fsBold]
FoldedCodeColor.Background = clNone
FoldedCodeColor.Foreground = clGray
FoldedCodeColor.FrameColor = clGray
MouseLinkColor.Background = clNone
MouseLinkColor.Foreground = clBlue
LineHighlightColor.Background = clNone
LineHighlightColor.Foreground = clNone
inline SynLeftGutterPartList1: TSynGutterPartList
object SynGutterMarks1: TSynGutterMarks
Width = 24
MouseActions = <>
end
object SynGutterLineNumber1: TSynGutterLineNumber
Width = 17
MouseActions = <>
MarkupInfo.Background = clBtnFace
MarkupInfo.Foreground = clNone
DigitCount = 2
ShowOnlyLineNumbersMultiplesOf = 1
ZeroStart = False
LeadingZeros = False
end
object SynGutterChanges1: TSynGutterChanges
Width = 4
MouseActions = <>
ModifiedColor = 59900
SavedColor = clGreen
end
object SynGutterSeparator1: TSynGutterSeparator
Width = 2
MouseActions = <>
MarkupInfo.Background = clWhite
MarkupInfo.Foreground = clGray
end
object SynGutterCodeFolding1: TSynGutterCodeFolding
MouseActions = <>
MarkupInfo.Background = clNone
MarkupInfo.Foreground = clGray
MouseActionsExpanded = <>
MouseActionsCollapsed = <>
end
end
end
object Panel3: TPanel
Left = 0
Height = 25
Top = 312
Width = 622
Align = alBottom
AutoSize = True
BorderSpacing.Top = 6
BorderSpacing.Bottom = 3
BevelOuter = bvNone
ClientHeight = 25
ClientWidth = 622
TabOrder = 2
object Button1: TButton
AnchorSideLeft.Side = asrBottom
AnchorSideTop.Control = Panel3
AnchorSideRight.Control = Bevel1
Left = 230
Height = 25
Top = 0
Width = 75
Anchors = [akTop, akRight]
Caption = 'Render'
OnClick = Button1Click
TabOrder = 0
end
object Button2: TButton
AnchorSideLeft.Control = Bevel1
AnchorSideLeft.Side = asrBottom
AnchorSideTop.Control = Panel3
Left = 317
Height = 25
Top = 0
Width = 113
AutoSize = True
Caption = 'Show in Browser'
OnClick = Button2Click
TabOrder = 1
end
object Bevel1: TBevel
AnchorSideLeft.Control = Panel3
AnchorSideLeft.Side = asrCenter
Left = 305
Height = 13
Top = 3
Width = 12
Shape = bsSpacer
end
end
object Splitter3: TSplitter
Cursor = crVSplit
Left = 0
Height = 5
Top = 53
Width = 622
Align = alTop
ResizeAnchor = akTop
end
end
end
object Splitter1: TSplitter
Left = 230
Height = 620
Top = 0
Width = 5
end
object SynHTMLSyn1: TSynHTMLSyn
DefaultFilter = 'HTML Document (*.htm,*.html)|*.htm;*.html'
Enabled = False
Left = 469
Top = 78
end
end

View File

@ -0,0 +1,149 @@
unit iprotest_unit;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, Forms, Controls, Graphics, Dialogs, StdCtrls, ExtCtrls,
EditBtn, ComCtrls, SynEdit, SynHighlighterHTML, IpHtml;
type
{ TForm1 }
TForm1 = class(TForm)
Bevel1: TBevel;
Button1: TButton;
Button2: TButton;
FileNameEdit1: TFileNameEdit;
IpHtmlPanel1: TIpHtmlPanel;
Label1: TLabel;
Memo1: TMemo;
Panel1: TPanel;
Panel2: TPanel;
Panel3: TPanel;
Panel4: TPanel;
Splitter1: TSplitter;
Splitter2: TSplitter;
Splitter3: TSplitter;
SynEdit1: TSynEdit;
SynHTMLSyn1: TSynHTMLSyn;
TreeView1: TTreeView;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure TreeView1Deletion(Sender: TObject; Node: TTreeNode);
procedure TreeView1SelectionChanged(Sender: TObject);
private
procedure PopulateTests;
public
procedure AddTest(ANode: TTreeNode; ATitle, ADescription, AHtml: String);
end;
var
Form1: TForm1;
implementation
{$R *.lfm}
uses
LCLIntf, ipro_tests;
type
TTestCase = class
Description: String;
HTML: String;
end;
{ TForm1 }
procedure TForm1.AddTest(ANode: TTreeNode; ATitle, ADescription, AHtml: String);
var
testcase: TTestCase;
begin
testcase := TTestCase.Create;
testcase.Description := ADescription;
testcase.HTML := AHtml;
TreeView1.Items.AddChildObject(ANode, ATitle, testcase);
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
SynEdit1.Font.Quality := fqCleartype;
PopulateTests;
end;
procedure TForm1.TreeView1Deletion(Sender: TObject; Node: TTreeNode);
begin
if (TObject(Node.Data) is TTestCase) then
TTestCase(Node.Data).Free;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
IpHtmlPanel1.SetHtmlFromStr(SynEdit1.Lines.Text);
end;
procedure TForm1.Button2Click(Sender: TObject);
const
TEST_FILE = 'test.html';
begin
SynEdit1.Lines.SaveToFile(TEST_FILE);
OpenURL(TEST_FILE);
end;
procedure TForm1.TreeView1SelectionChanged(Sender: TObject);
var
testcase: TTestCase;
begin
if TreeView1.Selected = nil then
exit;
testCase := TTestCase(TreeView1.Selected.Data);
if testCase <> nil then
begin
Memo1.Lines.Text := testCase.Description;
Synedit1.Lines.Text := testCase.html;
IpHtmlPanel1.SetHtmlFromStr(testCase.html);
end else
begin
Memo1.Lines.Clear;
SynEdit1.Lines.Clear;
IpHtmlPanel1.SetHtml(nil);
end;
end;
procedure TForm1.PopulateTests;
var
node: TTreeNode;
begin
TreeView1.Items.BeginUpdate;
try
TreeView1.Items.Clear;
node := TreeView1.Items.AddChild(nil, '<BR>');
AddTest(node, BRinBODY_title, BRinBODY_descr, BRinBODY_html);
AddTest(node, TwoBRinBODY_title, TwoBRinBODY_descr, TwoBRinBODY_html);
AddTest(node, BRinP_title, BRinP_descr, BRinP_html);
AddTest(node, TwoBRinP_title, TwoBRinP_descr, TwoBRinP_html);
AddTest(node, BRinTableCell_title, BRinTableCell_descr, BRinTableCell_html);
AddTest(node, TwoBRinTableCell_title, TwoBRinTableCell_descr, TwoBRinTableCell_html);
AddTest(node, BRbetweenTwoP_title, BRbetweenTwoP_descr, BRbetweenTwoP_html);
AddTest(node, BRbetweenTwoTables_title, BRbetweenTwoTables_descr, BRbetweenTwoTables_html);
node.Expanded := true;
node := TreeView1.Items.AddChild(nil, 'Text background');
AddTest(node, TextWithBackgroundInBODY_title, TextWithBackgroundInBODY_descr, TextWithBackgroundInBODY_html);
AddTest(node, TextInColoredTableCell_title, TextInColoredTableCell_descr, TextInColoredTableCell_html);
node.Expanded := true;
finally
TreeView1.Items.EndUpdate;
end;
end;
end.