ApplicationScreenTests.cs 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. using Xunit.Abstractions;
  2. namespace UnitTests.ApplicationTests;
  3. public class ApplicationScreenTests
  4. {
  5. public ApplicationScreenTests (ITestOutputHelper output) { }
  6. [Fact]
  7. [AutoInitShutdown]
  8. public void ClearContents_Called_When_Top_Frame_Changes ()
  9. {
  10. var top = new Runnable ();
  11. SessionToken rs = Application.Begin (top);
  12. // Arrange
  13. var clearedContentsRaised = 0;
  14. Application.Driver!.ClearedContents += OnClearedContents;
  15. // Act
  16. Application.LayoutAndDraw ();
  17. // Assert
  18. Assert.Equal (0, clearedContentsRaised);
  19. // Act
  20. Application.TopRunnableView!.SetNeedsLayout ();
  21. Application.LayoutAndDraw ();
  22. // Assert
  23. Assert.Equal (0, clearedContentsRaised);
  24. // Act
  25. Application.TopRunnableView.X = 1;
  26. Application.LayoutAndDraw ();
  27. // Assert
  28. Assert.Equal (1, clearedContentsRaised);
  29. // Act
  30. Application.TopRunnableView.Width = 10;
  31. Application.LayoutAndDraw ();
  32. // Assert
  33. Assert.Equal (2, clearedContentsRaised);
  34. // Act
  35. Application.TopRunnableView.Y = 1;
  36. Application.LayoutAndDraw ();
  37. // Assert
  38. Assert.Equal (3, clearedContentsRaised);
  39. // Act
  40. Application.TopRunnableView.Height = 10;
  41. Application.LayoutAndDraw ();
  42. // Assert
  43. Assert.Equal (4, clearedContentsRaised);
  44. Application.Driver!.ClearedContents -= OnClearedContents;
  45. Application.End (rs);
  46. return;
  47. void OnClearedContents (object e, EventArgs a) { clearedContentsRaised++; }
  48. }
  49. [Fact]
  50. public void ClearScreenNextIteration_Resets_To_False_After_LayoutAndDraw ()
  51. {
  52. // Arrange
  53. Application.ResetState (true);
  54. Application.Init ("fake");
  55. // Act
  56. Application.ClearScreenNextIteration = true;
  57. Application.LayoutAndDraw ();
  58. // Assert
  59. Assert.False (Application.ClearScreenNextIteration);
  60. // Cleanup
  61. Application.ResetState (true);
  62. }
  63. [Fact]
  64. [SetupFakeApplication]
  65. public void Screen_Changes_OnScreenChanged_Without_Call_Application_Init ()
  66. {
  67. Assert.Equal (new (0, 0, 80, 25), Application.Screen);
  68. // Act
  69. Application.Driver!.SetScreenSize (120, 30);
  70. // Assert
  71. Assert.Equal (new (0, 0, 120, 30), Application.Screen);
  72. }
  73. }