Add unit test for Leave event changing focus

This commit is contained in:
tznind
2022-11-21 16:33:23 +00:00
parent 656fe727f0
commit ee85ddf141

View File

@@ -4062,5 +4062,38 @@ This is a tes
Assert.False (view.IsKeyPress);
Assert.True (view.IsKeyUp);
}
[Fact, AutoInitShutdown]
public void SetHasFocus_Do_Not_Throws_If_OnLeave_Remove_Focused_Changing_To_Null ()
{
var view1Leave = false;
var subView1Leave = false;
var subView1subView1Leave = false;
var top = Application.Top;
var view1 = new View { CanFocus = true };
var subView1 = new View { CanFocus = true };
var subView1subView1 = new View { CanFocus = true };
view1.Leave += (e) => {
view1Leave = true;
};
subView1.Leave += (e) => {
subView1.Remove (subView1subView1);
subView1Leave = true;
};
view1.Add (subView1);
subView1subView1.Leave += (e) => {
// This is never invoked
subView1subView1Leave = true;
};
subView1.Add (subView1subView1);
var view2 = new View { CanFocus = true };
top.Add (view1, view2);
Application.Begin (top);
view2.SetFocus ();
Assert.True (view1Leave);
Assert.True (subView1Leave);
Assert.False (subView1subView1Leave);
}
}
}