25 lines
1.4 KiB
C#
25 lines
1.4 KiB
C#
using WebDrop.Core;
|
|
|
|
namespace WebDrop.Core.Tests;
|
|
public sealed class WorkspaceControlTests
|
|
{
|
|
[Theory]
|
|
[InlineData(ChannelMode.Enc)]
|
|
[InlineData(ChannelMode.Raw)]
|
|
public async Task ThreadStructureSurvivesContentExpiryAndEviction(ChannelMode mode)
|
|
{
|
|
using var env = new TestEnv(); var endpoint = TestEnv.Endpoint();
|
|
var channel = env.Create(endpoint, mode, new ChannelSettings { TtlSeconds = 60, MaxItems = 1 });
|
|
var id = TestEnv.NewId(); var control = FrameFlags.Final | FrameFlags.Control | (mode == ChannelMode.Enc ? FrameFlags.Enc : 0);
|
|
var normal = FrameFlags.Final | (mode == ChannelMode.Enc ? FrameFlags.Enc : 0);
|
|
int payload = mode == ChannelMode.Enc ? TestEnv.EncPayload : 16;
|
|
await env.Service.AppendFrameAsync(channel.Id, channel.Owner(endpoint), TestEnv.Frame(id, 0, control, payload), null);
|
|
env.Clock.Advance(TimeSpan.FromSeconds(59));
|
|
for (int i = 0; i < 3; i++) await env.Service.AppendFrameAsync(channel.Id, channel.Owner(endpoint), TestEnv.Frame(TestEnv.NewId(), 0, normal, payload), null);
|
|
env.Clock.Advance(TimeSpan.FromSeconds(2)); env.Service.Sweep();
|
|
Assert.NotNull(env.Store.Read(tx => tx.GetItem(channel.Id, id)));
|
|
Assert.Equal(1, env.Store.Read(tx => tx.CountControlItems(channel.Id)));
|
|
Assert.Equal(1, env.Store.Read(tx => tx.CountItems(channel.Id)));
|
|
}
|
|
}
|