Mercurial > repos > IBBoard.WarFoundry.API.Tests
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); + } + } +}