コード例 #1
0
ファイル: ConverterTests.cs プロジェクト: gstamac/AllGreen
        public void RunnersToStatusesConverterTest()
        {
            RunnersToStatusesConverter runnersToStatusesConverter = new RunnersToStatusesConverter();

            runnersToStatusesConverter.ProvideValue(null).Should().Be(runnersToStatusesConverter);

            runnersToStatusesConverter.Convert(new object[] { null, null }, typeof(IEnumerable), null, null).Should().BeNull();

            BindableCollection <RunnerViewModel> runners = new BindableCollection <RunnerViewModel>();
            RunnerViewModel runner1 = new RunnerViewModel {
                ConnectionId = "conn1", Name = "Runner 1"
            };
            RunnerViewModel runner2 = new RunnerViewModel {
                ConnectionId = "conn2", Name = "Runner 2"
            };

            runners.Add(runner1);
            runners.Add(runner2);
            BindableDictionary <string, SpecStatusViewModel> statuses = new BindableDictionary <string, SpecStatusViewModel>();

            statuses.Add("conn1", new SpecStatusViewModel {
                Status = SpecStatus.Passed, Time = 1, Duration = 1, Runner = runner1
            });
            statuses.Add("conn2", new SpecStatusViewModel {
                Status = SpecStatus.Failed, Time = 2, Duration = 2, Runner = runner2
            });

            object result = runnersToStatusesConverter.Convert(new object[] { runners, statuses }, typeof(IEnumerable), null, null);

            result.Should().BeAssignableTo <IEnumerable <SpecStatusViewModel> >();
            (result as IEnumerable <SpecStatusViewModel>).ShouldAllBeEquivalentTo(new object[] {
                new { Status = SpecStatus.Passed, Time = 1, Duration = 1, Runner = runner1 },
                new { Status = SpecStatus.Failed, Time = 2, Duration = 2, Runner = runner2 }
            },
                                                                                  o => o.Excluding(si => si.PropertyPath.EndsWith("IsNotifying") || si.PropertyPath.EndsWith("Steps") || si.PropertyPath.EndsWith("Description") || si.PropertyPath.EndsWith("DurationText")));

            runners.Add(new RunnerViewModel {
                ConnectionId = "conn3", Name = "Runner 3"
            });

            result = runnersToStatusesConverter.Convert(new object[] { runners, statuses }, typeof(IEnumerable), null, null);
            result.Should().BeAssignableTo <IEnumerable <SpecStatusViewModel> >();
            (result as IEnumerable <SpecStatusViewModel>).ShouldAllBeEquivalentTo(new object[] {
                new { Status = SpecStatus.Passed, Time = 1, Duration = 1, Runner = runner1 },
                new { Status = SpecStatus.Failed, Time = 2, Duration = 2, Runner = runner2 },
                null
            },
                                                                                  o => o.Excluding(si => si.PropertyPath.EndsWith("IsNotifying") || si.PropertyPath.EndsWith("Steps") || si.PropertyPath.EndsWith("Description") || si.PropertyPath.EndsWith("DurationText")));

            runnersToStatusesConverter.ConvertBack(null, null, null, null).Should().BeNull();
        }
コード例 #2
0
        public void TestBindViaBindTarget()
        {
            BindableDictionary <string, byte> parentBindable = new BindableDictionary <string, byte>();

            BindableDictionary <string, byte> bindable1 = new BindableDictionary <string, byte>();
            BindableDictionary <string, byte> bindable2 = new BindableDictionary <string, byte>();

            bindable1.BindTarget = parentBindable;
            bindable2.BindTarget = parentBindable;

            parentBindable.Add("5", 1);

            Assert.That(bindable1["5"], Is.EqualTo(1));
            Assert.That(bindable2["5"], Is.EqualTo(1));
        }
コード例 #3
0
        public void TestBindViaBindTarget()
        {
            BindableDictionary <int, string> parentBindable = new BindableDictionary <int, string>();

            BindableDictionary <int, string>  bindable1 = new BindableDictionary <int, string>();
            IBindableDictionary <int, string> bindable2 = new BindableDictionary <int, string>();

            bindable1.BindTarget = parentBindable;
            bindable2.BindTarget = parentBindable;

            parentBindable.Add(5, "Test");

            Assert.That(bindable1[5], Is.EqualTo("Test"));
            Assert.That(bindable2[5], Is.EqualTo("Test"));
        }
コード例 #4
0
        public void TestClearNotifiesBoundBindable()
        {
            var bindableDict = new BindableDictionary <string, byte>();

            bindableDict.BindTo(bindableStringByteDictionary);
            for (byte i = 0; i < 5; i++)
            {
                bindableStringByteDictionary.Add($"testA{i}", i);
            }
            for (byte i = 0; i < 5; i++)
            {
                bindableDict.Add($"testB{i}", i);
            }

            bindableStringByteDictionary.Clear();

            Assert.IsEmpty(bindableDict);
        }
