示例#1
0
        public void CanHandleCyrillic()
        {
            var actual = DiacriticsCommand.DiacriticsLogic("матт", ToggleMode.Apply);

            Assert.AreEqual("м\u030A\u0325а\u030A\u0325т\u030A\u0325т\u030A\u0325", actual);
            Assert.AreEqual("м̥̊а̥̊т̥̊т̥̊", actual);
        }
示例#2
0
        public void CanHandleNonAscii()
        {
            var actual = DiacriticsCommand.DiacriticsLogic("mrläcey", ToggleMode.Apply);

            Assert.AreEqual("m\u0301\u0317r\u0301\u0317l\u0301\u0317ä\u0301\u0317c\u0301\u0317e\u0301\u0317y\u0301\u0317", actual);
            Assert.AreEqual("ḿ̗ŕ̗ĺ̗ä̗́ć̗é̗ý̗", actual);
        }
示例#3
0
        public void AddToStringOfLength3_Bridge()
        {
            var actual = DiacriticsCommand.DiacriticsLogic("abc", ToggleMode.Apply);

            Assert.AreEqual("a\u0346\u033Ab\u0346\u033Ac\u0346\u033A", actual);
            Assert.AreEqual("a̺͆b̺͆c̺͆", actual);
        }
示例#4
0
        public void AddToStringOfLength2_Breve()
        {
            var actual = DiacriticsCommand.DiacriticsLogic("ab", ToggleMode.Apply);

            Assert.AreEqual("a\u0306\u032Eb\u0306\u032E", actual);
            Assert.AreEqual("ă̮b̮̆", actual);
        }
示例#5
0
        public void AddToStringOfLength6_Grave()
        {
            var actual = DiacriticsCommand.DiacriticsLogic("abcdef", ToggleMode.Apply);

            Assert.AreEqual("a\u0300\u0316b\u0300\u0316c\u0300\u0316d\u0300\u0316e\u0300\u0316f\u0300\u0316", actual);
            Assert.AreEqual("à̖b̖̀c̖̀d̖̀è̖f̖̀", actual);
        }
示例#6
0
        /// <summary>
        /// Initialization of the package; this method is called right after the package is sited, so this is the place
        /// where you can put all the initialization code that rely on services provided by VisualStudio.
        /// </summary>
        /// <param name="cancellationToken">A cancellation token to monitor for initialization cancellation, which can occur when VS is shutting down.</param>
        /// <param name="progress">A provider for progress updates.</param>
        /// <returns>A task representing the async work of package initialization, or an already completed task if there is none. Do not return null from this method.</returns>
        protected override async Task InitializeAsync(CancellationToken cancellationToken, IProgress <ServiceProgressData> progress)
        {
            // When initialized asynchronously, the current thread may be a background thread at this point.
            // Do any initialization that requires the UI thread after switching to the UI thread.
            await this.JoinableTaskFactory.SwitchToMainThreadAsync(cancellationToken);

            await SurroundCommand.InitializeAsync(this);

            await ReverseCommand.InitializeAsync(this);

            await PaddingCommand.InitializeAsync(this);

            await InvertCaseCommand.InitializeAsync(this);

            await DiacriticsCommand.InitializeAsync(this);

            await DoubleCommand.InitializeAsync(this);

            await UppercaseCommand.InitializeAsync(this);

            await XxxxxCommand.InitializeAsync(this);

            await L337Command.InitializeAsync(this);

            await AlternateCaseCommand.InitializeAsync(this);

            await SponsorRequestHelper.CheckIfNeedToShowAsync();
        }
示例#7
0
        public void AddToStringOfLength9_Umlaut()
        {
            var actual = DiacriticsCommand.DiacriticsLogic("abcdefghi", ToggleMode.Apply);

            Assert.AreEqual("a\u0308\u0324b\u0308\u0324c\u0308\u0324d\u0308\u0324e\u0308\u0324f\u0308\u0324g\u0308\u0324h\u0308\u0324i\u0308\u0324", actual);
            Assert.AreEqual("ä̤b̤̈c̤̈d̤̈ë̤f̤̈g̤̈ḧ̤ï̤", actual);
        }
