public void TestRemoveNotifiesBoundLists()
        {
            const int    key  = 0;
            const string item = "item";

            bindableStringDictionary.Add(key, item);
            var listA = new BindableDictionary <int, string>();

            listA.BindTo(bindableStringDictionary);
            var listB = new BindableDictionary <int, string>();

            listB.BindTo(bindableStringDictionary);
            var listC = new BindableDictionary <int, string>();

            listC.BindTo(bindableStringDictionary);

            bindableStringDictionary.Remove(key);

            Assert.Multiple(() =>
            {
                Assert.False(listA.Contains(key));
                Assert.False(listB.Contains(key));
                Assert.False(listC.Contains(key));
            });
        }
Exemple #2
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);
                }
            }
        }