diff API/Factories/Xml/WarFoundryXmlLimitParserTest.cs @ 55:7f9e1fef069e

Re #279: Create composite limit * Create separate tests for min and max limits (rename existing test data file) * Fix namespacing of limit nodes * Add test for nesting of composite limits * Add tests for empty composite causing failure
author IBBoard <dev@ibboard.co.uk>
date Sat, 05 Jun 2010 18:58:54 +0000
parents 084049c8dff4
children
line wrap: on
line diff
--- a/API/Factories/Xml/WarFoundryXmlLimitParserTest.cs	Sat Jun 05 15:37:03 2010 +0000
+++ b/API/Factories/Xml/WarFoundryXmlLimitParserTest.cs	Sat Jun 05 18:58:54 2010 +0000
@@ -6,15 +6,16 @@
 using NUnit.Framework;
 using IBBoard.Limits;
 using NUnit.Framework.SyntaxHelpers;
+using IBBoard.IO;
 namespace IBBoard.WarFoundry.API.Factories.Xml
 {
 	[TestFixture()]
 	public class WarFoundryXmlLimitParserTest
 	{
 		[Test()]
-		public void TestCompositeLimit()
+		public void TestCompositeMaxLimit()
 		{
-			XmlElement document = SingleXmlObjectLoader.CreateDocumentElementFromFile(new FileInfo("testdata/limits/composite-limit.xml"));
+			XmlElement document = SingleXmlObjectLoader.CreateDocumentElementFromFile(new FileInfo("testdata/limits/composite-max-limit.xml"));
 			XmlElement limitElem = WarFoundryXmlFactoryUtils.SelectSingleElement(document, "//race:maxLimit/*");
 			WarFoundryXmlLimitParser parser = new WarFoundryXmlLimitParser();
 			ILimit limit = parser.GetLimitFromElement(limitElem);
@@ -26,6 +27,40 @@
 		}
 		
 		[Test()]
+		public void TestCompositeMinLimit()
+		{
+			XmlElement document = SingleXmlObjectLoader.CreateDocumentElementFromFile(new FileInfo("testdata/limits/composite-min-limit.xml"));
+			XmlElement limitElem = WarFoundryXmlFactoryUtils.SelectSingleElement(document, "//race:maxLimit/*");
+			WarFoundryXmlLimitParser parser = new WarFoundryXmlLimitParser();
+			ILimit limit = parser.GetLimitFromElement(limitElem);
+			Assert.That(limit, Is.InstanceOfType(typeof(CompositeMinimumLimit)));
+			Assert.That(limit.GetLimit(1), Is.EqualTo(1));
+			Assert.That(limit.GetLimit(5), Is.EqualTo(5));
+			Assert.That(limit.GetLimit(10), Is.EqualTo(5));
+			Assert.That(limit.GetLimit(20), Is.EqualTo(5));
+		}
+
+		[Test()]
+		public void TestNestedCompositeLimit()
+		{
+			XmlElement document = SingleXmlObjectLoader.CreateDocumentElementFromFile(new FileInfo("testdata/limits/composite-max-limit-nested.xml"));
+			XmlElement limitElem = WarFoundryXmlFactoryUtils.SelectSingleElement(document, "//race:maxLimit/*");
+			WarFoundryXmlLimitParser parser = new WarFoundryXmlLimitParser();
+			ILimit limit = parser.GetLimitFromElement(limitElem);
+			Assert.That(limit, Is.InstanceOfType(typeof(CompositeMaximumLimit)));
+			Assert.That(limit.GetLimit(1), Is.EqualTo(5));
+			Assert.That(limit.GetLimit(5), Is.EqualTo(5));
+			Assert.That(limit.GetLimit(10), Is.EqualTo(5));
+		}
+		
+		[Test()]
+		[ExpectedException(typeof(InvalidFileException))]
+		public void TestEmptyCompositeFailsValidation()
+		{
+			SingleXmlObjectLoader.CreateDocumentElementFromFile(new FileInfo("testdata/limits/empty-composite.xml"));
+		}
+		
+		[Test()]
 		public void TestAbsoluteLimit()
 		{
 			XmlElement document = SingleXmlObjectLoader.CreateDocumentElementFromFile(new FileInfo("testdata/limits/absolute-limit.xml"));