view API/Objects/Requirement/AbstractUnitTypeUnitRequirementTest.cs @ 231:5e03b68dd214

Re #410: Create "N units per M models in parent unit" requirement * Add required usage of context objects * Add tests for new requirement * Add some extras to test unit type setup that the new requirement needs
author IBBoard <dev@ibboard.co.uk>
date Fri, 27 Jul 2012 20:33:40 +0100
parents 9bf34e88da89
children
line wrap: on
line source

// This file (AbstractUnitTypeUnitRequirementTest.cs) is a part of the IBBoard.WarFoundry.API.Tests project and is copyright 2012 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 NUnit.Framework;
using IBBoard.WarFoundry.API.Objects.Mock;

namespace IBBoard.WarFoundry.API.Objects.Requirement
{
	public abstract class AbstractUnitTypeUnitRequirementTest<OBJECT_TYPE, TEST_CLASS> : AbstractUnitRequirementTest<OBJECT_TYPE, TEST_CLASS> where OBJECT_TYPE : UnitType where TEST_CLASS : AbstractUnitRequirement<OBJECT_TYPE>
	{
		protected MockRace mockRace;
		protected UnitType unitType1;
		protected UnitType unitType2;
		protected UnitType unitType3;

		[TestFixtureSetUp()]
		public void SetupRace()
		{
			mockRace = new MockRace();
			unitType1 = new MockUnitType("type1", "Unit Type 1");
			unitType1.MinSize = 1;
			mockRace.AddUnitType(unitType1);
			unitType2 = new MockUnitType("type2", "Unit Type 2");
			unitType2.MinSize = 5;
			unitType2.AddContainedUnitType(unitType1);
			mockRace.AddUnitType(unitType2);
			unitType3 = new MockUnitType("type3", "Unit Type 3");
			unitType3.MinSize = 1;
			unitType3.AddContainedUnitType(unitType1);
			mockRace.AddUnitType(unitType3);
		}

		public override TEST_CLASS GetObject()
		{
			return CreateRequirement(unitType1);
		}

		public override TEST_CLASS GetSameObject()
		{
			return CreateRequirement(unitType1);
		}

		public override TEST_CLASS GetDifferentObject()
		{
			return CreateRequirement(unitType2);
		}

		protected abstract TEST_CLASS CreateRequirement(UnitType requirementOn);
	}
}