* 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>
142 lines
3.8 KiB
C#
142 lines
3.8 KiB
C#
using System.Windows.Input;
|
|
using Avalonia.Collections;
|
|
using Avalonia.Controls;
|
|
using Avalonia.Headless.XUnit;
|
|
using UrsaControls = Ursa.Controls;
|
|
|
|
namespace HeadlessTest.Ursa.Controls.MultiComboBoxSelectedItemListTests;
|
|
|
|
public class MultiComboBoxSelectedItemListTests
|
|
{
|
|
[AvaloniaFact]
|
|
public void MultiComboBoxSelectedItemList_Should_Initialize_With_Default_Values()
|
|
{
|
|
// Arrange & Act
|
|
var list = new UrsaControls.MultiComboBoxSelectedItemList();
|
|
|
|
// Assert
|
|
Assert.Null(list.RemoveCommand);
|
|
Assert.NotNull(list.Items);
|
|
}
|
|
|
|
[AvaloniaFact]
|
|
public void MultiComboBoxSelectedItemList_Should_Set_RemoveCommand_Property()
|
|
{
|
|
// Arrange
|
|
var window = new Window();
|
|
var list = new UrsaControls.MultiComboBoxSelectedItemList();
|
|
var command = new TestCommand();
|
|
window.Content = list;
|
|
window.Show();
|
|
|
|
// Act
|
|
list.RemoveCommand = command;
|
|
|
|
// Assert
|
|
Assert.Equal(command, list.RemoveCommand);
|
|
}
|
|
|
|
[AvaloniaFact]
|
|
public void MultiComboBoxSelectedItemList_Should_Add_Items()
|
|
{
|
|
// Arrange
|
|
var window = new Window();
|
|
var list = new UrsaControls.MultiComboBoxSelectedItemList();
|
|
window.Content = list;
|
|
window.Show();
|
|
|
|
// Act
|
|
list.Items.Add("Item1");
|
|
list.Items.Add("Item2");
|
|
list.Items.Add("Item3");
|
|
|
|
// Assert
|
|
Assert.Equal(3, list.Items.Count);
|
|
Assert.Contains("Item1", list.Items);
|
|
Assert.Contains("Item2", list.Items);
|
|
Assert.Contains("Item3", list.Items);
|
|
}
|
|
|
|
[AvaloniaFact]
|
|
public void MultiComboBoxSelectedItemList_Should_Be_Visible_When_Added_To_Window()
|
|
{
|
|
// Arrange
|
|
var window = new Window();
|
|
var list = new UrsaControls.MultiComboBoxSelectedItemList();
|
|
|
|
// Act
|
|
window.Content = list;
|
|
window.Show();
|
|
|
|
// Assert
|
|
Assert.True(list.IsVisible);
|
|
}
|
|
|
|
[AvaloniaFact]
|
|
public void MultiComboBoxSelectedItemList_Should_Inherit_From_ItemsControl()
|
|
{
|
|
// Arrange & Act
|
|
var list = new UrsaControls.MultiComboBoxSelectedItemList();
|
|
|
|
// Assert
|
|
Assert.IsAssignableFrom<ItemsControl>(list);
|
|
}
|
|
|
|
[AvaloniaFact]
|
|
public void MultiComboBoxSelectedItemList_Should_Handle_Empty_Items()
|
|
{
|
|
// Arrange
|
|
var window = new Window();
|
|
var list = new UrsaControls.MultiComboBoxSelectedItemList();
|
|
window.Content = list;
|
|
window.Show();
|
|
|
|
// Act & Assert - Should not throw
|
|
Assert.Empty(list.Items);
|
|
}
|
|
|
|
[AvaloniaFact]
|
|
public void MultiComboBoxSelectedItemList_Should_Handle_Null_Command()
|
|
{
|
|
// Arrange
|
|
var window = new Window();
|
|
var list = new UrsaControls.MultiComboBoxSelectedItemList();
|
|
var command = new TestCommand();
|
|
window.Content = list;
|
|
window.Show();
|
|
|
|
// Act
|
|
list.RemoveCommand = command;
|
|
list.RemoveCommand = null;
|
|
|
|
// Assert
|
|
Assert.Null(list.RemoveCommand);
|
|
}
|
|
|
|
[AvaloniaFact]
|
|
public void MultiComboBoxSelectedItemList_Should_Work_With_Mixed_Item_Types()
|
|
{
|
|
// Arrange
|
|
var window = new Window();
|
|
var list = new UrsaControls.MultiComboBoxSelectedItemList();
|
|
window.Content = list;
|
|
window.Show();
|
|
|
|
// Act
|
|
list.Items.Add("String");
|
|
list.Items.Add(42);
|
|
list.Items.Add(new Button());
|
|
|
|
// Assert
|
|
Assert.Equal(3, list.Items.Count);
|
|
Assert.Contains("String", list.Items);
|
|
Assert.Contains(42, list.Items);
|
|
}
|
|
|
|
private class TestCommand : ICommand
|
|
{
|
|
public bool CanExecute(object? parameter) => true;
|
|
public void Execute(object? parameter) { }
|
|
public event EventHandler? CanExecuteChanged;
|
|
}
|
|
} |