示例#8
0
        public void AddToStringOfLength1_Equals()
        {
            var actual = DiacriticsCommand.DiacriticsLogic("a", ToggleMode.Apply);

            Assert.AreEqual("a\u033F\u0347", actual);
            Assert.AreEqual("a͇̿", actual);
        }
示例#9
0
        public void OrderOfDoubleAndDiacriticsDoesMatterButCanRemoveInEitherOrder()
        {
            var original = "Original String";

            // Apply both changes
            var doubleFirst = DoubleCommand.DoubleLogic(original, ToggleMode.Apply);

            doubleFirst = DiacriticsCommand.DiacriticsLogic(doubleFirst, ToggleMode.Apply);

            var diacriticsFirst = DiacriticsCommand.DiacriticsLogic(original, ToggleMode.Apply);

            diacriticsFirst = DoubleCommand.DoubleLogic(diacriticsFirst, ToggleMode.Apply);

            // Remove doubling first
            var doubleFirstRemoved = DoubleCommand.DoubleLogic(doubleFirst, ToggleMode.Reverse);

            doubleFirstRemoved = DiacriticsCommand.DiacriticsLogic(doubleFirstRemoved, ToggleMode.Reverse);

            var diacriticsFirstRemoved = DoubleCommand.DoubleLogic(diacriticsFirst, ToggleMode.Reverse);

            diacriticsFirstRemoved = DiacriticsCommand.DiacriticsLogic(diacriticsFirstRemoved, ToggleMode.Reverse);

            Assert.AreEqual(original, doubleFirstRemoved);
            Assert.AreEqual(original, diacriticsFirstRemoved);

            // Remove diacritics first
            doubleFirstRemoved = DiacriticsCommand.DiacriticsLogic(doubleFirst, ToggleMode.Reverse);
            doubleFirstRemoved = DoubleCommand.DoubleLogic(doubleFirstRemoved, ToggleMode.Reverse);

            diacriticsFirstRemoved = DiacriticsCommand.DiacriticsLogic(diacriticsFirst, ToggleMode.Reverse);
            diacriticsFirstRemoved = DoubleCommand.DoubleLogic(diacriticsFirstRemoved, ToggleMode.Reverse);

            Assert.AreEqual(original, doubleFirstRemoved);
            Assert.AreEqual(original, diacriticsFirstRemoved);
        }
示例#10
0
        public void AddToStringOfLength10_Equals()
        {
            var actual = DiacriticsCommand.DiacriticsLogic("abcdefghij", ToggleMode.Apply);

            Assert.AreEqual("a\u033F\u0347b\u033F\u0347c\u033F\u0347d\u033F\u0347e\u033F\u0347f\u033F\u0347g\u033F\u0347h\u033F\u0347i\u033F\u0347j\u033F\u0347", actual);
            Assert.AreEqual("a͇̿b͇̿c͇̿d͇̿e͇̿f͇̿g͇̿h͇̿i͇̿j͇̿", actual);
        }
示例#11
0
        public void AddToStringOfLength8_Hook()
        {
            var actual = DiacriticsCommand.DiacriticsLogic("abcdefgh", ToggleMode.Apply);

            Assert.AreEqual("a\u0309\u0321b\u0309\u0321c\u0309\u0321d\u0309\u0321e\u0309\u0321f\u0309\u0321g\u0309\u0321h\u0309\u0321", actual);
            Assert.AreEqual("ả̡b̡̉c̡̉d̡̉ẻ̡f̡̉g̡̉h̡̉", actual);
        }
        public static string Apply(string input, string command)
        {
            switch (command)
            {
            case nameof(DiacriticsCommand):
                return(DiacriticsCommand.DiacriticsLogic(input, ToggleMode.Apply));

            case nameof(DoubleCommand):
                return(DoubleCommand.DoubleLogic(input, ToggleMode.Apply));

            case nameof(InvertCaseCommand):
                return(InvertCaseCommand.InvertCaseLogic(input));

            case nameof(PaddingCommand):
                return(PaddingCommand.PaddingLogic(input, ToggleMode.Apply));

            case nameof(ReverseCommand):
                return(ReverseCommand.ReverseLogic(input));

            case nameof(SurroundCommand):
                return(SurroundCommand.SurroundLogic(input, ToggleMode.Apply));

            default:
                return(input);
            }
        }
