using Paca.App.Core; using Paca.App.ViewModels; using Paca.Core.Config; using Xunit; namespace Paca.Tests.Browser; public class DownloadActiveStateTests { [Theory] [InlineData("대기", false)] [InlineData("일시정지", false)] [InlineData("완료", false)] [InlineData("오류", false)] [InlineData("취소됨", false)] [InlineData("다운로드 중", true)] [InlineData("병합 중", true)] [InlineData("리먹스 중", true)] [InlineData("대기 중", true)] [InlineData("예약 대기", true)] [InlineData("속도제한 대기", true)] public void IsActiveDownload_상태별_활성_여부_정확성_검증(string status, bool expectedActive) { var item = new DownloadItemViewModel("Test Video") { Status = status }; Assert.Equal(expectedActive, item.IsActiveDownload); } [Fact] public void 단순_감지된_미디어는_ActiveDownloadsCount에_포함되지_않는다() { var cfg = new AppConfig(); var manager = new DownloadManager(cfg, _ => Task.FromResult(new List()), _ => { }); // 단순 감지된 미디어 등록 (초기 Status: "대기") var detected1 = new DownloadItemViewModel("Detected 1") { Status = "대기" }; var detected2 = new DownloadItemViewModel("Detected 2") { Status = "대기" }; var completed = new DownloadItemViewModel("Done 1") { Status = "완료" }; var active = new DownloadItemViewModel("Active 1") { Status = "다운로드 중" }; manager.Items.Add(detected1); manager.Items.Add(detected2); manager.Items.Add(completed); manager.Items.Add(active); // 오직 실제 다운로드 중인 1건만 카운트되어야 함 Assert.Equal(1, manager.ActiveDownloadsCount); } [Fact] public void DownloadManager_배터리_절전_모드_연동_PowerManager_인스턴스_및_상태_제어_검증() { var cfg = new AppConfig { EnableBatterySaver = true }; var manager = new DownloadManager(cfg, _ => Task.FromResult(new List()), _ => { }); Assert.NotNull(manager.PowerManager); manager.PowerManager.UpdateBatteryState(percent: 15, isCharging: false); Assert.True(manager.PowerManager.IsLowPowerModeActive); } }