Fixes #808. Added an automated CanFocus.

This commit is contained in:
BDisp
2020-07-18 21:23:38 +01:00
parent 8c5822f9e2
commit f01ddbe9e0
2 changed files with 183 additions and 7 deletions

View File

@@ -747,5 +747,157 @@ namespace Terminal.Gui {
Assert.False (f.CanFocus);
Assert.True (v.CanFocus);
}
[Fact]
public void CanFocus_Faced_With_Container_Before_Run ()
{
Application.Init (new FakeDriver (), new NetMainLoop (() => FakeConsole.ReadKey (true)));
var t = Application.Top;
var w = new Window ("w");
var f = new FrameView ("f");
var v = new View ("v") { CanFocus = true };
f.Add (v);
w.Add (f);
t.Add (w);
Assert.True (t.CanFocus);
Assert.True (w.CanFocus);
Assert.True (f.CanFocus);
Assert.True (v.CanFocus);
f.CanFocus = false;
Assert.False (f.CanFocus);
Assert.True (v.CanFocus);
v.CanFocus = false;
Assert.False (f.CanFocus);
Assert.False (v.CanFocus);
v.CanFocus = true;
Assert.False (f.CanFocus);
Assert.True (v.CanFocus);
Application.Iteration += () => Application.RequestStop ();
Application.Run ();
Application.Shutdown ();
}
[Fact]
public void CanFocus_Faced_With_Container_After_Run ()
{
Application.Init (new FakeDriver (), new NetMainLoop (() => FakeConsole.ReadKey (true)));
var t = Application.Top;
var w = new Window ("w");
var f = new FrameView ("f");
var v = new View ("v") { CanFocus = true };
f.Add (v);
w.Add (f);
t.Add (w);
t.Ready += () => {
Assert.True (t.CanFocus);
Assert.True (w.CanFocus);
Assert.True (f.CanFocus);
Assert.True (v.CanFocus);
f.CanFocus = false;
Assert.False (f.CanFocus);
Assert.False (v.CanFocus);
v.CanFocus = false;
Assert.False (f.CanFocus);
Assert.False (v.CanFocus);
v.CanFocus = true;
Assert.True (f.CanFocus);
Assert.True (v.CanFocus);
};
Application.Iteration += () => Application.RequestStop ();
Application.Run ();
Application.Shutdown ();
}
[Fact]
public void CanFocus_Container_ToFalse_Turns_All_Subviews_ToFalse_Too ()
{
Application.Init (new FakeDriver (), new NetMainLoop (() => FakeConsole.ReadKey (true)));
var t = Application.Top;
var w = new Window ("w");
var f = new FrameView ("f");
var v1 = new View ("v1") { CanFocus = true };
var v2 = new View ("v2") { CanFocus = true };
f.Add (v1, v2);
w.Add (f);
t.Add (w);
t.Ready += () => {
Assert.True (t.CanFocus);
Assert.True (w.CanFocus);
Assert.True (f.CanFocus);
Assert.True (v1.CanFocus);
Assert.True (v2.CanFocus);
w.CanFocus = false;
Assert.True (w.CanFocus);
Assert.False (f.CanFocus);
Assert.False (v1.CanFocus);
Assert.False (v2.CanFocus);
};
Application.Iteration += () => Application.RequestStop ();
Application.Run ();
Application.Shutdown ();
}
[Fact]
public void CanFocus_Container_Toggling_All_Subviews_To_Old_Value_When_Is_True ()
{
Application.Init (new FakeDriver (), new NetMainLoop (() => FakeConsole.ReadKey (true)));
var t = Application.Top;
var w = new Window ("w");
var f = new FrameView ("f");
var v1 = new View ("v1");
var v2 = new View ("v2") { CanFocus = true };
f.Add (v1, v2);
w.Add (f);
t.Add (w);
t.Ready += () => {
Assert.True (t.CanFocus);
Assert.True (w.CanFocus);
Assert.True (f.CanFocus);
Assert.False (v1.CanFocus);
Assert.True (v2.CanFocus);
w.CanFocus = false;
Assert.True (w.CanFocus);
Assert.False (f.CanFocus);
Assert.False (v1.CanFocus);
Assert.False (v2.CanFocus);
w.CanFocus = true;
Assert.True (w.CanFocus);
Assert.True (f.CanFocus);
Assert.False (v1.CanFocus);
Assert.True (v2.CanFocus);
};
Application.Iteration += () => Application.RequestStop ();
Application.Run ();
Application.Shutdown ();
}
}
}