ViewModelMainTests.cs 6.5 KB

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