Files
Ursa.Avalonia/tests/HeadlessTest.Ursa/Controls/AvatarTests/AvatarTests.cs
Copilot 2e812357d7 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>
2025-08-02 17:12:06 +08:00

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);
}
}