changeset 26:57b5d27e95fb

Fixes #45: Create composite limit * Create abstract implementation tests of a composite limit * Create tests for limits based on minimum and maximum of composition
author IBBoard <dev@ibboard.co.uk>
date Sat, 05 Jun 2010 10:58:09 +0000
parents 8a350c00797e
children 16c28954b559
files Limits/AbstractCompositeLimitTest.cs Limits/CompositeMaximumLimitTest.cs Limits/CompositeMinimumLimitTest.cs
diffstat 3 files changed, 113 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Limits/AbstractCompositeLimitTest.cs	Sat Jun 05 10:58:09 2010 +0000
@@ -0,0 +1,49 @@
+//  This file (AbstractCompositeLimitTest.cs) is a part of the IBBoard.Tests project and is copyright 2010 IBBoard
+// 
+//  // The file and the library/program it is in are licensed and distributed, without warranty, under the GNU Affero GPL license, either version 3 of the License or (at your option) any later version. Please see COPYING for more information and the full license.
+using System.Collections.Generic;
+using NUnit.Framework;
+using NUnit.Framework.SyntaxHelpers;
+
+namespace IBBoard.Limits
+{
+	public abstract class AbstractCompositeLimitTest
+	{
+		[Test()]
+		public void TestCompositeWithZeroLimits()
+		{
+			Assert.That(CreateCompositeLimitWithCollection(new List<ILimit>()).GetLimit(100), Is.EqualTo(0));
+		}
+		
+		[Test()]
+		public void TestCompositeWithOneLimitReturnsLimitValue()
+		{
+			NumericSizeConstrainedLimit limit = new NumericSizeConstrainedLimit(10);
+			AbstractCompositeLimit compositeLimit = CreateCompositeLimitWithLimit(limit);
+			Assert.That(compositeLimit.GetLimit(1), Is.EqualTo(limit.GetLimit(1)));
+			Assert.That(compositeLimit.GetLimit(10), Is.EqualTo(limit.GetLimit(10)));
+			Assert.That(compositeLimit.GetLimit(100), Is.EqualTo(limit.GetLimit(100)));
+		}
+		
+		[Test()]
+		public void TestCompositeWithMultipleLimitsReturnsCorrectValues()
+		{
+			List<ILimit> limits = new List<ILimit>();
+			int sizeConstrainedLimitNum = 10;
+			NumericSizeConstrainedLimit limit1 = new NumericSizeConstrainedLimit(sizeConstrainedLimitNum);
+			limits.Add(limit1);
+			int absoluteLimitNum = 5;
+			AbsoluteNumericLimit limit2 = new AbsoluteNumericLimit(absoluteLimitNum);
+			limits.Add(limit2);
+			AbstractCompositeLimit compositeLimit = CreateCompositeLimitWithCollection(limits);
+			Assert.That(compositeLimit.GetLimit(1), Is.EqualTo(GetMultipleLimitValue(1, sizeConstrainedLimitNum, absoluteLimitNum)));
+			Assert.That(compositeLimit.GetLimit(10), Is.EqualTo(GetMultipleLimitValue(10, sizeConstrainedLimitNum, absoluteLimitNum)));
+			Assert.That(compositeLimit.GetLimit(100), Is.EqualTo(GetMultipleLimitValue(100, sizeConstrainedLimitNum, absoluteLimitNum)));			
+		}
+
+		protected abstract AbstractCompositeLimit CreateCompositeLimitWithLimit(ILimit limit);
+		protected abstract AbstractCompositeLimit CreateCompositeLimitWithCollection(List<ILimit> limits);
+		protected abstract int GetMultipleLimitValue(int numberBeingLimited, int sizeConstrainedLimitNum, int absoluteLimitNum);
+	}
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Limits/CompositeMaximumLimitTest.cs	Sat Jun 05 10:58:09 2010 +0000
@@ -0,0 +1,32 @@
+//  This file (CompositeMinimumLimitTest.cs) is a part of the IBBoard.Tests project and is copyright 2010 IBBoard
+// 
+//  // The file and the library/program it is in are licensed and distributed, without warranty, under the GNU Affero GPL license, either version 3 of the License or (at your option) any later version. Please see COPYING for more information and the full license.
+using System;
+using System.Collections.Generic;
+using NUnit.Framework;
+namespace IBBoard.Limits
+{
+	[TestFixture()]
+	public class CompositeMaximumLimitTest : AbstractCompositeLimitTest
+	{
+		protected override AbstractCompositeLimit CreateCompositeLimitWithLimit(ILimit limit)
+		{
+			return new CompositeMaximumLimit(limit);
+		}
+		
+		
+		protected override AbstractCompositeLimit CreateCompositeLimitWithCollection(List<ILimit> limits)
+		{
+			return new CompositeMaximumLimit(limits);
+		}
+		
+		
+		protected override int GetMultipleLimitValue(int numberBeingLimited, int sizeConstrainedLimitNum, int absoluteLimitNum)
+		{
+			int limitedNum = Math.Min(sizeConstrainedLimitNum, numberBeingLimited);
+			limitedNum = Math.Max(limitedNum, absoluteLimitNum);
+			return limitedNum;
+		}
+	}
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Limits/CompositeMinimumLimitTest.cs	Sat Jun 05 10:58:09 2010 +0000
@@ -0,0 +1,32 @@
+//  This file (CompositeMinimumLimitTest.cs) is a part of the IBBoard.Tests project and is copyright 2010 IBBoard
+// 
+//  // The file and the library/program it is in are licensed and distributed, without warranty, under the GNU Affero GPL license, either version 3 of the License or (at your option) any later version. Please see COPYING for more information and the full license.
+using System;
+using System.Collections.Generic;
+using NUnit.Framework;
+namespace IBBoard.Limits
+{
+	[TestFixture()]
+	public class CompositeMinimumLimitTest : AbstractCompositeLimitTest
+	{
+		protected override AbstractCompositeLimit CreateCompositeLimitWithLimit (ILimit limit)
+		{
+			return new CompositeMinimumLimit(limit);
+		}
+		
+		
+		protected override AbstractCompositeLimit CreateCompositeLimitWithCollection (List<ILimit> limits)
+		{
+			return new CompositeMinimumLimit(limits);
+		}
+		
+		
+		protected override int GetMultipleLimitValue(int numberBeingLimited, int sizeConstrainedLimitNum, int absoluteLimitNum)
+		{
+			int limitedNum = Math.Min(sizeConstrainedLimitNum, numberBeingLimited);
+			limitedNum = Math.Min(limitedNum, absoluteLimitNum);
+			return limitedNum;
+		}
+	}
+}
+