Files

110 lines
3.5 KiB
C#

using AtomUI.Theme.DesignTokens;
using Avalonia;
using Avalonia.Animation.Easings;
using Shouldly;
using Xunit;
namespace AtomUI.Desktop.Controls.Tests.NavMenu;
public class NavMenuTokenTests
{
[Fact]
public void Item_Background_Motion_Easing_Defaults_To_Css_Ease()
{
var property = typeof(NavMenuToken).GetProperty("ItemBackgroundMotionEasing").ShouldNotBeNull();
var navMenuToken = new NavMenuToken();
navMenuToken.AssignEffectiveGlobalToken(new DesignToken());
navMenuToken.CalculateTokenValues(isDarkMode: false);
var easing = property.GetValue(navMenuToken).ShouldBeOfType<SplineEasing>();
easing.X1.ShouldBe(0.25);
easing.Y1.ShouldBe(0.1);
easing.X2.ShouldBe(0.25);
easing.Y2.ShouldBe(1);
}
[Fact]
public void Item_Height_Uses_Large_Control_Height_To_Match_AntDesign_Menu()
{
var sharedToken = new DesignToken
{
ControlHeight = 32,
ControlHeightLG = 40
};
var navMenuToken = new NavMenuToken();
navMenuToken.AssignEffectiveGlobalToken(sharedToken);
navMenuToken.CalculateTokenValues(isDarkMode: false);
navMenuToken.ItemHeight.ShouldBe(sharedToken.ControlHeightLG);
}
[Fact]
public void Popup_Max_Height_Shows_At_Most_Eight_Menu_Items_By_Default()
{
var sharedToken = new DesignToken
{
ControlHeightLG = 40
};
var navMenuToken = new NavMenuToken();
navMenuToken.AssignEffectiveGlobalToken(sharedToken);
navMenuToken.CalculateTokenValues(isDarkMode: false);
navMenuToken.MenuPopupMaxHeight.ShouldBe(navMenuToken.ItemHeight * 8);
}
[Fact]
public void Vertical_Item_Gap_Uses_Collapsed_Block_Margin_To_Match_AntDesign_Menu()
{
var sharedToken = new DesignToken
{
UniformlyMarginXXS = 4
};
var navMenuToken = new NavMenuToken();
navMenuToken.AssignEffectiveGlobalToken(sharedToken);
navMenuToken.CalculateTokenValues(isDarkMode: false);
navMenuToken.ItemContentMargin.ShouldBe(new Thickness(4, 0, 4, 4));
navMenuToken.VerticalMenuContentPadding.ShouldBe(new Thickness(0, 4, 0, 0));
navMenuToken.VerticalItemsPanelSpacing.ShouldBe(0);
navMenuToken.VerticalChildItemsMargin.ShouldBe(new Thickness(0, 0, 0, 4));
}
[Fact]
public void Inline_Collapsed_Width_Uses_Dedicated_Token_And_Keeps_Legacy_CollapsedWidth()
{
var sharedToken = new DesignToken
{
ControlHeight = 32
};
var navMenuToken = new NavMenuToken();
navMenuToken.AssignEffectiveGlobalToken(sharedToken);
navMenuToken.CalculateTokenValues(isDarkMode: false);
navMenuToken.InlineCollapsedWidth.ShouldBe(48);
navMenuToken.CollapsedWidth.ShouldBe(sharedToken.ControlHeight * 2);
}
[Fact]
public void Inline_Collapsed_Icon_Uses_Large_Icon_Size_Level()
{
var sharedToken = new DesignToken
{
IconSize = 14,
IconSizeLG = 16
};
var navMenuToken = new NavMenuToken();
navMenuToken.AssignEffectiveGlobalToken(sharedToken);
navMenuToken.CalculateTokenValues(isDarkMode: false);
navMenuToken.ItemIconSize.ShouldBe(sharedToken.IconSize);
navMenuToken.CollapsedIconSize.ShouldBe(sharedToken.IconSizeLG);
navMenuToken.CollapsedIconSize.ShouldBeGreaterThan(navMenuToken.ItemIconSize);
}
}