mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-04-07 04:18:48 +02:00
tests: SimpleFormat
git-svn-id: trunk@47020 -
This commit is contained in:
parent
e13175eeb4
commit
bedd8d3376
@ -43,7 +43,7 @@ uses
|
||||
Classes, SysUtils, strutils, contnrs, LCLProc, Forms, Controls, Buttons,
|
||||
Dialogs, FileUtil, Laz2_XMLCfg, lazutf8classes, LazFileUtils, LazFileCache,
|
||||
LazLogger, Graphics, ComCtrls, ExtCtrls, StdCtrls, DefineTemplates,
|
||||
CodeToolManager, TransferMacros, MacroDefIntf, GDBMIDebugger,
|
||||
CodeToolManager, FileProcs, TransferMacros, MacroDefIntf, GDBMIDebugger,
|
||||
DbgIntfDebuggerBase, LazarusIDEStrConsts, LazConf, EnvironmentOpts, IDEProcs,
|
||||
AboutFrm, IDETranslations, InitialSetupProc;
|
||||
|
||||
|
@ -34,8 +34,8 @@ interface
|
||||
uses
|
||||
Classes, SysUtils, strutils, LazFileCache, LazUTF8Classes, LazFileUtils,
|
||||
LazLoggerBase, LazUTF8, Laz2_XMLCfg, LazLogger, DefineTemplates,
|
||||
CodeToolManager, LazarusIDEStrConsts, LazConf, EnvironmentOpts, IDEProcs,
|
||||
contnrs;
|
||||
CodeToolManager, FileProcs, LazarusIDEStrConsts, LazConf, EnvironmentOpts,
|
||||
IDEProcs, contnrs;
|
||||
|
||||
type
|
||||
TSDFilenameQuality = (
|
||||
@ -106,7 +106,6 @@ function GetValueFromSecondaryConfig(OptionFilename, Path: string): string;
|
||||
function GetValueFromIDEConfig(OptionFilename, Path: string): string;
|
||||
|
||||
function SafeFormat(const Fmt: String; const Args: Array of const): String;
|
||||
function SimpleFormat(const Fmt: String; const Args: Array of const): String;
|
||||
|
||||
implementation
|
||||
|
||||
@ -912,44 +911,6 @@ begin
|
||||
Result:=SimpleFormat(Fmt,Args);
|
||||
end;
|
||||
|
||||
function SimpleFormat(const Fmt: String; const Args: array of const): String;
|
||||
var
|
||||
p: Integer;
|
||||
i: Integer;
|
||||
s: String;
|
||||
begin
|
||||
Result:=Fmt;
|
||||
p:=1;
|
||||
for i:=Low(Args) to High(Args) do
|
||||
begin
|
||||
case Args[i].VType of
|
||||
vtString: s:=Args[i].VString^;
|
||||
vtAnsiString: s:=AnsiString(Args[i].VAnsiString);
|
||||
vtChar: s:=Args[i].VChar;
|
||||
else continue;
|
||||
end;
|
||||
while (p<length(Result)) do begin
|
||||
if (Result[p]='%') then
|
||||
begin
|
||||
if (Result[p+1]='s') then
|
||||
break
|
||||
else
|
||||
inc(p,2);
|
||||
end else
|
||||
inc(p);
|
||||
end;
|
||||
if p<length(Result) then begin
|
||||
// found %s => replace
|
||||
ReplaceSubstring(Result,p,2,s);
|
||||
inc(p,length(s));
|
||||
end else begin
|
||||
// missing %s => append
|
||||
Result+=', '+s;
|
||||
p:=length(s)+1;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
|
||||
{ TSDFileInfoList }
|
||||
|
||||
function TSDFileInfoList.AddNewItem(aFilename, aCaption: string): TSDFileInfo;
|
||||
|
@ -8,6 +8,7 @@
|
||||
./runtests --format=plain --suite=TestCompareTextIgnoringSpace
|
||||
./runtests --format=plain --suite=TestGuessIndentSize
|
||||
./runtests --format=plain --suite=TestReindent
|
||||
./runtests --format=plain --suite=TestSimpleFormat
|
||||
}
|
||||
unit TestBasicCodetools;
|
||||
|
||||
@ -31,6 +32,7 @@ type
|
||||
procedure TestCompareTextIgnoringSpace;
|
||||
procedure TestGuessIndentSize;
|
||||
procedure TestReIndent;
|
||||
procedure TestSimpleFormat;
|
||||
end;
|
||||
|
||||
implementation
|
||||
@ -215,6 +217,29 @@ begin
|
||||
t('A'#10' B'#10,2,4, 3,0,'A'#10' B'#10);
|
||||
end;
|
||||
|
||||
procedure TTestBasicCodeTools.TestSimpleFormat;
|
||||
|
||||
procedure t(const Fmt: string; Args: array of const; const Expected: string);
|
||||
var
|
||||
Actual: String;
|
||||
begin
|
||||
Actual:=SimpleFormat(Fmt,Args);
|
||||
if Expected=Actual then exit;
|
||||
writeln(dbgsDiff(Expected,Actual));
|
||||
AssertEquals('"'+DbgStr(Fmt)+'"('+dbgs(High(Args)-Low(Args)+1)+')',true,false);
|
||||
end;
|
||||
|
||||
begin
|
||||
t('A',['Foo'],'A,Foo');
|
||||
t('A%sB',['Foo'],'AFooB');
|
||||
t('A%sB%sC',['Foo'],'AFooB%sC');
|
||||
t('A%sB',['Foo','Bar'],'AFooB,Bar');
|
||||
t('A%0B',['Foo','Bar'],'AFooB,Bar');
|
||||
t('A%1B',['Foo','Bar'],'ABarB,Foo');
|
||||
t('A%1%0B',['Foo','Bar'],'ABarFooB');
|
||||
t('A%1:s%0:sB',['Foo','Bar'],'ABarFooB');
|
||||
end;
|
||||
|
||||
initialization
|
||||
AddToCodetoolsTestSuite(TTestBasicCodeTools);
|
||||
|
||||
|
@ -66,6 +66,7 @@ begin
|
||||
AssertEquals('last multi','adef',r('abc',2,2,'def'));
|
||||
AssertEquals('middle chars same','abcde',r('abcde',2,3,'bcd'));
|
||||
AssertEquals('middle chars shorten','axe',r('abcde',2,3,'x'));
|
||||
AssertEquals('after chars','abcx',r('abc',4,3,'x'));
|
||||
end;
|
||||
|
||||
procedure TTestLazUtils.TestSplitCmdLineParams;
|
||||
|
@ -48,11 +48,7 @@
|
||||
</Checks>
|
||||
</CodeGeneration>
|
||||
<Other>
|
||||
<CompilerMessages>
|
||||
<UseMsgFile Value="True"/>
|
||||
</CompilerMessages>
|
||||
<CustomOptions Value="-dNoSemiAutomatedTests"/>
|
||||
<CompilerPath Value="$(CompPath)"/>
|
||||
</Other>
|
||||
</CompilerOptions>
|
||||
</Item2>
|
||||
@ -90,37 +86,30 @@
|
||||
<Unit0>
|
||||
<Filename Value="runtests.lpr"/>
|
||||
<IsPartOfProject Value="True"/>
|
||||
<UnitName Value="runtests"/>
|
||||
</Unit0>
|
||||
<Unit1>
|
||||
<Filename Value="testlpi.pas"/>
|
||||
<IsPartOfProject Value="True"/>
|
||||
<UnitName Value="TestLpi"/>
|
||||
</Unit1>
|
||||
<Unit2>
|
||||
<Filename Value="bugtestcase.pas"/>
|
||||
<IsPartOfProject Value="True"/>
|
||||
<UnitName Value="BugTestCase"/>
|
||||
</Unit2>
|
||||
<Unit3>
|
||||
<Filename Value="testglobals.pas"/>
|
||||
<IsPartOfProject Value="True"/>
|
||||
<UnitName Value="testglobals"/>
|
||||
</Unit3>
|
||||
<Unit4>
|
||||
<Filename Value="lcltests\testunicode.pas"/>
|
||||
<IsPartOfProject Value="True"/>
|
||||
<UnitName Value="TestUnicode"/>
|
||||
</Unit4>
|
||||
<Unit5>
|
||||
<Filename Value="testunits.pas"/>
|
||||
<IsPartOfProject Value="True"/>
|
||||
<UnitName Value="testunits"/>
|
||||
</Unit5>
|
||||
<Unit6>
|
||||
<Filename Value="lcltests\testpen.pas"/>
|
||||
<IsPartOfProject Value="True"/>
|
||||
<UnitName Value="TestPen"/>
|
||||
</Unit6>
|
||||
<Unit7>
|
||||
<Filename Value="lcltests\testtextstrings.pas"/>
|
||||
@ -135,17 +124,14 @@
|
||||
<Unit9>
|
||||
<Filename Value="lazutils\testlazutils.pas"/>
|
||||
<IsPartOfProject Value="True"/>
|
||||
<UnitName Value="TestLazUtils"/>
|
||||
</Unit9>
|
||||
<Unit10>
|
||||
<Filename Value="codetoolstests\testctxmlfixfragments.pas"/>
|
||||
<IsPartOfProject Value="True"/>
|
||||
<UnitName Value="TestCTXMLFixFragments"/>
|
||||
</Unit10>
|
||||
<Unit11>
|
||||
<Filename Value="codetoolstests\testcfgscript.pas"/>
|
||||
<IsPartOfProject Value="True"/>
|
||||
<UnitName Value="TestCfgScript"/>
|
||||
</Unit11>
|
||||
<Unit12>
|
||||
<Filename Value="codetoolstests\teststdcodetools.pas"/>
|
||||
@ -155,22 +141,18 @@
|
||||
<Unit13>
|
||||
<Filename Value="lazutils\testlazxml.pas"/>
|
||||
<IsPartOfProject Value="True"/>
|
||||
<UnitName Value="TestLazXML"/>
|
||||
</Unit13>
|
||||
<Unit14>
|
||||
<Filename Value="lazutils\testavglvltree.pas"/>
|
||||
<IsPartOfProject Value="True"/>
|
||||
<UnitName Value="TestAvgLvlTree"/>
|
||||
</Unit14>
|
||||
<Unit15>
|
||||
<Filename Value="codetoolstests\testmethodjumptool.pas"/>
|
||||
<IsPartOfProject Value="True"/>
|
||||
<UnitName Value="TestMethodJumpTool"/>
|
||||
</Unit15>
|
||||
<Unit16>
|
||||
<Filename Value="lazutils\testlconvencoding.pas"/>
|
||||
<IsPartOfProject Value="True"/>
|
||||
<UnitName Value="TestLConvEncoding"/>
|
||||
</Unit16>
|
||||
</Units>
|
||||
</ProjectOptions>
|
||||
@ -206,11 +188,7 @@
|
||||
</Checks>
|
||||
</CodeGeneration>
|
||||
<Other>
|
||||
<CompilerMessages>
|
||||
<UseMsgFile Value="True"/>
|
||||
</CompilerMessages>
|
||||
<CustomOptions Value="-dNoSemiAutomatedTests"/>
|
||||
<CompilerPath Value="$(CompPath)"/>
|
||||
</Other>
|
||||
</CompilerOptions>
|
||||
</CONFIG>
|
||||
|
Loading…
Reference in New Issue
Block a user