mirror of
https://github.com/gui-cs/Terminal.Gui.git
synced 2026-01-01 16:59:35 +01:00
Merge branch 'splitcontainer' of tig:tznind/gui.cs into tznind-splitcontainer
This commit is contained in:
@@ -2096,6 +2096,93 @@ 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).
|
||||
|
||||
Reference in New Issue
Block a user