ViewModelMainTests.cs 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172
  1. using System.IO;
  2. using System.Windows.Media;
  3. using PixiEditor.Helpers;
  4. using PixiEditor.Models.Controllers;
  5. using PixiEditor.Models.DataHolders;
  6. using PixiEditor.Models.IO;
  7. using PixiEditor.Models.Position;
  8. using PixiEditor.Models.Tools;
  9. using PixiEditor.ViewModels;
  10. using Xunit;
  11. namespace PixiEditorTests.ViewModelsTests
  12. {
  13. [Collection("Application collection")]
  14. public class ViewModelMainTests
  15. {
  16. [StaFact]
  17. public void TestThatConstructorSetsUpControllersCorrectly()
  18. {
  19. ViewModelMain viewModel = new ViewModelMain();
  20. Assert.Equal(viewModel, UndoManager.MainRoot);
  21. Assert.NotNull(viewModel.ChangesController);
  22. Assert.NotNull(viewModel.ShortcutController);
  23. Assert.NotEmpty(viewModel.ShortcutController.Shortcuts);
  24. Assert.NotNull(viewModel.BitmapManager);
  25. Assert.Equal(viewModel, ViewModelMain.Current);
  26. }
  27. [StaFact]
  28. public void TestThatSwapColorsCommandSwapsColors()
  29. {
  30. ViewModelMain viewModel = new ViewModelMain();
  31. viewModel.PrimaryColor = Colors.Black;
  32. viewModel.SecondaryColor = Colors.White;
  33. viewModel.SwapColorsCommand.Execute(null);
  34. Assert.Equal(Colors.White, viewModel.PrimaryColor);
  35. Assert.Equal(Colors.Black, viewModel.SecondaryColor);
  36. }
  37. [StaFact]
  38. public void TestThatNewDocumentCreatesNewDocumentWithBaseLayer()
  39. {
  40. ViewModelMain viewModel = new ViewModelMain();
  41. viewModel.NewDocument(5,5);
  42. Assert.NotNull(viewModel.BitmapManager.ActiveDocument);
  43. Assert.Single(viewModel.BitmapManager.ActiveDocument.Layers);
  44. }
  45. [StaFact]
  46. public void TestThatMouseMoveCommandUpdatesCurrentCoordinates()
  47. {
  48. ViewModelMain viewModel = new ViewModelMain();
  49. Assert.Equal(new Coordinates(0, 0), MousePositionConverter.CurrentCoordinates);
  50. viewModel.MouseXOnCanvas = 5;
  51. viewModel.MouseYOnCanvas = 5;
  52. viewModel.MouseMoveCommand.Execute(null);
  53. Assert.Equal(new Coordinates(5,5), MousePositionConverter.CurrentCoordinates);
  54. }
  55. [StaFact]
  56. public void TestThatSelectToolCommandSelectsNewTool()
  57. {
  58. ViewModelMain viewModel = new ViewModelMain();
  59. Assert.Equal(ToolType.Move,viewModel.BitmapManager.SelectedTool.ToolType);
  60. viewModel.SelectToolCommand.Execute(ToolType.Line);
  61. Assert.Equal(ToolType.Line, viewModel.BitmapManager.SelectedTool.ToolType);
  62. }
  63. [StaFact]
  64. public void TestThatMouseUpCommandStopsRecordingMouseMovements()
  65. {
  66. ViewModelMain viewModel = new ViewModelMain();
  67. viewModel.BitmapManager.MouseController.StartRecordingMouseMovementChanges(true);
  68. Assert.True(viewModel.BitmapManager.MouseController.IsRecordingChanges);
  69. viewModel.MouseHook_OnMouseUp(default, default);
  70. Assert.False(viewModel.BitmapManager.MouseController.IsRecordingChanges);
  71. }
  72. [StaFact]
  73. public void TestThatNewLayerCommandCreatesNewLayer()
  74. {
  75. ViewModelMain viewModel = new ViewModelMain();
  76. viewModel.BitmapManager.ActiveDocument = new Document(1,1);
  77. Assert.Empty(viewModel.BitmapManager.ActiveDocument.Layers);
  78. viewModel.NewLayerCommand.Execute(null);
  79. Assert.Single(viewModel.BitmapManager.ActiveDocument.Layers);
  80. }
  81. [StaFact]
  82. public void TestThatSaveDocumentCommandSavesFile()
  83. {
  84. ViewModelMain viewModel = new ViewModelMain();
  85. string fileName = "testFile.pixi";
  86. viewModel.BitmapManager.ActiveDocument = new Document(1,1);
  87. Exporter.SaveDocumentPath = fileName;
  88. viewModel.SaveDocumentCommand.Execute(null);
  89. Assert.True(File.Exists(fileName));
  90. File.Delete(fileName);
  91. }
  92. [StaFact]
  93. public void TestThatAddSwatchAddsNonDuplicateSwatch()
  94. {
  95. ViewModelMain viewModel = new ViewModelMain();
  96. viewModel.BitmapManager.ActiveDocument = new Document(1,1);
  97. viewModel.AddSwatch(Colors.Green);
  98. viewModel.AddSwatch(Colors.Green);
  99. Assert.Single(viewModel.BitmapManager.ActiveDocument.Swatches);
  100. Assert.Equal(Colors.Green,viewModel.BitmapManager.ActiveDocument.Swatches[0]);
  101. }
  102. [StaTheory]
  103. [InlineData(5,7)]
  104. [InlineData(1,1)]
  105. [InlineData(1,2)]
  106. [InlineData(2,1)]
  107. [InlineData(16,16)]
  108. [InlineData(50,28)]
  109. [InlineData(120,150)]
  110. public void TestThatSelectAllCommandSelectsWholeDocument(int docWidth, int docHeight)
  111. {
  112. ViewModelMain viewModel = new ViewModelMain
  113. {
  114. BitmapManager = {ActiveDocument = new Document(docWidth, docHeight)}
  115. };
  116. viewModel.BitmapManager.AddNewLayer("layer");
  117. viewModel.SelectAllCommand.Execute(null);
  118. Assert.Equal(viewModel.BitmapManager.ActiveDocument.Width * viewModel.BitmapManager.ActiveDocument.Height,
  119. viewModel.ActiveSelection.SelectedPoints.Count);
  120. }
  121. [StaFact]
  122. public void TestThatDocumentIsNotNullReturnsTrue()
  123. {
  124. ViewModelMain viewModel = new ViewModelMain();
  125. viewModel.BitmapManager.ActiveDocument = new Document(1,1);
  126. Assert.True(viewModel.DocumentIsNotNull(null));
  127. }
  128. }
  129. }