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); }
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); }