示例#13
0
        public void AddToStringOfLength5_Circumflex()
        {
            var actual = DiacriticsCommand.DiacriticsLogic("abcde", ToggleMode.Apply);

            Assert.AreEqual("a\u0302\u032Db\u0302\u032Dc\u0302\u032Dd\u0302\u032De\u0302\u032D", actual);
            Assert.AreEqual("â̭b̭̂ĉ̭ḓ̂ḙ̂", actual);
        }
示例#14
0
        public void AddToStringOfLength7_Acute()
        {
            var actual = DiacriticsCommand.DiacriticsLogic("abcdefg", ToggleMode.Apply);

            Assert.AreEqual("a\u0301\u0317b\u0301\u0317c\u0301\u0317d\u0301\u0317e\u0301\u0317f\u0301\u0317g\u0301\u0317", actual);
            Assert.AreEqual("á̗b̗́ć̗d̗́é̗f̗́ǵ̗", actual);
        }
示例#15
0
        public void AddToStringOfLength4_Ring()
        {
            var actual = DiacriticsCommand.DiacriticsLogic("abcd", ToggleMode.Apply);

            Assert.AreEqual("a\u030A\u0325b\u030A\u0325c\u030A\u0325d\u030A\u0325", actual);
            Assert.AreEqual("ḁ̊b̥̊c̥̊d̥̊", actual);
        }
示例#16
0
        public void RemoveDiacrtiticsWhenAlreadyHasPadding()
        {
            var actual = DiacriticsCommand.DiacriticsLogic(
                "a\u0306\u032E-b\u0306\u032E-c\u0306\u032E-d\u0306\u032E-e\u0306\u032E-f\u0306\u032E",
                ToggleMode.Reverse);

            Assert.AreEqual("a-b-c-d-e-f", actual);
        }
示例#17
0
        public void RemoveDiacriticsWhenAlsoHasBeenDoubled()
        {
            var actual = DiacriticsCommand.DiacriticsLogic(
                "a\u0302\u032Da\u0302\u032Db\u0302\u032Db\u0302\u032Dc\u0302\u032Dc\u0302\u032Dd\u0302\u032Dd\u0302\u032De\u0302\u032De\u0302\u032D",
                ToggleMode.Reverse);

            Assert.AreEqual("aabbccddee", actual);
        }
示例#18
0
        public void CallingApplyMultipleTimesHasNoEffect()
        {
            var origin = "Original String";

            var once = DiacriticsCommand.DiacriticsLogic(origin, ToggleMode.Apply);

            var twice = DiacriticsCommand.DiacriticsLogic(origin, ToggleMode.Apply);

            twice = DiacriticsCommand.DiacriticsLogic(twice, ToggleMode.Apply);

            Assert.AreEqual(once, twice);
        }
示例#19
0
        public void HandleRemovingDiacriticsWhenAddedAreMixedWithOthers_FirstAdditionsInvalid_SoNoAdditionDetectedAndNothingRemoved()
        {
            // Note. The scenario tested here should never happen in reality as it's using the wrong toggle mode for the input string.
            //// a - extra in third addition
            //// b - extra in second addition
            //// c - extra in first position - should have removals
            //// d - 2 extras in first & second position - should have removals
            //// e - no extras - all should be removed
            var testStr = "a\u0306\u032E\u033Eb\u0306\u033E\u032Ec\u033E\u0306\u032Ed\u033E\u033F\u0306\u032Ee\u0306\u032E";

            var actual = DiacriticsCommand.DiacriticsLogic(testStr, ToggleMode.Reverse);

            Assert.AreEqual(testStr, actual);
        }
