public Task Execute(TestContext context) { var stateTask = WaitForState.Observe(context.Service, PlayerState.Playing, context.Token, context.Timeout); var clockTask = RunningClockTask.Observe(context.Service, context.Token, context.Timeout); var resumeTask = context.Service.Resume().WithTimeout(context.Timeout).WithCancellation(context.Token); // Jolly resume operation is when: // - Resume() completes. // - Playing state is observed. // - Running clock is observed. return(Task.WhenAll(resumeTask, stateTask, clockTask)); }
public async Task VerifyRunning(TimeSpan duration) { // Playing state first. await WaitForState.Observe(_service, PlayerState.Playing, _context.Token, _context.Timeout); // Start clock & termination listners. var runningClockTask = RunningClockTask.Observe(_service, _context.Token, _context.Timeout); await Task.WhenAny(_playbackErrorTask, _clipCompletedTask, Task.Delay(duration)).WithCancellation(_context.Token); if (_playbackErrorTask.IsCompleted || _clipCompletedTask.IsCompleted) { throw new Exception($"Playback terminated or not running. " + $"Error: {_playbackErrorTask.IsCompleted} " + $"Completed: {_clipCompletedTask.IsCompleted}"); } // verify running clock await runningClockTask; }