public void Should_undo_redo_collection_removal() { var screen = new Screen(); var circle = new Circle(); screen.Add(circle); m.Reset(); screen.Remove(circle); UndoCount(1); m.Undo(); Assert.AreSame(circle, screen.Shapes[0]); m.Redo(); Assert.AreEqual(0, screen.Shapes.Count); }
public void Should_throw_when_removing_non_existent_element() { var screen = new Screen(); screen.Remove(new Circle()); }
public void Should_undo_redo_collection_changes_in_explicit_batch() { var screen = new Screen(); m.BeginBatch(); try { var circle = new Circle(); screen.Add(new Circle {Radius = 10}); screen.Add(circle); screen.MoveToFront(1); screen.Remove(circle); } finally { m.EndBatch(); } Assert.AreEqual(1, screen.Shapes.Count); UndoCount(1); m.Undo(); Assert.AreEqual(0, screen.Shapes.Count); }
public void Should_fire_collection_removal_event() { var screen = new Screen(); var circle = new Circle(); screen.Add(circle); int count = 0; m.Changed += (_, args) => { Assert.AreEqual(typeof (ElementRemovalEvent<Circle>), args.Event.GetType()); Assert.AreSame(screen.Shapes, ((ElementRemovalEvent<Circle>)args.Event).Collection); Assert.AreSame(circle, ((ElementRemovalEvent<Circle>)args.Event).Element); Assert.AreEqual(0, ((ElementRemovalEvent<Circle>)args.Event).Index); count++; }; screen.Remove(circle); m.Undo(); Assert.AreEqual(2, count); }