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,63 @@
using System;
using Paca.Mobile.Core;
using Xunit;
namespace Paca.Tests.Core;
public class SubtitleFormatConverterGateTests
{
[Fact]
public void Gate345_SubtitleFormatConverter_ConvertsSrtToVtt_Correctly()
{
var srt = @"1
00:00:01,234 --> 00:00:04,567
Hello world!
2
00:00:05,000 --> 00:00:08,100
Welcome to Paca.";
var vtt = SubtitleFormatConverter.ConvertSrtToVtt(srt);
Assert.StartsWith("WEBVTT", vtt.TrimStart());
Assert.Contains("00:00:01.234 --> 00:00:04.567", vtt);
Assert.Contains("00:00:05.000 --> 00:00:08.100", vtt);
Assert.DoesNotContain(",234", vtt);
}
[Fact]
public void Gate346_SubtitleFormatConverter_ConvertsVttToSrt_Correctly()
{
var vtt = @"WEBVTT
00:00:01.234 --> 00:00:04.567
Hello world!
00:00:05.000 --> 00:00:08.100
Welcome to Paca.";
var srt = SubtitleFormatConverter.ConvertVttToSrt(vtt);
Assert.DoesNotContain("WEBVTT", srt);
Assert.Contains("1\n00:00:01,234 --> 00:00:04,567", srt.Replace("\r\n", "\n"));
Assert.Contains("00:00:01,234 --> 00:00:04,567", srt);
Assert.Contains("00:00:05,000 --> 00:00:08,100", srt);
}
[Fact]
public void Gate347_SubtitleFormatConverter_StripsFormattingTags_Cleanly()
{
var formatted = "<b>Hello</b> <i><font color=\"#ff0000\">World</font></i> & enjoy!";
var clean = SubtitleFormatConverter.StripFormattingTags(formatted);
Assert.Equal("Hello World & enjoy!", clean);
}
[Fact]
public void Gate348_SubtitleFormatConverter_HandlesEmptyAndWhitespaceGracefully()
{
Assert.Equal(string.Empty, SubtitleFormatConverter.ConvertSrtToVtt(string.Empty));
Assert.Equal(string.Empty, SubtitleFormatConverter.ConvertVttToSrt(string.Empty));
Assert.Equal(string.Empty, SubtitleFormatConverter.StripFormattingTags(string.Empty));
}
}