|
@@ -2096,93 +2096,6 @@ namespace Terminal.Gui.ViewTests {
|
|
|
}
|
|
|
|
|
|
|
|
|
- [Fact,AutoInitShutdown]
|
|
|
- public void TestDisposal_NoEarlyDisposalsOfUsersViews_DuringRebuildForTileCount ()
|
|
|
- {
|
|
|
- var tv = GetTileView (20,10);
|
|
|
-
|
|
|
- var myReusableView = new DisposeCounter ();
|
|
|
-
|
|
|
- // I want my view in the first tile
|
|
|
- tv.Tiles.ElementAt (0).View.Add (myReusableView);
|
|
|
- Assert.Equal (0, myReusableView.DisposalCount);
|
|
|
-
|
|
|
- // I've changed my mind, I want 3 tiles now
|
|
|
- tv.RebuildForTileCount (3);
|
|
|
-
|
|
|
- // but I still want my view in the first tile
|
|
|
- tv.Tiles.ElementAt (0).View.Add (myReusableView);
|
|
|
- Assert.Multiple (
|
|
|
- ()=>Assert.Equal (0, myReusableView.DisposalCount)
|
|
|
- ,()=> {
|
|
|
- tv.Dispose ();
|
|
|
- Assert.Equal (1, myReusableView.DisposalCount);
|
|
|
- });
|
|
|
- }
|
|
|
- [Fact, AutoInitShutdown]
|
|
|
- public void TestDisposal_NoEarlyDisposalsOfUsersViews_DuringInsertTile ()
|
|
|
- {
|
|
|
- var tv = GetTileView (20, 10);
|
|
|
-
|
|
|
- var myReusableView = new DisposeCounter ();
|
|
|
-
|
|
|
- // I want my view in the first tile
|
|
|
- tv.Tiles.ElementAt (0).View.Add (myReusableView);
|
|
|
- Assert.Equal (0, myReusableView.DisposalCount);
|
|
|
-
|
|
|
- // I've changed my mind, I want 3 tiles now
|
|
|
- tv.InsertTile (0);
|
|
|
- tv.InsertTile (2);
|
|
|
-
|
|
|
- // but I still want my view in the first tile
|
|
|
- tv.Tiles.ElementAt (0).View.Add (myReusableView);
|
|
|
- Assert.Multiple (
|
|
|
- () => Assert.Equal (0, myReusableView.DisposalCount)
|
|
|
- , () => {
|
|
|
- tv.Dispose ();
|
|
|
-
|
|
|
- // TODO seems to be double disposed ?!
|
|
|
- Assert.True (myReusableView.DisposalCount >= 1);
|
|
|
- });
|
|
|
- }
|
|
|
- [Theory, AutoInitShutdown]
|
|
|
- [InlineData(0)]
|
|
|
- [InlineData (1)]
|
|
|
- public void TestDisposal_NoEarlyDisposalsOfUsersViews_DuringRemoveTile(int idx)
|
|
|
- {
|
|
|
- var tv = GetTileView (20, 10);
|
|
|
-
|
|
|
- var myReusableView = new DisposeCounter ();
|
|
|
-
|
|
|
- // I want my view in the first tile
|
|
|
- tv.Tiles.ElementAt (0).View.Add (myReusableView);
|
|
|
- Assert.Equal (0, myReusableView.DisposalCount);
|
|
|
-
|
|
|
- tv.RemoveTile (idx);
|
|
|
-
|
|
|
- // but I still want my view in the first tile
|
|
|
- tv.Tiles.ElementAt (0).View.Add (myReusableView);
|
|
|
- Assert.Multiple (
|
|
|
- () => Assert.Equal (0, myReusableView.DisposalCount)
|
|
|
- , () => {
|
|
|
- tv.Dispose ();
|
|
|
-
|
|
|
- // TODO seems to be double disposed ?!
|
|
|
- Assert.True (myReusableView.DisposalCount >= 1);
|
|
|
- });
|
|
|
- }
|
|
|
-
|
|
|
- private class DisposeCounter : View
|
|
|
- {
|
|
|
- public int DisposalCount;
|
|
|
- protected override void Dispose (bool disposing)
|
|
|
- {
|
|
|
- DisposalCount++;
|
|
|
- base.Dispose (disposing);
|
|
|
- }
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
/// <summary>
|
|
|
/// Creates a vertical orientation root container with left pane split into
|
|
|
/// two (with horizontal splitter line).
|