feat(ads/seo/release): v1.2.0 with live Google Ads, isolated ad profile, ads.txt, and SEO/AEO/GEO optimization

This commit is contained in:
Yun Chan 2026-09-14 00:39:44 +09:00
parent a88aafa1e5
commit 0e568f1f0a
975 changed files with 130593 additions and 16783 deletions

View file

@ -0,0 +1,44 @@
using System;
using Paca.Core;
using Xunit;
namespace Paca.Tests.Core;
public class VideoFrameRateConverterGateTests
{
[Fact]
public void Gate421_VideoFrameRateConverter_BuildsSimpleFpsFilter()
{
var filter = VideoFrameRateConverter.BuildFpsFilter(60, FrameRateConversionMode.Simple);
Assert.Equal("fps=60", filter);
}
[Fact]
public void Gate422_VideoFrameRateConverter_BuildsMotionInterpolationFilter()
{
var filter = VideoFrameRateConverter.BuildFpsFilter(60, FrameRateConversionMode.MotionCompensated);
Assert.Contains("minterpolate=", filter);
Assert.Contains("fps=60", filter);
Assert.Contains("mi_mode=mci", filter);
}
[Fact]
public void Gate423_VideoFrameRateConverter_BuildsBlendFilter()
{
var filter = VideoFrameRateConverter.BuildFpsFilter(60, FrameRateConversionMode.FrameBlend);
Assert.Contains("tblend=all_mode=average", filter);
Assert.Contains("framerate=fps=60", filter);
}
[Fact]
public void Gate424_VideoFrameRateConverter_BuildsFullFfmpegCli()
{
var args = VideoFrameRateConverter.BuildFfmpegArgs("in.mp4", "out.mp4", 60, FrameRateConversionMode.MotionCompensated, crf: 18);
Assert.Contains("-i \"in.mp4\"", args);
Assert.Contains("-vf \"minterpolate=", args);
Assert.Contains("-c:v libx264 -crf 18", args);
Assert.Contains("-c:a copy", args);
Assert.Contains("\"out.mp4\"", args);
}
}