mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-08-12 05:36:22 +02:00
SynEdit: TEST for Improve SetTextBetweenPoints and IncPersistentLock(weak)
git-svn-id: trunk@62421 -
This commit is contained in:
parent
3dc16dd61f
commit
e1fffd38c7
@ -1542,6 +1542,7 @@ end;
|
||||
procedure TTestSynSelection.MoveOnSetTextBeween;
|
||||
var
|
||||
TheText: TStringArray;
|
||||
TheInsert: String;
|
||||
|
||||
function GetTheText: TStringArray;
|
||||
begin
|
||||
@ -1566,7 +1567,8 @@ var
|
||||
SetCaretAndSel(SelBx, SelBy, SelEx,SelEy);
|
||||
s := SynEdit.SelAvail;
|
||||
p := Point(Textx,TextY);
|
||||
SynEdit.SetTextBetweenPoints(p, p, 'X', aFlags, aCaretMode);
|
||||
SynEdit.SetTextBetweenPoints(p, p, TheInsert, aFlags, aCaretMode);
|
||||
debugln(['Caret ', dbgs(SynEdit.CaretXY), ' Sel ', dbgs(SynEdit.BlockBegin), ' ',dbgs(SynEdit.BlockEnd)]);
|
||||
|
||||
TestIsBlock('After Replace', ExpBx,ExpBy, ExpEx,ExpEy);
|
||||
|
||||
@ -1578,11 +1580,44 @@ var
|
||||
SynEdit.Redo;
|
||||
TestIsBlock('After Redo', ExpBx,ExpBy, ExpEx,ExpEy);
|
||||
end;
|
||||
|
||||
procedure DoTest(AName: String;
|
||||
SelBX, SelBY, SelEX, SelEY,
|
||||
TextX, TextY, TextX2, TextY2,
|
||||
ExpBx, ExpBy, ExpEx, ExpEy: Integer;
|
||||
aFlags: TSynEditTextFlags = []; aCaretMode: TSynCaretAdjustMode = scamIgnore);
|
||||
var
|
||||
s: Boolean;
|
||||
p, p2: TPoint;
|
||||
begin
|
||||
PopPushBaseName(AName);
|
||||
SetLines(TheText);
|
||||
if Length(TheText) = 0 then SynEdit.Lines.Clear;
|
||||
|
||||
SetCaretAndSel(SelBx, SelBy, SelEx,SelEy);
|
||||
s := SynEdit.SelAvail;
|
||||
p := Point(Textx,TextY);
|
||||
p2 := Point(Textx2,TextY2);
|
||||
SynEdit.SetTextBetweenPoints(p, p2, TheInsert, aFlags, aCaretMode);
|
||||
debugln(['Caret ', dbgs(SynEdit.CaretXY), ' Sel ', dbgs(SynEdit.BlockBegin), ' ',dbgs(SynEdit.BlockEnd)]);
|
||||
|
||||
TestIsBlock('After Replace', ExpBx,ExpBy, ExpEx,ExpEy);
|
||||
|
||||
SynEdit.Undo;
|
||||
if s
|
||||
then TestIsBlock('After Undo', SelBx, SelBy, SelEx,SelEy)
|
||||
else TestIsNoBlock('After Undo');
|
||||
|
||||
SynEdit.Redo;
|
||||
TestIsBlock('After Redo', ExpBx,ExpBy, ExpEx,ExpEy);
|
||||
end;
|
||||
|
||||
var
|
||||
p: TPoint;
|
||||
begin
|
||||
PushBaseName('');
|
||||
TheText := GetTheText;
|
||||
TheInsert := 'X';
|
||||
|
||||
DoTest('NO Flag - BlockBegin', 2,1, 4,1, 2,1, -1,-1,-1,-1, [], scamAdjust);
|
||||
DoTest('NO Flag - BlockEnd', 2,1, 4,1, 4,1, -1,-1,-1,-1, [], scamAdjust);
|
||||
@ -1596,13 +1631,24 @@ begin
|
||||
DoTest('setPersistentBlock - BlockEnd', 2,1, 4,1, 4,1, 2,1, 5,1, [setPersistentBlock], scamAdjust); // extended block
|
||||
DoTest('setPersistentBlock - Empty', 2,1, 2,1, 2,1, -1,1,-1,1, [setPersistentBlock], scamAdjust); // adjusted/moved block
|
||||
|
||||
DoTest('setMoveBlock - BlockBegin', 2,1, 4,1, 2,1, 3,1, 5,1, [setMoveBlock], scamAdjust);
|
||||
DoTest('setMoveBlock - BlockEnd', 2,1, 4,1, 4,1, 2,1, 4,1, [setMoveBlock], scamIgnore); // so caret will not destroy selection
|
||||
DoTest('setMoveBlock - BlockBegin', 2,1, 4,1, 2,1, 3,1, 5,1, [setMoveBlock], scamAdjust);
|
||||
DoTest('setMoveBlock - BlockBegin 1-EOL', 1,1, 9,1, 1,1, 2,1,10,1, [setMoveBlock], scamAdjust); // start to end of line
|
||||
DoTest('setMoveBlock - BlockBegin Line', 1,1, 1,2, 1,1, 2,1, 1,2, [setMoveBlock], scamAdjust); // full line with eol
|
||||
DoTest('setMoveBlock - BlockBegin Line+', 1,1, 2,2, 1,1, 2,1, 2,2, [setMoveBlock], scamAdjust); // full line, and start of next
|
||||
DoTest('setMoveBlock - BlockEnd', 2,1, 4,1, 4,1, 2,1, 4,1, [setMoveBlock], scamAdjust); // so caret will not destroy selection
|
||||
DoTest('setMoveBlock - BlockEnd 1-EOL', 1,1, 9,1, 9,1, 1,1, 9,1, [setMoveBlock], scamAdjust);
|
||||
DoTest('setMoveBlock - BlockEnd Line', 1,1, 1,2, 1,2, 1,1, 1,2, [setMoveBlock], scamAdjust); // full line with eol
|
||||
DoTest('setMoveBlock - BlockEnd Line+', 1,1, 2,2, 2,2, 1,1, 2,2, [setMoveBlock], scamAdjust); // full line, and start of next
|
||||
DoTest('setMoveBlock - Empty', 2,1, 2,1, 2,1, -1,1,-1,1, [setMoveBlock], scamAdjust);
|
||||
|
||||
DoTest('setExtendBlock - BlockBegin', 2,1, 4,1, 2,1, 2,1, 5,1, [setExtendBlock], scamAdjust);
|
||||
DoTest('setExtendBlock - BlockEnd', 2,1, 4,1, 4,1, 2,1, 5,1, [setExtendBlock], scamAdjust);
|
||||
//TODO: should this create a selection?
|
||||
DoTest('setExtendBlock - BlockBegin', 2,1, 4,1, 2,1, 2,1, 5,1, [setExtendBlock], scamAdjust);
|
||||
DoTest('setExtendBlock - BlockBegin 1-EOL', 1,1, 9,1, 1,1, 1,1,10,1, [setExtendBlock], scamAdjust); // start to end of line
|
||||
DoTest('setExtendBlock - BlockBegin Line', 1,1, 1,2, 1,1, 1,1, 1,2, [setExtendBlock], scamAdjust); // full line with eol
|
||||
DoTest('setExtendBlock - BlockBegin Line+', 1,1, 2,2, 1,1, 1,1, 2,2, [setExtendBlock], scamAdjust); // full line, and start of next
|
||||
DoTest('setExtendBlock - BlockEnd', 2,1, 4,1, 4,1, 2,1, 5,1, [setExtendBlock], scamAdjust);
|
||||
DoTest('setExtendBlock - BlockEnd 1-EOL', 1,1, 9,1, 9,1, 1,1,10,1, [setExtendBlock], scamAdjust);
|
||||
DoTest('setExtendBlock - BlockEnd Line', 1,1, 1,2, 1,2, 1,1, 2,2, [setExtendBlock], scamAdjust); // full line with eol
|
||||
DoTest('setExtendBlock - BlockEnd Line+', 1,1, 2,2, 2,2, 1,1, 3,2, [setExtendBlock], scamAdjust); // full line, and start of next
|
||||
DoTest('setExtendBlock - Empty', 2,1, 2,1, 2,1, -1,1, -1,1, [setExtendBlock], scamAdjust);
|
||||
|
||||
// Backward
|
||||
@ -1617,13 +1663,93 @@ begin
|
||||
DoTest('setPersistentBlock - BlockBegin', 4,1, 2,1, 2,1, 5,1, 3,1, [setPersistentBlock], scamAdjust); // adjusted/moved block
|
||||
DoTest('setPersistentBlock - BlockEnd', 4,1, 2,1, 4,1, 5,1, 2,1, [setPersistentBlock], scamAdjust); // extended block
|
||||
|
||||
DoTest('setMoveBlock - BlockBegin', 4,1, 2,1, 2,1, 5,1, 3,1, [setMoveBlock], scamAdjust);
|
||||
DoTest('setMoveBlock - BlockEnd', 4,1, 2,1, 4,1, 2,1, 4,1, [setMoveBlock], scamIgnore); // so caret will not destroy selection
|
||||
DoTest('setMoveBlock - BlockBegin', 4,1, 2,1, 2,1, 5,1, 3,1, [setMoveBlock], scamAdjust);
|
||||
DoTest('setMoveBlock - BlockBegin 1-EOL', 9,1, 1,1, 1,1, 10,1, 2,1, [setMoveBlock], scamAdjust);
|
||||
DoTest('setMoveBlock - BlockBegin Line', 1,2, 1,1, 1,1, 1,2, 2,1, [setMoveBlock], scamAdjust); // full line with eol
|
||||
DoTest('setMoveBlock - BlockBegin Line+', 2,2, 1,1, 1,1, 2,2, 2,1, [setMoveBlock], scamAdjust); // full line, and start of next
|
||||
DoTest('setMoveBlock - BlockEnd', 4,1, 2,1, 4,1, 2,1, 4,1, [setMoveBlock], scamAdjust); // so caret will not destroy selection
|
||||
DoTest('setMoveBlock - BlockEnd 1-EOL', 9,1, 1,1, 9,1, 9,1, 1,1, [setMoveBlock], scamAdjust);
|
||||
DoTest('setMoveBlock - BlockEnd Line', 1,2, 1,1, 1,2, 1,2, 1,1, [setMoveBlock], scamAdjust);
|
||||
DoTest('setMoveBlock - BlockEnd Line+', 2,2, 1,1, 2,2, 2,2, 1,1, [setMoveBlock], scamAdjust);
|
||||
|
||||
DoTest('setExtendBlock - BlockBegin', 4,1, 2,1, 2,1, 5,1, 2,1, [setExtendBlock], scamBegin);
|
||||
DoTest('setExtendBlock - BlockEnd', 4,1, 2,1, 4,1, 5,1, 2,1, [setExtendBlock], scamAdjust);
|
||||
DoTest('setExtendBlock - BlockBegin', 4,1, 2,1, 2,1, 5,1, 2,1, [setExtendBlock], scamAdjust);
|
||||
DoTest('setExtendBlock - BlockBegin 1-EOL', 9,1, 1,1, 1,1, 10,1, 1,1, [setExtendBlock], scamAdjust); // start to end of line
|
||||
DoTest('setExtendBlock - BlockBegin Line', 1,2, 1,1, 1,1, 1,2, 1,1, [setExtendBlock], scamAdjust); // full line with eol
|
||||
DoTest('setExtendBlock - BlockBegin Line+', 2,2, 1,1, 1,1, 2,2, 1,1, [setExtendBlock], scamAdjust); // full line, and start of next
|
||||
DoTest('setExtendBlock - BlockEnd', 4,1, 2,1, 4,1, 5,1, 2,1, [setExtendBlock], scamAdjust);
|
||||
DoTest('setExtendBlock - BlockEnd 1-EOL', 9,1, 1,1, 9,1, 10,1, 1,1, [setExtendBlock], scamAdjust);
|
||||
DoTest('setExtendBlock - BlockEnd Line', 1,2, 1,1, 1,2, 2,2, 1,1, [setExtendBlock], scamAdjust); // full line with eol
|
||||
DoTest('setExtendBlock - BlockEnd Line+', 2,2, 1,1, 2,2, 3,2, 1,1, [setExtendBlock], scamAdjust); // full line, and start of next
|
||||
|
||||
TheText := nil;
|
||||
TheInsert := LineEnding; // insert a new line
|
||||
PopPushBaseName('CR');
|
||||
DoTest('setMoveBlock - BlockBegin', 2,1, 4,1, 2,1, 1,2, 3,2, [setMoveBlock], scamAdjust);
|
||||
DoTest('setMoveBlock - BlockBegin 1-EOL', 1,1, 9,1, 1,1, 1,2, 9,2, [setMoveBlock], scamAdjust); // start to end of line
|
||||
DoTest('setMoveBlock - BlockBegin Line', 1,1, 1,2, 1,1, 1,2, 1,3, [setMoveBlock], scamAdjust); // full line with eol
|
||||
DoTest('setMoveBlock - BlockBegin Line+', 1,1, 2,2, 1,1, 1,2, 2,3, [setMoveBlock], scamAdjust); // full line, and start of next
|
||||
DoTest('setMoveBlock - BlockEnd', 2,1, 4,1, 4,1, 2,1, 4,1, [setMoveBlock], scamAdjust); // so caret will not destroy selection
|
||||
DoTest('setMoveBlock - BlockEnd 1-EOL', 1,1, 9,1, 9,1, 1,1, 9,1, [setMoveBlock], scamAdjust);
|
||||
DoTest('setMoveBlock - BlockEnd Line', 1,1, 1,2, 1,2, 1,1, 1,2, [setMoveBlock], scamAdjust); // full line with eol
|
||||
DoTest('setMoveBlock - BlockEnd Line+', 1,1, 2,2, 2,2, 1,1, 2,2, [setMoveBlock], scamAdjust); // full line, and start of next
|
||||
DoTest('setMoveBlock - Empty', 2,1, 2,1, 2,1, -1,1,-1,1, [setMoveBlock], scamAdjust);
|
||||
|
||||
DoTest('setExtendBlock - BlockBegin', 2,1, 4,1, 2,1, 2,1, 3,2, [setExtendBlock], scamAdjust);
|
||||
DoTest('setExtendBlock - BlockBegin 1-EOL', 1,1, 9,1, 1,1, 1,1, 9,2, [setExtendBlock], scamAdjust); // start to end of line
|
||||
DoTest('setExtendBlock - BlockBegin Line', 1,1, 1,2, 1,1, 1,1, 1,3, [setExtendBlock], scamAdjust); // full line with eol
|
||||
DoTest('setExtendBlock - BlockBegin Line+', 1,1, 2,2, 1,1, 1,1, 2,3, [setExtendBlock], scamAdjust); // full line, and start of next
|
||||
DoTest('setExtendBlock - BlockEnd', 2,1, 4,1, 4,1, 2,1, 1,2, [setExtendBlock], scamAdjust);
|
||||
DoTest('setExtendBlock - BlockEnd 1-EOL', 1,1, 9,1, 9,1, 1,1, 1,2, [setExtendBlock], scamAdjust);
|
||||
DoTest('setExtendBlock - BlockEnd Line', 1,1, 1,2, 1,2, 1,1, 1,3, [setExtendBlock], scamAdjust); // full line with eol
|
||||
DoTest('setExtendBlock - BlockEnd Line+', 1,1, 2,2, 2,2, 1,1, 1,3, [setExtendBlock], scamAdjust); // full line, and start of next
|
||||
DoTest('setExtendBlock - Empty', 2,1, 2,1, 2,1, -1,1, -1,1, [setExtendBlock], scamAdjust);
|
||||
|
||||
// Backward // new line
|
||||
PopPushBaseName('CR Backward');
|
||||
DoTest('setMoveBlock - BlockBegin', 4,1, 2,1, 2,1, 3,2, 1,2, [setMoveBlock], scamAdjust);
|
||||
DoTest('setMoveBlock - BlockBegin 1-EOL', 9,1, 1,1, 1,1, 9,2, 1,2, [setMoveBlock], scamAdjust);
|
||||
DoTest('setMoveBlock - BlockBegin Line', 1,2, 1,1, 1,1, 1,3, 1,2, [setMoveBlock], scamAdjust); // full line with eol
|
||||
DoTest('setMoveBlock - BlockBegin Line+', 2,2, 1,1, 1,1, 2,3, 1,2, [setMoveBlock], scamAdjust); // full line, and start of next
|
||||
DoTest('setMoveBlock - BlockEnd', 4,1, 2,1, 4,1, 4,1, 2,1, [setMoveBlock], scamAdjust); // so caret will not destroy selection
|
||||
DoTest('setMoveBlock - BlockEnd 1-EOL', 9,1, 1,1, 9,1, 9,1, 1,1, [setMoveBlock], scamAdjust);
|
||||
DoTest('setMoveBlock - BlockEnd Line', 1,2, 1,1, 1,2, 1,2, 1,1, [setMoveBlock], scamAdjust);
|
||||
DoTest('setMoveBlock - BlockEnd Line+', 2,2, 1,1, 2,2, 2,2, 1,1, [setMoveBlock], scamAdjust);
|
||||
|
||||
DoTest('setExtendBlock - BlockBegin', 4,1, 2,1, 2,1, 3,2, 2,1, [setExtendBlock], scamAdjust);
|
||||
DoTest('setExtendBlock - BlockBegin 1-EOL', 9,1, 1,1, 1,1, 9,2, 1,1, [setExtendBlock], scamAdjust); // start to end of line
|
||||
DoTest('setExtendBlock - BlockBegin Line', 1,2, 1,1, 1,1, 1,3, 1,1, [setExtendBlock], scamAdjust); // full line with eol
|
||||
DoTest('setExtendBlock - BlockBegin Line+', 2,2, 1,1, 1,1, 2,3, 1,1, [setExtendBlock], scamAdjust); // full line, and start of next
|
||||
DoTest('setExtendBlock - BlockEnd', 4,1, 2,1, 4,1, 1,2, 2,1, [setExtendBlock], scamAdjust);
|
||||
DoTest('setExtendBlock - BlockEnd 1-EOL', 9,1, 1,1, 9,1, 1,2, 1,1, [setExtendBlock], scamAdjust);
|
||||
DoTest('setExtendBlock - BlockEnd Line', 1,2, 1,1, 1,2, 1,3, 1,1, [setExtendBlock], scamAdjust); // full line with eol
|
||||
DoTest('setExtendBlock - BlockEnd Line+', 2,2, 1,1, 2,2, 1,3, 1,1, [setExtendBlock], scamAdjust); // full line, and start of next
|
||||
|
||||
TheInsert := LineEnding+'X'; // insert a new line + 'X'
|
||||
PopPushBaseName('CR X');
|
||||
DoTest('setMoveBlock - BlockBegin Line', 1,1, 1,2, 1,1, 2,2, 1,3, [setMoveBlock], scamAdjust); // full line with eol
|
||||
DoTest('setMoveBlock - BlockEnd Line', 1,1, 1,2, 1,2, 1,1, 1,2, [setMoveBlock], scamAdjust); // full line with eol
|
||||
DoTest('setExtendBlock - BlockBegin Line', 1,1, 1,2, 1,1, 1,1, 1,3, [setExtendBlock], scamAdjust); // full line with eol
|
||||
DoTest('setExtendBlock - BlockEnd Line', 1,1, 1,2, 1,2, 1,1, 2,3, [setExtendBlock], scamAdjust); // full line with eol
|
||||
PopPushBaseName('CR X Backward');
|
||||
DoTest('setMoveBlock - BlockBegin Line', 1,2, 1,1, 1,1, 1,3, 2,2, [setMoveBlock], scamAdjust); // full line with eol
|
||||
DoTest('setMoveBlock - BlockEnd Line', 1,2, 1,1, 1,2, 1,2, 1,1, [setMoveBlock], scamAdjust);
|
||||
DoTest('setExtendBlock - BlockBegin Line', 1,2, 1,1, 1,1, 1,3, 1,1, [setExtendBlock], scamAdjust); // full line with eol
|
||||
DoTest('setExtendBlock - BlockEnd Line', 1,2, 1,1, 1,2, 2,3, 1,1, [setExtendBlock], scamAdjust); // full line with eol
|
||||
|
||||
TheInsert := ''; // delete
|
||||
PopPushBaseName('delete');
|
||||
DoTest('setMoveBlock - BlockBegin A', 2,1, 6,1, 2,1, 3,1, 2,1, 5,1, [setMoveBlock], scamAdjust);
|
||||
DoTest('setMoveBlock - BlockBegin B', 2,1, 6,1, 1,1, 2,1, 1,1, 5,1, [setMoveBlock], scamAdjust);
|
||||
DoTest('setMoveBlock - BlockEnd A', 2,1, 6,1, 5,1, 6,1, 2,1, 5,1, [setMoveBlock], scamAdjust); // so caret will not destroy selection
|
||||
DoTest('setMoveBlock - BlockEnd B', 2,1, 6,1, 6,1, 7,1, 2,1, 6,1, [setMoveBlock], scamAdjust); // so caret will not destroy selection
|
||||
|
||||
DoTest('setExtendBlock - BlockBegin A', 2,1, 6,1, 2,1, 3,1, 2,1, 5,1, [setExtendBlock], scamAdjust);
|
||||
DoTest('setExtendBlock - BlockBegin B', 2,1, 6,1, 1,1, 2,1, 1,1, 5,1, [setExtendBlock], scamAdjust);
|
||||
DoTest('setExtendBlock - BlockEnd A', 2,1, 6,1, 5,1, 6,1, 2,1, 5,1, [setExtendBlock], scamAdjust); // so caret will not destroy selection
|
||||
DoTest('setExtendBlock - BlockEnd B', 2,1, 6,1, 6,1, 7,1, 2,1, 6,1, [setExtendBlock], scamAdjust); // so caret will not destroy selection
|
||||
|
||||
|
||||
TheText := nil; // empty text
|
||||
TheInsert := 'X';
|
||||
PopPushBaseName('syn clear');
|
||||
DoTest('setMoveBlock - Empty', 1,1, 1,1, 1,1, -1,1,-1,1, [setMoveBlock], scamAdjust);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user