releases/tests/Paca.Tests/App/DesktopZenRailAndStatusBarGateTests.cs

72 lines
2.8 KiB
C#

using System.IO;
using Paca.Browser.Layouts;
using Paca.Browser.Panels;
using Paca.Browser.Theming;
using Xunit;
namespace Paca.Tests.App;
public class DesktopZenRailAndStatusBarGateTests
{
private readonly string _mainWindowXamlPath;
public DesktopZenRailAndStatusBarGateTests()
{
var baseDir = AppContext.BaseDirectory;
var solutionDir = Path.GetFullPath(Path.Combine(baseDir, "..", "..", "..", "..", ".."));
_mainWindowXamlPath = Path.Combine(solutionDir, "src", "Paca.App", "MainWindow.xaml");
}
[Fact]
public void Gate_ZenSideRail_XamlStructure_ContainsExtendedMultitaskingIcons()
{
Assert.True(File.Exists(_mainWindowXamlPath), "MainWindow.xaml 파일이 존재해야 합니다.");
var xaml = File.ReadAllText(_mainWindowXamlPath);
// ZenSideRail 세로 독 확장 아이콘 검증
Assert.Contains("x:Name=\"SideTabWebPanel\"", xaml);
Assert.Contains("x:Name=\"SideTabTaskManager\"", xaml);
// 56px 축소 레일의 퀵 액션 단추 검증
Assert.Contains("x:Name=\"CollapsedRailWebPanel\"", xaml);
Assert.Contains("x:Name=\"CollapsedRailTaskManager\"", xaml);
}
[Fact]
public void Gate_StatusBar_XamlStructure_ContainsZoomAndHostModules()
{
Assert.True(File.Exists(_mainWindowXamlPath), "MainWindow.xaml 파일이 존재해야 합니다.");
var xaml = File.ReadAllText(_mainWindowXamlPath);
// 하단 상태바 인체공학 모듈 검증
Assert.Contains("x:Name=\"StatusHostBadge\"", xaml);
Assert.Contains("x:Name=\"StatusZoomSlider\"", xaml);
}
[Theory]
[InlineData("tab0", -120, "tab1")] // 아래로 휠 스크롤 -> 다음 탭 (tab0 -> tab1)
[InlineData("tab4", -120, "tab0")] // 끝에서 아래로 스크롤 -> 첫 탭 래핑 (tab4 -> tab0)
[InlineData("tab0", 120, "tab4")] // 첫 탭에서 위로 스크롤 -> 끝 탭 래핑 (tab0 -> tab4)
[InlineData("tab2", 120, "tab1")] // 위로 휠 스크롤 -> 이전 탭 (tab2 -> tab1)
public void Gate_TabStripScrollSwitcher_CyclesThroughTabsOnWheel(string current, int delta, string expected)
{
var switcher = new TabStripScrollSwitcher
{
CycleMode = ScrollCycleMode.WrapAround,
InvertScrollDirection = true // wheel down (-120) moves forward
};
switcher.SetTabs(new[] { "tab0", "tab1", "tab2", "tab3", "tab4" }, current);
var next = switcher.OnScrollWheel(delta);
Assert.Equal(expected, next);
}
[Fact]
public void Gate_SidebarPanelManager_RegistersWebPanels()
{
var manager = new SidebarPanelManager();
var panels = manager.GetAllPanels();
Assert.NotEmpty(panels);
Assert.Contains(panels, p => p.Title.Contains("번역") || p.Title.Contains("Translate") || p.Id == "papago");
}
}