ViewModelMainTests.cs 5.5 KB

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