示例#20
0
        public void HandleRemovingDiacriticsWhenAddedAreMixedWithOthers_FirstAdditionsValid_SoHaveRemovals()
        {
            //// z - no extras
            //// a - extra in third addition
            //// b - extra in second addition
            //// c - extra in first position - should have removals
            //// d - 2 extras in first & second position - should have removals
            //// e - no extras - all should be removed
            var testStr = "z\u0306\u032Ea\u0306\u032E\u033Eb\u0306\u033E\u032Ec\u033E\u0306\u032Ed\u033E\u033F\u0306\u032Ee\u0306\u032E";

            var actual = DiacriticsCommand.DiacriticsLogic(testStr, ToggleMode.Reverse);

            Assert.AreEqual("za\u0306\u032E\u033Eb\u0306\u033E\u032Ec\u033Ed\u033E\u033Fe", actual);
        }
示例#21
0
        public void OrderOfDoubleAndDiacriticsDoesMatter()
        {
            var original = "Original String";

            var doubleFirst = DoubleCommand.DoubleLogic(original, ToggleMode.Apply);

            doubleFirst = DiacriticsCommand.DiacriticsLogic(doubleFirst, ToggleMode.Apply);

            var diacriticsFirst = DiacriticsCommand.DiacriticsLogic(original, ToggleMode.Apply);

            diacriticsFirst = DoubleCommand.DoubleLogic(diacriticsFirst, ToggleMode.Apply);

            // This is because the diacritic used is based on the string length
            Assert.AreNotEqual(doubleFirst, diacriticsFirst);
        }
示例#22
0
        public void HandleRemovingDiacriticsWhenAddedAreMixedWithOthers_FirstAdditionsInvalid()
        {
            // a - extra in third addition
            // b - extra in second addition
            // c - extra in first position - should have removals
            // d - 2 extras in first & second position - should have removals
            // e - no extras - all should be removed
            var actual = DiacriticsCommand.RemoveDiacritics(
                "a\u0306\u032E\u033Eb\u0306\u033E\u032Ec\u033E\u0306\u032Ed\u033E\u033F\u0306\u032Ee\u0306\u032E");

            // The above would fail if calling DiacriticsLogic with ToggleMode.Reverse as the
            // combining characters added to the first letter 'a' don't look right.
            // See next test for variation on this theme.
            Assert.AreEqual(
                "a\u0306\u032E\u033Eb\u0306\u033E\u032Ec\u033Ed\u033E\u033Fe", actual);
        }
示例#23
0
        public void CanAddAndRemoveToggleActionsInDifferentOrder()
        {
            var origin = "Original String";

            var modifiedStep1  = SurroundCommand.SurroundLogic(origin, ToggleMode.Apply);
            var modifiedStep2  = DiacriticsCommand.DiacriticsLogic(modifiedStep1, ToggleMode.Apply);
            var modifiedStep3  = DoubleCommand.DoubleLogic(modifiedStep2, ToggleMode.Apply);
            var modifiedStep4  = ReverseCommand.ReverseLogic(modifiedStep3);
            var modifiedStep5  = PaddingCommand.PaddingLogic(modifiedStep4, ToggleMode.Apply);
            var modifiedStep6  = InvertCaseCommand.InvertCaseLogic(modifiedStep5);
            var modifiedStep7  = DiacriticsCommand.DiacriticsLogic(modifiedStep6, ToggleMode.Reverse);
            var modifiedStep8  = SurroundCommand.SurroundLogic(modifiedStep7, ToggleMode.Reverse);
            var modifiedStep9  = DoubleCommand.DoubleLogic(modifiedStep8, ToggleMode.Reverse);
            var modifiedStep10 = ReverseCommand.ReverseLogic(modifiedStep9);
            var modifiedStep11 = InvertCaseCommand.InvertCaseLogic(modifiedStep10);
            var finalResult    = PaddingCommand.PaddingLogic(modifiedStep11, ToggleMode.Reverse);

            Assert.AreEqual(origin, finalResult);
        }
