From be474bd00615e26a2c519ca907077eb1f8a21131 Mon Sep 17 00:00:00 2001 From: Mark van Renswoude Date: Wed, 10 Apr 2013 08:25:39 +0000 Subject: [PATCH] Unit test and fix for literal percent characters in NamedFormat --- UnitTests/Units/NamedFormatTest.pas | 62 +++++++++++++++++++++++++++++ UnitTests/X2UtUnitTests.dpr | 3 +- UnitTests/X2UtUnitTests.dproj | 1 + X2UtNamedFormat.pas | 3 +- 4 files changed, 67 insertions(+), 2 deletions(-) create mode 100644 UnitTests/Units/NamedFormatTest.pas diff --git a/UnitTests/Units/NamedFormatTest.pas b/UnitTests/Units/NamedFormatTest.pas new file mode 100644 index 0000000..774eb4a --- /dev/null +++ b/UnitTests/Units/NamedFormatTest.pas @@ -0,0 +1,62 @@ +unit NamedFormatTest; + +interface +uses + TestFramework; + + +type + TNamedFormatTest = class(TTestCase) + published + procedure TestString; + procedure TestNumbers; + procedure TestUnusedKeys; + procedure TestLiteralPercent; + procedure TestLiteralPercentLiteralBracket; + end; + + +implementation +uses + X2UtNamedFormat; + + +{ TNamedFormatTest } +procedure TNamedFormatTest.TestString; +begin + CheckEquals('Key = Value', NamedFormat('%:s = %:s', ['NamedValue', 'Value', + 'NamedKey', 'Key'])); +end; + + +procedure TNamedFormatTest.TestNumbers; +begin + CheckEquals('The answer is, in fact, 42', + NamedFormat('The %:s is, in fact, %:d', ['Answer', 'answer', + 'LifeUniverseEverything', 42])); +end; + + +procedure TNamedFormatTest.TestUnusedKeys; +begin + CheckEquals('Used', NamedFormat('%:s', ['Used', 'Used', + 'NotUsed', 'NotUsed'])); +end; + + +procedure TNamedFormatTest.TestLiteralPercent; +begin + CheckEquals('LIKE ''Test%''', NamedFormat('LIKE ''%:s%%''', ['Value', 'Test'])); +end; + + +procedure TNamedFormatTest.TestLiteralPercentLiteralBracket; +begin + CheckEquals('%:s', ['Value', 'Test'])); +end; + + +initialization + RegisterTest(TNamedFormatTest.Suite); + +end. diff --git a/UnitTests/X2UtUnitTests.dpr b/UnitTests/X2UtUnitTests.dpr index ee10f01..572c1d8 100644 --- a/UnitTests/X2UtUnitTests.dpr +++ b/UnitTests/X2UtUnitTests.dpr @@ -9,7 +9,8 @@ uses PersistTest in 'Units\PersistTest.pas', X2UtSingleInstance in '..\X2UtSingleInstance.pas', X2UtHashes in '..\X2UtHashes.pas', - X2UtHashesVariants in '..\X2UtHashesVariants.pas'; + X2UtHashesVariants in '..\X2UtHashesVariants.pas', + NamedFormatTest in 'Units\NamedFormatTest.pas'; //SettingsTest in 'Units\SettingsTest.pas', //IniParserTest in 'Units\IniParserTest.pas'; diff --git a/UnitTests/X2UtUnitTests.dproj b/UnitTests/X2UtUnitTests.dproj index 89568c0..06f54b1 100644 --- a/UnitTests/X2UtUnitTests.dproj +++ b/UnitTests/X2UtUnitTests.dproj @@ -54,6 +54,7 @@ + \ No newline at end of file diff --git a/X2UtNamedFormat.pas b/X2UtNamedFormat.pas index 149b9e4..13e4ef2 100644 --- a/X2UtNamedFormat.pas +++ b/X2UtNamedFormat.pas @@ -175,7 +175,8 @@ begin currentPos := nameEnd; end; - end; + end else + StreamWriteChar(formatStream, currentPos^); end else StreamWriteChar(formatStream, currentPos^);