public void Shift_on_wrap_around()
        {
            var events = Substitute.For <IEventAggregator>();
            AudioShiftedEvent shifted = null;

            events.When(x => x.PublishOnCurrentThread(Arg.Any <AudioShiftedEvent>()))
            .Do(x => shifted = x.Arg <AudioShiftedEvent>());

            using (
                var sut = new BufferedStreamingChannel(events, new Uri("channel://1/"), new WaveFormat(8000, 8, 1),
                                                       TimeSpan.FromSeconds(2))
            {
                PreserveAfterWrapAround = TimeSpan.FromSeconds(1)
            })
            {
                sut.Stream.CurrentTime = sut.PreserveAfterWrapAround;
                var startTime = sut.StartTime;

                sut.BufferedStream.OnWrappedAround();

                sut.Stream.CurrentTime.Should().Be(TimeSpan.Zero);
                sut.StartTime.Should().Be(startTime + sut.PreserveAfterWrapAround);
                shifted.Shift.Should().Be(sut.PreserveAfterWrapAround);
            }
        }
        public void Handle_shift_events()
        {
            var ctx = new ContextFor <WaveformDisplayViewModel>();
            var sut = ctx.BuildSut();

            sut.Should().BeAssignableTo <IHandle <AudioShiftedEvent> >();

            var source       = new Uri("http://some/audio/");
            var shift        = TimeSpan.FromSeconds(3);
            var newStartTime = DateTimeOffset.Now;
            var e            = new AudioShiftedEvent(source, shift, newStartTime);

            sut.Source.Should().BeNull("skip shift if not same source");
            sut.Handle(e);

            sut.Source        = source;
            sut.WaveformImage = BitmapFactory.New(20, 20);
            sut.Duration.Should().Be(0, "skip shifts if duration 0");
            sut.Handle(e);

            sut.Duration = shift.TotalSeconds * 2;
            sut.HandleShift(e.Shift.TotalSeconds);
        }
Exemple #3
0
        public void Support_start_time_with_shifts()
        {
            var uri = new Uri("http://some/uri/audio.wav");
            var ctx = new ContextFor <WaveformPlayerViewModel>();

            var d   = DateTimeOffset.UtcNow;
            var sut = ctx.BuildSut();

            sut.Should().BeAssignableTo <IHandle <AudioShiftedEvent> >();
            ctx.For <IEventAggregator>().Received().Subscribe(sut);

            var getTime = ctx.For <IGetTimeStamp>();

            getTime.For(uri).Returns(d);

            sut.Source = uri;
            sut.HasCurrentTime.Should().BeTrue();
            sut.StartTime.Should().Be(d);

            var shiftedEvent = new AudioShiftedEvent(uri, TimeSpan.FromSeconds(3), sut.StartTime);

            sut.Handle(shiftedEvent);
            sut.StartTime.Should().Be(d + shiftedEvent.Shift);
        }