UndoManagerTests.cs 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. using NUnit.Framework;
  2. using PixiEditor.Models.Controllers;
  3. using PixiEditor.Models.DataHolders;
  4. using System;
  5. using System.Collections.Generic;
  6. using System.Text;
  7. namespace PixiEditorTests.ModelsTests.ControllersTests
  8. {
  9. [TestFixture]
  10. public class UndoManagerTests
  11. {
  12. public int ExampleProperty { get; set; } = 1;
  13. [TestCase]
  14. public void TestSetRoot()
  15. {
  16. UndoManager.SetMainRoot(this);
  17. Assert.AreEqual(this, UndoManager.MainRoot);
  18. }
  19. [TestCase]
  20. public void TestAddToUndoStack()
  21. {
  22. PrepareUnoManagerForTests();
  23. UndoManager.AddUndoChange(new Change("ExampleProperty", ExampleProperty, ExampleProperty));
  24. Assert.IsTrue(UndoManager.UndoStack.Count == 1);
  25. Assert.IsTrue((int)UndoManager.UndoStack.Peek().OldValue == ExampleProperty);
  26. }
  27. [TestCase]
  28. public void TestThatUndoAddsToRedoStack()
  29. {
  30. PrepareUnoManagerForTests();
  31. UndoManager.AddUndoChange(new Change("ExampleProperty", ExampleProperty, ExampleProperty));
  32. UndoManager.Undo();
  33. Assert.IsTrue(UndoManager.RedoStack.Count == 1);
  34. }
  35. [TestCase]
  36. public void TestUndo()
  37. {
  38. PrepareUnoManagerForTests();
  39. UndoManager.AddUndoChange(new Change("ExampleProperty", ExampleProperty, 55));
  40. ExampleProperty = 55;
  41. UndoManager.Undo();
  42. Assert.IsTrue((int)UndoManager.RedoStack.Peek().OldValue == ExampleProperty);
  43. }
  44. [TestCase]
  45. public void TestThatRedoAddsToUndoStack()
  46. {
  47. PrepareUnoManagerForTests();
  48. UndoManager.AddUndoChange(new Change("ExampleProperty", ExampleProperty, ExampleProperty));
  49. UndoManager.Undo();
  50. UndoManager.Redo();
  51. Assert.IsTrue(UndoManager.UndoStack.Count == 1);
  52. }
  53. [TestCase]
  54. public void TestRedo()
  55. {
  56. PrepareUnoManagerForTests();
  57. ExampleProperty = 55;
  58. UndoManager.AddUndoChange(new Change("ExampleProperty", 1, ExampleProperty));
  59. UndoManager.Undo();
  60. UndoManager.Redo();
  61. Assert.IsTrue((int)UndoManager.UndoStack.Peek().NewValue == ExampleProperty);
  62. }
  63. private void PrepareUnoManagerForTests()
  64. {
  65. UndoManager.SetMainRoot(this);
  66. UndoManager.UndoStack.Clear();
  67. UndoManager.RedoStack.Clear();
  68. ExampleProperty = 1;
  69. }
  70. }
  71. }