public void TextNavigator_ReadUntil_4()
        {
            char[]        stop      = { ']', '>' };
            TextNavigator navigator = new TextNavigator("ABC>]DEF");

            Assert.AreEqual("ABC", navigator.ReadUntil(stop));
            navigator.ReadChar();
            Assert.AreEqual(string.Empty, navigator.ReadUntil(stop));
            navigator.ReadChar();
            Assert.AreEqual("DEF", navigator.ReadUntil(stop));
            navigator.ReadChar();
            Assert.IsNull(navigator.ReadUntil(stop));
        }
        public void TextNavigator_ReadUntil_3()
        {
            TextNavigator navigator = new TextNavigator("12345<.>");
            string        actual    = navigator.ReadUntil("<.>");

            Assert.AreEqual("12345", actual);
            Assert.AreEqual("<.>", navigator.PeekString(3));
            Assert.AreEqual("<.>", navigator.GetRemainingText());

            navigator = new TextNavigator("12345");
            actual    = navigator.ReadUntil("<.>");
            Assert.IsNull(actual);

            navigator = new TextNavigator("12345<");
            actual    = navigator.ReadUntil("<.>");
            Assert.IsNull(actual);

            navigator = new TextNavigator("12345<.");
            actual    = navigator.ReadUntil("<.>");
            Assert.IsNull(actual);

            navigator = new TextNavigator("12345<.6>");
            actual    = navigator.ReadUntil("<.>");
            Assert.IsNull(actual);

            navigator = new TextNavigator("12345<.>67890");
            actual    = navigator.ReadUntil("<.>");
            Assert.AreEqual("12345", actual);
            Assert.AreEqual("<.>", navigator.PeekString(3));
            Assert.AreEqual("<.>67890", navigator.GetRemainingText());

            navigator = new TextNavigator(string.Empty);
            Assert.IsNull(navigator.ReadUntil("<.>"));
        }
        public void TextNavigator_ReadUntil_1()
        {
            const string  text      = "'ABC'DEF";
            TextNavigator navigator = new TextNavigator(text);
            char          open      = navigator.ReadChar();
            string        actual    = navigator.ReadUntil(open);

            Assert.AreEqual("ABC", actual);

            navigator = new TextNavigator(string.Empty);
            Assert.IsNull(navigator.ReadUntil(open));
        }
Example #4
0
        public static MenuSpecification Parse
        (
            [CanBeNull] string text
        )
        {
            MenuSpecification result = new MenuSpecification
            {
                Path = IrbisPath.MasterFile
            };

            if (!ReferenceEquals(text, null) && text.Length != 0)
            {
                TextNavigator navigator = new TextNavigator(text);
                result.FileName = navigator.ReadUntil('\\');
                if (navigator.PeekChar() == '\\')
                {
                    navigator.ReadChar();
                }
                if (!navigator.IsEOF)
                {
                    string db = navigator.ReadUntil('\\');
                    if (navigator.PeekChar() == '\\')
                    {
                        navigator.ReadChar();
                    }

                    result.Database = db;

                    if (!navigator.IsEOF)
                    {
                        string sortText = navigator.GetRemainingText();
                        NumericUtility.TryParseInt32(sortText, out int sortMode);
                        result.SortMode = sortMode;
                    }
                }
            }

            return(result);
        }
        public void TextNavigator_ReadUntil_2()
        {
            char[] openChars  = { '(' };
            char[] closeChars = { ')' };
            char[] stopChars  = { ')' };
            char[] stopChars2 = { ']' };

            TextNavigator navigator = new TextNavigator("12345)");
            string        actual    = navigator.ReadUntil(openChars, closeChars, stopChars);

            Assert.AreEqual("12345", actual);

            navigator = new TextNavigator("12(3)(4)5)");
            actual    = navigator.ReadUntil(openChars, closeChars, stopChars);
            Assert.AreEqual("12(3)(4)5", actual);

            navigator = new TextNavigator("12(3(4))5)");
            actual    = navigator.ReadUntil(openChars, closeChars, stopChars);
            Assert.AreEqual("12(3(4))5", actual);

            navigator = new TextNavigator("12(3(4))5");
            actual    = navigator.ReadUntil(openChars, closeChars, stopChars);
            Assert.IsNull(actual);

            navigator = new TextNavigator("12(3(4)5)");
            actual    = navigator.ReadUntil(openChars, closeChars, stopChars);
            Assert.IsNull(actual);

            navigator = new TextNavigator("1234]5)");
            actual    = navigator.ReadUntil(openChars, closeChars, stopChars2);
            Assert.AreEqual("1234", actual);

            navigator = new TextNavigator("123(4])]5)");
            actual    = navigator.ReadUntil(openChars, closeChars, stopChars2);
            Assert.AreEqual("123(4])", actual);

            navigator = new TextNavigator(string.Empty);
            Assert.IsNull(navigator.ReadUntil(openChars, closeChars, stopChars));
        }