ViewModelMainTests.cs 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174
  1. using System.IO;
  2. using System.Windows.Input;
  3. using System.Windows.Media;
  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.NotNull(viewModel.ChangesController);
  21. Assert.NotNull(viewModel.ShortcutController);
  22. Assert.NotEmpty(viewModel.ShortcutController.Shortcuts);
  23. Assert.NotNull(viewModel.BitmapManager);
  24. Assert.Equal(viewModel, ViewModelMain.Current);
  25. }
  26. [StaFact]
  27. public void TestThatSwapColorsCommandSwapsColors()
  28. {
  29. ViewModelMain viewModel = new ViewModelMain();
  30. viewModel.ColorsSubViewModel.PrimaryColor = Colors.Black;
  31. viewModel.ColorsSubViewModel.SecondaryColor = Colors.White;
  32. viewModel.ColorsSubViewModel.SwapColorsCommand.Execute(null);
  33. Assert.Equal(Colors.White, viewModel.ColorsSubViewModel.PrimaryColor);
  34. Assert.Equal(Colors.Black, viewModel.ColorsSubViewModel.SecondaryColor);
  35. }
  36. [StaFact]
  37. public void TestThatNewDocumentCreatesNewDocumentWithBaseLayer()
  38. {
  39. ViewModelMain viewModel = new ViewModelMain();
  40. viewModel.FileSubViewModel.NewDocument(5, 5);
  41. Assert.NotNull(viewModel.BitmapManager.ActiveDocument);
  42. Assert.Single(viewModel.BitmapManager.ActiveDocument.Layers);
  43. }
  44. [StaFact]
  45. public void TestThatMouseMoveCommandUpdatesCurrentCoordinates()
  46. {
  47. ViewModelMain viewModel = new ViewModelMain();
  48. viewModel.BitmapManager.ActiveDocument = new Document(10, 10);
  49. Assert.Equal(new Coordinates(0, 0), MousePositionConverter.CurrentCoordinates);
  50. viewModel.BitmapManager.ActiveDocument.MouseXOnCanvas = 5;
  51. viewModel.BitmapManager.ActiveDocument.MouseYOnCanvas = 5;
  52. viewModel.IoSubViewModel.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.ToolsSubViewModel.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.IoSubViewModel.MouseHook_OnMouseUp(default, default, MouseButton.Left);
  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.LayersSubViewModel.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. {
  88. DocumentFilePath = fileName
  89. };
  90. viewModel.FileSubViewModel.SaveDocumentCommand.Execute(null);
  91. Assert.True(File.Exists(fileName));
  92. File.Delete(fileName);
  93. }
  94. [StaFact]
  95. public void TestThatAddSwatchAddsNonDuplicateSwatch()
  96. {
  97. ViewModelMain viewModel = new ViewModelMain();
  98. viewModel.BitmapManager.ActiveDocument = new Document(1, 1);
  99. viewModel.ColorsSubViewModel.AddSwatch(Colors.Green);
  100. viewModel.ColorsSubViewModel.AddSwatch(Colors.Green);
  101. Assert.Single(viewModel.BitmapManager.ActiveDocument.Swatches);
  102. Assert.Equal(Colors.Green, viewModel.BitmapManager.ActiveDocument.Swatches[0]);
  103. }
  104. [StaTheory]
  105. [InlineData(5, 7)]
  106. [InlineData(1, 1)]
  107. [InlineData(1, 2)]
  108. [InlineData(2, 1)]
  109. [InlineData(16, 16)]
  110. [InlineData(50, 28)]
  111. [InlineData(120, 150)]
  112. public void TestThatSelectAllCommandSelectsWholeDocument(int docWidth, int docHeight)
  113. {
  114. ViewModelMain viewModel = new ViewModelMain
  115. {
  116. BitmapManager = { ActiveDocument = new Document(docWidth, docHeight) }
  117. };
  118. viewModel.BitmapManager.ActiveDocument.AddNewLayer("layer");
  119. viewModel.SelectionSubViewModel.SelectAllCommand.Execute(null);
  120. Assert.Equal(
  121. viewModel.BitmapManager.ActiveDocument.Width * viewModel.BitmapManager.ActiveDocument.Height,
  122. viewModel.BitmapManager.ActiveDocument.ActiveSelection.SelectedPoints.Count);
  123. }
  124. [StaFact]
  125. public void TestThatDocumentIsNotNullReturnsTrue()
  126. {
  127. ViewModelMain viewModel = new ViewModelMain();
  128. viewModel.BitmapManager.ActiveDocument = new Document(1, 1);
  129. Assert.True(viewModel.DocumentIsNotNull(null));
  130. }
  131. }
  132. }