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,68 @@
using System;
using Paca.Core;
using Xunit;
namespace Paca.Tests.Core;
public class SubtitleBurnInEngineGateTests
{
[Fact]
public void Gate357_SubtitleBurnInEngine_BuildsForceStyleString_Correctly()
{
var style = new SubtitleBurnInStyle
{
FontName = "Arial",
FontSize = 24,
PrimaryColor = "&H00FFFFFF",
OutlineColor = "&H00000000",
OutlineWidth = 2,
MarginV = 40,
Alignment = 2 // Bottom center
};
var forceStyle = SubtitleBurnInEngine.BuildForceStyleString(style);
Assert.Contains("FontName=Arial", forceStyle);
Assert.Contains("FontSize=24", forceStyle);
Assert.Contains("PrimaryColour=&H00FFFFFF", forceStyle);
Assert.Contains("Outline=2", forceStyle);
Assert.Contains("MarginV=40", forceStyle);
Assert.Contains("Alignment=2", forceStyle);
}
[Fact]
public void Gate358_SubtitleBurnInEngine_EscapesWindowsPath_ForFfmpegFilter()
{
var winPath = "C:\\subtitles\\video_track.srt";
var escaped = SubtitleBurnInEngine.EscapeSubtitlePathForFfmpeg(winPath);
// In ffmpeg filtergraph, colon must be escaped as '\:' and backslashes replaced with forward slashes
Assert.Equal("C\\:/subtitles/video_track.srt", escaped);
}
[Fact]
public void Gate359_SubtitleBurnInEngine_ProvidesDefaultReadableStyle()
{
var def = SubtitleBurnInStyle.Default;
Assert.Equal(22, def.FontSize);
Assert.Equal(2, def.Alignment); // Bottom center
Assert.True(def.OutlineWidth >= 2);
}
[Fact]
public void Gate360_SubtitleBurnInEngine_BuildsFullCommandLine_WithAudioCopy()
{
var cmd = SubtitleBurnInEngine.BuildBurnInCommandLine(
inputVideoPath: "C:\\videos\\clip.mp4",
subtitlePath: "C:\\videos\\clip.srt",
outputVideoPath: "C:\\videos\\clip_subbed.mp4"
);
Assert.Contains("-i \"C:\\videos\\clip.mp4\"", cmd);
Assert.Contains("-vf \"subtitles='C\\:/videos/clip.srt'", cmd);
Assert.Contains("force_style=", cmd);
Assert.Contains("-c:v libx264 -crf 20 -c:a copy", cmd);
Assert.EndsWith("\"C:\\videos\\clip_subbed.mp4\" -y", cmd);
}
}