//[IsNotDeadCode] public void Be_Creatable() { var ctx = new ContextFor <CalculatorViewModel>(); var sut = ctx.BuildSut(); sut.Should().NotBeNull(); }
public void Support_an_Api_to_ignore_packages() { var context = new ContextFor <NuPlugPackageManager>(); var sut = context.BuildSut(); sut.Should().BeAssignableTo <ISkipPackages>(); var foo = "foo".CreatePackage("0.1.0"); var bar = "bar".CreatePackage("0.1.1"); var deps = new[] { new PackageDependencySet(sut.TargetFramework, new[] { new PackageDependency(bar.Id) }) }; foo.DependencySets.Returns(deps); var remotePackages = new[] { foo }; sut.SourceRepository.GetPackages().Returns(remotePackages.AsQueryable()); var localRepo = (IPackageRepository) Substitute.For(new[] { typeof(IPackageRepository), typeof(ISkipPackages) }, new object[] {}); sut.SetLocalRepository(localRepo); var packagesToSkip = new[] { bar }; sut.SkipPackages(packagesToSkip); var skipPackages = (ISkipPackages)localRepo; skipPackages.Received().SkipPackages(packagesToSkip); // extension method sut.SkipPackages(typeof(NuPlugPackageManager_Should).Assembly, "packages.config"); }
public void Use_full_volume_and_center_balance_on_sampling() { var ctx = new ContextFor <NAudioGetWaveform>(); var peakProvider = new PeakProvider(); ctx.Use <IPeakProvider>(peakProvider); var sut = ctx.BuildSut(); var waveFormat = WaveFormat.CreateIeeeFloatWaveFormat(8000, 1); using (var buffer = new BufferedWaveStream(waveFormat, TimeSpan.FromSeconds(1))) using (var waveStream = new WaveProviderEx(buffer)) { var source = new Uri("my://source/"); ctx.For <IWaveProviderFactory>().Create(source).Returns(waveStream); waveStream.Position = 40; waveStream.Volume = 0.5f; waveStream.Pan = -1f; var samples = waveFormat.Generate(buffer.BufferDuration, SignalGeneratorType.Square); buffer.AddSamples(samples, 0, samples.Length); var waveForm = sut.For(source); waveForm.Duration.Should().Be(buffer.BufferDuration); waveForm.Peaks.Should().HaveCount((int)(peakProvider.PeaksPerSecond * buffer.BufferDuration.TotalSeconds)); waveForm.Peaks.All(p => p.Max == 1f && p.Min == -1f).Should().BeTrue(); waveStream.Position.Should().Be(40, "should be restored after sampling"); waveStream.Volume.Should().Be(0.5f); waveStream.Pan.Should().Be(-1f); } }
public void Do_Additions(double firstOperand, double secondOperand, double expectedResult) { var ctx = new ContextFor <AdditionOperation>(); var sut = ctx.BuildSut(); sut.Calculate(firstOperand, secondOperand).Should().Be(expectedResult); }
public void Support_absolute_audio_time() { var ctx = new ContextFor <WaveformPlayerViewModel>(); var formatter = new DateTimeFormatter("yyyy-MM-dd HH:mm:ss"); ctx.Use <IAbsoluteTimeFormatter>(formatter); var sut = ctx.BuildSut(); sut.StartTime.Should().BeNull("no start time by default"); sut.HasCurrentTime.Should().BeFalse(); sut.CurrentTime.Should().BeNullOrWhiteSpace(); var d = DateTimeOffset.UtcNow; sut.StartTime = d; sut.HasCurrentTime.Should().BeTrue(); var expected = formatter.Format(d); sut.CurrentTime.Should().Be(expected); var position = TimeSpan.FromSeconds(sut.Player.Duration); sut.Player.Position = position.TotalSeconds; expected = formatter.Format(d + position); sut.CurrentTime.Should().Be(expected); }
public void Use_Providers_Source() { var positionPovider = Substitute.For <IMediaPlayer>(); var source = new Uri("my://source/"); positionPovider.Source.Returns(source); var ctx = new ContextFor <WaveformViewModel>(); var sut = ctx.BuildSut(); // 1. test update on setting positionprovider sut.PositionProvider = positionPovider; sut.Source.Should().Be(source); // ReSharper disable once RedundantAssignment // needed to match NSubstitute syntax! source = positionPovider.Received(1).Source; // 2. test update on setting positionprovider.Source source = new Uri("other://source/"); positionPovider.Source = source; positionPovider.PropertyChanged += Raise.Event <PropertyChangedEventHandler>(this, new PropertyChangedEventArgs(nameof(IPositionProvider.Source))); sut.Source.Should().Be(source); // ReSharper disable once RedundantAssignment // needed to match NSubstitute syntax! source = positionPovider.Received(2).Source; }
public void Return_False_For_End_time_Before_Start_time_Using_Greater_Than() { var testDict = new Dictionary <string, string> { { "startTime", "11/7/2018" }, { "stopTime", "9/7/2018" } }; var formData = new FormData(testDict); var settings = new Dictionary <string, string> { { "FieldToCompareWith", "stopTime" }, { "CompareOperator", "<" } } as IDictionary <string, string>; var ctx = new ContextFor <DateTimeComparisonCheck>(); ctx.Use(settings); ctx.Use <Func <FormData> >(() => formData); var sut = ctx.BuildSut(); formData.Values.TryGetValue("stopTime", out var result); var res = sut.Validate(result, default(DateTime)); res.IsValid.Should().BeFalse(); }
public void Refresh_waveform_when_receiving_earlier_samples_than_before() { var ctx = new ContextFor <WaveformDisplayViewModel>(); var sut = ctx.BuildSut(); sut.BackgroundBrush = new SolidColorBrush(Colors.Black); var color = Colors.Red; sut.LeftBrush = sut.RightBrush = new SolidColorBrush(color); sut.WaveformImage = BitmapFactory.New(30, 20); var uri = new Uri("source://test/"); var w3 = (int)(sut.WaveformImage.Width / 3); var peaks = Enumerable.Repeat(1f, w3).Select(m => new PeakInfo(-m, m)).ToArray(); sut.Duration = 3; // 1/3 var e = new PeaksReceivedEvent(uri, 0, 1, peaks); sut.HandlePeaks(e); sut.WaveformImage.RectShouldHaveColor(0, 0, w3 - 1, 20, color); sut.WaveformImage.RectShouldHaveColor(w3, 0, 3 * w3, 20, sut.BackgroundBrush.Color); // 3/3 e = new PeaksReceivedEvent(uri, 2, 3, peaks); sut.HandlePeaks(e); sut.WaveformImage.RectShouldHaveColor(0, 0, w3 - 1, 20, color); sut.WaveformImage.RectShouldHaveColor(w3, 0, 2 * w3 - 1, 20, sut.BackgroundBrush.Color); sut.WaveformImage.RectShouldHaveColor(2 * w3, 0, 3 * w3, 20, color); // 2/3 e = new PeaksReceivedEvent(uri, 1, 2, peaks); sut.HandlePeaks(e); sut.WaveformImage.RectShouldHaveColor(0, 0, 2 * w3 - 1, 20, color); sut.WaveformImage.RectShouldHaveColor(2 * w3, 0, 3 * w3, 20, sut.BackgroundBrush.Color); }
public void Return_False_If_Cannot_Parse_CompareWith_Date() { var testDict = new Dictionary <string, string> { { "startTime", "9/7/2018" }, { "stopTime", "cannot parse" } }; var formData = new FormData(testDict); var settings = new Dictionary <string, string> { { "FieldToCompareWith", "stopTime" }, { "CompareOperator", "<" }, { "SpecificDateTimeFormats", "d/M/yyyy" } } as IDictionary <string, string>; var ctx = new ContextFor <DateTimeComparisonCheck>(); ctx.Use(settings); ctx.Use <Func <FormData> >(() => formData); var sut = ctx.BuildSut(); formData.Values.TryGetValue("startTime", out var result); var res = sut.Validate(result, default(DateTime)); res.IsValid.Should().BeFalse(); res.Exception.Message.Should().Be("Cannot parse 'compareWith' value to datetime."); }
public void Return_True_For_Start_time_Before_End_time_Using_Smaller_Than_With_Specific_Formats() { var testDict = new Dictionary <string, string> { { "startTime", "11:00" }, { "stopTime", "11:30" } }; var formData = new FormData(testDict); var testFormats = new[] { "HHmm", "HHmmss", "HH:mm", "HH:mm:ss" }; var settings = new Dictionary <string, string> { { "FieldToCompareWith", "stopTime" }, { "CompareOperator", "<" }, { "SpecificDateTimeFormats", string.Join("|", testFormats) } } as IDictionary <string, string>; var ctx = new ContextFor <DateTimeComparisonCheck>(); ctx.Use(settings); ctx.Use <Func <FormData> >(() => formData); var sut = ctx.BuildSut(); //var dateTimeCheck = new DateTimeComparisonCheck("lorem ipsum", "<", "stopTime", () => formData, tableDataSerializer, specificDateTimeFormats: testFormats); formData.Values.TryGetValue("startTime", out var result); var res = sut.Validate(result, default(DateTime)); res.IsValid.Should().BeTrue(); }
public void Return_False_Use_TableKey_And_Row_Index_For_InterTable_Comparison() { var testDict = new Dictionary <string, string> { { "startTime", "8/7/2018" }, { "theTable", "foobar" } }; var formData = new FormData(testDict); var serializer = Substitute.For <INZazuTableDataSerializer>(); serializer.Deserialize("foobar").Returns(new Dictionary <string, string> { { "stopTime__0", "10/10/2018" } }); var settings = new Dictionary <string, string> { { "FieldToCompareWith", "stopTime" }, { "CompareOperator", ">" }, { "SpecificDateTimeFormats", "d/M/yyyy" }, { "TableKey", "theTable" } } as IDictionary <string, string>; var ctx = new ContextFor <DateTimeComparisonCheck>(); ctx.Use(settings); ctx.Use(serializer); ctx.Use <Func <FormData> >(() => formData); var sut = ctx.BuildSut(); formData.Values.TryGetValue("startTime", out var result); var res = sut.Validate(result, default(DateTime)); res.IsValid.Should().BeFalse(); }
public void Use_Compare_Strategy(string start, string end, string compare, bool expected) { var testDict = new Dictionary <string, string> { { "startTime", start }, { "stopTime", end } }; var formData = new FormData(testDict); var settings = new Dictionary <string, string> { { "FieldToCompareWith", "stopTime" }, { "CompareOperator", compare } } as IDictionary <string, string>; var ctx = new ContextFor <DateTimeComparisonCheck>(); ctx.Use(settings); ctx.Use <Func <FormData> >(() => formData); var sut = ctx.BuildSut(); formData.Values.TryGetValue("startTime", out var result); var res = sut.Validate(result, default(DateTime)); res.IsValid.Should().Be(expected); }
public void Provide_Average_Peaks_For(int rate, int channels) { var ctx = new ContextFor <PeakProvider>(); var sut = ctx.BuildSut(); var waveFormat = WaveFormat.CreateIeeeFloatWaveFormat(rate, channels); var data = waveFormat.Generate(TimeSpan.FromSeconds(1), SignalGeneratorType.Sin, 1.0); sut.Filter = PeakProvider.AvgFilter; var peaks = sut.Sample(waveFormat, data); peaks.Should().HaveCount(sut.PeaksPerSecond); for (int i = 0; i < peaks.Length; i++) { // average of sin(x) over [a,b]: // = 1/(b-a) * \int_a^b sin(x) dx // = 1/(b-a) * [ -cos(b) - (-cos(a)) ] // = 1/(b-a) * [ cos(a) - cos(b) ] // = (cos(a) - cos(b)) / (b-a) var a = 2 * Math.PI * i / peaks.Length; var b = 2 * Math.PI * (i + 1) / peaks.Length; var expected = (float)((Math.Cos(a) - Math.Cos(b)) / (b - a)); var peak = peaks[i]; peak.Max.Should().BeInRange(-1f, 1f); peak.Max.Should().BeApproximately(expected, 0.01f); peak.Min.Should().Be(-peak.Max); } }
public void Not_Contain_AggregateCheck() { var ctx = new ContextFor <CheckFactory>(); var sut = ctx.BuildSut(); sut.AvailableTypes.Should().NotContain(typeof(AggregateCheck).Name); }
public void Return_True_For_Start_time_Before_End_time_Using_Greater_Than() { var testDict = new Dictionary <string, string> { { "startTime", "8/7/2018" }, { "stopTime", "9/7/2018" } }; var formData = new FormData(testDict); var settings = new Dictionary <string, string> { { "FieldToCompareWith", "stopTime" }, { "CompareOperator", "<" }, { "SpecificDateTimeFormats", "d/M/yyyy" } } as IDictionary <string, string>; var ctx = new ContextFor <DateTimeComparisonCheck>(); ctx.Use(settings); ctx.Use <Func <FormData> >(() => formData); var sut = ctx.BuildSut(); // we compare 'startTime' as base with 'stopTime' as remove field formData.Values.TryGetValue("startTime", out var result); var res = sut.Validate(result, default(DateTime)); res.IsValid.Should().BeTrue(); res.Exception.Should().BeNull(); }
public void Be_Creatable() { var ctx = new ContextFor <AdditionOperation>(); var sut = ctx.BuildSut(); sut.Should().NotBeNull(); }
public void Play_pause() { var ctx = new ContextFor <ChannelsViewModel>(); var waveFormat = WaveFormat.CreateIeeeFloatWaveFormat(8000, 1); var mixer = ctx.For <IChannelMixer>(); mixer.SampleProvider.WaveFormat.Returns(waveFormat); var player = ctx.For <IWavePlayer>(); player.When(x => x.Play()).Do(x => player.PlaybackState.Returns(PlaybackState.Playing)); player.When(x => x.Pause()).Do(x => player.PlaybackState.Returns(PlaybackState.Paused)); var sut = ctx.BuildSut(); sut.IsPlaying.Should().Be(sut.IsActive); ((IActivate)sut).Activate(); sut.IsPlaying.Should().Be(sut.IsActive); sut.Pause(); sut.IsPlaying.Should().BeFalse(); sut.Play(); sut.IsPlaying.Should().BeTrue(); ((IDeactivate)sut).Deactivate(false); sut.IsPlaying.Should().Be(sut.IsActive); }
public void Do_Cosines(double operand, double expectedResult) { var ctx = new ContextFor <CosineOperation>(); var sut = ctx.BuildSut(); sut.Calculate(operand).Should().Be(expectedResult); }
public void Log_and_rethrow() { var context = new ContextFor <NuPlugPackageManager>(); var sut = context.BuildSut(); var foo = "foo".CreatePackage("0.1.0"); var expExc = new InvalidOperationException("test"); context.For <IPackageRepository>(nameof(sut.LocalRepository)) .GetPackages() .Returns(x => { throw expExc; }); using (var tl = new TestTraceListener()) { sut.Logger = new TraceLogger(); try { sut.InstallPackage(foo, true, false); } catch (Exception ex) { ex.Should().Be(expExc); } tl.MessagesFor(TraceLevel.Warning) .Single() .Should() .StartWith($"Could not install '{foo.Id} {foo.Version}': "); } }
public void Support_accessing_the_package_manager() { var context = new ContextFor <NuGetPackageContainer <string> >(); var sut = context.BuildSut(); sut.PackageManager.Should().NotBeNull(); sut.Framework.Should().Be(VersionHelper.GetTargetFramework()); }
public void Be_Creatable() { var ctx = new ContextFor <CheckFactory>(); var sut = ctx.BuildSut(); sut.Should().NotBeNull(); sut.Should().BeAssignableTo <ICheckFactory>(); }
public void Be_Creatable() { var ctx = new ContextFor <RequiredCheck>(); var sut = ctx.BuildSut(); sut.Should().NotBeNull(); sut.GetType().GetCustomAttribute <DisplayNameAttribute>().DisplayName.Should().Be("required"); }
public void Cache() { var ctx = new ContextFor <SuggestionsProxy>(); var sut = ctx.BuildSut(); var result = sut.For("xyz", null); result.Should().BeNull(); }
public void Be_Creatable() { var ctx = new ContextFor <BlackList <string> >(); ctx.Use(10); var sut = ctx.BuildSut(); sut.Should().NotBeNull(); sut.Should().BeAssignableTo <IBlackList <string> >(); }
public void IsValid_NullOrWhitespace_passes() { var ctx = new ContextFor <StringLengthCheck>(); var sut = ctx.BuildSut(); sut.ShouldPass(null, null); sut.ShouldPass(string.Empty, string.Empty); sut.ShouldPass("\t\r\n", "\t\r\n"); sut.ShouldPass(" ", " "); }
public void Read_JToken_From_Response() { var ctx = new ContextFor <ElasticSearchSuggestions>(); var sut = ctx.BuildSut(); var items = sut.GetSuggestions(TestData.Hits, "Tho").ToArray(); items.Should().Equal("Thomate", "Thomas", "Thomas Smith"); items.Should().NotContain("Horst"); }
public void Return_players_Source_when_getting_source() { var uri = new Uri("http://some/uri/audio.wav"); var ctx = new ContextFor <WaveformPlayerViewModel>(); ctx.For <IMediaPlayer>().Source.Returns(uri); var sut = ctx.BuildSut(); sut.Source.Should().Be(uri); }
public void Clear_waveform_image_when_updating_source() { var ctx = new ContextFor <WaveformDisplayViewModel>(); var sut = ctx.BuildSut(); sut.WaveformImage.Clear(Colors.Red); sut.Source = new Uri("http://no/audio"); sut.WaveformImage.ShouldHaveColor(sut.BackgroundBrush.Color); }
public void Cleanup() { var ctx = new ContextFor <WaveformViewModel>(); WaveformViewModel sut; var events = ctx.For <IEventAggregator>(); using (sut = ctx.BuildSut()) events.Received().Subscribe(sut); events.Received().Unsubscribe(sut); }
//[IsNotDeadCode] public void Do_Press_Clear(string firstOperand) { var ctx = new ContextFor <CalculatorViewModel>(); var sut = ctx.BuildSut(); sut.CurrentDisplayValue = firstOperand; sut.DoPressClear(); sut.CurrentDisplayValue.Should().Be("0"); }