ClipRegionTests.cs 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
  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. this.output = output;
  16. }
  17. [Theory]
  18. [InlineData (typeof (FakeDriver))]
  19. public void IsValidLocation (Type driverType)
  20. {
  21. var driver = (FakeDriver)Activator.CreateInstance (driverType);
  22. Application.Init (driver);
  23. // positive
  24. Assert.True (driver.IsValidLocation (0, 0));
  25. Assert.True (driver.IsValidLocation (1, 1));
  26. Assert.True (driver.IsValidLocation (driver.Cols - 1, driver.Rows - 1));
  27. // negative
  28. Assert.False (driver.IsValidLocation (-1, 0));
  29. Assert.False (driver.IsValidLocation (0, -1));
  30. Assert.False (driver.IsValidLocation (-1, -1));
  31. Assert.False (driver.IsValidLocation (driver.Cols, driver.Rows - 1));
  32. Assert.False (driver.IsValidLocation (driver.Cols, driver.Rows - 1));
  33. Assert.False (driver.IsValidLocation (driver.Cols, driver.Rows));
  34. // Define a clip rectangle
  35. driver.Clip = new Rect (5, 5, 5, 5);
  36. // positive
  37. Assert.True (driver.IsValidLocation (5, 5));
  38. Assert.True (driver.IsValidLocation (9, 9));
  39. // negative
  40. Assert.False (driver.IsValidLocation (4, 5));
  41. Assert.False (driver.IsValidLocation (5, 4));
  42. Assert.False (driver.IsValidLocation (10, 9));
  43. Assert.False (driver.IsValidLocation (9, 10));
  44. Assert.False (driver.IsValidLocation (-1, 0));
  45. Assert.False (driver.IsValidLocation (0, -1));
  46. Assert.False (driver.IsValidLocation (-1, -1));
  47. Assert.False (driver.IsValidLocation (driver.Cols, driver.Rows - 1));
  48. Assert.False (driver.IsValidLocation (driver.Cols, driver.Rows - 1));
  49. Assert.False (driver.IsValidLocation (driver.Cols, driver.Rows));
  50. Application.Shutdown ();
  51. }
  52. [Theory]
  53. [InlineData (typeof (FakeDriver))]
  54. public void Clip_Set_To_Empty_AllInvalid (Type driverType)
  55. {
  56. var driver = (FakeDriver)Activator.CreateInstance (driverType);
  57. Application.Init (driver);
  58. // Define a clip rectangle
  59. driver.Clip = Rect.Empty;
  60. // negative
  61. Assert.False (driver.IsValidLocation (4, 5));
  62. Assert.False (driver.IsValidLocation (5, 4));
  63. Assert.False (driver.IsValidLocation (10, 9));
  64. Assert.False (driver.IsValidLocation (9, 10));
  65. Assert.False (driver.IsValidLocation (-1, 0));
  66. Assert.False (driver.IsValidLocation (0, -1));
  67. Assert.False (driver.IsValidLocation (-1, -1));
  68. Assert.False (driver.IsValidLocation (driver.Cols, driver.Rows - 1));
  69. Assert.False (driver.IsValidLocation (driver.Cols, driver.Rows - 1));
  70. Assert.False (driver.IsValidLocation (driver.Cols, driver.Rows));
  71. Application.Shutdown ();
  72. }
  73. [Theory]
  74. [InlineData (typeof (FakeDriver))]
  75. public void AddRune_Is_Clipped (Type driverType)
  76. {
  77. var driver = (FakeDriver)Activator.CreateInstance (driverType);
  78. Application.Init (driver);
  79. driver.Move (0, 0);
  80. driver.AddRune ('x');
  81. Assert.Equal ((Rune)'x', driver.Contents [0, 0].Runes [0]);
  82. driver.Move (5, 5);
  83. driver.AddRune ('x');
  84. Assert.Equal ((Rune)'x', driver.Contents [5, 5].Runes [0]);
  85. // Clear the contents
  86. driver.FillRect (new Rect (0, 0, driver.Rows, driver.Cols), ' ');
  87. Assert.Equal ((Rune)' ', driver.Contents [0, 0].Runes [0]);
  88. // Setup the region with a single rectangle, fill screen with 'x'
  89. driver.Clip = new Rect (5, 5, 5, 5);
  90. driver.FillRect (new Rect (0, 0, driver.Rows, driver.Cols), 'x');
  91. Assert.Equal ((Rune)' ', driver.Contents [0, 0].Runes [0]);
  92. Assert.Equal ((Rune)' ', driver.Contents [4, 9].Runes [0]);
  93. Assert.Equal ((Rune)'x', driver.Contents [5, 5].Runes [0]);
  94. Assert.Equal ((Rune)'x', driver.Contents [9, 9].Runes [0]);
  95. Assert.Equal ((Rune)' ', driver.Contents [10, 10].Runes [0]);
  96. Application.Shutdown ();
  97. }
  98. }
  99. }