SessionTokenTests.cs 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. namespace UnitTests.ApplicationTests;
  2. /// <summary>These tests focus on Application.SessionToken and the various ways it can be changed.</summary>
  3. public class SessionTokenTests
  4. {
  5. public SessionTokenTests ()
  6. {
  7. #if DEBUG_IDISPOSABLE
  8. View.EnableDebugIDisposableAsserts = true;
  9. View.Instances.Clear ();
  10. SessionToken.Instances.Clear ();
  11. #endif
  12. }
  13. [Fact]
  14. [AutoInitShutdown]
  15. public void Begin_End_Cleans_Up_SessionToken ()
  16. {
  17. // Test null Toplevel
  18. Assert.Throws<ArgumentNullException> (() => Application.Begin (null));
  19. var top = new Toplevel ();
  20. SessionToken rs = Application.Begin (top);
  21. Assert.NotNull (rs);
  22. Application.End (rs);
  23. Assert.NotNull (Application.Top);
  24. // v2 does not use main loop, it uses MainLoop<T> and its internal
  25. //Assert.NotNull (Application.MainLoop);
  26. Assert.NotNull (Application.Driver);
  27. top.Dispose ();
  28. #if DEBUG_IDISPOSABLE
  29. Assert.True (rs.WasDisposed);
  30. #endif
  31. }
  32. [Fact]
  33. public void Dispose_Cleans_Up_SessionToken ()
  34. {
  35. var rs = new SessionToken (null);
  36. Assert.NotNull (rs);
  37. // Should not throw because Toplevel was null
  38. rs.Dispose ();
  39. #if DEBUG_IDISPOSABLE
  40. Assert.True (rs.WasDisposed);
  41. #endif
  42. var top = new Toplevel ();
  43. rs = new (top);
  44. Assert.NotNull (rs);
  45. // Should throw because Toplevel was not cleaned up
  46. Assert.Throws<InvalidOperationException> (() => rs.Dispose ());
  47. rs.Toplevel.Dispose ();
  48. rs.Toplevel = null;
  49. rs.Dispose ();
  50. #if DEBUG_IDISPOSABLE
  51. Assert.True (rs.WasDisposed);
  52. Assert.True (top.WasDisposed);
  53. #endif
  54. }
  55. [Fact]
  56. public void New_Creates_SessionToken ()
  57. {
  58. var rs = new SessionToken (null);
  59. Assert.Null (rs.Toplevel);
  60. var top = new Toplevel ();
  61. rs = new (top);
  62. Assert.Equal (top, rs.Toplevel);
  63. }
  64. }