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
|
|
@ -0,0 +1,72 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using Paca.Mobile.Core;
|
||||
using Xunit;
|
||||
|
||||
namespace Paca.Tests.Core;
|
||||
|
||||
public class NetworkResilienceSupervisorGateTests
|
||||
{
|
||||
[Fact]
|
||||
public void Gate265_NetworkResilienceSupervisor_PausesActiveDownloads_OnNetworkLoss()
|
||||
{
|
||||
var supervisor = new NetworkResilienceSupervisor();
|
||||
var item1 = new ResilientDownloadItem("id-1", "video1", ResilientDownloadState.Downloading);
|
||||
var item2 = new ResilientDownloadItem("id-2", "video2", ResilientDownloadState.Downloading);
|
||||
|
||||
supervisor.RegisterItems(new[] { item1, item2 });
|
||||
|
||||
// Network goes down
|
||||
supervisor.OnNetworkStatusChanged(isConnected: false);
|
||||
|
||||
Assert.Equal(ResilientDownloadState.NetworkPaused, item1.State);
|
||||
Assert.Equal(ResilientDownloadState.NetworkPaused, item2.State);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Gate266_NetworkResilienceSupervisor_AutomaticallyResumes_OnNetworkRestored()
|
||||
{
|
||||
var supervisor = new NetworkResilienceSupervisor();
|
||||
var item = new ResilientDownloadItem("id-1", "video1", ResilientDownloadState.Downloading);
|
||||
supervisor.RegisterItems(new[] { item });
|
||||
|
||||
supervisor.OnNetworkStatusChanged(isConnected: false);
|
||||
Assert.Equal(ResilientDownloadState.NetworkPaused, item.State);
|
||||
|
||||
// Network comes back up
|
||||
var resumedItems = supervisor.OnNetworkStatusChanged(isConnected: true);
|
||||
|
||||
Assert.Equal(ResilientDownloadState.Downloading, item.State);
|
||||
Assert.Single(resumedItems);
|
||||
Assert.Equal("id-1", resumedItems[0].Id);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Gate267_NetworkResilienceSupervisor_DoesNotResume_UserPausedItems()
|
||||
{
|
||||
var supervisor = new NetworkResilienceSupervisor();
|
||||
var userPausedItem = new ResilientDownloadItem("id-user", "video_paused", ResilientDownloadState.UserPaused);
|
||||
supervisor.RegisterItems(new[] { userPausedItem });
|
||||
|
||||
// Network disconnect then reconnect
|
||||
supervisor.OnNetworkStatusChanged(isConnected: false);
|
||||
var resumed = supervisor.OnNetworkStatusChanged(isConnected: true);
|
||||
|
||||
Assert.Equal(ResilientDownloadState.UserPaused, userPausedItem.State);
|
||||
Assert.Empty(resumed);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Gate268_NetworkResilienceSupervisor_JitteredBackoff_CalculatesDelays()
|
||||
{
|
||||
var supervisor = new NetworkResilienceSupervisor();
|
||||
|
||||
var delay1 = supervisor.GetJitteredDelayMs(itemIndex: 0, baseDelayMs: 500);
|
||||
var delay2 = supervisor.GetJitteredDelayMs(itemIndex: 1, baseDelayMs: 500);
|
||||
var delay3 = supervisor.GetJitteredDelayMs(itemIndex: 2, baseDelayMs: 500);
|
||||
|
||||
Assert.True(delay1 >= 500);
|
||||
Assert.True(delay2 > delay1);
|
||||
Assert.True(delay3 > delay2);
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue