Beispiel #1
0
        //[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);
        }
Beispiel #5
0
        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);
        }
Beispiel #6
0
        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);
        }
Beispiel #13
0
        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);
            }
        }
Beispiel #14
0
        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();
        }
Beispiel #17
0
        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());
        }
Beispiel #21
0
        public void Be_Creatable()
        {
            var ctx = new ContextFor <CheckFactory>();
            var sut = ctx.BuildSut();

            sut.Should().NotBeNull();
            sut.Should().BeAssignableTo <ICheckFactory>();
        }
Beispiel #22
0
        public void Be_Creatable()
        {
            var ctx = new ContextFor <RequiredCheck>();
            var sut = ctx.BuildSut();

            sut.Should().NotBeNull();

            sut.GetType().GetCustomAttribute <DisplayNameAttribute>().DisplayName.Should().Be("required");
        }
Beispiel #23
0
        public void Cache()
        {
            var ctx = new ContextFor <SuggestionsProxy>();
            var sut = ctx.BuildSut();

            var result = sut.For("xyz", null);

            result.Should().BeNull();
        }
Beispiel #24
0
        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");
        }
Beispiel #27
0
        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);
        }
Beispiel #29
0
        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);
        }
Beispiel #30
0
        //[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");
        }