# HG changeset patch # User IBBoard # Date 1314632909 -3600 # Node ID b0b41bf8ad6809627fe67a7f12f20b34562520ae # Parent c28ff466d00947c8969df3284b8c6a8aab806bd2 Re #101: Make army names and sizes modifiable after creation * Add unit tests for new command diff -r c28ff466d009 -r b0b41bf8ad68 API/Commands/EditArmyCommandTest.cs --- /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); + } + } +} diff -r c28ff466d009 -r b0b41bf8ad68 IBBoard.WarFoundry.API.Tests.csproj --- a/IBBoard.WarFoundry.API.Tests.csproj Sun Aug 21 20:40:41 2011 +0100 +++ b/IBBoard.WarFoundry.API.Tests.csproj Mon Aug 29 16:48:29 2011 +0100 @@ -106,6 +106,7 @@ + @@ -299,6 +300,7 @@ + False @@ -364,7 +366,5 @@ true - - - + \ No newline at end of file