Files
Ursa.Avalonia/tests/HeadlessTest.Ursa/Controls/TimeBoxTests/TimeBoxInputTests.cs

145 lines
4.0 KiB
C#

using Avalonia.Controls;
using Avalonia.Controls.Primitives;
using Avalonia.Headless;
using Avalonia.Headless.XUnit;
using Avalonia.Input;
using Ursa.Controls;
namespace HeadlessTest.Ursa.Controls.TimeBoxTests;
public class TimeBoxInputTests
{
[AvaloniaFact]
public void TimeBox_Should_Handle_Focus()
{
var window = new Window();
var timeBox = new TimeBox();
window.Content = timeBox;
window.Show();
timeBox.Focus();
// Control should accept focus
Assert.True(timeBox.IsFocused);
}
[AvaloniaFact]
public void TimeBox_Should_Handle_Tab_Key_Press()
{
var window = new Window();
var timeBox = new TimeBox();
window.Content = timeBox;
window.Show();
timeBox.Focus();
// Simulate tab key press to move between sections
window.KeyPressQwerty(PhysicalKey.Tab, RawInputModifiers.None);
// Control should remain focused (internal section navigation)
Assert.True(timeBox.IsFocused);
}
[AvaloniaFact]
public void TimeBox_Should_Handle_Arrow_Key_Press()
{
var window = new Window();
var timeBox = new TimeBox();
window.Content = timeBox;
window.Show();
timeBox.Focus();
// Simulate arrow key navigation
window.KeyPressQwerty(PhysicalKey.ArrowRight, RawInputModifiers.None);
window.KeyPressQwerty(PhysicalKey.ArrowLeft, RawInputModifiers.None);
// Control should remain focused and handle the navigation
Assert.True(timeBox.IsFocused);
}
[AvaloniaFact]
public void TimeBox_Should_Handle_Backspace_Key_Press()
{
var window = new Window();
var timeBox = new TimeBox();
window.Content = timeBox;
window.Show();
timeBox.Focus();
// Simulate backspace key press
window.KeyPressQwerty(PhysicalKey.Backspace, RawInputModifiers.None);
// Control should handle the backspace
Assert.True(timeBox.IsFocused);
}
[AvaloniaFact]
public void TimeBox_Should_Handle_Enter_Key_Press()
{
var window = new Window();
var timeBox = new TimeBox();
window.Content = timeBox;
window.Show();
timeBox.Focus();
// Simulate enter key press
window.KeyPressQwerty(PhysicalKey.Enter, RawInputModifiers.None);
// Control should process the enter key
Assert.True(timeBox.IsFocused);
}
[AvaloniaFact]
public void TimeBox_Fast_Mode_Should_Be_Configurable()
{
var window = new Window();
var timeBox = new TimeBox { InputMode = TimeBoxInputMode.Fast };
window.Content = timeBox;
window.Show();
timeBox.Focus();
// Verify the mode is set correctly
Assert.Equal(TimeBoxInputMode.Fast, timeBox.InputMode);
}
[AvaloniaFact]
public void TimeBox_Normal_Mode_Should_Be_Default()
{
var window = new Window();
var timeBox = new TimeBox();
window.Content = timeBox;
window.Show();
timeBox.Focus();
// Verify the default mode
Assert.Equal(TimeBoxInputMode.Normal, timeBox.InputMode);
}
[AvaloniaFact]
public void TimeBox_Should_Handle_Focus_Loss()
{
var window = new Window();
var timeBox = new TimeBox();
var otherControl = new TextBox();
var panel = new StackPanel();
panel.Children.Add(timeBox);
panel.Children.Add(otherControl);
window.Content = panel;
window.Show();
timeBox.Focus();
Assert.True(timeBox.IsFocused);
// Move focus to another control
otherControl.Focus();
// In headless mode, focus behavior might be different
// Just verify that otherControl can be focused
Assert.True(otherControl.IsFocused);
}
}