示例#24
0
        public void Diacritics_RemovesWhereHave()
        {
            var origin = new List <string>
            {
                "h\u0346\u033Aa\u0346\u033As\u0346\u033A",
                "does not have",
                "A\u0309\u0321l\u0309\u0321s\u0309\u0321o\u0309\u0321 h\u0309\u0321a\u0309\u0321s\u0309\u0321",
            };

            var sut = DiacriticsCommand.CreateForTesting();

            var actual = sut.TestActingOnMultipleStrings(origin);

            var expected = new List <string> {
                "has", "does not have", "Also has"
            };

            Assert.That.StringListsAreEqual(expected, actual);
        }
示例#25
0
        public void Diacritics_WithSurround_AddsWhereDoNotHave()
        {
            var origin = new List <string>
            {
                "[! does not have !]",
                "[! h\u0346\u033Aa\u0346\u033As\u0346\u033A !]",
                "[! also does not have !]",
            };

            var sut = DiacriticsCommand.CreateForTesting();

            var actual = sut.TestActingOnMultipleStrings(origin);

            var expected = new List <string>
            {
                "[! d\u030A\u0325o\u030A\u0325e\u030A\u0325s\u030A\u0325 n\u030A\u0325o\u030A\u0325t\u030A\u0325 h\u030A\u0325a\u030A\u0325v\u030A\u0325e\u030A\u0325 !]",
                "[! h\u0346\u033Aa\u0346\u033As\u0346\u033A !]",
                "[! a\u0308\u0324l\u0308\u0324s\u0308\u0324o\u0308\u0324 d\u0308\u0324o\u0308\u0324e\u0308\u0324s\u0308\u0324 n\u0308\u0324o\u0308\u0324t\u0308\u0324 h\u0308\u0324a\u0308\u0324v\u0308\u0324e\u0308\u0324 !]",
            };

            Assert.That.StringListsAreEqual(expected, actual);
        }
示例#26
0
        public void RemoveDiacrtiticsWhenAlreadyHasSurroundsAndPadding()
        {
            var actual = DiacriticsCommand.DiacriticsLogic("[! a\u0302\u032D-b\u0302\u032D-c\u0302\u032D !]", ToggleMode.Reverse);

            Assert.AreEqual("[! a-b-c !]", actual);
        }
示例#27
0
        public void CanHandleWhenSecondCombiningDiacriticIsNotOneUsedHere()
        {
            var actual = DiacriticsCommand.HasAddedDiacritics("1\u033F\u033E");

            Assert.IsFalse(actual);
        }
示例#28
0
        public void RemoveWhenSomeLettersHaveMultipleOtherDiacriticsAdded()
        {
            var actual = DiacriticsCommand.DiacriticsLogic("s͇̿o͇̿m͇̿e͇̿ X a\u0306\u033E", ToggleMode.Reverse);

            Assert.AreEqual("some X a\u0306\u033E", actual);
        }
示例#29
0
        public void CanHandleToggleModeNotSet()
        {
            var actual = DiacriticsCommand.DiacriticsLogic("Something", ToggleMode.NotSet);

            Assert.AreEqual("Something", actual);
        }
示例#30
0
        public void RemoveWhenNotAllLettersHaveDiacticsAdded()
        {
            var actual = DiacriticsCommand.DiacriticsLogic("s͇̿o͇̿m͇̿e͇̿ t͇̿e͇̿x͇̿t͇̿ X m͇̿o͇̿r͇̿e͇̿ t͇̿e͇̿x͇̿t͇̿", ToggleMode.Reverse);

            Assert.AreEqual("some text X more text", actual);
        }