* 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>
200 lines
5.0 KiB
C#
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);
|
|
}
|
|
} |