SynEdit: TEST for Improve SetTextBetweenPoints and IncPersistentLock(weak)

git-svn-id: trunk@62421 -
This commit is contained in:
martin 2019-12-19 18:04:19 +00:00
parent 3dc16dd61f
commit e1fffd38c7

View File

@ -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);