feat(ui): implement 1-click presets, real-time search & filter bar, batch queue actions, and file inspector
This commit is contained in:
parent
41c8a8a94b
commit
b67b3f1b61
17 changed files with 1240 additions and 38 deletions
71
src/Everything2Everything.Tests/PresetEngineTests.cs
Normal file
71
src/Everything2Everything.Tests/PresetEngineTests.cs
Normal file
|
|
@ -0,0 +1,71 @@
|
|||
using Everything2Everything.App.ViewModels;
|
||||
using Everything2Everything.Core.Presets;
|
||||
using Xunit;
|
||||
|
||||
namespace Everything2Everything.Tests;
|
||||
|
||||
/// <summary>
|
||||
/// 1-클릭 빠른 최적화 프리셋 시스템 TDD 단위 테스트 스위트
|
||||
/// 웹 최적화, 무손실 보존, 문서 PDF 보관, 모바일 공유 프리셋의 파라미터 튜닝 및 추천 확장자 검증
|
||||
/// </summary>
|
||||
public class PresetEngineTests
|
||||
{
|
||||
[Fact]
|
||||
public void Apply_WebOptimized_SetsWebPAndOptimalCompression()
|
||||
{
|
||||
var options = new OptionsViewModel();
|
||||
var targetExt = ConversionPreset.Apply(PresetType.WebOptimized, options, ".png");
|
||||
|
||||
Assert.Equal(".webp", targetExt);
|
||||
Assert.Equal(80, options.ImageQuality);
|
||||
Assert.True(options.StripMetadata);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Apply_HighQualityLossless_SetsMaxQualityAndFlacOrPng()
|
||||
{
|
||||
var options = new OptionsViewModel();
|
||||
var audioTarget = ConversionPreset.Apply(PresetType.HighQualityLossless, options, ".wav");
|
||||
Assert.Equal(".flac", audioTarget);
|
||||
Assert.Equal(320, options.AudioBitrateKbps);
|
||||
|
||||
var imgTarget = ConversionPreset.Apply(PresetType.HighQualityLossless, options, ".jpg");
|
||||
Assert.Equal(".png", imgTarget);
|
||||
Assert.Equal(100, options.ImageQuality);
|
||||
Assert.False(options.StripMetadata);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Apply_DocumentPdf_SetsPdfTargetForDocuments()
|
||||
{
|
||||
var options = new OptionsViewModel();
|
||||
var docxTarget = ConversionPreset.Apply(PresetType.DocumentPdf, options, ".docx");
|
||||
Assert.Equal(".pdf", docxTarget);
|
||||
|
||||
var hwpTarget = ConversionPreset.Apply(PresetType.DocumentPdf, options, ".hwp");
|
||||
Assert.Equal(".pdf", hwpTarget);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Apply_MobileShare_SetsLightweightVideoAndAudio()
|
||||
{
|
||||
var options = new OptionsViewModel();
|
||||
var videoTarget = ConversionPreset.Apply(PresetType.MobileShare, options, ".mkv");
|
||||
Assert.Equal(".mp4", videoTarget);
|
||||
Assert.Equal(26, options.VideoCrf);
|
||||
Assert.Equal(128, options.AudioBitrateKbps);
|
||||
Assert.Equal("veryfast", options.VideoPreset);
|
||||
}
|
||||
|
||||
[Theory]
|
||||
[InlineData(PresetType.WebOptimized, "웹 최적화", "WebP · 80% 압축 · 메타데이터 제거")]
|
||||
[InlineData(PresetType.HighQualityLossless, "초고화질 보존", "무손실 PNG/FLAC · 100% 품질")]
|
||||
[InlineData(PresetType.DocumentPdf, "문서 PDF 보관", "표준 PDF/A 문서 변환")]
|
||||
[InlineData(PresetType.MobileShare, "모바일 공유", "MP4 H.264 · 가벼운 용량 전송")]
|
||||
public void Presets_HaveUserFacingTitleAndDescription(PresetType type, string expectedTitle, string expectedDesc)
|
||||
{
|
||||
var info = ConversionPreset.GetInfo(type);
|
||||
Assert.Equal(expectedTitle, info.Title);
|
||||
Assert.Equal(expectedDesc, info.Description);
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue