mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-04-08 09:38:12 +02:00
codetools: test AddProcModifier
git-svn-id: trunk@57918 -
This commit is contained in:
parent
c7d41c8b0d
commit
62b1cabdb9
1
.gitattributes
vendored
1
.gitattributes
vendored
@ -965,6 +965,7 @@ components/codetools/tests/runtestscodetools.lpi svneol=native#text/plain
|
||||
components/codetools/tests/runtestscodetools.lpr svneol=native#text/plain
|
||||
components/codetools/tests/testbasiccodetools.pas svneol=native#text/plain
|
||||
components/codetools/tests/testcfgscript.pas svneol=native#text/plain
|
||||
components/codetools/tests/testchangedeclaration.pas svneol=native#text/plain
|
||||
components/codetools/tests/testcodecompletion.pas svneol=native#text/plain
|
||||
components/codetools/tests/testcompleteblock.pas svneol=native#text/plain
|
||||
components/codetools/tests/testcompreaderwriterpas.pas svneol=native#text/plain
|
||||
|
71
components/codetools/tests/testchangedeclaration.pas
Normal file
71
components/codetools/tests/testchangedeclaration.pas
Normal file
@ -0,0 +1,71 @@
|
||||
unit TestChangeDeclaration;
|
||||
|
||||
{$mode objfpc}{$H+}
|
||||
|
||||
interface
|
||||
|
||||
uses
|
||||
Classes, SysUtils, CodeToolManager, CodeCache, PascalParserTool,
|
||||
LazLogger, LazFileUtils, fpcunit, testregistry,
|
||||
TestFinddeclaration, TestStdCodetools;
|
||||
|
||||
type
|
||||
TTestChangeDeclaration = class(TCustomTestCTStdCodetools)
|
||||
published
|
||||
procedure TestCTAddProcedureModifier;
|
||||
end;
|
||||
|
||||
implementation
|
||||
|
||||
procedure TTestChangeDeclaration.TestCTAddProcedureModifier;
|
||||
|
||||
procedure Test(ProcCode, aModifier, Expected: string);
|
||||
var
|
||||
Code: TCodeBuffer;
|
||||
Src, ProcHead: String;
|
||||
begin
|
||||
Src:='unit TestChangeDeclaration;'+sLineBreak
|
||||
+'interface'+sLineBreak
|
||||
+ProcCode+sLineBreak
|
||||
+'implementation'+sLineBreak
|
||||
+'end.';
|
||||
Code:=CodeToolBoss.CreateFile('TestChangeDeclaration.pas');
|
||||
Code.Source:=Src;
|
||||
if not CodeToolBoss.AddProcModifier(Code,3,3,aModifier) then
|
||||
begin
|
||||
Fail('AddProcModifier failed: '+CodeToolBoss.ErrorMessage);
|
||||
end else begin
|
||||
if not CodeToolBoss.ExtractProcedureHeader(Code,3,3,
|
||||
[phpWithStart,phpWithResultType,phpWithOfObject,phpWithProcModifiers,phpWithComments,phpDoNotAddSemicolon],
|
||||
ProcHead)
|
||||
then
|
||||
Fail('ExtractProcedureHeader failed: '+CodeToolBoss.ErrorMessage);
|
||||
if ProcHead<>Expected then begin
|
||||
writeln('Test ProcCode="',ProcCode,'"');
|
||||
Src:=Code.Source;
|
||||
writeln('SrcSTART:======================');
|
||||
writeln(Src);
|
||||
writeln('SrcEND:========================');
|
||||
AssertEquals('ProcHead',Expected,ProcHead);
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
|
||||
begin
|
||||
// remove first unit
|
||||
Test('procedure DoIt;','overload','procedure DoIt; overload;');
|
||||
Test('procedure DoIt ;','overload','procedure DoIt; overload ;');
|
||||
Test('procedure DoIt ; ;','overload','procedure DoIt; overload ;');
|
||||
Test('procedure DoIt; overload;','overload','procedure DoIt; overload;');
|
||||
Test('procedure DoIt; {$IFDEF FPC}overload{$ENDIF};','overload','procedure DoIt; {$IFDEF FPC}overload{$ENDIF};');
|
||||
Test('procedure DoIt; procedure Bla;','overload','procedure DoIt; overload;');
|
||||
Test(' procedure DoIt;'+sLineBreak+' procedure Bla;',
|
||||
'overload','procedure DoIt; overload;');
|
||||
Test(' procedure DoIt; external name ''doit'';'+sLineBreak+' procedure Bla;',
|
||||
'overload','procedure DoIt; external name ''doit''; overload;');
|
||||
end;
|
||||
|
||||
initialization
|
||||
RegisterTests([TTestChangeDeclaration]);
|
||||
end.
|
||||
|
Loading…
Reference in New Issue
Block a user