* 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>
115 lines
2.6 KiB
C#
115 lines
2.6 KiB
C#
using Avalonia;
|
|
using Avalonia.Controls;
|
|
using Avalonia.Headless.XUnit;
|
|
using Avalonia.Media;
|
|
using Avalonia.Media.Imaging;
|
|
using Avalonia.Platform;
|
|
using UrsaControls = Ursa.Controls;
|
|
|
|
namespace HeadlessTest.Ursa.Controls.AvatarTests;
|
|
|
|
public class AvatarTests
|
|
{
|
|
[AvaloniaFact]
|
|
public void Avatar_Should_Initialize_With_Default_Values()
|
|
{
|
|
// Arrange & Act
|
|
var avatar = new UrsaControls.Avatar();
|
|
|
|
// Assert
|
|
Assert.Null(avatar.Source);
|
|
Assert.Null(avatar.HoverMask);
|
|
}
|
|
|
|
[AvaloniaFact]
|
|
public void Avatar_Should_Set_Source_Property()
|
|
{
|
|
// Arrange
|
|
var window = new Window();
|
|
var avatar = new UrsaControls.Avatar();
|
|
window.Content = avatar;
|
|
window.Show();
|
|
|
|
// Act - Test with null since creating a real bitmap is complex in tests
|
|
avatar.Source = null;
|
|
|
|
// Assert
|
|
Assert.Null(avatar.Source);
|
|
}
|
|
|
|
[AvaloniaFact]
|
|
public void Avatar_Should_Set_HoverMask_Property()
|
|
{
|
|
// Arrange
|
|
var window = new Window();
|
|
var avatar = new UrsaControls.Avatar();
|
|
var hoverMask = "Edit";
|
|
window.Content = avatar;
|
|
window.Show();
|
|
|
|
// Act
|
|
avatar.HoverMask = hoverMask;
|
|
|
|
// Assert
|
|
Assert.Equal(hoverMask, avatar.HoverMask);
|
|
}
|
|
|
|
[AvaloniaFact]
|
|
public void Avatar_Should_Accept_Null_Source()
|
|
{
|
|
// Arrange
|
|
var window = new Window();
|
|
var avatar = new UrsaControls.Avatar();
|
|
window.Content = avatar;
|
|
window.Show();
|
|
|
|
// Act
|
|
avatar.Source = null;
|
|
|
|
// Assert
|
|
Assert.Null(avatar.Source);
|
|
}
|
|
|
|
[AvaloniaFact]
|
|
public void Avatar_Should_Accept_Null_HoverMask()
|
|
{
|
|
// Arrange
|
|
var window = new Window();
|
|
var avatar = new UrsaControls.Avatar();
|
|
var hoverMask = "Edit";
|
|
window.Content = avatar;
|
|
window.Show();
|
|
|
|
// Act
|
|
avatar.HoverMask = hoverMask;
|
|
avatar.HoverMask = null;
|
|
|
|
// Assert
|
|
Assert.Null(avatar.HoverMask);
|
|
}
|
|
|
|
[AvaloniaFact]
|
|
public void Avatar_Should_Be_Visible_When_Added_To_Window()
|
|
{
|
|
// Arrange
|
|
var window = new Window();
|
|
var avatar = new UrsaControls.Avatar();
|
|
|
|
// Act
|
|
window.Content = avatar;
|
|
window.Show();
|
|
|
|
// Assert
|
|
Assert.True(avatar.IsVisible);
|
|
}
|
|
|
|
[AvaloniaFact]
|
|
public void Avatar_Should_Inherit_From_Button()
|
|
{
|
|
// Arrange & Act
|
|
var avatar = new UrsaControls.Avatar();
|
|
|
|
// Assert
|
|
Assert.IsAssignableFrom<Button>(avatar);
|
|
}
|
|
} |