mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-04-11 18:08:35 +02:00
codetools: tests for defines
git-svn-id: trunk@29843 -
This commit is contained in:
parent
9d9e320412
commit
621494e9f4
@ -576,13 +576,15 @@ var
|
||||
if MacroNode<>nil then begin
|
||||
// macro found
|
||||
MacroItem:=PStringToStringTreeItem(MacroNode.Data);
|
||||
debugln(['Append MacroName=',MacroItem^.Name,' ',GetIdentifier(@Src[AtomStart])]);
|
||||
MacroValue:=MacroItem^.Value;
|
||||
//debugln(['Append MacroName=',MacroItem^.Name,' Src=',GetIdentifier(@Src[AtomStart]),' Value=',dbgstr(MacroValue)]);
|
||||
// write source in front of macro
|
||||
if AtomStart>FromPos then begin
|
||||
//debugln(['Append source in front of macro=',dbgstr(copy(Src,FromPos,AtomStart-FromPos))]);
|
||||
AddLink(StrStream.Position+1,Code,FromPos);
|
||||
StrStream.Write(Code.Source[FromPos],AtomStart-FromPos);
|
||||
FromPos:=p;
|
||||
StrStream.Write(Src[FromPos],AtomStart-FromPos);
|
||||
end;
|
||||
FromPos:=p;
|
||||
if System.Pos('(',MacroItem^.Name)>0
|
||||
then begin
|
||||
// a macro function
|
||||
@ -614,11 +616,11 @@ var
|
||||
until false;
|
||||
FromPos:=p;
|
||||
end;
|
||||
MacroValue:=MacroItem^.Value;
|
||||
//debugln(['Append Macro found: ',MacroItem^.Name]);
|
||||
if MacroValue<>'' then begin
|
||||
// write macro value
|
||||
AddLink(StrStream.Position+1,nil,0);
|
||||
//debugln(['Append macrovalue=',dbgstr(MacroValue)]);
|
||||
StrStream.Write(MacroValue[1],length(MacroValue));
|
||||
end;
|
||||
end;
|
||||
@ -626,6 +628,7 @@ var
|
||||
end;
|
||||
if FromPos<EndPos then begin
|
||||
AddLink(StrStream.Position+1,Code,FromPos);
|
||||
//debugln(['Append source after macro=',dbgstr(copy(Src,FromPos,EndPos-FromPos))]);
|
||||
StrStream.Write(Src[FromPos],EndPos-FromPos);
|
||||
end;
|
||||
end;
|
||||
|
@ -2,6 +2,8 @@
|
||||
Test with:
|
||||
./runtests --format=plain --suite=TTestCodetoolsH2Pas
|
||||
./runtests --format=plain --suite=TestCTH2PMergeHeaderFiles
|
||||
./runtests --format=plain --suite=TestCTH2PReplaceMacros
|
||||
./runtests --format=plain --suite=TestCTH2PConvertSimpleTypes
|
||||
}
|
||||
unit TestCTH2Pas;
|
||||
|
||||
@ -23,6 +25,8 @@ type
|
||||
protected
|
||||
published
|
||||
procedure TestCTH2PMergeHeaderFiles;
|
||||
procedure TestCTH2PReplaceMacros;
|
||||
procedure TestCTH2PConvertSimpleTypes;
|
||||
end;
|
||||
|
||||
implementation
|
||||
@ -66,6 +70,66 @@ begin
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TTestCodetoolsH2Pas.TestCTH2PReplaceMacros;
|
||||
var
|
||||
Header1: TCodeBuffer;
|
||||
Buffers: TFPList;
|
||||
Merger: TCHeaderFileMerger;
|
||||
|
||||
procedure Check(Msg, Src, ExpectedSrc: string);
|
||||
var
|
||||
NewSrc: String;
|
||||
begin
|
||||
Header1.Source:=Src;
|
||||
Merger.Merge(Buffers,[]);
|
||||
NewSrc:=Trim(Merger.CombinedSource.Source);
|
||||
AssertEquals(Msg,dbgstr(ExpectedSrc),dbgstr(NewSrc));
|
||||
end;
|
||||
|
||||
begin
|
||||
Header1:=CodeToolBoss.CreateFile('header1.h');
|
||||
|
||||
Merger:=TCHeaderFileMerger.Create;
|
||||
Buffers:=TFPList.Create;
|
||||
try
|
||||
Buffers.Add(Header1);
|
||||
// undefine
|
||||
Merger.Macros['remove1']:='';
|
||||
Check('undefine remove1','remove1','');
|
||||
// define
|
||||
Merger.Macros['macro1']:='newvalue';
|
||||
Check('define macro1','macro1','newvalue');
|
||||
// define macro function
|
||||
Merger.Macros['macrofunc1()']:='newvalue';
|
||||
Check('define macrofunc1','macrofunc1(param)','newvalue');
|
||||
// do not replace #define
|
||||
Merger.Macros['macro1']:='newvalue';
|
||||
Check('do not replace macros in #define','#define macro1','#define macro1');
|
||||
Check('do not replace macros in #undef','#undef macro1','#undef macro1');
|
||||
Check('do not replace macros in #ifdef','#ifdef macro1','#ifdef macro1');
|
||||
Check('do not replace macros in #ifndef','#ifndef macro1','#ifndef macro1');
|
||||
finally
|
||||
Buffers.Free;
|
||||
Merger.Free;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TTestCodetoolsH2Pas.TestCTH2PConvertSimpleTypes;
|
||||
var
|
||||
Tool: TH2PasTool;
|
||||
Header1: TCodeBuffer;
|
||||
PasCode: TCodeBuffer;
|
||||
begin
|
||||
Tool:=TH2PasTool.Create;
|
||||
try
|
||||
Header1:=CodeToolBoss.CreateFile('header1.h');
|
||||
PasCode:=CodeToolBoss.CreateFile('header1.pas');
|
||||
|
||||
finally
|
||||
Tool.Free;
|
||||
end;
|
||||
end;
|
||||
|
||||
initialization
|
||||
AddToCodetoolsTestSuite(TTestCodetoolsH2Pas);
|
||||
|
||||
|
@ -24,7 +24,9 @@ uses
|
||||
Classes, consoletestrunner,
|
||||
testglobals, testunits, dom,
|
||||
{Unit needed to set the LCL version and widget set name}
|
||||
LCLVersion, InterfaceBase, Interfaces, TestCTXMLFixFragments, TestCTH2Pas;
|
||||
LCLVersion, InterfaceBase, Interfaces,
|
||||
// testing codetools
|
||||
TestCTXMLFixFragments, TestCTRangeScan, TestCTH2Pas;
|
||||
|
||||
type
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user