mirror of
https://github.com/gui-cs/Terminal.Gui.git
synced 2025-12-26 15:57:56 +01:00
* Initial plan * Add instance fields to ApplicationImpl and update static Application properties to delegate to ApplicationImpl.Instance Co-authored-by: tig <585482+tig@users.noreply.github.com> * Fix code review issues: use instance fields in Run() and improve Shutdown() logic Co-authored-by: tig <585482+tig@users.noreply.github.com> * Final code review fix: use _initialized directly in Shutdown Co-authored-by: tig <585482+tig@users.noreply.github.com> * Fix Shutdown order: call ResetState before clearing instance fields Co-authored-by: tig <585482+tig@users.noreply.github.com> * Add MainThreadId as instance field in ApplicationImpl Co-authored-by: tig <585482+tig@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: tig <585482+tig@users.noreply.github.com> Co-authored-by: Tig <tig@users.noreply.github.com>
This commit is contained in:
@@ -583,4 +583,52 @@ public class ApplicationImplTests
|
||||
|
||||
Assert.True (result);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void ApplicationImpl_UsesInstanceFields_NotStaticReferences()
|
||||
{
|
||||
// This test verifies that ApplicationImpl uses instance fields instead of static Application references
|
||||
var orig = ApplicationImpl.Instance;
|
||||
|
||||
var v2 = NewApplicationImpl();
|
||||
ApplicationImpl.ChangeInstance(v2);
|
||||
|
||||
// Before Init, all fields should be null/default
|
||||
Assert.Null(v2.Driver);
|
||||
Assert.False(v2.Initialized);
|
||||
Assert.Null(v2.Popover);
|
||||
Assert.Null(v2.Navigation);
|
||||
Assert.Null(v2.Top);
|
||||
Assert.Empty(v2.TopLevels);
|
||||
|
||||
// Init should populate instance fields
|
||||
v2.Init();
|
||||
|
||||
// After Init, Driver, Navigation, and Popover should be populated
|
||||
Assert.NotNull(v2.Driver);
|
||||
Assert.True(v2.Initialized);
|
||||
Assert.NotNull(v2.Popover);
|
||||
Assert.NotNull(v2.Navigation);
|
||||
Assert.Null(v2.Top); // Top is still null until Run
|
||||
|
||||
// Verify that static Application properties delegate to instance
|
||||
Assert.Equal(v2.Driver, Application.Driver);
|
||||
Assert.Equal(v2.Initialized, Application.Initialized);
|
||||
Assert.Equal(v2.Popover, Application.Popover);
|
||||
Assert.Equal(v2.Navigation, Application.Navigation);
|
||||
Assert.Equal(v2.Top, Application.Top);
|
||||
Assert.Same(v2.TopLevels, Application.TopLevels);
|
||||
|
||||
// Shutdown should clean up instance fields
|
||||
v2.Shutdown();
|
||||
|
||||
Assert.Null(v2.Driver);
|
||||
Assert.False(v2.Initialized);
|
||||
Assert.Null(v2.Popover);
|
||||
Assert.Null(v2.Navigation);
|
||||
Assert.Null(v2.Top);
|
||||
Assert.Empty(v2.TopLevels);
|
||||
|
||||
ApplicationImpl.ChangeInstance(orig);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user