ViewModelMainTests.cs 5.6 KB

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