ViewModelMainTests.cs 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175
  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.Models.Tools.Tools;
  10. using PixiEditor.ViewModels;
  11. using Xunit;
  12. namespace PixiEditorTests.ViewModelsTests
  13. {
  14. [Collection("Application collection")]
  15. public class ViewModelMainTests
  16. {
  17. [StaFact]
  18. public void TestThatConstructorSetsUpControllersCorrectly()
  19. {
  20. ViewModelMain viewModel = new ViewModelMain();
  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.ColorsSubViewModel.PrimaryColor = Colors.Black;
  32. viewModel.ColorsSubViewModel.SecondaryColor = Colors.White;
  33. viewModel.ColorsSubViewModel.SwapColorsCommand.Execute(null);
  34. Assert.Equal(Colors.White, viewModel.ColorsSubViewModel.PrimaryColor);
  35. Assert.Equal(Colors.Black, viewModel.ColorsSubViewModel.SecondaryColor);
  36. }
  37. [StaFact]
  38. public void TestThatNewDocumentCreatesNewDocumentWithBaseLayer()
  39. {
  40. ViewModelMain viewModel = new ViewModelMain();
  41. viewModel.FileSubViewModel.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. viewModel.BitmapManager.ActiveDocument = new Document(10, 10);
  50. Assert.Equal(new Coordinates(0, 0), MousePositionConverter.CurrentCoordinates);
  51. viewModel.BitmapManager.ActiveDocument.MouseXOnCanvas = 5;
  52. viewModel.BitmapManager.ActiveDocument.MouseYOnCanvas = 5;
  53. viewModel.IoSubViewModel.MouseMoveCommand.Execute(null);
  54. Assert.Equal(new Coordinates(5, 5), MousePositionConverter.CurrentCoordinates);
  55. }
  56. [StaFact]
  57. public void TestThatSelectToolCommandSelectsNewTool()
  58. {
  59. ViewModelMain viewModel = new ViewModelMain();
  60. Assert.Equal(typeof(MoveTool), viewModel.BitmapManager.SelectedTool.GetType());
  61. viewModel.ToolsSubViewModel.SelectToolCommand.Execute(typeof(LineTool));
  62. Assert.Equal(typeof(LineTool), viewModel.BitmapManager.SelectedTool.GetType());
  63. }
  64. [StaFact]
  65. public void TestThatMouseUpCommandStopsRecordingMouseMovements()
  66. {
  67. ViewModelMain viewModel = new ViewModelMain();
  68. viewModel.BitmapManager.MouseController.StartRecordingMouseMovementChanges(true);
  69. Assert.True(viewModel.BitmapManager.MouseController.IsRecordingChanges);
  70. viewModel.IoSubViewModel.MouseHook_OnMouseUp(default, default, MouseButton.Left);
  71. Assert.False(viewModel.BitmapManager.MouseController.IsRecordingChanges);
  72. }
  73. [StaFact]
  74. public void TestThatNewLayerCommandCreatesNewLayer()
  75. {
  76. ViewModelMain viewModel = new ViewModelMain();
  77. viewModel.BitmapManager.ActiveDocument = new Document(1, 1);
  78. Assert.Empty(viewModel.BitmapManager.ActiveDocument.Layers);
  79. viewModel.LayersSubViewModel.NewLayerCommand.Execute(null);
  80. Assert.Single(viewModel.BitmapManager.ActiveDocument.Layers);
  81. }
  82. [StaFact]
  83. public void TestThatSaveDocumentCommandSavesFile()
  84. {
  85. ViewModelMain viewModel = new ViewModelMain();
  86. string fileName = "testFile.pixi";
  87. viewModel.BitmapManager.ActiveDocument = new Document(1, 1)
  88. {
  89. DocumentFilePath = fileName
  90. };
  91. viewModel.FileSubViewModel.SaveDocumentCommand.Execute(null);
  92. Assert.True(File.Exists(fileName));
  93. File.Delete(fileName);
  94. }
  95. [StaFact]
  96. public void TestThatAddSwatchAddsNonDuplicateSwatch()
  97. {
  98. ViewModelMain viewModel = new ViewModelMain();
  99. viewModel.BitmapManager.ActiveDocument = new Document(1, 1);
  100. viewModel.ColorsSubViewModel.AddSwatch(Colors.Green);
  101. viewModel.ColorsSubViewModel.AddSwatch(Colors.Green);
  102. Assert.Single(viewModel.BitmapManager.ActiveDocument.Swatches);
  103. Assert.Equal(Colors.Green, viewModel.BitmapManager.ActiveDocument.Swatches[0]);
  104. }
  105. [StaTheory]
  106. [InlineData(5, 7)]
  107. [InlineData(1, 1)]
  108. [InlineData(1, 2)]
  109. [InlineData(2, 1)]
  110. [InlineData(16, 16)]
  111. [InlineData(50, 28)]
  112. [InlineData(120, 150)]
  113. public void TestThatSelectAllCommandSelectsWholeDocument(int docWidth, int docHeight)
  114. {
  115. ViewModelMain viewModel = new ViewModelMain
  116. {
  117. BitmapManager = { ActiveDocument = new Document(docWidth, docHeight) }
  118. };
  119. viewModel.BitmapManager.ActiveDocument.AddNewLayer("layer");
  120. viewModel.SelectionSubViewModel.SelectAllCommand.Execute(null);
  121. Assert.Equal(
  122. viewModel.BitmapManager.ActiveDocument.Width * viewModel.BitmapManager.ActiveDocument.Height,
  123. viewModel.BitmapManager.ActiveDocument.ActiveSelection.SelectedPoints.Count);
  124. }
  125. [StaFact]
  126. public void TestThatDocumentIsNotNullReturnsTrue()
  127. {
  128. ViewModelMain viewModel = new ViewModelMain();
  129. viewModel.BitmapManager.ActiveDocument = new Document(1, 1);
  130. Assert.True(viewModel.DocumentIsNotNull(null));
  131. }
  132. }
  133. }