コード例 #1
0
        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));
        }
コード例 #2
0
        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;
        }