コード例 #5
0
        public void TestClearNotifiesBoundBindable()
        {
            var bindableList = new BindableDictionary <int, string>();

            bindableList.BindTo(bindableStringDictionary);
            for (int i = 0; i < 5; i++)
            {
                bindableStringDictionary.Add(i, "testA");
            }
            for (int i = 0; i < 5; i++)
            {
                bindableList.Add(i + 5, "testA");
            }

            bindableStringDictionary.Clear();

            Assert.IsEmpty(bindableList);
        }
コード例 #6
0
        public void CheckLyrics(List <Lyric> lyrics, LyricCheckProperty checkProperty = LyricCheckProperty.All)
        {
            if (lyrics == null)
            {
                throw new ArgumentNullException(nameof(lyrics));
            }

            if (lyricChecker == null)
            {
                throw new NullReferenceException(nameof(lyricChecker));
            }

            // re-calculate and add
            foreach (var lyric in lyrics)
            {
                // create report record if not have.
                if (!BindableReports.Contains(lyric))
                {
                    BindableReports.Add(lyric, new LyricCheckReport(lyric));
                }

                var report = BindableReports[lyric];
                if (checkProperty.HasFlag(LyricCheckProperty.Time))
                {
                    report.TimeInvalid = lyricChecker.CheckInvalidLyricTime(lyric);
                }

                if (checkProperty.HasFlag(LyricCheckProperty.TimeTag))
                {
                    report.InvalidTimeTags = lyricChecker.CheckInvalidTimeTags(lyric);
                }

                if (checkProperty.HasFlag(LyricCheckProperty.Ruby))
                {
                    report.InvalidRubyTags = lyricChecker.CheckInvalidRubyTags(lyric);
                }

                if (checkProperty.HasFlag(LyricCheckProperty.Romaji))
                {
                    report.InvalidRomajiTags = lyricChecker.CheckInvalidRomajiTags(lyric);
                }
            }
        }
コード例 #7
0
        public void TestClearDoesNotNotifyBoundBindablesBeforeClear()
        {
            var bindableDictA = new BindableDictionary <string, byte>();

            bindableDictA.BindTo(bindableStringByteDictionary);
            var bindableDictB = new BindableDictionary <string, byte>();

            bindableDictB.BindTo(bindableStringByteDictionary);
            var bindableDictC = new BindableDictionary <string, byte>();

            bindableDictC.BindTo(bindableStringByteDictionary);
            for (byte i = 0; i < 5; i++)
            {
                bindableStringByteDictionary.Add($"testA{i}", i);
            }
            for (byte i = 0; i < 5; i++)
            {
                bindableDictA.Add($"testB{i}", i);
            }
            for (byte i = 0; i < 5; i++)
            {
                bindableDictB.Add($"testC{i}", i);
            }
            for (byte i = 0; i < 5; i++)
            {
                bindableDictC.Add($"testD{i}", i);
            }

            Assert.Multiple(() =>
            {
                Assert.IsNotEmpty(bindableDictA);
                Assert.IsNotEmpty(bindableDictB);
                Assert.IsNotEmpty(bindableDictC);
            });

            bindableStringByteDictionary.Clear();
        }
コード例 #8
0
        public void TestClearDoesNotNotifyBoundBindablesBeforeClear()
        {
            var bindableListA = new BindableDictionary <int, string>();

            bindableListA.BindTo(bindableStringDictionary);
            var bindableListB = new BindableDictionary <int, string>();

            bindableListB.BindTo(bindableStringDictionary);
            var bindableListC = new BindableDictionary <int, string>();

            bindableListC.BindTo(bindableStringDictionary);
            for (int i = 0; i < 5; i++)
            {
                bindableStringDictionary.Add(i, "testA");
            }
            for (int i = 0; i < 5; i++)
            {
                bindableListA.Add(i + 5, "testA");
            }
            for (int i = 0; i < 5; i++)
            {
                bindableListB.Add(i + 10, "testA");
            }
            for (int i = 0; i < 5; i++)
            {
                bindableListC.Add(i + 15, "testA");
            }

            Assert.Multiple(() =>
            {
                Assert.IsNotEmpty(bindableListA);
                Assert.IsNotEmpty(bindableListB);
                Assert.IsNotEmpty(bindableListC);
            });

            bindableStringDictionary.Clear();
        }
コード例 #9
0
        public void TestGetRetrievesObjectAtIndex()
        {
            bindableStringByteDictionary.Add("0", 0);
            bindableStringByteDictionary.Add("1", 1);
            bindableStringByteDictionary.Add("2", 2);

            Assert.AreEqual(1, bindableStringByteDictionary["1"]);
        }