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
51
tests/Paca.Tests/Core/StreamHighlightClipperGateTests.cs
Normal file
51
tests/Paca.Tests/Core/StreamHighlightClipperGateTests.cs
Normal file
|
|
@ -0,0 +1,51 @@
|
|||
using System;
|
||||
using Paca.Mobile.Core;
|
||||
using Xunit;
|
||||
|
||||
namespace Paca.Tests.Core;
|
||||
|
||||
public class StreamHighlightClipperGateTests
|
||||
{
|
||||
[Fact]
|
||||
public void Gate281_StreamHighlightClipper_BuildsLosslessCutArgs()
|
||||
{
|
||||
var args = StreamHighlightClipper.BuildFfmpegArgs("input.mp4", "output_clip.mp4", startSec: 10.5, durationSec: 30.0, ClipOutputFormat.Mp4Lossless);
|
||||
|
||||
Assert.Contains("-ss 10.5", args);
|
||||
Assert.Contains("-t 30", args);
|
||||
Assert.Contains("-c copy", args);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Gate282_StreamHighlightClipper_BuildsHighQualityGifArgs()
|
||||
{
|
||||
var args = StreamHighlightClipper.BuildFfmpegArgs("input.mp4", "output.gif", startSec: 5.0, durationSec: 8.0, ClipOutputFormat.AnimatedGif);
|
||||
|
||||
Assert.Contains("-ss 5", args);
|
||||
Assert.Contains("-t 8", args);
|
||||
Assert.Contains("palettegen", args);
|
||||
Assert.Contains("paletteuse", args);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Gate283_StreamHighlightClipper_ValidatesClipBounds()
|
||||
{
|
||||
// Negative start clamped to 0
|
||||
var args = StreamHighlightClipper.BuildFfmpegArgs("input.mp4", "out.mp4", startSec: -5.0, durationSec: 10.0, ClipOutputFormat.Mp4Lossless);
|
||||
Assert.Contains("-ss 0", args);
|
||||
|
||||
// Zero or negative duration throws
|
||||
Assert.Throws<ArgumentOutOfRangeException>(() =>
|
||||
StreamHighlightClipper.BuildFfmpegArgs("input.mp4", "out.mp4", startSec: 10, durationSec: 0, ClipOutputFormat.Mp4Lossless));
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Gate284_StreamHighlightClipper_CalculatesOutputName()
|
||||
{
|
||||
var outMp4 = StreamHighlightClipper.GenerateOutputFileName("MyStream.mp4", startSec: 45.0, durationSec: 15.0, ClipOutputFormat.Mp4Lossless);
|
||||
Assert.Equal("MyStream_clip_45s_15s.mp4", outMp4);
|
||||
|
||||
var outGif = StreamHighlightClipper.GenerateOutputFileName("MyStream.mp4", startSec: 120.0, durationSec: 5.0, ClipOutputFormat.AnimatedGif);
|
||||
Assert.Equal("MyStream_clip_120s_5s.gif", outGif);
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue