ClipRegionTests.cs 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133
  1. using System;
  2. using System.Collections;
  3. using System.Collections.Generic;
  4. using System.Linq;
  5. using System.Text;
  6. using Xunit;
  7. using Xunit.Abstractions;
  8. // Alias Console to MockConsole so we don't accidentally use Console
  9. using Console = Terminal.Gui.FakeConsole;
  10. namespace Terminal.Gui.DriverTests;
  11. public class ClipRegionTests {
  12. readonly ITestOutputHelper output;
  13. public ClipRegionTests (ITestOutputHelper output)
  14. {
  15. ConsoleDriver.RunningUnitTests = true;
  16. this.output = output;
  17. }
  18. [Theory]
  19. [InlineData (typeof (FakeDriver))]
  20. [InlineData (typeof (NetDriver))]
  21. //[InlineData (typeof (ANSIDriver))]
  22. [InlineData (typeof (WindowsDriver))]
  23. [InlineData (typeof (CursesDriver))]
  24. public void IsValidLocation (Type driverType)
  25. {
  26. var driver = (ConsoleDriver)Activator.CreateInstance (driverType);
  27. Application.Init (driver);
  28. Application.Driver.Rows = 10;
  29. Application.Driver.Cols = 10;
  30. // positive
  31. Assert.True (driver.IsValidLocation (0, 0));
  32. Assert.True (driver.IsValidLocation (1, 1));
  33. Assert.True (driver.IsValidLocation (driver.Cols - 1, driver.Rows - 1));
  34. // negative
  35. Assert.False (driver.IsValidLocation (-1, 0));
  36. Assert.False (driver.IsValidLocation (0, -1));
  37. Assert.False (driver.IsValidLocation (-1, -1));
  38. Assert.False (driver.IsValidLocation (driver.Cols, driver.Rows - 1));
  39. Assert.False (driver.IsValidLocation (driver.Cols, driver.Rows - 1));
  40. Assert.False (driver.IsValidLocation (driver.Cols, driver.Rows));
  41. // Define a clip rectangle
  42. driver.Clip = new Rect (5, 5, 5, 5);
  43. // positive
  44. Assert.True (driver.IsValidLocation (5, 5));
  45. Assert.True (driver.IsValidLocation (9, 9));
  46. // negative
  47. Assert.False (driver.IsValidLocation (4, 5));
  48. Assert.False (driver.IsValidLocation (5, 4));
  49. Assert.False (driver.IsValidLocation (10, 9));
  50. Assert.False (driver.IsValidLocation (9, 10));
  51. Assert.False (driver.IsValidLocation (-1, 0));
  52. Assert.False (driver.IsValidLocation (0, -1));
  53. Assert.False (driver.IsValidLocation (-1, -1));
  54. Assert.False (driver.IsValidLocation (driver.Cols, driver.Rows - 1));
  55. Assert.False (driver.IsValidLocation (driver.Cols, driver.Rows - 1));
  56. Assert.False (driver.IsValidLocation (driver.Cols, driver.Rows));
  57. Application.Shutdown ();
  58. }
  59. [Theory]
  60. [InlineData (typeof (FakeDriver))]
  61. [InlineData (typeof (NetDriver))]
  62. //[InlineData (typeof (ANSIDriver))]
  63. [InlineData (typeof (WindowsDriver))]
  64. [InlineData (typeof (CursesDriver))]
  65. public void Clip_Set_To_Empty_AllInvalid (Type driverType)
  66. {
  67. var driver = (ConsoleDriver)Activator.CreateInstance (driverType);
  68. Application.Init (driver);
  69. // Define a clip rectangle
  70. driver.Clip = Rect.Empty;
  71. // negative
  72. Assert.False (driver.IsValidLocation (4, 5));
  73. Assert.False (driver.IsValidLocation (5, 4));
  74. Assert.False (driver.IsValidLocation (10, 9));
  75. Assert.False (driver.IsValidLocation (9, 10));
  76. Assert.False (driver.IsValidLocation (-1, 0));
  77. Assert.False (driver.IsValidLocation (0, -1));
  78. Assert.False (driver.IsValidLocation (-1, -1));
  79. Assert.False (driver.IsValidLocation (driver.Cols, driver.Rows - 1));
  80. Assert.False (driver.IsValidLocation (driver.Cols, driver.Rows - 1));
  81. Assert.False (driver.IsValidLocation (driver.Cols, driver.Rows));
  82. Application.Shutdown ();
  83. }
  84. [Theory]
  85. [InlineData (typeof (FakeDriver))]
  86. [InlineData (typeof (NetDriver))]
  87. //[InlineData (typeof (ANSIDriver))]
  88. [InlineData (typeof (WindowsDriver))]
  89. [InlineData (typeof (CursesDriver))]
  90. public void AddRune_Is_Clipped (Type driverType)
  91. {
  92. var driver = (ConsoleDriver)Activator.CreateInstance (driverType);
  93. Application.Init (driver);
  94. Application.Driver.Rows = 25;
  95. Application.Driver.Cols = 80;
  96. driver.Move (0, 0);
  97. driver.AddRune ('x');
  98. Assert.Equal ((Rune)'x', driver.Contents [0, 0].Rune);
  99. driver.Move (5, 5);
  100. driver.AddRune ('x');
  101. Assert.Equal ((Rune)'x', driver.Contents [5, 5].Rune);
  102. // Clear the contents
  103. driver.FillRect (new Rect (0, 0, driver.Rows, driver.Cols), ' ');
  104. Assert.Equal ((Rune)' ', driver.Contents [0, 0].Rune);
  105. // Setup the region with a single rectangle, fill screen with 'x'
  106. driver.Clip = new Rect (5, 5, 5, 5);
  107. driver.FillRect (new Rect (0, 0, driver.Rows, driver.Cols), 'x');
  108. Assert.Equal ((Rune)' ', driver.Contents [0, 0].Rune);
  109. Assert.Equal ((Rune)' ', driver.Contents [4, 9].Rune);
  110. Assert.Equal ((Rune)'x', driver.Contents [5, 5].Rune);
  111. Assert.Equal ((Rune)'x', driver.Contents [9, 9].Rune);
  112. Assert.Equal ((Rune)' ', driver.Contents [10, 10].Rune);
  113. Application.Shutdown ();
  114. }
  115. }