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
64
tests/Paca.Tests/Core/AudioPitchShiftEngineGateTests.cs
Normal file
64
tests/Paca.Tests/Core/AudioPitchShiftEngineGateTests.cs
Normal file
|
|
@ -0,0 +1,64 @@
|
|||
using System;
|
||||
using Paca.Core;
|
||||
using Xunit;
|
||||
|
||||
namespace Paca.Tests.Core;
|
||||
|
||||
public class AudioPitchShiftEngineGateTests
|
||||
{
|
||||
[Fact]
|
||||
public void Gate385_AudioPitchShift_CalculatesAccuratePitchScale()
|
||||
{
|
||||
// 0 semitones -> 1.0
|
||||
Assert.Equal(1.0, AudioPitchShiftEngine.CalculatePitchScale(0.0), 4);
|
||||
|
||||
// +12 semitones (1 octave up) -> 2.0
|
||||
Assert.Equal(2.0, AudioPitchShiftEngine.CalculatePitchScale(12.0), 4);
|
||||
|
||||
// -12 semitones (1 octave down) -> 0.5
|
||||
Assert.Equal(0.5, AudioPitchShiftEngine.CalculatePitchScale(-12.0), 4);
|
||||
|
||||
// +1 semitone -> ~1.0595
|
||||
Assert.Equal(1.0595, AudioPitchShiftEngine.CalculatePitchScale(1.0), 4);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Gate386_AudioPitchShift_BuildsFfmpegFilterChain()
|
||||
{
|
||||
// +2 semitones (scale ~ 1.1225)
|
||||
var filter = AudioPitchShiftEngine.BuildPitchShiftFilter(semitones: 2.0, sampleRate: 44100);
|
||||
|
||||
Assert.Contains("asetrate=", filter);
|
||||
Assert.Contains("atempo=", filter);
|
||||
Assert.Contains("aresample=44100", filter);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Gate387_AudioPitchShift_ClampsExtremeSemitoneRanges()
|
||||
{
|
||||
var clampedHigh = AudioPitchShiftEngine.ClampSemitones(24.0);
|
||||
Assert.Equal(12.0, clampedHigh);
|
||||
|
||||
var clampedLow = AudioPitchShiftEngine.ClampSemitones(-30.0);
|
||||
Assert.Equal(-12.0, clampedLow);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Gate388_AudioPitchShift_BuildsFullCommandLine_WithVideoCopy()
|
||||
{
|
||||
var cmd = AudioPitchShiftEngine.BuildPitchShiftCommandLine(
|
||||
inputPath: "C:\\music\\karaoke.mp4",
|
||||
outputPath: "C:\\music\\karaoke_plus1.mp4",
|
||||
semitones: 1.0,
|
||||
isAudioOnly: false,
|
||||
sampleRate: 48000
|
||||
);
|
||||
|
||||
Assert.Contains("-i \"C:\\music\\karaoke.mp4\"", cmd);
|
||||
Assert.Contains("-c:v copy", cmd);
|
||||
Assert.Contains("-filter:a \"asetrate=", cmd);
|
||||
Assert.Contains("aresample=48000", cmd);
|
||||
Assert.Contains("-c:a aac -b:a 192k", cmd);
|
||||
Assert.EndsWith("\"C:\\music\\karaoke_plus1.mp4\" -y", cmd);
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue