mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-04-21 09:59:32 +02:00
SynEdit: Testcase: new, empty Edit (overwrite mode)
git-svn-id: trunk@25805 -
This commit is contained in:
parent
86c35630a6
commit
a5b3d7d219
1
.gitattributes
vendored
1
.gitattributes
vendored
@ -2086,6 +2086,7 @@ components/synedit/syntextdrawer.pp svneol=native#text/pascal
|
||||
components/synedit/test/SynTest.lpi svneol=native#text/plain
|
||||
components/synedit/test/SynTest.lpr svneol=native#text/pascal
|
||||
components/synedit/test/testbase.pas svneol=native#text/pascal
|
||||
components/synedit/test/testbasicsynedit.pas svneol=native#text/pascal
|
||||
components/synedit/test/testhighlightmulti.pas svneol=native#text/pascal
|
||||
components/synedit/test/testhighlightxml.pas svneol=native#text/pascal
|
||||
components/synedit/test/testsynbeautifier.pas svneol=native#text/pascal
|
||||
|
@ -3,8 +3,10 @@ program SynTest;
|
||||
{$mode objfpc}{$H+}
|
||||
|
||||
uses
|
||||
Interfaces, Forms, GuiTestRunner, TestBase, TestSynSelection, TestSynBeautifier,
|
||||
TestSyncroEdit, TestTrimSpace, TestHighlightXml, TestHighlightMulti;
|
||||
Interfaces, Forms, GuiTestRunner, TestBase,
|
||||
TestBasicSynEdit, TestSynSelection,
|
||||
TestSynBeautifier, TestTrimSpace, TestSyncroEdit,
|
||||
TestHighlightXml, TestHighlightMulti;
|
||||
|
||||
{$IFDEF WINDOWS}{ $R SynTest.rc}{$ENDIF}
|
||||
|
||||
|
148
components/synedit/test/testbasicsynedit.pas
Normal file
148
components/synedit/test/testbasicsynedit.pas
Normal file
@ -0,0 +1,148 @@
|
||||
unit TestBasicSynEdit;
|
||||
|
||||
(* TODO:
|
||||
- TestEditEmpty:
|
||||
Test with different sets of VirtualViews (with/without trimming (enabled/module present at all)
|
||||
*)
|
||||
|
||||
{$mode objfpc}{$H+}
|
||||
|
||||
interface
|
||||
|
||||
uses
|
||||
Classes, SysUtils, testregistry, LCLProc, LCLType, Forms, TestBase,
|
||||
SynEdit, SynEditTextTrimmer, SynEditKeyCmds;
|
||||
|
||||
type
|
||||
|
||||
{ TTestBasicSynEdit }
|
||||
|
||||
TTestBasicSynEdit = class(TTestBase)
|
||||
private
|
||||
InsertFlag: Boolean;
|
||||
TrimType: TSynEditStringTrimmingType;
|
||||
TrimEnabled: Boolean;
|
||||
protected
|
||||
procedure ReCreateEdit; reintroduce;
|
||||
published
|
||||
procedure TestEditEmpty;
|
||||
end;
|
||||
|
||||
implementation
|
||||
|
||||
procedure TTestBasicSynEdit.ReCreateEdit;
|
||||
begin
|
||||
inherited ReCreateEdit;
|
||||
SynEdit.InsertMode := InsertFlag;
|
||||
SynEdit.TrimSpaceType := TrimType;
|
||||
if TrimEnabled then
|
||||
SynEdit.Options := SynEdit.Options + [eoTrimTrailingSpaces]
|
||||
else
|
||||
SynEdit.Options := SynEdit.Options - [eoTrimTrailingSpaces];
|
||||
|
||||
end;
|
||||
|
||||
procedure TTestBasicSynEdit.TestEditEmpty;
|
||||
procedure CheckText(aName: String; ExpText: String; ExpLines: Integer);
|
||||
var
|
||||
s: String;
|
||||
begin
|
||||
AssertEquals(BaseTestName + aName+' Count', ExpLines, SynEdit.Lines.Count);
|
||||
// TestIsText (without Views => just real text)
|
||||
// TestIsFullText (with Views => eg trimmed spaces)
|
||||
s:='';
|
||||
if ExpLines > 0 then
|
||||
s := LineEnding;
|
||||
TestIsText(aName+' Text', ExpText+s);
|
||||
end;
|
||||
procedure DoChecks;
|
||||
begin
|
||||
ReCreateEdit;
|
||||
CheckText('Empty', '', 0);
|
||||
SynEdit.CommandProcessor(ecChar, 'x', nil);
|
||||
CheckText('After Insert "x"', 'x', 1);
|
||||
|
||||
ReCreateEdit;
|
||||
SynEdit.CommandProcessor(ecChar, ' ', nil);
|
||||
if TrimEnabled then begin
|
||||
CheckText('After Insert <space>', '', 1);
|
||||
if TrimType = settIgnoreAll then begin
|
||||
TestIsFullText('After Insert <space> (FullText)', ''+LineEnding);
|
||||
TestIsCaret('After Insert <space>', 2,1);
|
||||
end else begin
|
||||
TestIsFullText('After Insert <space> (FullText)', ' '+LineEnding);
|
||||
TestIsCaret('After Insert <space>', 2,1);
|
||||
end;
|
||||
end else begin
|
||||
CheckText('After Insert <space>', ' ', 1);
|
||||
TestIsFullText('After Insert <space> (FullText)', ' '+LineEnding);
|
||||
TestIsCaret('After Insert <space>', 2,1);
|
||||
end;
|
||||
|
||||
ReCreateEdit;
|
||||
CheckText('Empty', '', 0);
|
||||
SynEdit.CommandProcessor(ecDeleteChar, '', nil);
|
||||
CheckText('After ecDeleteChar', '', 0);
|
||||
|
||||
ReCreateEdit;
|
||||
SynEdit.CommandProcessor(ecDeleteLastChar, '', nil);
|
||||
CheckText('After ecDeleteLastChar', '', 0);
|
||||
|
||||
ReCreateEdit;
|
||||
SynEdit.CommandProcessor(ecDeleteWord, '', nil);
|
||||
CheckText('After ecDeleteWord', '', 0);
|
||||
|
||||
ReCreateEdit;
|
||||
SynEdit.CommandProcessor(ecDeleteLastWord, '', nil);
|
||||
CheckText('After ecDeleteLastWord', '', 0);
|
||||
|
||||
ReCreateEdit;
|
||||
SynEdit.CommandProcessor(ecInsertLine, '', nil);
|
||||
CheckText('After ecInsertLine', LineEnding, 2);
|
||||
|
||||
ReCreateEdit;
|
||||
SynEdit.CommandProcessor(ecLineBreak, '', nil);
|
||||
CheckText('After ecLineBreak', LineEnding, 2);
|
||||
|
||||
end;
|
||||
begin
|
||||
TrimEnabled := True;
|
||||
TrimType := settEditLine;
|
||||
PushBaseName('Trim=EditLine');
|
||||
PushBaseName('InsertMode');
|
||||
InsertFlag := True;
|
||||
DoChecks;
|
||||
PopPushBaseName('OverwriteMode');
|
||||
InsertFlag := False;
|
||||
DoChecks;
|
||||
PopBaseName;
|
||||
|
||||
TrimType := settIgnoreAll;
|
||||
PopPushBaseName('Trim=IgnoreAll');
|
||||
PushBaseName('InsertMode');
|
||||
InsertFlag := True;
|
||||
DoChecks;
|
||||
PopPushBaseName('OverwriteMode');
|
||||
InsertFlag := False;
|
||||
DoChecks;
|
||||
PopBaseName;
|
||||
|
||||
TrimEnabled := False;
|
||||
PopPushBaseName('Trim=Disabled');
|
||||
PushBaseName('InsertMode');
|
||||
InsertFlag := True;
|
||||
DoChecks;
|
||||
PopPushBaseName('OverwriteMode');
|
||||
InsertFlag := False;
|
||||
DoChecks;
|
||||
PopBaseName;
|
||||
|
||||
end;
|
||||
|
||||
|
||||
|
||||
initialization
|
||||
|
||||
RegisterTest(TTestBasicSynEdit);
|
||||
end.
|
||||
|
Loading…
Reference in New Issue
Block a user