72 lines
2.8 KiB
C#
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");
|
|
}
|
|
}
|