mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-04-14 22:00:10 +02:00
codetools: tests: started test for RemoveWithBlock
git-svn-id: trunk@50260 -
This commit is contained in:
parent
cd32c38a07
commit
f8980e1003
2
.gitattributes
vendored
2
.gitattributes
vendored
@ -1031,6 +1031,8 @@ components/codetools/tests/parsertest.lpi svneol=native#text/plain
|
||||
components/codetools/tests/parsertest.lpr svneol=native#text/plain
|
||||
components/codetools/tests/pt_thlp1.pas svneol=native#text/plain
|
||||
components/codetools/tests/pt_thlp2.pas svneol=native#text/plain
|
||||
components/codetools/tests/refactoringtests.pas svneol=native#text/plain
|
||||
components/codetools/tests/rt_explodewith.pas svneol=native#text/plain
|
||||
components/codetools/tests/testcodetools.lpi svneol=native#text/plain
|
||||
components/codetools/tests/testcodetools.lpr svneol=native#text/plain
|
||||
components/codetools/unitdictionary.pas svneol=native#text/plain
|
||||
|
@ -18,7 +18,7 @@
|
||||
./testcodetools --format=plain --suite=TestFindDeclaration_LazTests --filemask=t*.pp
|
||||
./testcodetools --format=plain --suite=TestFindDeclaration_LazTests --filemask=tdefaultproperty1.pp
|
||||
}
|
||||
unit finddeclarationtests;
|
||||
unit FindDeclarationTests;
|
||||
|
||||
{$mode objfpc}{$H+}
|
||||
|
||||
@ -56,21 +56,8 @@ var
|
||||
BugsTestSuite: TTestSuite;
|
||||
FindDeclarationTestSuite: TTestSuite;
|
||||
|
||||
procedure AddToBugsTestSuite(ATest: TTest);
|
||||
procedure AddToFindDeclarationTestSuite(ATestClass: TClass);
|
||||
|
||||
implementation
|
||||
|
||||
procedure AddToBugsTestSuite(ATest: TTest);
|
||||
begin
|
||||
BugsTestSuite.AddTest(ATest);
|
||||
end;
|
||||
|
||||
procedure AddToFindDeclarationTestSuite(ATestClass: TClass);
|
||||
begin
|
||||
FindDeclarationTestSuite.AddTestSuiteFromClass(ATestClass);
|
||||
end;
|
||||
|
||||
{ TTestFindDeclaration }
|
||||
|
||||
procedure TTestFindDeclaration.FindDeclarations(Filename: string);
|
||||
@ -313,9 +300,9 @@ initialization
|
||||
GetTestRegistry.TestName := 'All tests';
|
||||
BugsTestSuite := TTestSuite.Create('Bugs');
|
||||
GetTestRegistry.AddTest(BugsTestSuite);
|
||||
FindDeclarationTestSuite := TTestSuite.Create('Parser');
|
||||
FindDeclarationTestSuite := TTestSuite.Create('FindDeclaration');
|
||||
GetTestRegistry.AddTest(FindDeclarationTestSuite);
|
||||
|
||||
AddToFindDeclarationTestSuite(TTestFindDeclaration);
|
||||
FindDeclarationTestSuite.AddTestSuiteFromClass(TTestFindDeclaration);
|
||||
end.
|
||||
|
||||
|
86
components/codetools/tests/refactoringtests.pas
Normal file
86
components/codetools/tests/refactoringtests.pas
Normal file
@ -0,0 +1,86 @@
|
||||
{
|
||||
Test with:
|
||||
./testcodetools --format=plain --suite=TTestRefactoring
|
||||
./testcodetools --format=plain --suite=TestExplodeWith
|
||||
}
|
||||
unit RefactoringTests;
|
||||
|
||||
{$mode objfpc}{$H+}
|
||||
|
||||
interface
|
||||
|
||||
uses
|
||||
Classes, SysUtils, CodeToolManager, CodeCache, CodeTree, LazLogger,
|
||||
LazFileUtils, fpcunit, testregistry, FindDeclarationTests;
|
||||
|
||||
type
|
||||
|
||||
{ TTestRefactoring }
|
||||
|
||||
TTestRefactoring = class(TTestCase)
|
||||
private
|
||||
published
|
||||
procedure TestExplodeWith;
|
||||
end;
|
||||
|
||||
var
|
||||
RefactoringTestSuite: TTestSuite;
|
||||
|
||||
implementation
|
||||
|
||||
{ TTestRefactoring }
|
||||
|
||||
procedure TTestRefactoring.TestExplodeWith;
|
||||
var
|
||||
Code: TCodeBuffer;
|
||||
Tool: TCodeTool;
|
||||
Node: TCodeTreeNode;
|
||||
CodeXYPos: TCodeXYPosition;
|
||||
ListOfPCodeXYPosition: TFPList;
|
||||
i: Integer;
|
||||
Filename, OldSource: String;
|
||||
begin
|
||||
Filename:=ExpandFileNameUTF8('rt_explodewith.pas');
|
||||
Code:=CodeToolBoss.LoadFile(Filename,true,false);
|
||||
AssertEquals('Load file error: '+Filename,true,Code<>nil);
|
||||
if not CodeToolBoss.Explore(Code,Tool,true) then
|
||||
AssertEquals('Parse error: ','',CodeToolBoss.ErrorMessage);
|
||||
ListOfPCodeXYPosition:=nil;
|
||||
try
|
||||
// collect all With-Blocks
|
||||
Node:=Tool.Tree.Root;
|
||||
while Node<>nil do begin
|
||||
if Node.Desc=ctnWithVariable then begin
|
||||
Tool.CleanPosToCaret(Node.StartPos,CodeXYPos);
|
||||
AddCodePosition(ListOfPCodeXYPosition,CodeXYPos);
|
||||
end;
|
||||
Node:=Node.Next;
|
||||
end;
|
||||
|
||||
for i:=0 to ListOfPCodeXYPosition.Count-1 do begin
|
||||
CodeXYPos:=PCodeXYPosition(ListOfPCodeXYPosition[i])^;
|
||||
debugln(['TTestRefactoring.TestExplodeWith ',dbgs(CodeXYPos)]);
|
||||
OldSource:=Code.Source;
|
||||
try
|
||||
if CodeToolBoss.RemoveWithBlock(Code,CodeXYPos.X,CodeXYPos.Y) then begin
|
||||
// check changes
|
||||
|
||||
end else begin
|
||||
AssertEquals('CodeToolBoss.RemoveWithBlock failed at '+dbgs(CodeXYPos),'',CodeToolBoss.ErrorMessage);
|
||||
end;
|
||||
finally
|
||||
Code.Source:=OldSource;
|
||||
end;
|
||||
end;
|
||||
finally
|
||||
FreeListOfPCodeXYPosition(ListOfPCodeXYPosition);
|
||||
end;
|
||||
end;
|
||||
|
||||
initialization
|
||||
RefactoringTestSuite := TTestSuite.Create('Refactoring');
|
||||
GetTestRegistry.AddTest(RefactoringTestSuite);
|
||||
|
||||
RefactoringTestSuite.AddTestSuiteFromClass(TTestRefactoring);
|
||||
end.
|
||||
|
33
components/codetools/tests/rt_explodewith.pas
Normal file
33
components/codetools/tests/rt_explodewith.pas
Normal file
@ -0,0 +1,33 @@
|
||||
unit rt_explodewith;
|
||||
|
||||
{$mode objfpc}{$H+}
|
||||
|
||||
interface
|
||||
|
||||
uses
|
||||
Classes, SysUtils;
|
||||
|
||||
type
|
||||
|
||||
{ TMyClass }
|
||||
|
||||
TMyClass = class
|
||||
public
|
||||
procedure DoSomething;
|
||||
end;
|
||||
|
||||
implementation
|
||||
|
||||
{ TMyClass }
|
||||
|
||||
procedure TMyClass.DoSomething;
|
||||
var
|
||||
R: TRect;
|
||||
begin
|
||||
R:=Rect(1,2,3,4);
|
||||
with R do
|
||||
{explodewith:R}Left:=4;
|
||||
end;
|
||||
|
||||
end.
|
||||
|
@ -40,7 +40,7 @@
|
||||
<PackageName Value="fpcunitconsolerunner"/>
|
||||
</Item2>
|
||||
</RequiredPackages>
|
||||
<Units Count="9">
|
||||
<Units Count="11">
|
||||
<Unit0>
|
||||
<Filename Value="testcodetools.lpr"/>
|
||||
<IsPartOfProject Value="True"/>
|
||||
@ -48,6 +48,7 @@
|
||||
<Unit1>
|
||||
<Filename Value="finddeclarationtests.pas"/>
|
||||
<IsPartOfProject Value="True"/>
|
||||
<UnitName Value="FindDeclarationTests"/>
|
||||
</Unit1>
|
||||
<Unit2>
|
||||
<Filename Value="fdt_typehelper.pas"/>
|
||||
@ -77,6 +78,15 @@
|
||||
<Filename Value="fdt_with.pas"/>
|
||||
<IsPartOfProject Value="True"/>
|
||||
</Unit8>
|
||||
<Unit9>
|
||||
<Filename Value="refactoringtests.pas"/>
|
||||
<IsPartOfProject Value="True"/>
|
||||
<UnitName Value="RefactoringTests"/>
|
||||
</Unit9>
|
||||
<Unit10>
|
||||
<Filename Value="rt_explodewith.pas"/>
|
||||
<IsPartOfProject Value="True"/>
|
||||
</Unit10>
|
||||
</Units>
|
||||
</ProjectOptions>
|
||||
<CompilerOptions>
|
||||
|
@ -21,7 +21,8 @@ program testcodetools;
|
||||
|
||||
uses
|
||||
Classes, sysutils, consoletestrunner, dom, fpcunit, CodeToolManager,
|
||||
CodeToolsConfig, LazLogger, finddeclarationtests, fdt_classhelper,
|
||||
CodeToolsConfig, LazLogger, finddeclarationtests, RefactoringTests,
|
||||
fdt_classhelper,
|
||||
{$IF FPC_FULLVERSION >= 30101}
|
||||
fdt_typehelper,
|
||||
{$ENDIF}
|
||||
@ -29,7 +30,7 @@ uses
|
||||
{$IFDEF Darwin}
|
||||
fdt_objccategory, fdt_objcclass,
|
||||
{$ENDIF}
|
||||
fdt_basic, fdt_with;
|
||||
fdt_basic, fdt_with, rt_explodewith;
|
||||
|
||||
const
|
||||
ConfigFilename = 'codetools.config';
|
||||
|
Loading…
Reference in New Issue
Block a user