FakeDriverRenderingTests.cs 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133
  1. using Xunit;
  2. using Xunit.Abstractions;
  3. namespace UnitTests_Parallelizable.Drivers;
  4. /// <summary>
  5. /// Tests for FakeDriver functionality including basic driver operations.
  6. /// These tests prove that FakeDriver can be used independently for testing Terminal.Gui applications.
  7. /// </summary>
  8. public class FakeDriverRenderingTests (ITestOutputHelper output)
  9. {
  10. private readonly ITestOutputHelper _output = output;
  11. #region Basic Driver Tests
  12. [Fact]
  13. public void FakeDriver_Can_Write_To_Contents_Buffer ()
  14. {
  15. // Arrange
  16. var driver = new FakeDriver ();
  17. driver.Init ();
  18. // Act - Write directly to driver
  19. driver.Move (0, 0);
  20. driver.AddStr ("Hello World");
  21. // Assert - Verify text was written to driver contents
  22. Assert.NotNull (driver.Contents);
  23. // Check that "Hello World" is in the first row
  24. string firstRow = "";
  25. for (int col = 0; col < Math.Min (11, driver.Cols); col++)
  26. {
  27. firstRow += (char)driver.Contents [0, col].Rune.Value;
  28. }
  29. Assert.Equal ("Hello World", firstRow);
  30. driver.End ();
  31. }
  32. [Fact]
  33. public void FakeDriver_Can_Set_Attributes ()
  34. {
  35. // Arrange
  36. var driver = new FakeDriver ();
  37. driver.Init ();
  38. var attr = new Attribute (Color.Red, Color.Blue);
  39. // Act
  40. driver.Move (5, 5);
  41. driver.SetAttribute (attr);
  42. driver.AddRune ('X');
  43. // Assert - Verify attribute was set
  44. Assert.NotNull (driver.Contents);
  45. Assert.Equal ('X', (char)driver.Contents [5, 5].Rune.Value);
  46. Assert.Equal (attr, driver.Contents [5, 5].Attribute);
  47. driver.End ();
  48. }
  49. [Fact]
  50. public void FakeDriver_Default_Screen_Size ()
  51. {
  52. // Arrange & Act
  53. var driver = new FakeDriver ();
  54. driver.Init ();
  55. // Assert
  56. Assert.Equal (80, driver.Cols);
  57. Assert.Equal (25, driver.Rows);
  58. driver.End ();
  59. }
  60. [Fact]
  61. public void FakeDriver_Can_Change_Screen_Size ()
  62. {
  63. // Arrange
  64. var driver = new FakeDriver ();
  65. driver.Init ();
  66. // Act
  67. driver.SetBufferSize (120, 40);
  68. // Assert
  69. Assert.Equal (120, driver.Cols);
  70. Assert.Equal (40, driver.Rows);
  71. driver.End ();
  72. }
  73. [Fact]
  74. public void FakeDriver_Can_Fill_Rectangle ()
  75. {
  76. // Arrange
  77. var driver = new FakeDriver ();
  78. driver.Init ();
  79. // Act
  80. driver.FillRect (new Rectangle (0, 0, 5, 3), '*');
  81. // Assert - Verify rectangle was filled
  82. for (int row = 0; row < 3; row++)
  83. {
  84. for (int col = 0; col < 5; col++)
  85. {
  86. Assert.Equal ('*', (char)driver.Contents [row, col].Rune.Value);
  87. }
  88. }
  89. driver.End ();
  90. }
  91. [Fact]
  92. public void FakeDriver_Tracks_Cursor_Position ()
  93. {
  94. // Arrange
  95. var driver = new FakeDriver ();
  96. driver.Init ();
  97. // Act
  98. driver.Move (10, 5);
  99. // Assert
  100. Assert.Equal (10, driver.Col);
  101. Assert.Equal (5, driver.Row);
  102. driver.End ();
  103. }
  104. #endregion
  105. }