Mercurial > repos > IBBoard.WarFoundry.API.Tests
view API/Commands/EditArmyCommandTest.cs @ 180:ce40484ad921
Re #356: Exception caused by unit limits
* Add test that triggers the stack overflow, based on example data file
author | IBBoard <dev@ibboard.co.uk> |
---|---|
date | Sun, 06 Nov 2011 19:47:18 +0000 |
parents | b0b41bf8ad68 |
children |
line wrap: on
line source
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); } } }