Mercurial > repos > IBBoard.Tests
changeset 12:298786adcddc
Fixes #25: Add method for parsing enums from XML elements
* Add unit tests for XmlToolsTests to test enum parsing
author | IBBoard <dev@ibboard.co.uk> |
---|---|
date | Mon, 30 Nov 2009 20:47:22 +0000 |
parents | 37642712f632 |
children | f6fd30d3b817 |
files | IBBoard.Tests.csproj Xml/XmlToolsTests.cs |
diffstat | 2 files changed, 62 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/IBBoard.Tests.csproj Fri Nov 06 19:57:44 2009 +0000 +++ b/IBBoard.Tests.csproj Mon Nov 30 20:47:22 2009 +0000 @@ -34,16 +34,19 @@ <Compile Include="Limits\AbstractLimitTest.cs" /> <Compile Include="Limits\AbsoluteNumericLimitTest.cs" /> <Compile Include="Limits\UnlimitedLimitTest.cs" /> + <Compile Include="Xml\XmlToolsTests.cs" /> </ItemGroup> <ItemGroup> <Reference Include="System" /> <Reference Include="nunit.core, Version=2.4.8.0, Culture=neutral, PublicKeyToken=96d09a1eb7f44a77" /> <Reference Include="nunit.framework, Version=2.4.8.0, Culture=neutral, PublicKeyToken=96d09a1eb7f44a77" /> + <Reference Include="System.Xml" /> </ItemGroup> <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" /> <ItemGroup> <Folder Include="CustomMath\" /> <Folder Include="Limits\" /> + <Folder Include="Xml\" /> </ItemGroup> <ItemGroup> <ProjectReference Include="..\IBBoard\IBBoard.csproj">
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Xml/XmlToolsTests.cs Mon Nov 30 20:47:22 2009 +0000 @@ -0,0 +1,59 @@ +// This file (AbstractLimitTest.cs) is a part of the IBBoard.Tests project and is copyright 2009 IBBoard +// +// The file and the library/program it is in are licensed under the GNU LGPL license, either version 3 of the License or (at your option) any later version. Please see COPYING.LGPL for more information and the full license. + +using System; +using System.Xml; +using NUnit.Framework; + +namespace IBBoard.Xml +{ + [TestFixture()] + public class XmlToolsTests + { + private enum TestEnum + { + ALPHA + } + + [Test()] + public void TestParsingOfValidEnumString () + { + XmlElement elem = GetElement("ALPHA"); + Assert.AreEqual(TestEnum.ALPHA, XmlTools.GetEnumValueFromAttribute<TestEnum>(elem, "enum")); + } + + static XmlElement GetElement(string enumValue) + { + XmlDocument doc = new XmlDocument(); + XmlElement elem = doc.CreateElement ("sample"); + XmlAttribute attrib = doc.CreateAttribute ("enum"); + attrib.Value = enumValue; + elem.Attributes.Append (attrib); + return elem; + } + + [Test()] + public void TestParsingOfValidEnumStringWithDifferentCase () + { + XmlElement elem = GetElement("ALPHA"); + Assert.AreEqual(TestEnum.ALPHA, XmlTools.GetEnumValueFromAttribute<TestEnum>(elem, "enum")); + } + + [Test()] + [ExpectedException(typeof(FormatException), ExpectedMessage="Attribute 'enum' of sample with ID was not a valid TestEnum enum")] + public void TestParsingValidEnumStringWithInvalidValueThrowsException () + { + XmlElement elem = GetElement("Omega"); + XmlTools.GetEnumValueFromAttribute<TestEnum>(elem, "enum"); + } + + [Test()] + [ExpectedException(typeof(FormatException), ExpectedMessage="Attribute 'enum' of sample with ID was not a valid TestEnum enum")] + public void TestCaseSensitiveParsingOfValidValueInInvalidCaseThrowsException () + { + XmlElement elem = GetElement("Alpha"); + XmlTools.GetEnumValueFromAttribute<TestEnum>(elem, "enum", false); + } + } +}