diff API/Commands/EditArmyCommandTest.cs @ 163:b0b41bf8ad68 Ticket341-DefaultArmySize

Re #101: Make army names and sizes modifiable after creation * Add unit tests for new command
author IBBoard <dev@ibboard.co.uk>
date Mon, 29 Aug 2011 16:48:29 +0100
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/API/Commands/EditArmyCommandTest.cs	Mon Aug 29 16:48:29 2011 +0100
@@ -0,0 +1,121 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+using NUnit.Framework;
+using IBBoard.WarFoundry.API.Objects;
+using IBBoard.WarFoundry.API.Objects.Mock;
+using NUnit.Framework.SyntaxHelpers;
+
+namespace IBBoard.WarFoundry.API.Commands
+{
+	[TestFixture]
+	public class EditArmyCommandTest
+	{
+		[Test]
+		public void TestChangingNameOnlyChangesName()
+		{
+			Army army = CreateArmy();
+			EditArmyCommand cmd = new EditArmyCommand(army);
+			string newName = "Something New";
+			int maxSize = army.MaxPoints;
+			cmd.NewName = newName;
+			cmd.Execute();
+			Assert.That(army.Name, Is.EqualTo(newName));
+			Assert.That(army.MaxPoints, Is.EqualTo(maxSize));
+		}
+
+		[Test]
+		public void TestUndoNameChangeGivesOldName()
+		{
+			Army army = CreateArmy();
+			EditArmyCommand cmd = new EditArmyCommand(army);
+			string oldName = army.Name;
+			cmd.NewName = "Something New";
+			cmd.Execute();
+			cmd.Undo();
+			Assert.That(army.Name, Is.EqualTo(oldName));
+		}
+
+		[Test]
+		public void TestChangingSizeOnlyChangesSize()
+		{
+			Army army = CreateArmy();
+			EditArmyCommand cmd = new EditArmyCommand(army);
+			string oldName = army.Name;
+			int maxSize = 1337;
+			cmd.NewSize = maxSize;
+			cmd.Execute();
+			Assert.That(army.MaxPoints, Is.EqualTo(maxSize));
+			Assert.That(army.Name, Is.EqualTo(oldName));
+		}
+
+		[Test]
+		public void TestUndoSizeChangeGivesOldSize()
+		{
+			Army army = CreateArmy();
+			EditArmyCommand cmd = new EditArmyCommand(army);
+			int oldSize = army.MaxPoints;
+			cmd.NewSize = 1337;
+			cmd.Execute();
+			cmd.Undo();
+			Assert.That(army.MaxPoints, Is.EqualTo(oldSize));
+		}
+
+		[Test]
+		public void TestChangingBothChangesBoth()
+		{
+			Army army = CreateArmy();
+			EditArmyCommand cmd = new EditArmyCommand(army);
+			string newName = "Something New";
+			cmd.NewName = newName;
+			int maxSize = 1337;
+			cmd.NewSize = maxSize;
+			cmd.Execute();
+			Assert.That(army.MaxPoints, Is.EqualTo(maxSize));
+			Assert.That(army.Name, Is.EqualTo(newName));
+		}
+
+		[Test]
+		public void TestUndoChangeBothGivesOldValues()
+		{
+			Army army = CreateArmy();
+			EditArmyCommand cmd = new EditArmyCommand(army);
+			int oldSize = army.MaxPoints;
+			string oldName = army.Name;
+			cmd.NewName = "Something New";
+			cmd.NewSize = 1337;
+			cmd.Execute();
+			cmd.Undo();
+			Assert.That(army.MaxPoints, Is.EqualTo(oldSize));
+			Assert.That(army.Name, Is.EqualTo(oldName));
+		}
+
+		[Test]
+		public void TestCanExecuteRequiresArmyAndAtLeastOneValue()
+		{
+			EditArmyCommand cmd = new EditArmyCommand(null);
+			Assert.That(cmd.CanExecute(), Is.False);
+			Army army = CreateArmy();
+			cmd = new EditArmyCommand(army);
+			Assert.That(cmd.CanExecute(), Is.False);
+			cmd.NewName = "NonNull";
+			Assert.That(cmd.CanExecute(), Is.True);
+			cmd.NewName = null;
+			Assert.That(cmd.CanExecute(), Is.False);
+			cmd.NewSize = 1000;
+			Assert.That(cmd.CanExecute(), Is.True);
+			cmd.NewSize = 0;
+			Assert.That(cmd.CanExecute(), Is.False);
+			cmd.NewSize = -1;
+			Assert.That(cmd.CanExecute(), Is.False);
+			cmd.NewSize = 1;
+			Assert.That(cmd.CanExecute(), Is.True);
+		}
+
+
+		static Army CreateArmy()
+		{
+			return new Army(new MockRace(), "default name", 1000);
+		}
+	}
+}