# HG changeset patch # User IBBoard # Date 1259614042 0 # Node ID 298786adcddc597c3d61673238a6c28dbfe75c90 # Parent 37642712f632503308aee84d67a6a904a5d493bf Fixes #25: Add method for parsing enums from XML elements * Add unit tests for XmlToolsTests to test enum parsing diff -r 37642712f632 -r 298786adcddc IBBoard.Tests.csproj --- 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 @@ + + + diff -r 37642712f632 -r 298786adcddc Xml/XmlToolsTests.cs --- /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(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(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(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(elem, "enum", false); + } + } +}