#nullable enable namespace ApplicationTests; /// These tests focus on Application.SessionToken and the various ways it can be changed. public class SessionTokenTests { [Fact] public void Begin_Throws_On_Null () { IApplication? app = Application.Create (); // Test null Runnable Assert.Throws (() => app.Begin (null!)); } [Fact] public void Begin_End_Cleans_Up_SessionToken () { IApplication? app = Application.Create (); Runnable top = new Runnable (); SessionToken? sessionToken = app.Begin (top); Assert.NotNull (sessionToken); app.End (sessionToken); Assert.Null (app.TopRunnableView); Assert.DoesNotContain(sessionToken, app.SessionStack!); top.Dispose (); } [Fact] public void New_Creates_SessionToken () { var rs = new SessionToken (null!); Assert.Null (rs.Runnable); var top = new Runnable (); rs = new (top); Assert.Equal (top, rs.Runnable); } }