using System.IO; using System.Text.RegularExpressions; using System.Windows; using Paca.App; using Paca.Tests.Infrastructure; using Xunit; namespace Paca.Tests.App; public class ZenBrowserSideRailGateTests { [Fact] public void Gate_ZenSideRail_XamlStructure_ContainsVerticalIconButtonsOnRight() { var mwXaml = SourceTree.MainWindowXaml; // 1. Zen 브라우저 스타일 우측 세로 레일 컨테이너(ZenSideRail) 존재 Assert.Contains("x:Name=\"ZenSideRail\"", mwXaml); // 2. SideTabsContainer 내부 세로(Vertical) 스택패널 및 3대 아이콘 글리프 포함 확인 var sideTabsBlock = Regex.Match(mwXaml, @"]*x:Name=""SideTabsContainer""[^>]*>(.*?)", RegexOptions.Singleline); Assert.True(sideTabsBlock.Success, "SideTabsContainer 블록이 존재해야 합니다."); var content = sideTabsBlock.Groups[1].Value; Assert.Contains("Orientation=\"Vertical\"", content); Assert.Contains("", content); // 다운로드 아이콘 Assert.Contains("", content); // 방문 기록 아이콘 Assert.Contains("", content); // 즐겨찾기 아이콘 // 3. 서랍 헤더 내 패널 타이틀 텍스트 블록(PanelTitleText) 존재 확인 Assert.Contains("x:Name=\"PanelTitleText\"", mwXaml); } [Fact] public void Gate_ZenSideRail_CollapsedState_ExposesDirectAccessRailIcons() { var mwXaml = SourceTree.MainWindowXaml; // 접힘 상태(56px)에서도 바로 클릭하여 펼칠 수 있는 CollapsedRailIcons 스택 확인 Assert.Contains("x:Name=\"CollapsedRailIcons\"", mwXaml); Assert.Contains("CollapsedRailDownload_Click", mwXaml); Assert.Contains("CollapsedRailHistory_Click", mwXaml); Assert.Contains("CollapsedRailBookmark_Click", mwXaml); } [Fact] public void Gate_ZenSideRail_SwitchingTabs_UpdatesPanelContent_AndActiveState() { using var sta = StaDispatcher.Start(); WpfTestApp.Ensure(sta.Dispatcher); var ok = sta.Invoke(() => { var window = new MainWindow(); window.ApplyPanelState(false); // 펼침 // 1. 기본 상태는 다운로드 Assert.Equal(Visibility.Visible, window.DownloadsPanelView.Visibility); Assert.Equal(Visibility.Collapsed, window.HistoryPanelView.Visibility); Assert.Equal(Visibility.Collapsed, window.BookmarksPanelView.Visibility); Assert.Equal("다운로드", window.PanelTitleText.Text); // 2. 방문 기록 아이콘 클릭 -> 방문 기록 뷰 활성화 및 타이틀 변경 window.SideTabHistory.IsChecked = true; Assert.Equal(Visibility.Collapsed, window.DownloadsPanelView.Visibility); Assert.Equal(Visibility.Visible, window.HistoryPanelView.Visibility); Assert.Equal(Visibility.Collapsed, window.BookmarksPanelView.Visibility); Assert.Equal("방문 기록", window.PanelTitleText.Text); // 3. 즐겨찾기 아이콘 클릭 -> 즐겨찾기 뷰 활성화 및 타이틀 변경 window.SideTabBookmarks.IsChecked = true; Assert.Equal(Visibility.Collapsed, window.DownloadsPanelView.Visibility); Assert.Equal(Visibility.Collapsed, window.HistoryPanelView.Visibility); Assert.Equal(Visibility.Visible, window.BookmarksPanelView.Visibility); Assert.Equal("즐겨찾기", window.PanelTitleText.Text); // 4. 다시 다운로드 아이콘 클릭 -> 복귀 window.SideTabDownloads.IsChecked = true; Assert.Equal(Visibility.Visible, window.DownloadsPanelView.Visibility); Assert.Equal("다운로드", window.PanelTitleText.Text); window.Close(); return true; }); Assert.True(ok); } }