# HG changeset patch # User IBBoard # Date 1238098400 0 # Node ID 62221475c572e476b973189d13a2aaf48e58c71b # Parent eac501db18e7c60a87d5a563258f3cf6098cd3e4 Fixes #17 - Make INI section and keys case-insensitive * Add tests to make sure that the keys and names are treated as case-insensitive diff -r eac501db18e7 -r 62221475c572 IBBoard.Ini.Tests.csproj --- a/IBBoard.Ini.Tests.csproj Sat Feb 21 10:57:23 2009 +0000 +++ b/IBBoard.Ini.Tests.csproj Thu Mar 26 20:13:20 2009 +0000 @@ -45,7 +45,7 @@ - + diff -r eac501db18e7 -r 62221475c572 IniFileTest.cs --- a/IniFileTest.cs Sat Feb 21 10:57:23 2009 +0000 +++ b/IniFileTest.cs Thu Mar 26 20:13:20 2009 +0000 @@ -29,6 +29,15 @@ file.AddSection(new IniSection("key")); file.AddSection(new IniSection("key")); } + + [Test()] + [ExpectedException("IBBoard.Ini.DuplicateIniSectionException")] + public void TestAddingDuplicateSectionWithDifferentNameCaseThrowsDuplicateSectionException() + { + IniFile file = new IniFile(); + file.AddSection(new IniSection("key")); + file.AddSection(new IniSection("KEY")); + } [Test()] public void TestGettingNonExistantSectionDoesNotReturnNull() @@ -61,6 +70,20 @@ } [Test()] + public void TestGettingSectionLineValueOnLineInSectionWithDifferentSectionNameCaseReturnsValue() + { + IniFile file = new MockIniFileWithOneSectionAndOneLine(); + Assert.AreEqual(MockIniFileWithOneSectionAndOneLine.VALUE, file.GetSectionLineValue(MockIniFileWithOneSectionAndOneLine.SECTION_NAME.ToUpper(), MockIniFileWithOneSectionAndOneLine.KEY_NAME)); + } + + [Test()] + public void TestGettingSectionLineValueOnLineInSectionWithDifferentLineNameCaseReturnsValue() + { + IniFile file = new MockIniFileWithOneSectionAndOneLine(); + Assert.AreEqual(MockIniFileWithOneSectionAndOneLine.VALUE, file.GetSectionLineValue(MockIniFileWithOneSectionAndOneLine.SECTION_NAME, MockIniFileWithOneSectionAndOneLine.KEY_NAME.ToUpper())); + } + + [Test()] public void TestGettingSectionLineValueOnNonExistantSectionReturnsDefaultValue() { IniFile file = new IniFile(); diff -r eac501db18e7 -r 62221475c572 IniSectionTest.cs --- a/IniSectionTest.cs Sat Feb 21 10:57:23 2009 +0000 +++ b/IniSectionTest.cs Thu Mar 26 20:13:20 2009 +0000 @@ -48,6 +48,17 @@ } [Test()] + [ExpectedException("IBBoard.Ini.DuplicateIniLineException")] + public void TestAddingKeyValuePairLineExceptionsOnDuplicateKeyWithDifferentCase() + { + IniSection section = new IniSection("someName"); + IniKeyValuePairLine line = new IniKeyValuePairLine("something", "value"); + section.AddIniLine(line); + line = new IniKeyValuePairLine("SOMETHING", "different"); + section.AddIniLine(line); + } + + [Test()] public void TestGettingLineValueOnNonExistantLineReturnsNull() { IniSection section = new MockIniSectionWithOneLine(); @@ -62,6 +73,13 @@ } [Test()] + public void TestGettingSectionLineValueOnLineInSectionWithDifferentCaseReturnsValue() + { + IniSection section = new MockIniSectionWithOneLine(); + Assert.AreEqual(MockIniSectionWithOneLine.VALUE, section.GetLineValue(MockIniSectionWithOneLine.KEY_NAME.ToUpper())); + } + + [Test()] public void TestGettingSectionLineValueOnNonExistantLineInSectionReturnsDefaultValue() { IniSection section = new MockIniSectionWithOneLine();