using System.ComponentModel;
using System.Text;
using Xunit.Abstractions;
namespace Terminal.Gui.ViewTests;
public class ViewCommandTests (ITestOutputHelper output)
{
// OnAccept/Accept tests
[Fact]
public void Accept_Command_Raises ()
{
var view = new ViewEventTester ();
Assert.False (view.HasFocus);
Assert.False (view.InvokeCommand (Command.Accept)); // false means it was not handled
Assert.Equal (1, view.OnAcceptCount);
Assert.Equal (1, view.AcceptCount);
Assert.True (view.HasFocus);
}
[Fact]
public void Accept_Command_Handle_OnAccept_NoEvent ()
{
var view = new ViewEventTester ();
Assert.False (view.HasFocus);
view.HandleOnAccept = true;
Assert.True (view.InvokeCommand (Command.Accept));
Assert.Equal (1, view.OnAcceptCount);
Assert.Equal (0, view.AcceptCount);
}
[Fact]
public void Accept_Handle_Event_OnAccept_Returns_True ()
{
var view = new View ();
var acceptInvoked = false;
view.Accept += ViewOnAccept;
bool? ret = view.InvokeCommand (Command.Accept);
Assert.True (ret);
Assert.True (acceptInvoked);
return;
void ViewOnAccept (object sender, HandledEventArgs e)
{
acceptInvoked = true;
e.Handled = true;
}
}
[Fact]
public void Accept_Command_Invokes_Accept_Event ()
{
var view = new View ();
var accepted = false;
view.Accept += ViewOnAccept;
view.InvokeCommand (Command.Accept);
Assert.True (accepted);
return;
void ViewOnAccept (object sender, HandledEventArgs e) { accepted = true; }
}
[Fact]
public void HotKey_Command_SetsFocus ()
{
var view = new View ();
view.CanFocus = true;
Assert.False (view.HasFocus);
view.InvokeCommand (Command.HotKey);
Assert.True (view.HasFocus);
}
public class ViewEventTester : View
{
public ViewEventTester ()
{
CanFocus = true;
Accept += (s, a) =>
{
a.Handled = HandleAccept;
AcceptCount++;
};
HotKeyCommand += (s, a) =>
{
a.Handled = HandleHotKeyCommand;
HotKeyCommandCount++;
};
Select += (s, a) =>
{
a.Handled = HandleSelect;
SelectCount++;
};
}
public int OnAcceptCount { get; set; }
public int AcceptCount { get; set; }
public bool HandleOnAccept { get; set; }
///
protected override bool OnAccept (HandledEventArgs args)
{
OnAcceptCount++;
if (!HandleOnAccept)
{
return base.OnAccept (args);
}
return HandleOnAccept;
}
public bool HandleAccept { get; set; }
public int OnHotKeyCommandCount { get; set; }
public int HotKeyCommandCount { get; set; }
public bool HandleOnHotKeyCommand { get; set; }
///
protected override bool OnHotKeyCommand (HandledEventArgs args)
{
OnHotKeyCommandCount++;
if (!HandleOnHotKeyCommand)
{
return base.OnHotKeyCommand (args);
}
return HandleOnHotKeyCommand;
}
public bool HandleHotKeyCommand { get; set; }
public int OnSelectCount { get; set; }
public int SelectCount { get; set; }
public bool HandleOnSelect { get; set; }
///
protected override bool OnSelect (HandledEventArgs args)
{
OnSelectCount++;
if (!HandleOnSelect)
{
return base.OnSelect (args);
}
return HandleOnSelect;
}
public bool HandleSelect { get; set; }
}
}