[JEDI.NET-commits] nunit/source Jedi.System.SourceVersioning.NUnit.pas,NONE,1.1 Jedi.System.Strings.
Status: Pre-Alpha
Brought to you by:
jedi_mbe
From: Marcel B. <jed...@us...> - 2005-01-22 15:13:02
|
Update of /cvsroot/jedidotnet/nunit/source In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv14975/nunit/source Modified Files: Jedi.System.Strings.NUnit.pas Added Files: Jedi.System.SourceVersioning.NUnit.pas Log Message: * Added Jedi.System.SourceVersioning test-sets * Update Jedi.System.Strings test-sets to include escaped-string tests. --- NEW FILE: Jedi.System.SourceVersioning.NUnit.pas --- unit Jedi.System.SourceVersioning.NUnit; interface {$REGION 'interface uses'} uses Jedi.System.SourceVersioning, NUnit.Framework; {$ENDREGION} {$REGION 'Attribute test-set'} type [TestFixture] Attributes = class {$REGION 'Constructor'} strict private class constructor Create; {$ENDREGION} {$REGION 'BaseAttribute test cases'} strict protected const BaseTest1SourceIn = 'dummy/TestFile.cs'; const BaseTest1Revision = '1.0.3'; const BaseTest1Date: DateTime = DateTime.Create(2003, 3, 16, 19, 12, 34, 0); const BaseTest2SourceIn = 'dummy\TestFile2.vb'; const BaseTest2Revision = '1.1'; const BaseTest2Date: DateTime = DateTime.Create(2003, 11, 23, 23, 45, 12, 0); class var BaseTest1SourceOut: string; class var BaseTest2SourceOut: string; {$ENDREGION} {$REGION 'CVSBasedAttribute test cases'} strict protected const CVSBasedTest1SourceBase = 'TestFile3.pas'; const CVSBasedTest1SourceIn = '$' + 'RCSfile: ' + CVSBasedTest1SourceBase + ',v $'; const CVSBasedTest1RevisionIn = '$' + 'Revision: 1.19 $'; const CVSBasedTest1RevisionOut: Revision = 1.19; const CVSBasedTest1DateIn = '$' + 'Date: 2004/10/23 10:04:23 $'; const CVSBasedTest1DateOut: DateTime = DateTime.Create(2004, 10, 23, 10, 4, 23, 0); const CVSBasedTest2SourceBase = '/cvsroot/dir1/dir2/dir3/dir4/TestFile4.inc'; const CVSBasedTest2SourceIn = '$' + 'Source: ' + CVSBasedTest2SourceBase + ',v $'; const CVSBasedTest2RevisionIn = '$' + 'Revision: 1.1.3.1 $'; const CVSBasedTest2RevisionOut: Revision = '1.1.3.1'; const CVSBasedTest2DateIn = '$' + 'Date: 2002/01/01 00:01:03 $'; const CVSBasedTest2DateOut: DateTime = DateTime.Create(2002, 1, 1, 0, 1, 3, 0); const CVSBasedTest3Id = '$' + 'Id: ' + CVSBasedTest1SourceBase + ',v 1.19 2004/10/23 10:04:23 dummy_user Exp $'; const CVSBasedTest4Id = '$' + 'Header: ' + CVSBasedTest2SourceBase + ',v 1.1.3.1 2002/01/01 00:01:03 ' + 'dummy_user Exp $'; class var CVSBasedTest1SourceOut: string; class var CVSBasedTest2SourceOut: string; class var CVSBasedTest2SourceOut1: string; class var CVSBasedTest2SourceOut2: string; class var CVSBasedTest2SourceOut3: string; {$ENDREGION} {$REGION 'JediBasedAttribute test cases'} strict protected const JediCommonRoot = '/cvsroot/jedidotnet/'; const JediTestSourcePath = 'main/run/'; const JediTestSourceFile = 'Jedi.System.SourceVersioning.pas'; const JediTestRevisionIn = '$' + 'Revision: 1.0 $'; const JediTestRevisionOut: Revision = '1.0'; const JediTestDateIn = '$' + 'Date: 2005/01/01 04:56:58 $'; const JediTestDateOut: DateTime = DateTime.Create(2005, 1, 1, 4, 56, 58); const JediBasedTest1Id = '$' + 'Id: ' + JediTestSourceFile + ',v 1.0 2005/01/01 04:56:58 dummy_user Exp $'; const JediBasedTest2Id = '$' + 'Header: ' + JediCommonRoot + JediTestSourcePath + JediTestSourceFile + ',v 1.0 2005/01/01 04:56:58 dummy_user Exp $'; const JediBasedTest3SourceIn = '$' + 'RCSFile: ' + JediTestSourceFile + ',v $'; const JediBasedTest4SourceIn = '$' + 'Source: ' + JediCommonRoot + JediTestSourcePath + JediTestSourceFile + ',v$'; class var JediBasedTest2SourceOut: string; {$ENDREGION} {$REGION 'Tests'} public [Test] procedure BaseAttribute; [Test] procedure CVSBasedAttribute; [Test] procedure JediBasedAttribute; {$ENDREGION} end; {$ENDREGION} {$REGION 'Revision test-set'} type [TestFixture] RevisionStruct = class {$REGION 'Tests'} public [Test] procedure Conversions; [Test] procedure Comparisons; {$ENDREGION} end; {$ENDREGION} {$REGION 'SourceInfo test-set'} type [TestFixture] [SourceInfoAttribute('nunit\source\Jedi.System.SourceVersioning.NUnit.pas', '1.0.1', '2005/01/22 14:08:10')] SourceInfoClass = class public {$REGION 'Tests'} [Test] procedure AtLeast; [Test] procedure Retrieval; {$ENDREGION} end; {$ENDREGION} implementation {$REGION 'implementtion uses'} uses System.IO; {$ENDREGION} {$REGION 'Attributes'} class constructor Attributes.Create; begin BaseTest1SourceOut := BaseTest1SourceIn.Replace(Path.AltDirectorySeparatorChar, Path.DirectorySeparatorChar); BaseTest2SourceOut := BaseTest2SourceIn.Replace(Path.AltDirectorySeparatorChar, Path.DirectorySeparatorChar); CVSBasedTest1SourceOut := CVSBasedTest1SourceBase.Replace(Path.AltDirectorySeparatorChar, Path.DirectorySeparatorChar); CVSBasedTest2SourceOut := CVSBasedTest2SourceBase.SubString(1).Replace(Path.AltDirectorySeparatorChar, Path.DirectorySeparatorChar); CVSBasedTest2SourceOut1 := CVSBasedTest2SourceOut.Substring(CVSBasedTest2SourceOut.IndexOf(Path.DirectorySeparatorChar) + 1); CVSBasedTest2SourceOut2 := CVSBasedTest2SourceOut1.Substring(CVSBasedTest2SourceOut1.IndexOf(Path.DirectorySeparatorChar) + 1); CVSBasedTest2SourceOut3 := CVSBasedTest2SourceOut2.Substring(CVSBasedTest2SourceOut2.IndexOf(Path.DirectorySeparatorChar) + 1); JediBasedTest2SourceOut := JediTestSourcePath.Replace(Path.AltDirectorySeparatorChar, Path.DirectorySeparatorChar) + JediTestSourceFile; end; procedure Attributes.BaseAttribute; var attr: SourceInfoAttribute; begin attr := SourceInfoAttribute.Create(BaseTest1SourceIn, BaseTest1Revision, BaseTest1Date); Assert.AreEqual(BaseTest1SourceOut, attr.SourceFile, 'Test1.SourceFile'); Assert.AreEqual(Revision(BaseTest1Revision), attr.Revision, 'Test1.Revision'); Assert.AreEqual(BaseTest1Date, attr.Date, 'Test1.Date'); attr := SourceInfoAttribute.Create(BaseTest2SourceIn, BaseTest2Revision, BaseTest2Date); Assert.AreEqual(BaseTest2SourceOut, attr.SourceFile, 'Test2.SourceFile'); Assert.AreEqual(Revision(BaseTest2Revision), attr.Revision, 'Test2.Revision'); Assert.AreEqual(BaseTest2Date, attr.Date, 'Test2.Date'); end; procedure Attributes.CVSBasedAttribute; var attr: SourceInfoAttribute; begin attr := CVSSourceInfoAttribute.Create(CVSBasedTest1SourceIn, CVSBasedTest1RevisionIn, CVSBasedTest1DateIn); Assert.AreEqual(CVSBasedTest1SourceOut, attr.SourceFile, 'Test1.SourceFile'); Assert.AreEqual(CVSBasedTest1RevisionOut, attr.Revision, 'Test1.Revision'); Assert.AreEqual(CVSBasedTest1DateOut, attr.Date, 'Test1.Date'); attr := CVSSourceInfoAttribute.Create(CVSBasedTest2SourceIn, CVSBasedTest2RevisionIn, CVSBasedTest2DateIn); Assert.AreEqual(CVSBasedTest2SourceOut, attr.SourceFile, 'Test2.SourceFile'); Assert.AreEqual(CVSBasedTest2RevisionOut, attr.Revision, 'Test2.Revision'); Assert.AreEqual(CVSBasedTest2DateOut, attr.Date, 'Test2.Date'); attr := CVSSourceInfoAttribute.Create(CVSBasedTest2SourceIn, CVSBasedTest2RevisionIn, CVSBasedTest2DateIn, 1); Assert.AreEqual(CVSBasedTest2SourceOut1, attr.SourceFile, 'Test2.SourceFile (ignore 1)'); attr := CVSSourceInfoAttribute.Create(CVSBasedTest2SourceIn, CVSBasedTest2RevisionIn, CVSBasedTest2DateIn, 2); Assert.AreEqual(CVSBasedTest2SourceOut2, attr.SourceFile, 'Test2.SourceFile (ignore 2)'); attr := CVSSourceInfoAttribute.Create(CVSBasedTest2SourceIn, CVSBasedTest2RevisionIn, CVSBasedTest2DateIn, 3); Assert.AreEqual(CVSBasedTest2SourceOut3, attr.SourceFile, 'Test2.SourceFile (ignore 3)'); attr := CVSSourceInfoAttribute.Create(CVSBasedTest3Id); Assert.AreEqual(CVSBasedTest1SourceOut, attr.SourceFile, 'Test3.SourceFile'); Assert.AreEqual(CVSBasedTest1RevisionOut, attr.Revision, 'Test3.Revision'); Assert.AreEqual(CVSBasedTest1DateOut, attr.Date, 'Test3.Date'); attr := CVSSourceInfoAttribute.Create(CVSBasedTest4Id); Assert.AreEqual(CVSBasedTest2SourceOut, attr.SourceFile, 'Test4.SourceFile'); Assert.AreEqual(CVSBasedTest2RevisionOut, attr.Revision, 'Test4.Revision'); Assert.AreEqual(CVSBasedTest2DateOut, attr.Date, 'Test4.Date'); attr := CVSSourceInfoAttribute.Create(CVSBasedTest4Id, 2); Assert.AreEqual(CVSBasedTest2SourceOut2, attr.SourceFile, 'Test4.SourceFile (ignore 2)'); end; procedure Attributes.JediBasedAttribute; var attr: SourceInfoAttribute; begin attr := JediSourceInfoAttribute.Create(JediBasedTest1Id); Assert.AreEqual(JediTestSourceFile, attr.SourceFile, 'Test1.SourceFile'); Assert.AreEqual(JediTestRevisionOut, attr.Revision, 'Test1.Revision'); Assert.AreEqual(JediTestDateOut, attr.Date, 'Test1.Date'); attr := JediSourceInfoAttribute.Create(JediBasedTest2Id); Assert.AreEqual(JediBasedTest2SourceOut, attr.SourceFile, 'Test2.SourceFile'); Assert.AreEqual(JediTestRevisionOut, attr.Revision, 'Test2.Revision'); Assert.AreEqual(JediTestDateOut, attr.Date, 'Test2.Date'); end; {$ENDREGION} {$REGION 'RevisionStruct'} procedure RevisionStruct.Conversions; var svr: Revision; s: string; d: double; begin svr := '1.3.2.4'; s := svr; d := svr; Assert.AreEqual(4, svr.Count, '''1.3.2.4'' Count'); Assert.AreEqual(1, svr[0], '''1.3.2.4'' Items[0]'); Assert.AreEqual(3, svr[1], '''1.3.2.4'' Items[1]'); Assert.AreEqual(2, svr[2], '''1.3.2.4'' Items[2]'); Assert.AreEqual(4, svr[3], '''1.3.2.4'' Items[3]'); Assert.AreEqual('1.3.2.4', svr.ToString, '''1.3.2.4'' ToString'); Assert.AreEqual('1.3.2.4', s, '''1.3.2.4'' Implicit conversion to string'); Assert.AreEqual('1.3.2.4', string(svr), '''1.3.2.4'' Explicit conversion to string'); Assert.IsTrue(System.Double.IsNaN(d), '''1.3.2.4'' Implicit conversion to float'); Assert.IsTrue(System.Double.IsNaN(Double(svr)), '''1.3.2.4'' Explicit conversion to float'); svr := 12.3; s := svr; d := svr; Assert.AreEqual(2, svr.Count, '12.3 Count'); Assert.AreEqual(12, svr[0], '12.3 Items[0]'); Assert.AreEqual(3, svr[1], '12.3 Items[1]'); Assert.AreEqual('12.3', svr.ToString, '12.3 ToString'); Assert.AreEqual('12.3', s, '12.3 Implicit conversion to string'); Assert.AreEqual('12.3', string(svr), '12.3 Explicit conversion to string'); Assert.AreEqual(12.3, d, '12.3 Implicit conversion to double'); Assert.AreEqual(12.3, Double(svr), '12.3 Explicit conversion to double'); end; procedure RevisionStruct.Comparisons; var svr1: Revision; svr2: Revision; begin svr1 := '1.1'; svr2 := 1.1; Assert.IsTrue(svr1 = svr2, '''1.1'' = 1.1'); Assert.IsFalse(svr1 <> svr2, '''1.1'' <> 1.1'); Assert.IsTrue(svr1 >= svr2, '''1.1'' >= 1.1'); Assert.IsFalse(svr1 > svr2, '''1.1'' > 1.1'); Assert.IsTrue(svr1 <= svr2, '''1.1'' <= 1.1'); Assert.IsFalse(svr1 < svr2, '''1.1'' < 1.1'); Assert.IsTrue(svr1.Equals(svr2), '''1.1'' Equals 1.1'); svr2 := 1.2; Assert.IsFalse(svr1 = svr2, '''1.1'' = 1.2'); Assert.IsTrue(svr1 <> svr2, '''1.1'' <> 1.2'); Assert.IsFalse(svr1 >= svr2, '''1.1'' >= 1.2'); Assert.IsFalse(svr1 > svr2, '''1.1'' > 1.2'); Assert.IsTrue(svr1 <= svr2, '''1.1'' <= 1.2'); Assert.IsTrue(svr1 < svr2, '''1.1'' < 1.2'); Assert.IsFalse(svr1.IsSubBranchOf(svr2), '''1.1'' IsSubBranchOf(1.2)'); Assert.IsFalse(svr2.IsSubBranchOf(svr1), '1.2 IsSubBranchOf(''1.1'')'); svr2 := '1.1.2'; Assert.IsFalse(svr1 = svr2, '''1.1'' = 1.1.2'); Assert.IsTrue(svr1 <> svr2, '''1.1'' <> 1.1.2'); Assert.IsFalse(svr1 >= svr2, '''1.1'' >= 1.1.2'); Assert.IsFalse(svr1 > svr2, '''1.1'' > 1.1.2'); Assert.IsTrue(svr1 <= svr2, '''1.1'' <= 1.1.2'); Assert.IsTrue(svr1 < svr2, '''1.1'' < 1.1.2'); Assert.IsFalse(svr1.IsSubBranchOf(svr2), '''1.1'' IsSubBranchOf(''1.1.2'')'); Assert.IsTrue(svr2.IsSubBranchOf(svr1), '''1.1.2'' IsSubBranchOf(''1.1'')'); svr2 := '1.0.2'; Assert.IsFalse(svr1 = svr2, '''1.1'' = 1.0.2'); Assert.IsTrue(svr1 <> svr2, '''1.1'' <> 1.0.2'); Assert.IsTrue(svr1 >= svr2, '''1.1'' >= 1.0.2'); Assert.IsTrue(svr1 > svr2, '''1.1'' > 1.0.2'); Assert.IsFalse(svr1 <= svr2, '''1.1'' <= 1.0.2'); Assert.IsFalse(svr1 < svr2, '''1.1'' < 1.0.2'); Assert.IsFalse(svr1.IsSubBranchOf(svr2), '''1.1'' IsSubBranchOf(''1.0.2'')'); Assert.IsFalse(svr2.IsSubBranchOf(svr1), '''1.0.2'' IsSubBranchOf(''1.1'')'); end; {$ENDREGION} {$REGION 'SourceInfoClass'} procedure SourceInfoClass.AtLeast; begin Assert.IsTrue(SourceInfo.IsAtLeastRevision(TypeOf(Revision), 1.0), 'Revision-type should be at least 1.0.'); Assert.IsTrue(SourceInfo.IsAtLeastRevision(Self, 1.0), 'Self should be at least 1.0.'); Assert.IsTrue(SourceInfo.IsAtLeastRevision(Self, '1.0.1'), 'Self should be at least 1.0.1.'); Assert.IsFalse(SourceInfo.IsAtLeastRevision(Self, 1.1), 'Self should not be at least 1.1.'); end; procedure SourceInfoClass.Retrieval; var si: SourceInfo; begin si := SourceInfo.GetInfoOf(TypeOf(Revision)); Assert.AreEqual('main' + Path.DirectorySeparatorChar + 'run' + Path.DirectorySeparatorChar + 'Jedi.System.SourceVersioning.pas', si.SourceFile, 'Revision''s SourceFile.'); si := SourceInfo.GetInfoOf(Self); Assert.AreEqual('nunit' + Path.DirectorySeparatorChar + 'source' + Path.DirectorySeparatorChar + 'Jedi.System.SourceVersioning.NUnit.pas', si.SourceFile, 'SourceFile of Self'); Assert.AreEqual(Revision('1.0.1'), si.Revision, 'Revision of Self'); Assert.AreEqual(DateTime.Create(2005, 1, 22, 14, 8, 10), si.Date, 'Date of Self'); si := SourceInfo.GetInfoOf(TypeOf(DateTime)); Assert.IsNotNull(si, 'SourceInfo on DateTime returned nil.'); Assert.AreEqual('', si.SourceFile, 'DateTime''s SourceFile.'); Assert.AreEqual(Revision(0.0), si.Revision, 'DateTime''s Revision.'); Assert.AreEqual(DateTime.Create(0), si.Date, 'DateTime''s Date.'); end; {$ENDREGION} end. Index: Jedi.System.Strings.NUnit.pas =================================================================== RCS file: /cvsroot/jedidotnet/nunit/source/Jedi.System.Strings.NUnit.pas,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** Jedi.System.Strings.NUnit.pas 6 Dec 2004 11:44:09 -0000 1.1 --- Jedi.System.Strings.NUnit.pas 22 Jan 2005 15:12:37 -0000 1.2 *************** *** 10,20 **** [TestFixture] TabSet = class strict protected TabSet1: StringUtils.TabSet; TabSet2: StringUtils.TabSet; TabSet3: StringUtils.TabSet; public - [TestFixtureSetUp] - procedure Init; [Test] procedure SimpleTabulation; [Test] procedure SpecifiedTabsWithAutoDefault; --- 10,25 ---- [TestFixture] TabSet = class + {$REGION 'Test data'} strict protected TabSet1: StringUtils.TabSet; TabSet2: StringUtils.TabSet; TabSet3: StringUtils.TabSet; + {$ENDREGION} + {$REGION 'SetUp/TearDown methods'} + public + [TestFixtureSetUp] + procedure Init; + {$ENDREGION} public [Test] procedure SimpleTabulation; [Test] procedure SpecifiedTabsWithAutoDefault; *************** *** 28,31 **** --- 33,37 ---- [TestFixture] QuotedStrings = class + {$REGION 'Test constants'} strict protected const sSimpleTest = 'This is a simple test string.'; *************** *** 47,50 **** --- 53,57 ---- 'should always result in the roundtrip, regardless of actual used ' + 'quotation charachter. Scary combinations: ''''abc'''' and """"def"""""'; + {$ENDREGION} public [Test] procedure QuoteComplexString; *************** *** 71,74 **** --- 78,82 ---- [TestFixture] Substrings = class + {$REGION 'After*/Before* test constants'} strict protected const sDelimTest = '|Abc(def){ghi}.jkl;mno=(pqr){stu}.vwx;yz|'; *************** *** 99,104 **** const sDelimTestAfterDot = 'vwx;yz|'; const sDelimTestAfterSemiColon = 'yz|'; ! const sSliceTest = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'; public [Test] procedure AfterSingleDelimiter; --- 107,115 ---- const sDelimTestAfterDot = 'vwx;yz|'; const sDelimTestAfterSemiColon = 'yz|'; ! {$ENDREGION} ! {$REGION 'Left/Mid/Right test constants'} ! strict protected const sSliceTest = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'; + {$ENDREGION} public [Test] procedure AfterSingleDelimiter; *************** *** 117,120 **** --- 128,132 ---- [TestFixture] Manipulations = class + {$REGION 'Tab expansion test constants'} strict protected const sTabTest1 = 'Abc'#9'Def Ghi'#9'Jkl'#9#9'Mno'#9#9#9'Pqr'; *************** *** 128,134 **** --- 140,150 ---- const sTabTest2Output2 = ' Abc Def Ghi Jkl Mno Pqr'; const sTabTest2Output3 = ' Abc Def Ghi Jkl Mno Pqr'; + {$ENDREGION} + {$REGION 'Duplicate removal test constants'} strict protected const sTest1 = '***abc***def***ghi***'; const sTest1Output = '*abc*def*ghi*'; + {$ENDREGION} + {$REGION 'String repetition test constants'} strict protected const sRepeatInput = 'ab(cd)ef'; *************** *** 136,139 **** --- 152,156 ---- const sRepeatOutput1 = 'ab(cd)ef'; const sRepeatOutput10 = 'ab(cd)efab(cd)efab(cd)efab(cd)efab(cd)efab(cd)efab(cd)efab(cd)efab(cd)efab(cd)ef'; + {$ENDREGION} public [Test] procedure ExpandTabs; *************** *** 142,321 **** end; ! implementation ! {$REGION 'TabSet'} ! procedure TabSet.ConvertToString; ! begin ! Assert.AreEqual('[] and every 2', TabSet1.ToString, 'TabSet1.ToString'); ! Assert.AreEqual('[15,20,40,44] and every 4 (automatic)', TabSet2.ToString, 'TabSet2.ToString'); ! Assert.AreEqual('[15,20,40,44] and every 2', TabSet3.ToString, 'TabSet3.ToString'); ! Assert.AreEqual('[] and every 2 (automatic)', StringUtils.TabSet.Create.ToString, ! 'StringUtils.TabSet.Create.ToString'); ! Assert.AreEqual('every 2 (automatic)', StringUtils.TabSet.Create.ToString(True, False, True), ! 'StringUtils.TabSet.Create.ToString(true, false, true)'); ! Assert.AreEqual('15,20,40,44', TabSet2.ToString(False, False, False), 'TabSet2.ToString(false, false, false)'); ! end; ! procedure TabSet.Init; begin ! TabSet1 := StringUtils.TabSet.Create(2); ! TabSet2 := StringUtils.TabSet.Create([15, 20, 40, 44]); ! TabSet3 := StringUtils.TabSet.Create([15, 20, 40, 44], 2); end; ! procedure TabSet.SimpleTabulation; begin ! // TabSet1 should always tabulate to even positions ! Assert.AreEqual(TabSet1.TabFrom(1), 2); ! Assert.AreEqual(TabSet1.TabFrom(2), 4); ! Assert.AreEqual(TabSet1.TabFrom(3), 4); ! Assert.AreEqual(TabSet1.TabFrom(51), 52); ! Assert.AreEqual(TabSet1.TabFrom(52), 54); end; ! procedure TabSet.SpecifiedTabsWithAutoDefault; var ! i: Integer; begin ! // TabSet2 will tabulate to 15, 20, 40 and 44. Beyond that it will tabulate to a multiple of 4 (44-40) ! for i := 0 to 14 do ! Assert.AreEqual(TabSet2.TabFrom(i), 15, 'Tabulate from {0}', [i]); ! for i := 15 to 19 do ! Assert.AreEqual(TabSet2.TabFrom(i), 20, 'Tabulate from {0}', [i]); ! for i := 20 to 39 do ! Assert.AreEqual(TabSet2.TabFrom(i), 40, 'Tabulate from {0}', [i]); ! for i := 40 to 43 do ! Assert.AreEqual(TabSet2.TabFrom(i), 44, 'Tabulate from {0}', [i]); ! for i := 44 to 47 do ! Assert.AreEqual(TabSet2.TabFrom(i), 48, 'Tabulate from {0}', [i]); ! for i := 48 to 51 do ! Assert.AreEqual(TabSet2.TabFrom(i), 52, 'Tabulate from {0}', [i]); end; ! procedure TabSet.SpecifiedTabsWithDefault; ! var ! i: Integer; begin ! // TabSet2 will tabulate to 15, 20, 40 and 44. Beyond that it will tabulate to a multiple of 2 ! for i := 0 to 14 do ! Assert.AreEqual(TabSet3.TabFrom(i), 15, 'Tabulate from {0}', [i]); ! for i := 15 to 19 do ! Assert.AreEqual(TabSet3.TabFrom(i), 20, 'Tabulate from {0}', [i]); ! for i := 20 to 39 do ! Assert.AreEqual(TabSet3.TabFrom(i), 40, 'Tabulate from {0}', [i]); ! for i := 40 to 43 do ! Assert.AreEqual(TabSet3.TabFrom(i), 44, 'Tabulate from {0}', [i]); ! for i := 44 to 45 do ! Assert.AreEqual(TabSet3.TabFrom(i), 46, 'Tabulate from {0}', [i]); ! for i := 46 to 47 do ! Assert.AreEqual(TabSet3.TabFrom(i), 48, 'Tabulate from {0}', [i]); ! for i := 48 to 49 do ! Assert.AreEqual(TabSet3.TabFrom(i), 50, 'Tabulate from {0}', [i]); ! for i := 50 to 51 do ! Assert.AreEqual(TabSet3.TabFrom(i), 52, 'Tabulate from {0}', [i]); end; ! procedure TabSet.CloneAndEqual; ! var ! tempSet: StringUtils.TabSet; begin ! tempSet := StringUtils.TabSet(TabSet1.Clone); ! Assert.AreNotSame(TabSet1, tempSet); ! Assert.AreEqual(TabSet1, tempSet, 'Cloned'); ! tempSet.Add(2); ! Assert.AreEqual(TabSet1, tempSet, 'TabPos=[2], DefaultWidth=2'); ! tempSet.DefaultWidth := 0; ! Assert.AreEqual(TabSet1, tempSet, 'TabPos=[2], DefaultWidth=0 (automatic)'); ! tempSet.Add(4); ! Assert.AreEqual(TabSet1, tempSet, 'TabPos=[2,4], DefaultWidth=0 (automatic)'); ! tempSet.Clear; ! Assert.AreEqual(TabSet1, tempSet, 'TabPos=[], DefaultWidth=0 (automatic)'); end; ! procedure TabSet.RemovingTabs; var ! tempSet: StringUtils.TabSet; ! i: Integer; begin ! tempSet := StringUtils.TabSet(TabSet2.Clone); ! tempSet.Remove(20); ! for i := 0 to 14 do ! Assert.AreEqual(tempSet.TabFrom(i), 15, 'Removed 20; Tabulate from {0}', [i]); ! for i := 15 to 39 do ! Assert.AreEqual(tempSet.TabFrom(i), 40, 'Removed 20; Tabulate from {0}', [i]); ! for i := 40 to 43 do ! Assert.AreEqual(tempSet.TabFrom(i), 44, 'Removed 20; Tabulate from {0}', [i]); ! for i := 44 to 47 do ! Assert.AreEqual(tempSet.TabFrom(i), 48, 'Removed 20; Tabulate from {0}', [i]); ! for i := 48 to 51 do ! Assert.AreEqual(tempSet.TabFrom(i), 52, 'Removed 20; Tabulate from {0}', [i]); ! for i := 52 to 55 do ! Assert.AreEqual(tempSet.TabFrom(i), 56, 'Removed 20; Tabulate from {0}', [i]); ! for i := 56 to 59 do ! Assert.AreEqual(tempSet.TabFrom(i), 60, 'Removed 20; Tabulate from {0}', [i]); ! tempSet := StringUtils.TabSet(TabSet2.Clone); ! tempSet.Remove(40); ! for i := 0 to 14 do ! Assert.AreEqual(tempSet.TabFrom(i), 15, 'Removed 40; Tabulate from {0}', [i]); ! for i := 15 to 19 do ! Assert.AreEqual(tempSet.TabFrom(i), 20, 'Removed 40; Tabulate from {0}', [i]); ! for i := 20 to 43 do ! Assert.AreEqual(tempSet.TabFrom(i), 44, 'Removed 40; Tabulate from {0}', [i]); ! for i := 44 to 67 do ! Assert.AreEqual(tempSet.TabFrom(i), 68, 'Removed 40; Tabulate from {0}', [i]); ! for i := 68 to 91 do ! Assert.AreEqual(tempSet.TabFrom(i), 92, 'Removed 40; Tabulate from {0}', [i]); ! for i := 92 to 115 do ! Assert.AreEqual(tempSet.TabFrom(i), 116, 'Removed 40; Tabulate from {0}', [i]); ! for i := 116 to 139 do ! Assert.AreEqual(tempSet.TabFrom(i), 140, 'Removed 40; Tabulate from {0}', [i]); ! tempSet := StringUtils.TabSet(TabSet2.Clone); ! tempSet.Remove(40, True); ! for i := 0 to 14 do ! Assert.AreEqual(tempSet.TabFrom(i), 15, 'Removed 40+; Tabulate from {0}', [i]); ! for i := 15 to 19 do ! Assert.AreEqual(tempSet.TabFrom(i), 20, 'Removed 40+; Tabulate from {0}', [i]); ! for i := 20 to 24 do ! Assert.AreEqual(tempSet.TabFrom(i), 25, 'Removed 40+; Tabulate from {0}', [i]); ! for i := 25 to 29 do ! Assert.AreEqual(tempSet.TabFrom(i), 30, 'Removed 40+; Tabulate from {0}', [i]); ! for i := 30 to 34 do ! Assert.AreEqual(tempSet.TabFrom(i), 35, 'Removed 40+; Tabulate from {0}', [i]); ! for i := 35 to 39 do ! Assert.AreEqual(tempSet.TabFrom(i), 40, 'Removed 40+; Tabulate from {0}', [i]); ! for i := 40 to 44 do ! Assert.AreEqual(tempSet.TabFrom(i), 45, 'Removed 40+; Tabulate from {0}', [i]); end; ! procedure TabSet.AddingTabs; ! var ! tempSet: StringUtils.TabSet; ! tempSet2: StringUtils.TabSet; ! i: Integer; begin ! tempSet := StringUtils.TabSet(TabSet2.Clone); ! tempSet.Add(42); ! for i := 0 to 14 do ! Assert.AreEqual(tempSet.TabFrom(i), 15, 'Added 42; Tabulate from {0}', [i]); ! for i := 15 to 19 do ! Assert.AreEqual(tempSet.TabFrom(i), 20, 'Added 42; Tabulate from {0}', [i]); ! for i := 20 to 39 do ! Assert.AreEqual(tempSet.TabFrom(i), 40, 'Added 42; Tabulate from {0}', [i]); ! for i := 40 to 41 do ! Assert.AreEqual(tempSet.TabFrom(i), 42, 'Added 42; Tabulate from {0}', [i]); ! for i := 42 to 43 do ! Assert.AreEqual(tempSet.TabFrom(i), 44, 'Added 42; Tabulate from {0}', [i]); ! for i := 44 to 45 do ! Assert.AreEqual(tempSet.TabFrom(i), 46, 'Added 42; Tabulate from {0}', [i]); ! for i := 46 to 47 do ! Assert.AreEqual(tempSet.TabFrom(i), 48, 'Added 42; Tabulate from {0}', [i]); ! for i := 48 to 49 do ! Assert.AreEqual(tempSet.TabFrom(i), 50, 'Added 42; Tabulate from {0}', [i]); ! for i := 50 to 51 do ! Assert.AreEqual(tempSet.TabFrom(i), 52, 'Added 42; Tabulate from {0}', [i]); ! tempSet2 := StringUtils.TabSet.Create([40, 20, 15], 2); ! Assert.AreEqual(tempSet2, tempSet); end; {$ENDREGION} --- 159,361 ---- end; ! [TestFixture] ! EscapedStrings = class ! {$REGION 'Test constants'} ! strict protected ! const sTest1Input = 'This string has a newline'#10'and ends with a null character'#0; ! const sTest1Output = 'This string has a newline\nand ends with a null character\0'; ! const sTest2Input = 'This string has a backslash (\) character inside.'; ! const sTest2Output = 'This string has a backslash (\\) character inside.'; ! const sTest3Input = 'This string has a null character, followed by the digit 7: '#0'7.'; ! const sTest3Output = 'This string has a null character, followed by the digit 7: \0007.'; ! const sTest4Input = 'This string has a null character, followed by the digit 8: '#0'8.'; ! const sTest4Output = 'This string has a null character, followed by the digit 8: \08.'; ! const sTest5Input = 'Several ASCII codes below the space (ordinal 32 or 20 hex):'#1#2#4#27; ! const sTest5Output = 'Several ASCII codes below the space (ordinal 32 or 20 hex):\x01\x02\x04\x1b'; ! {$ENDREGION} ! public ! [Test] procedure Escape; ! [Test] procedure ParseEscapedString; ! end; ! [TestFixture] ! NumericConversions = class ! {$REGION 'IntToHex test constants'} ! strict protected ! const IntHex1Input = 255; ! const IntHex1Output = 'ff'; ! const IntHex1OutputByte = 'ff'; ! const IntHex1OutputFixed = '000000ff'; ! const IntHex2Input = 256; ! const IntHex2Output = '100'; ! const IntHex2OutputByte = '0100'; ! const IntHex2OutputFixed = '00000100'; ! const IntHex3Input = -1; ! const IntHex3Output = 'ffffffff'; ! const IntHex3OutputByte = 'ffffffff'; ! const IntHex3OutputFixed = 'ffffffff'; ! {$ENDREGION} ! {$REGION 'HexToInt test constants'} ! strict protected ! const HexInt1Input = 'ff'; ! const HexInt1InputMax = 'ffghijk'; ! const HexInt1CountMax = 2; ! const HexInt1InputLeads = '0000ffghjkl'; ! const HexInt1CountLeads = 6; ! const HexInt1Value = 255; ! const HexInt2Input = '100'; ! const HexInt2InputMax = '100ghijk'; ! const HexInt2CountMax = 3; ! const HexInt2InputLeads = '0000100ghjkl'; ! const HexInt2CountLeads = 7; ! const HexInt2Value = 256; ! const HexInt3Input = 'ffffFFFF'; ! const HexInt3InputMax = 'ffFFfFffghijk'; ! const HexInt3CountMax = 8; ! const HexInt3InputLeads = '0000ffFFFffFghjkl'; ! const HexInt3CountLeads = 12; ! const HexInt3Value = -1; ! {$ENDREGION} ! public ! [Test] procedure HexToInt; ! [Test] procedure IntToHex; ! end; ! implementation ! ! {$REGION 'EscapedStrings'} ! procedure EscapedStrings.Escape; begin ! Assert.AreEqual(sTest1Output, StringUtils.EscapeString(sTest1Input), 'Test1'); ! Assert.AreEqual(sTest2Output, StringUtils.EscapeString(sTest2Input), 'Test2'); ! Assert.AreEqual(sTest3Output, StringUtils.EscapeString(sTest3Input), 'Test3'); ! Assert.AreEqual(sTest4Output, StringUtils.EscapeString(sTest4Input), 'Test4'); ! Assert.AreEqual(sTest5Output, StringUtils.EscapeString(sTest5Input), 'Test5'); end; ! procedure EscapedStrings.ParseEscapedString; begin ! Assert.AreEqual(sTest1Input, StringUtils.ParseEscapedString(sTest1Output), 'Test1'); ! Assert.AreEqual(sTest2Input, StringUtils.ParseEscapedString(sTest2Output), 'Test2'); ! Assert.AreEqual(sTest3Input, StringUtils.ParseEscapedString(sTest3Output), 'Test3'); ! Assert.AreEqual(sTest4Input, StringUtils.ParseEscapedString(sTest4Output), 'Test4'); ! Assert.AreEqual(sTest5Input, StringUtils.ParseEscapedString(sTest5Output), 'Test5'); end; + {$ENDREGION} ! {$REGION 'Manipulations'} ! procedure Manipulations.ExpandTabs; var ! tabSet1: StringUtils.TabSet; ! tabSet2: StringUtils.TabSet; ! tabSet3: StringUtils.TabSet; begin ! tabSet1 := StringUtils.TabSet.Create(2); ! tabSet2 := StringUtils.TabSet.Create([15, 20, 40, 44]); ! tabSet3 := StringUtils.TabSet.Create([15, 20, 40, 44], 2); ! ! Assert.AreEqual(sTabTest1Output1, StringUtils.ExpandTabs(sTabTest1, tabSet1), 'sTabTest1Output1'); ! Assert.AreEqual(sTabTest2Output1, StringUtils.ExpandTabs(sTabTest2, tabSet1), 'sTabTest2Output1'); ! ! Assert.AreEqual(sTabTest1Output2, StringUtils.ExpandTabs(sTabTest1, tabSet2), 'sTabTest1Output2'); ! Assert.AreEqual(sTabTest2Output2, StringUtils.ExpandTabs(sTabTest2, tabSet2), 'sTabTest2Output2'); ! ! Assert.AreEqual(sTabTest1Output3, StringUtils.ExpandTabs(sTabTest1, tabSet3), 'sTabTest1Output3'); ! Assert.AreEqual(sTabTest2Output3, StringUtils.ExpandTabs(sTabTest2, tabSet3), 'sTabTest2Output3'); end; ! procedure Manipulations.RemoveDuplicates; begin ! Assert.AreEqual(sTest1Output, StringUtils.RemoveDuplicateChars(sTest1, '*'), 'sTest1'); end; ! procedure Manipulations.&Repeat; begin ! Assert.AreEqual(sRepeatOutput0, StringUtils.&Repeat(sRepeatInput, 0), 'Count=0'); ! Assert.AreEqual(sRepeatOutput1, StringUtils.&Repeat(sRepeatInput, 1), 'Count=1'); ! Assert.AreEqual(sRepeatOutput10, StringUtils.&Repeat(sRepeatInput, 10), 'Count=10'); end; + {$ENDREGION} ! {$REGION 'NumericConversions'} ! procedure NumericConversions.HexToInt; var ! digitsUsed: Integer; begin ! Assert.AreEqual( ! HexInt1Value, ! StringUtils.HexToInt(HexInt1Input), ! 'Test1, complete string'); ! Assert.AreEqual( ! HexInt1Value, ! StringUtils.HexToInt(HexInt1InputMax, HexInt1CountMax, False, digitsUsed), ! 'Test1, limit string.'); ! Assert.AreEqual( ! HexInt1CountMax, ! digitsUsed, ! 'Test1 digit count.'); ! Assert.AreEqual( ! HexInt1Value, ! StringUtils.HexToInt(HexInt1InputLeads, HexInt1CountMax, True, digitsUsed), ! 'Test1, limit string, ignore leading zeroes.'); ! Assert.AreEqual( ! HexInt1CountLeads, ! digitsUsed, ! 'Test1 digit count, ignoring leading zeroes.'); ! Assert.AreEqual( ! HexInt2Value, ! StringUtils.HexToInt(HexInt2Input), ! 'Test2, complete string'); ! Assert.AreEqual( ! HexInt2Value, ! StringUtils.HexToInt(HexInt2InputMax, HexInt2CountMax, False, digitsUsed), ! 'Test2, limit string.'); ! Assert.AreEqual( ! HexInt2CountMax, ! digitsUsed, ! 'Test2 digit count.'); ! Assert.AreEqual( ! HexInt2Value, ! StringUtils.HexToInt(HexInt2InputLeads, HexInt2CountMax, True, digitsUsed), ! 'Test2, limit string, ignore leading zeroes.'); ! Assert.AreEqual( ! HexInt2CountLeads, ! digitsUsed, ! 'Test2 digit count, ignoring leading zeroes.'); ! Assert.AreEqual( ! HexInt3Value, ! StringUtils.HexToInt(HexInt3Input), ! 'Test3, complete string'); ! Assert.AreEqual( ! HexInt3Value, ! StringUtils.HexToInt(HexInt3InputMax, HexInt3CountMax, False, digitsUsed), ! 'Test3, limit string.'); ! Assert.AreEqual( ! HexInt3CountMax, ! digitsUsed, ! 'Test3 digit count.'); ! Assert.AreEqual( ! HexInt3Value, ! StringUtils.HexToInt(HexInt3InputLeads, HexInt3CountMax, True, digitsUsed), ! 'Test3, limit string, ignore leading zeroes.'); ! Assert.AreEqual( ! HexInt3CountLeads, ! digitsUsed, ! 'Test3 digit count, ignoring leading zeroes.'); end; ! procedure NumericConversions.IntToHex; begin ! Assert.AreEqual(IntHex1Output, StringUtils.IntToHex(IntHex1Input), 'Test1, shortest.'); ! Assert.AreEqual(IntHex1OutputByte, StringUtils.IntToHex(IntHex1Input, True), 'Test1, shortest byte size.'); ! Assert.AreEqual(IntHex1OutputFixed, StringUtils.IntToHex(IntHex1Input, 8), 'Test1, fixed byte size.'); ! Assert.AreEqual(IntHex2Output, StringUtils.IntToHex(IntHex2Input), 'Test2, shortest.'); ! Assert.AreEqual(IntHex2OutputByte, StringUtils.IntToHex(IntHex2Input, True), 'Test2, shortest byte size.'); ! Assert.AreEqual(IntHex2OutputFixed, StringUtils.IntToHex(IntHex2Input, 8), 'Test2, fixed byte size.'); ! Assert.AreEqual(IntHex3Output, StringUtils.IntToHex(IntHex3Input), 'Test3, shortest.'); ! Assert.AreEqual(IntHex3OutputByte, StringUtils.IntToHex(IntHex3Input, True), 'Test3, shortest byte size.'); ! Assert.AreEqual(IntHex3OutputFixed, StringUtils.IntToHex(IntHex3Input, 8), 'Test3, fixed byte size.'); end; {$ENDREGION} *************** *** 617,651 **** {$ENDREGION} ! {$REGION 'Manipulations'} ! procedure Manipulations.ExpandTabs; ! var ! tabSet1: StringUtils.TabSet; ! tabSet2: StringUtils.TabSet; ! tabSet3: StringUtils.TabSet; begin ! tabSet1 := StringUtils.TabSet.Create(2); ! tabSet2 := StringUtils.TabSet.Create([15, 20, 40, 44]); ! tabSet3 := StringUtils.TabSet.Create([15, 20, 40, 44], 2); ! Assert.AreEqual(sTabTest1Output1, StringUtils.ExpandTabs(sTabTest1, tabSet1), 'sTabTest1Output1'); ! Assert.AreEqual(sTabTest2Output1, StringUtils.ExpandTabs(sTabTest2, tabSet1), 'sTabTest2Output1'); ! Assert.AreEqual(sTabTest1Output2, StringUtils.ExpandTabs(sTabTest1, tabSet2), 'sTabTest1Output2'); ! Assert.AreEqual(sTabTest2Output2, StringUtils.ExpandTabs(sTabTest2, tabSet2), 'sTabTest2Output2'); ! Assert.AreEqual(sTabTest1Output3, StringUtils.ExpandTabs(sTabTest1, tabSet3), 'sTabTest1Output3'); ! Assert.AreEqual(sTabTest2Output3, StringUtils.ExpandTabs(sTabTest2, tabSet3), 'sTabTest2Output3'); end; ! procedure Manipulations.RemoveDuplicates; begin ! Assert.AreEqual(sTest1Output, StringUtils.RemoveDuplicateChars(sTest1, '*'), 'sTest1'); end; ! procedure Manipulations.&Repeat; begin ! Assert.AreEqual(sRepeatOutput0, StringUtils.&Repeat(sRepeatInput, 0), 'Count=0'); ! Assert.AreEqual(sRepeatOutput1, StringUtils.&Repeat(sRepeatInput, 1), 'Count=1'); ! Assert.AreEqual(sRepeatOutput10, StringUtils.&Repeat(sRepeatInput, 10), 'Count=10'); end; {$ENDREGION} --- 657,834 ---- {$ENDREGION} ! {$REGION 'TabSet'} ! procedure TabSet.ConvertToString; begin ! Assert.AreEqual('[] and every 2', TabSet1.ToString, 'TabSet1.ToString'); ! Assert.AreEqual('[15,20,40,44] and every 4 (automatic)', TabSet2.ToString, 'TabSet2.ToString'); ! Assert.AreEqual('[15,20,40,44] and every 2', TabSet3.ToString, 'TabSet3.ToString'); ! Assert.AreEqual('[] and every 2 (automatic)', StringUtils.TabSet.Create.ToString, ! 'StringUtils.TabSet.Create.ToString'); ! Assert.AreEqual('every 2 (automatic)', StringUtils.TabSet.Create.ToString(True, False, True), ! 'StringUtils.TabSet.Create.ToString(true, false, true)'); ! Assert.AreEqual('15,20,40,44', TabSet2.ToString(False, False, False), 'TabSet2.ToString(false, false, false)'); ! end; ! procedure TabSet.Init; ! begin ! TabSet1 := StringUtils.TabSet.Create(2); ! TabSet2 := StringUtils.TabSet.Create([15, 20, 40, 44]); ! TabSet3 := StringUtils.TabSet.Create([15, 20, 40, 44], 2); ! end; ! procedure TabSet.SimpleTabulation; ! begin ! // TabSet1 should always tabulate to even positions ! Assert.AreEqual(TabSet1.TabFrom(1), 2); ! Assert.AreEqual(TabSet1.TabFrom(2), 4); ! Assert.AreEqual(TabSet1.TabFrom(3), 4); ! Assert.AreEqual(TabSet1.TabFrom(51), 52); ! Assert.AreEqual(TabSet1.TabFrom(52), 54); ! end; ! procedure TabSet.SpecifiedTabsWithAutoDefault; ! var ! i: Integer; ! begin ! // TabSet2 will tabulate to 15, 20, 40 and 44. Beyond that it will tabulate to a multiple of 4 (44-40) ! for i := 0 to 14 do ! Assert.AreEqual(TabSet2.TabFrom(i), 15, 'Tabulate from {0}', [i]); ! for i := 15 to 19 do ! Assert.AreEqual(TabSet2.TabFrom(i), 20, 'Tabulate from {0}', [i]); ! for i := 20 to 39 do ! Assert.AreEqual(TabSet2.TabFrom(i), 40, 'Tabulate from {0}', [i]); ! for i := 40 to 43 do ! Assert.AreEqual(TabSet2.TabFrom(i), 44, 'Tabulate from {0}', [i]); ! for i := 44 to 47 do ! Assert.AreEqual(TabSet2.TabFrom(i), 48, 'Tabulate from {0}', [i]); ! for i := 48 to 51 do ! Assert.AreEqual(TabSet2.TabFrom(i), 52, 'Tabulate from {0}', [i]); end; ! procedure TabSet.SpecifiedTabsWithDefault; ! var ! i: Integer; begin ! // TabSet2 will tabulate to 15, 20, 40 and 44. Beyond that it will tabulate to a multiple of 2 ! for i := 0 to 14 do ! Assert.AreEqual(TabSet3.TabFrom(i), 15, 'Tabulate from {0}', [i]); ! for i := 15 to 19 do ! Assert.AreEqual(TabSet3.TabFrom(i), 20, 'Tabulate from {0}', [i]); ! for i := 20 to 39 do ! Assert.AreEqual(TabSet3.TabFrom(i), 40, 'Tabulate from {0}', [i]); ! for i := 40 to 43 do ! Assert.AreEqual(TabSet3.TabFrom(i), 44, 'Tabulate from {0}', [i]); ! for i := 44 to 45 do ! Assert.AreEqual(TabSet3.TabFrom(i), 46, 'Tabulate from {0}', [i]); ! for i := 46 to 47 do ! Assert.AreEqual(TabSet3.TabFrom(i), 48, 'Tabulate from {0}', [i]); ! for i := 48 to 49 do ! Assert.AreEqual(TabSet3.TabFrom(i), 50, 'Tabulate from {0}', [i]); ! for i := 50 to 51 do ! Assert.AreEqual(TabSet3.TabFrom(i), 52, 'Tabulate from {0}', [i]); end; ! procedure TabSet.CloneAndEqual; ! var ! tempSet: StringUtils.TabSet; begin ! tempSet := StringUtils.TabSet(TabSet1.Clone); ! Assert.AreNotSame(TabSet1, tempSet); ! Assert.AreEqual(TabSet1, tempSet, 'Cloned'); ! tempSet.Add(2); ! Assert.AreEqual(TabSet1, tempSet, 'TabPos=[2], DefaultWidth=2'); ! tempSet.DefaultWidth := 0; ! Assert.AreEqual(TabSet1, tempSet, 'TabPos=[2], DefaultWidth=0 (automatic)'); ! tempSet.Add(4); ! Assert.AreEqual(TabSet1, tempSet, 'TabPos=[2,4], DefaultWidth=0 (automatic)'); ! tempSet.Clear; ! Assert.AreEqual(TabSet1, tempSet, 'TabPos=[], DefaultWidth=0 (automatic)'); ! end; ! ! procedure TabSet.RemovingTabs; ! var ! tempSet: StringUtils.TabSet; ! i: Integer; ! begin ! tempSet := StringUtils.TabSet(TabSet2.Clone); ! tempSet.Remove(20); ! for i := 0 to 14 do ! Assert.AreEqual(tempSet.TabFrom(i), 15, 'Removed 20; Tabulate from {0}', [i]); ! for i := 15 to 39 do ! Assert.AreEqual(tempSet.TabFrom(i), 40, 'Removed 20; Tabulate from {0}', [i]); ! for i := 40 to 43 do ! Assert.AreEqual(tempSet.TabFrom(i), 44, 'Removed 20; Tabulate from {0}', [i]); ! for i := 44 to 47 do ! Assert.AreEqual(tempSet.TabFrom(i), 48, 'Removed 20; Tabulate from {0}', [i]); ! for i := 48 to 51 do ! Assert.AreEqual(tempSet.TabFrom(i), 52, 'Removed 20; Tabulate from {0}', [i]); ! for i := 52 to 55 do ! Assert.AreEqual(tempSet.TabFrom(i), 56, 'Removed 20; Tabulate from {0}', [i]); ! for i := 56 to 59 do ! Assert.AreEqual(tempSet.TabFrom(i), 60, 'Removed 20; Tabulate from {0}', [i]); ! ! tempSet := StringUtils.TabSet(TabSet2.Clone); ! tempSet.Remove(40); ! for i := 0 to 14 do ! Assert.AreEqual(tempSet.TabFrom(i), 15, 'Removed 40; Tabulate from {0}', [i]); ! for i := 15 to 19 do ! Assert.AreEqual(tempSet.TabFrom(i), 20, 'Removed 40; Tabulate from {0}', [i]); ! for i := 20 to 43 do ! Assert.AreEqual(tempSet.TabFrom(i), 44, 'Removed 40; Tabulate from {0}', [i]); ! for i := 44 to 67 do ! Assert.AreEqual(tempSet.TabFrom(i), 68, 'Removed 40; Tabulate from {0}', [i]); ! for i := 68 to 91 do ! Assert.AreEqual(tempSet.TabFrom(i), 92, 'Removed 40; Tabulate from {0}', [i]); ! for i := 92 to 115 do ! Assert.AreEqual(tempSet.TabFrom(i), 116, 'Removed 40; Tabulate from {0}', [i]); ! for i := 116 to 139 do ! Assert.AreEqual(tempSet.TabFrom(i), 140, 'Removed 40; Tabulate from {0}', [i]); ! ! tempSet := StringUtils.TabSet(TabSet2.Clone); ! tempSet.Remove(40, True); ! for i := 0 to 14 do ! Assert.AreEqual(tempSet.TabFrom(i), 15, 'Removed 40+; Tabulate from {0}', [i]); ! for i := 15 to 19 do ! Assert.AreEqual(tempSet.TabFrom(i), 20, 'Removed 40+; Tabulate from {0}', [i]); ! for i := 20 to 24 do ! Assert.AreEqual(tempSet.TabFrom(i), 25, 'Removed 40+; Tabulate from {0}', [i]); ! for i := 25 to 29 do ! Assert.AreEqual(tempSet.TabFrom(i), 30, 'Removed 40+; Tabulate from {0}', [i]); ! for i := 30 to 34 do ! Assert.AreEqual(tempSet.TabFrom(i), 35, 'Removed 40+; Tabulate from {0}', [i]); ! for i := 35 to 39 do ! Assert.AreEqual(tempSet.TabFrom(i), 40, 'Removed 40+; Tabulate from {0}', [i]); ! for i := 40 to 44 do ! Assert.AreEqual(tempSet.TabFrom(i), 45, 'Removed 40+; Tabulate from {0}', [i]); ! end; ! ! procedure TabSet.AddingTabs; ! var ! tempSet: StringUtils.TabSet; ! tempSet2: StringUtils.TabSet; ! i: Integer; ! begin ! tempSet := StringUtils.TabSet(TabSet2.Clone); ! tempSet.Add(42); ! for i := 0 to 14 do ! Assert.AreEqual(tempSet.TabFrom(i), 15, 'Added 42; Tabulate from {0}', [i]); ! for i := 15 to 19 do ! Assert.AreEqual(tempSet.TabFrom(i), 20, 'Added 42; Tabulate from {0}', [i]); ! for i := 20 to 39 do ! Assert.AreEqual(tempSet.TabFrom(i), 40, 'Added 42; Tabulate from {0}', [i]); ! for i := 40 to 41 do ! Assert.AreEqual(tempSet.TabFrom(i), 42, 'Added 42; Tabulate from {0}', [i]); ! for i := 42 to 43 do ! Assert.AreEqual(tempSet.TabFrom(i), 44, 'Added 42; Tabulate from {0}', [i]); ! for i := 44 to 45 do ! Assert.AreEqual(tempSet.TabFrom(i), 46, 'Added 42; Tabulate from {0}', [i]); ! for i := 46 to 47 do ! Assert.AreEqual(tempSet.TabFrom(i), 48, 'Added 42; Tabulate from {0}', [i]); ! for i := 48 to 49 do ! Assert.AreEqual(tempSet.TabFrom(i), 50, 'Added 42; Tabulate from {0}', [i]); ! for i := 50 to 51 do ! Assert.AreEqual(tempSet.TabFrom(i), 52, 'Added 42; Tabulate from {0}', [i]); ! tempSet2 := StringUtils.TabSet.Create([40, 20, 15], 2); ! Assert.AreEqual(tempSet2, tempSet); end; {$ENDREGION} |