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:
parent
a88aafa1e5
commit
0e568f1f0a
975 changed files with 130593 additions and 16783 deletions
68
tests/Paca.Tests/Core/SubtitleBurnInEngineGateTests.cs
Normal file
68
tests/Paca.Tests/Core/SubtitleBurnInEngineGateTests.cs
Normal 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);
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue