public async Task Timeouts() { controller.StartTimeout = TimeSpan.FromSeconds(2); OnActivate = null; GetPlayer = () => new Mockups.Vpaid(); var adSource = GetLinearAdSource(); var cancellationToken = new CancellationToken(); var progress = new Progress<AdStatus>(); // adsource timeout var timeoutAdSource = new Mockups.DelayAdSource(3000) { Type = "vast" }; await UnitTestExtensions.ThrowsExceptionAsync<TimeoutException>(async () => await controller.PlayAdAsync(timeoutAdSource).AsTask(cancellationToken, progress)); Assert.IsFalse(playerStack.Any()); Assert.IsTrue(state == AdState.None); // NOTE: ad takes 4 seconds to start and 8 seconds to finish // initad timeout controller.StartTimeout = TimeSpan.FromSeconds(1); await UnitTestExtensions.ThrowsExceptionAsync<TimeoutException>(async () => await controller.PlayAdAsync(adSource).AsTask(cancellationToken, progress)); Assert.IsFalse(playerStack.Any()); Assert.IsTrue(state == AdState.None); // startad timeout controller.StartTimeout = TimeSpan.FromSeconds(3); await UnitTestExtensions.ThrowsExceptionAsync<TimeoutException>(async () => await controller.PlayAdAsync(adSource).AsTask(cancellationToken, progress)); Assert.IsFalse(playerStack.Any()); Assert.IsTrue(state == AdState.None); // timeout reached during playing (no exception thrown) controller.StartTimeout = TimeSpan.FromSeconds(5); await controller.PlayAdAsync(adSource).AsTask(cancellationToken, progress); Assert.IsFalse(playerStack.Any()); Assert.IsTrue(state == AdState.None); // timeout reached during stopping (no exception thrown) controller.StartTimeout = TimeSpan.FromSeconds(7); await controller.PlayAdAsync(adSource).AsTask(cancellationToken, progress); Assert.IsFalse(playerStack.Any()); Assert.IsTrue(state == AdState.None); // timeout reached after ad finishes playing (no exception thrown) controller.StartTimeout = TimeSpan.FromSeconds(10); await controller.PlayAdAsync(adSource).AsTask(cancellationToken, progress); await Task.Delay(3000); // wait a little bit so timeout actually gets hit Assert.IsFalse(playerStack.Any()); Assert.IsTrue(state == AdState.None); // no timeout specified controller.StartTimeout = null; await controller.PlayAdAsync(adSource).AsTask(cancellationToken, progress); Assert.IsFalse(playerStack.Any()); Assert.IsTrue(state == AdState.None); }
public async Task Timeouts() { controller.StartTimeout = TimeSpan.FromSeconds(2); OnActivate = null; GetPlayer = () => new Mockups.Vpaid(); var adSource = GetLinearAdSource(); var cancellationToken = new CancellationToken(); var progress = new Progress <AdStatus>(); // adsource timeout var timeoutAdSource = new Mockups.DelayAdSource(3000) { Type = "vast" }; await UnitTestExtensions.ThrowsExceptionAsync <TimeoutException>(async() => await controller.PlayAdAsync(timeoutAdSource).AsTask(cancellationToken, progress)); Assert.IsFalse(playerStack.Any()); Assert.IsTrue(state == AdState.None); // NOTE: ad takes 4 seconds to start and 8 seconds to finish // initad timeout controller.StartTimeout = TimeSpan.FromSeconds(1); await UnitTestExtensions.ThrowsExceptionAsync <TimeoutException>(async() => await controller.PlayAdAsync(adSource).AsTask(cancellationToken, progress)); Assert.IsFalse(playerStack.Any()); Assert.IsTrue(state == AdState.None); // startad timeout controller.StartTimeout = TimeSpan.FromSeconds(3); await UnitTestExtensions.ThrowsExceptionAsync <TimeoutException>(async() => await controller.PlayAdAsync(adSource).AsTask(cancellationToken, progress)); Assert.IsFalse(playerStack.Any()); Assert.IsTrue(state == AdState.None); // timeout reached during playing (no exception thrown) controller.StartTimeout = TimeSpan.FromSeconds(5); await controller.PlayAdAsync(adSource).AsTask(cancellationToken, progress); Assert.IsFalse(playerStack.Any()); Assert.IsTrue(state == AdState.None); // timeout reached during stopping (no exception thrown) controller.StartTimeout = TimeSpan.FromSeconds(7); await controller.PlayAdAsync(adSource).AsTask(cancellationToken, progress); Assert.IsFalse(playerStack.Any()); Assert.IsTrue(state == AdState.None); // timeout reached after ad finishes playing (no exception thrown) controller.StartTimeout = TimeSpan.FromSeconds(10); await controller.PlayAdAsync(adSource).AsTask(cancellationToken, progress); await Task.Delay(3000); // wait a little bit so timeout actually gets hit Assert.IsFalse(playerStack.Any()); Assert.IsTrue(state == AdState.None); // no timeout specified controller.StartTimeout = null; await controller.PlayAdAsync(adSource).AsTask(cancellationToken, progress); Assert.IsFalse(playerStack.Any()); Assert.IsTrue(state == AdState.None); }
public async Task Cancellation() { controller.StartTimeout = null; OnActivate = null; GetPlayer = () => new Mockups.Vpaid(); var adSource = GetLinearAdSource(); CancellationTokenSource cts; var progress = new Progress<AdStatus>(); // adsource cancel var timeoutAdSource = new Mockups.DelayAdSource(3000) { Type = "vast" }; cts = new CancellationTokenSource(); cts.CancelAfter(2000); await UnitTestExtensions.ThrowsExceptionAsync<OperationCanceledException>(async () => await controller.PlayAdAsync(timeoutAdSource).AsTask(cts.Token, progress)); Assert.IsFalse(playerStack.Any()); Assert.IsTrue(state == AdState.None); // NOTE: ad takes 4 seconds to start and 8 seconds to finish // initad cancel cts = new CancellationTokenSource(); cts.CancelAfter(1000); await UnitTestExtensions.ThrowsExceptionAsync<OperationCanceledException>(async () => await controller.PlayAdAsync(adSource).AsTask(cts.Token, progress)); Assert.IsFalse(playerStack.Any()); Assert.IsTrue(state == AdState.None); // startad cancel cts = new CancellationTokenSource(); cts.CancelAfter(3000); await UnitTestExtensions.ThrowsExceptionAsync<OperationCanceledException>(async () => await controller.PlayAdAsync(adSource).AsTask(cts.Token, progress)); Assert.IsFalse(playerStack.Any()); Assert.IsTrue(state == AdState.None); // playing cancel cts = new CancellationTokenSource(); cts.CancelAfter(5000); await UnitTestExtensions.ThrowsExceptionAsync<OperationCanceledException>(async () => await controller.PlayAdAsync(adSource).AsTask(cts.Token, progress)); Assert.IsFalse(playerStack.Any()); Assert.IsTrue(state == AdState.None); // stopping cancel cts = new CancellationTokenSource(); cts.CancelAfter(7000); await UnitTestExtensions.ThrowsExceptionAsync<OperationCanceledException>(async () => await controller.PlayAdAsync(adSource).AsTask(cts.Token, progress)); Assert.IsFalse(playerStack.Any()); Assert.IsTrue(state == AdState.None); // cancel after ad finishes playing (no exception thrown) cts = new CancellationTokenSource(); cts.CancelAfter(10000); await controller.PlayAdAsync(adSource).AsTask(cts.Token, progress); await Task.Delay(3000); // wait a little bit so timeout actually gets hit Assert.IsFalse(playerStack.Any()); Assert.IsTrue(state == AdState.None); }
public async Task Cancellation() { controller.StartTimeout = null; OnActivate = null; GetPlayer = () => new Mockups.Vpaid(); var adSource = GetLinearAdSource(); CancellationTokenSource cts; var progress = new Progress <AdStatus>(); // adsource cancel var timeoutAdSource = new Mockups.DelayAdSource(3000) { Type = "vast" }; cts = new CancellationTokenSource(); cts.CancelAfter(2000); await UnitTestExtensions.ThrowsExceptionAsync <OperationCanceledException>(async() => await controller.PlayAdAsync(timeoutAdSource).AsTask(cts.Token, progress)); Assert.IsFalse(playerStack.Any()); Assert.IsTrue(state == AdState.None); // NOTE: ad takes 4 seconds to start and 8 seconds to finish // initad cancel cts = new CancellationTokenSource(); cts.CancelAfter(1000); await UnitTestExtensions.ThrowsExceptionAsync <OperationCanceledException>(async() => await controller.PlayAdAsync(adSource).AsTask(cts.Token, progress)); Assert.IsFalse(playerStack.Any()); Assert.IsTrue(state == AdState.None); // startad cancel cts = new CancellationTokenSource(); cts.CancelAfter(3000); await UnitTestExtensions.ThrowsExceptionAsync <OperationCanceledException>(async() => await controller.PlayAdAsync(adSource).AsTask(cts.Token, progress)); Assert.IsFalse(playerStack.Any()); Assert.IsTrue(state == AdState.None); // playing cancel cts = new CancellationTokenSource(); cts.CancelAfter(5000); await UnitTestExtensions.ThrowsExceptionAsync <OperationCanceledException>(async() => await controller.PlayAdAsync(adSource).AsTask(cts.Token, progress)); Assert.IsFalse(playerStack.Any()); Assert.IsTrue(state == AdState.None); // stopping cancel cts = new CancellationTokenSource(); cts.CancelAfter(7000); await UnitTestExtensions.ThrowsExceptionAsync <OperationCanceledException>(async() => await controller.PlayAdAsync(adSource).AsTask(cts.Token, progress)); Assert.IsFalse(playerStack.Any()); Assert.IsTrue(state == AdState.None); // cancel after ad finishes playing (no exception thrown) cts = new CancellationTokenSource(); cts.CancelAfter(10000); await controller.PlayAdAsync(adSource).AsTask(cts.Token, progress); await Task.Delay(3000); // wait a little bit so timeout actually gets hit Assert.IsFalse(playerStack.Any()); Assert.IsTrue(state == AdState.None); }