Add comprehensive headless tests for 10 controls with enhanced ItemsSource and method testing (#18)
* Initial plan * Add comprehensive tests for 5 controls: Avatar, Clock, ClockTicks, AspectRatioLayout, AspectRatioLayoutItem Co-authored-by: rabbitism <14807942+rabbitism@users.noreply.github.com> * Complete comprehensive headless tests for all 10 controls - added 72 more tests Co-authored-by: rabbitism <14807942+rabbitism@users.noreply.github.com> * Add requested test cases for MultiComboBox and TreeComboBox - ItemsSource, Remove, Clear, hierarchical data Co-authored-by: rabbitism <14807942+rabbitism@users.noreply.github.com> * test: open dropdown to trigger materialization. * test: set CurrentCulture to en-US for calendar view tests --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: rabbitism <14807942+rabbitism@users.noreply.github.com> Co-authored-by: rabbitism <dongbin@irihi.tech>
This commit is contained in:
@@ -0,0 +1,182 @@
|
||||
using Avalonia;
|
||||
using Avalonia.Controls;
|
||||
using Avalonia.Headless.XUnit;
|
||||
using Avalonia.Media;
|
||||
using UrsaControls = Ursa.Controls;
|
||||
|
||||
namespace HeadlessTest.Ursa.Controls.ClockTicksTests;
|
||||
|
||||
public class ClockTicksTests
|
||||
{
|
||||
[AvaloniaFact]
|
||||
public void ClockTicks_Should_Initialize_With_Default_Values()
|
||||
{
|
||||
// Arrange & Act
|
||||
var clockTicks = new UrsaControls.ClockTicks();
|
||||
|
||||
// Assert
|
||||
Assert.True(clockTicks.ShowHourTicks);
|
||||
Assert.True(clockTicks.ShowMinuteTicks);
|
||||
Assert.Null(clockTicks.HourTickForeground);
|
||||
Assert.Null(clockTicks.MinuteTickForeground);
|
||||
Assert.Equal(10.0, clockTicks.HourTickLength);
|
||||
Assert.Equal(5.0, clockTicks.MinuteTickLength);
|
||||
Assert.Equal(2.0, clockTicks.HourTickWidth);
|
||||
Assert.Equal(1.0, clockTicks.MinuteTickWidth);
|
||||
}
|
||||
|
||||
[AvaloniaFact]
|
||||
public void ClockTicks_Should_Set_ShowHourTicks_Property()
|
||||
{
|
||||
// Arrange
|
||||
var window = new Window();
|
||||
var clockTicks = new UrsaControls.ClockTicks();
|
||||
window.Content = clockTicks;
|
||||
window.Show();
|
||||
|
||||
// Act
|
||||
clockTicks.ShowHourTicks = false;
|
||||
|
||||
// Assert
|
||||
Assert.False(clockTicks.ShowHourTicks);
|
||||
}
|
||||
|
||||
[AvaloniaFact]
|
||||
public void ClockTicks_Should_Set_ShowMinuteTicks_Property()
|
||||
{
|
||||
// Arrange
|
||||
var window = new Window();
|
||||
var clockTicks = new UrsaControls.ClockTicks();
|
||||
window.Content = clockTicks;
|
||||
window.Show();
|
||||
|
||||
// Act
|
||||
clockTicks.ShowMinuteTicks = false;
|
||||
|
||||
// Assert
|
||||
Assert.False(clockTicks.ShowMinuteTicks);
|
||||
}
|
||||
|
||||
[AvaloniaFact]
|
||||
public void ClockTicks_Should_Set_HourTickForeground_Property()
|
||||
{
|
||||
// Arrange
|
||||
var window = new Window();
|
||||
var clockTicks = new UrsaControls.ClockTicks();
|
||||
var brush = Brushes.Red;
|
||||
window.Content = clockTicks;
|
||||
window.Show();
|
||||
|
||||
// Act
|
||||
clockTicks.HourTickForeground = brush;
|
||||
|
||||
// Assert
|
||||
Assert.Equal(brush, clockTicks.HourTickForeground);
|
||||
}
|
||||
|
||||
[AvaloniaFact]
|
||||
public void ClockTicks_Should_Set_MinuteTickForeground_Property()
|
||||
{
|
||||
// Arrange
|
||||
var window = new Window();
|
||||
var clockTicks = new UrsaControls.ClockTicks();
|
||||
var brush = Brushes.Blue;
|
||||
window.Content = clockTicks;
|
||||
window.Show();
|
||||
|
||||
// Act
|
||||
clockTicks.MinuteTickForeground = brush;
|
||||
|
||||
// Assert
|
||||
Assert.Equal(brush, clockTicks.MinuteTickForeground);
|
||||
}
|
||||
|
||||
[AvaloniaFact]
|
||||
public void ClockTicks_Should_Set_HourTickLength_Property()
|
||||
{
|
||||
// Arrange
|
||||
var window = new Window();
|
||||
var clockTicks = new UrsaControls.ClockTicks();
|
||||
window.Content = clockTicks;
|
||||
window.Show();
|
||||
|
||||
// Act
|
||||
clockTicks.HourTickLength = 15.0;
|
||||
|
||||
// Assert
|
||||
Assert.Equal(15.0, clockTicks.HourTickLength);
|
||||
}
|
||||
|
||||
[AvaloniaFact]
|
||||
public void ClockTicks_Should_Set_MinuteTickLength_Property()
|
||||
{
|
||||
// Arrange
|
||||
var window = new Window();
|
||||
var clockTicks = new UrsaControls.ClockTicks();
|
||||
window.Content = clockTicks;
|
||||
window.Show();
|
||||
|
||||
// Act
|
||||
clockTicks.MinuteTickLength = 8.0;
|
||||
|
||||
// Assert
|
||||
Assert.Equal(8.0, clockTicks.MinuteTickLength);
|
||||
}
|
||||
|
||||
[AvaloniaFact]
|
||||
public void ClockTicks_Should_Set_HourTickWidth_Property()
|
||||
{
|
||||
// Arrange
|
||||
var window = new Window();
|
||||
var clockTicks = new UrsaControls.ClockTicks();
|
||||
window.Content = clockTicks;
|
||||
window.Show();
|
||||
|
||||
// Act
|
||||
clockTicks.HourTickWidth = 3.0;
|
||||
|
||||
// Assert
|
||||
Assert.Equal(3.0, clockTicks.HourTickWidth);
|
||||
}
|
||||
|
||||
[AvaloniaFact]
|
||||
public void ClockTicks_Should_Set_MinuteTickWidth_Property()
|
||||
{
|
||||
// Arrange
|
||||
var window = new Window();
|
||||
var clockTicks = new UrsaControls.ClockTicks();
|
||||
window.Content = clockTicks;
|
||||
window.Show();
|
||||
|
||||
// Act
|
||||
clockTicks.MinuteTickWidth = 1.5;
|
||||
|
||||
// Assert
|
||||
Assert.Equal(1.5, clockTicks.MinuteTickWidth);
|
||||
}
|
||||
|
||||
[AvaloniaFact]
|
||||
public void ClockTicks_Should_Be_Visible_When_Added_To_Window()
|
||||
{
|
||||
// Arrange
|
||||
var window = new Window();
|
||||
var clockTicks = new UrsaControls.ClockTicks();
|
||||
|
||||
// Act
|
||||
window.Content = clockTicks;
|
||||
window.Show();
|
||||
|
||||
// Assert
|
||||
Assert.True(clockTicks.IsVisible);
|
||||
}
|
||||
|
||||
[AvaloniaFact]
|
||||
public void ClockTicks_Should_Inherit_From_Control()
|
||||
{
|
||||
// Arrange & Act
|
||||
var clockTicks = new UrsaControls.ClockTicks();
|
||||
|
||||
// Assert
|
||||
Assert.IsAssignableFrom<Control>(clockTicks);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user