public void AddFighter(string name)
 {
     using (BeginTransaction())
     {
         var newFighter = new FighterContext(World) { Name = name };
         World.Fighters.Add(newFighter);
         SelectedFighter = newFighter;
     }
 }
        public void RemoveFighter()
        {
            // Arrange: create a main context.
            var main = new MainContext(null);

            // Assert: we should not be able to remove a fighter.
            Assert.IsFalse(main.RemoveFighterCommand.CanExecute(null));

            // Arrange: add a 3 of fighters, select the second
            var fighter1 = new FighterContext(main.World);
            var fighter2 = new FighterContext(main.World);
            var fighter3 = new FighterContext(main.World);
            main.World.Fighters.Add(fighter1);
            main.World.Fighters.Add(fighter2);
            main.World.Fighters.Add(fighter3);

            // Assert: we should not yet be able to remove a fighter.
            Assert.IsFalse(main.RemoveFighterCommand.CanExecute(null));

            // Select the second fighter.
            main.SelectedFighter = fighter2;

            // Assert: we should now be able to remove the fighter.
            Assert.IsTrue(main.RemoveFighterCommand.CanExecute(null));

            // Act: remove fighter2
            main.RemoveFighterCommand.Execute(null);

            // Assert: fighter2 should be removed.
            Assert.IsTrue(main.World.Fighters.SequenceEqual(new[] {fighter1, fighter3}));

            // Assert: fighter3 should now be selected.
            Assert.AreEqual(main.SelectedFighter, fighter3);

            // Assert: we should now be able to remove fighter3.
            Assert.IsTrue(main.RemoveFighterCommand.CanExecute(null));

            // Act: remove fighter3
            main.RemoveFighterCommand.Execute(null);

            // Assert: fighter3 should be removed.
            Assert.IsTrue(main.World.Fighters.SequenceEqual(new[] { fighter1 }));

            // Assert: fighter1 should now be selected.
            Assert.AreEqual(main.SelectedFighter, fighter1);

            // Assert: we should now be able to remove fighter1.
            Assert.IsTrue(main.RemoveFighterCommand.CanExecute(null));

            // Act: remove fighter1
            main.RemoveFighterCommand.Execute(null);

            // Assert: nothing should be selected.
            Assert.IsNull(main.SelectedFighter);

            // Assert: world should be empty now.
            Assert.AreEqual(main.World.Fighters.Count, 0);
        }