Files
Ursa.Avalonia/tests/HeadlessTest.Ursa/Controls/MultiComboBoxItemTests/MultiComboBoxItemTests.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

200 lines
5.0 KiB
C#

using Avalonia.Controls;
using Avalonia.Headless.XUnit;
using UrsaControls = Ursa.Controls;
namespace HeadlessTest.Ursa.Controls.MultiComboBoxItemTests;
public class MultiComboBoxItemTests
{
[AvaloniaFact]
public void MultiComboBoxItem_Should_Initialize_With_Default_Values()
{
// Arrange & Act
var item = new UrsaControls.MultiComboBoxItem();
// Assert
Assert.False(item.IsSelected);
Assert.Null(item.Content);
}
[AvaloniaFact]
public void MultiComboBoxItem_Should_Set_IsSelected_Property()
{
// Arrange
var window = new Window();
var item = new UrsaControls.MultiComboBoxItem();
window.Content = item;
window.Show();
// Act
item.IsSelected = true;
// Assert
Assert.True(item.IsSelected);
}
[AvaloniaFact]
public void MultiComboBoxItem_Should_Toggle_IsSelected_Property()
{
// Arrange
var window = new Window();
var item = new UrsaControls.MultiComboBoxItem();
window.Content = item;
window.Show();
// Act
item.IsSelected = true;
item.IsSelected = false;
// Assert
Assert.False(item.IsSelected);
}
[AvaloniaFact]
public void MultiComboBoxItem_Should_Set_Content_Property()
{
// Arrange
var window = new Window();
var item = new UrsaControls.MultiComboBoxItem();
var content = "Test Content";
window.Content = item;
window.Show();
// Act
item.Content = content;
// Assert
Assert.Equal(content, item.Content);
}
[AvaloniaFact]
public void MultiComboBoxItem_Should_Set_Content_As_Control()
{
// Arrange
var window = new Window();
var item = new UrsaControls.MultiComboBoxItem();
var content = new Button { Content = "Button Content" };
window.Content = item;
window.Show();
// Act
item.Content = content;
// Assert
Assert.Equal(content, item.Content);
}
[AvaloniaFact]
public void MultiComboBoxItem_Should_Be_Visible_When_Added_To_Window()
{
// Arrange
var window = new Window();
var item = new UrsaControls.MultiComboBoxItem();
// Act
window.Content = item;
window.Show();
// Assert
Assert.True(item.IsVisible);
}
[AvaloniaFact]
public void MultiComboBoxItem_Should_Inherit_From_ContentControl()
{
// Arrange & Act
var item = new UrsaControls.MultiComboBoxItem();
// Assert
Assert.IsAssignableFrom<ContentControl>(item);
}
[AvaloniaFact]
public void MultiComboBoxItem_Should_Be_Focusable()
{
// Arrange & Act
var item = new UrsaControls.MultiComboBoxItem();
// Assert
Assert.True(item.Focusable);
}
[AvaloniaFact]
public void MultiComboBoxItem_Should_Handle_Null_Content()
{
// Arrange
var window = new Window();
var item = new UrsaControls.MultiComboBoxItem();
window.Content = item;
window.Show();
// Act
item.Content = "Test";
item.Content = null;
// Assert
Assert.Null(item.Content);
}
[AvaloniaFact]
public void MultiComboBoxItem_Should_Handle_DataContext()
{
// Arrange
var window = new Window();
var item = new UrsaControls.MultiComboBoxItem();
var dataContext = new { Name = "Test", Value = 42 };
window.Content = item;
window.Show();
// Act
item.DataContext = dataContext;
// Assert
Assert.Equal(dataContext, item.DataContext);
}
[AvaloniaFact]
public void MultiComboBoxItem_Should_Support_Multiple_Selection_States()
{
// Arrange
var window = new Window();
var item1 = new UrsaControls.MultiComboBoxItem { Content = "Item 1" };
var item2 = new UrsaControls.MultiComboBoxItem { Content = "Item 2" };
var stackPanel = new StackPanel();
stackPanel.Children.Add(item1);
stackPanel.Children.Add(item2);
window.Content = stackPanel;
window.Show();
// Act
item1.IsSelected = true;
item2.IsSelected = true;
// Assert
Assert.True(item1.IsSelected);
Assert.True(item2.IsSelected);
}
[AvaloniaFact]
public void MultiComboBoxItem_Should_Change_Selection_Independently()
{
// Arrange
var window = new Window();
var item1 = new UrsaControls.MultiComboBoxItem { Content = "Item 1" };
var item2 = new UrsaControls.MultiComboBoxItem { Content = "Item 2" };
var stackPanel = new StackPanel();
stackPanel.Children.Add(item1);
stackPanel.Children.Add(item2);
window.Content = stackPanel;
window.Show();
// Act
item1.IsSelected = true;
item2.IsSelected = true;
item1.IsSelected = false;
// Assert
Assert.False(item1.IsSelected);
Assert.True(item2.IsSelected);
}
}