コード例 #1
0
        /** ****************************************************************************************
         * Interprets given \p src as a verbosity.
         * A case insensitive comparison of only the first (!) character of the start of the string
         * is performed (against 'v', 'i', 'w' and 'e').
         * If no match is found, \e %Verbosity::Off is returned.
         * @param src The string to 'parse'.
         * @returns The verbosity read.
         ******************************************************************************************/
        public static Verbosity ReadVerbosity(Substring src)
        {
            int idx = src.IndexOfAny(CString.DefaultWhitespaces, Inclusion.Exclude);

            if (idx >= 0)
            {
                char c = Char.ToLower(src.CharAt(idx));
                if (c == 'v')
                {
                    return(Verbosity.Verbose);
                }
                if (c == 'i')
                {
                    return(Verbosity.Info);
                }
                if (c == 'w')
                {
                    return(Verbosity.Warning);
                }
                if (c == 'e')
                {
                    return(Verbosity.Error);
                }
            }
            return(Verbosity.Off);
        }
コード例 #2
0
        void tIndexOfAny(bool forward, String haystack, String needles, int startPos, Inclusion inclusion, int expectedResult)
        {
            char[] needlesArr = needles.ToCharArray();

            haystackAString._()._(haystack);
            haystackSubsPlain.Set(haystack);
            haystackSubstring.Set("01" + haystack + haystack + "234", 2 + haystack.Length, haystack.Length);


            if (startPos == DEF)
            {
                if (forward)
                {
                    UT_EQ(expectedResult, haystackAString.IndexOfAny(needlesArr, inclusion));
                    UT_EQ(expectedResult, haystackSubsPlain.IndexOfAny(needlesArr, inclusion));
                    UT_EQ(expectedResult, haystackSubstring.IndexOfAny(needlesArr, inclusion));
                }
                else
                {
                    UT_EQ(expectedResult, haystackAString.LastIndexOfAny(needlesArr, inclusion));
                    UT_EQ(expectedResult, haystackSubsPlain.LastIndexOfAny(needlesArr, inclusion));
                    UT_EQ(expectedResult, haystackSubstring.LastIndexOfAny(needlesArr, inclusion));
                }
            }
            else
            {
                if (forward)
                {
                    UT_EQ(expectedResult, haystackAString.IndexOfAny(needlesArr, inclusion, startPos));
                    UT_EQ(expectedResult, haystackSubsPlain.IndexOfAny(needlesArr, inclusion, startPos));
                    UT_EQ(expectedResult, haystackSubstring.IndexOfAny(needlesArr, inclusion, startPos));
                }
                else
                {
                    UT_EQ(expectedResult, haystackAString.LastIndexOfAny(needlesArr, inclusion, startPos));
                    UT_EQ(expectedResult, haystackSubsPlain.LastIndexOfAny(needlesArr, inclusion, startPos));
                    UT_EQ(expectedResult, haystackSubstring.LastIndexOfAny(needlesArr, inclusion, startPos));
                }
            }
        }
コード例 #3
0
        /** ****************************************************************************************
         * Interprets given \p src as a value of enum type
         * \ref cs::aworx::lib::enums::Inclusion "enums.Inclusion".
         * If the case insensitive comparison of the first non-whitespace characters of the string
         * with values "i", "y", "t", "1"
         * matches, \b %Inclusion.Include is returned.
         * Otherwise, including the case that \p src is 'nulled', \b %Inclusion.Exclude is returned.
         *
         * @param src The string to 'parse'.
         *
         * @returns The \b %Inclusion value read.
         ******************************************************************************************/
        public static Inclusion ReadInclusion(Substring src)
        {
            int idx = src.IndexOfAny(CString.DefaultWhitespaces, Inclusion.Exclude);

            if (idx >= 0)
            {
                int c = Char.ToLower(src.CharAt(idx));
                foreach (char v in trueValuesInclusion)
                {
                    if (c == v)
                    {
                        return(Inclusion.Include);
                    }
                }
            }
            return(Inclusion.Exclude);
        }
コード例 #4
0
        /** ****************************************************************************************
         * Interprets given \p src as a value of enum type
         * \ref aworx.lib::enums::Case "enums.Case".
         * If the case insensitive comparison of the first non-whitespace characters of the string
         * with values "s", "y", "t", "1"
         * matches, \b %Case.Sensitive is returned.
         * Otherwise, including the case that \p src is 'nulled', \b %Case.Ignore is returned.
         *
         * @param src The string to 'parse'.
         *
         * @returns The \b %Case value read.
         ******************************************************************************************/
        public static Case      ReadCase(Substring src)
        {
            int idx = src.IndexOfAny(CString.DefaultWhitespaces, Inclusion.Exclude);

            if (idx >= 0)
            {
                int c = Char.ToLower(src.CharAt(idx));
                foreach (char v in trueValuesCase)
                {
                    if (c == v)
                    {
                        return(Case.Sensitive);
                    }
                }
            }
            return(Case.Ignore);
        }
コード例 #5
0
        /** ****************************************************************************************
         * Interprets given \p src as a boolean value.
         * \ref cs::aworx::lib::enums::Inclusion "enums.Inclusion".
         * If the case insensitive comparison of the first non-whitespace characters of the string with
         * with values "t", "1", "y", "on", "ok"
         * matches, \c true is returned.
         * Otherwise, including the case that \p src is 'nulled', \c false is returned.
         *
         * @param src The string to 'parse'.
         *
         * @returns The \b %Case value read.
         ******************************************************************************************/
        public static bool      ReadBoolean(Substring src)
        {
            int idx = src.IndexOfAny(CString.DefaultWhitespaces, Inclusion.Exclude);

            if (idx >= 0)
            {
                char c = Char.ToLower(src.CharAt(idx));
                foreach (char v in trueValuesBoolean)
                {
                    if (c == v)
                    {
                        return(true);
                    }
                }

                char c2 = Char.ToLower(src.CharAt(idx + 1));
                if (c == 'o' && (c2 == 'n' || c2 == 'k'))
                {
                    return(true);
                }
            }
            return(false);
        }
コード例 #6
0
        public void IndexOf()
        {
            Substring subs;

            // indexOf()
            {
                subs = new Substring("ABCD");
                UT_EQ(-1, subs.IndexOf('X'));
                UT_EQ(0, subs.IndexOf('A'));
                UT_EQ(1, subs.IndexOf('B'));
                UT_EQ(2, subs.IndexOf('C'));
                UT_EQ(3, subs.IndexOf('D'));
            }


            // search characters
            subs.Set("abc@" + "abcd abcd" + "abc@de", 4, 9);
            {
                UT_EQ(-1, subs.IndexOf('@', -5));
                UT_EQ(-1, subs.IndexOf('@'));
                UT_EQ(-1, subs.IndexOf('@', 5));
                UT_EQ(-1, subs.IndexOf('@', 150));

                UT_EQ(0, subs.IndexOf('a'));
                UT_EQ(1, subs.IndexOf('b'));
                UT_EQ(2, subs.IndexOf('c'));

                UT_EQ(0, subs.IndexOf('a', 0));
                UT_EQ(1, subs.IndexOf('b', 0));
                UT_EQ(2, subs.IndexOf('c', 0));

                UT_EQ(5, subs.IndexOf('a', 1));
                UT_EQ(1, subs.IndexOf('b', 1));
                UT_EQ(2, subs.IndexOf('c', 1));

                UT_EQ(5, subs.IndexOf('a', 2));
                UT_EQ(6, subs.IndexOf('b', 2));
                UT_EQ(2, subs.IndexOf('c', 2));

                UT_EQ(5, subs.IndexOf('a', 3));
                UT_EQ(6, subs.IndexOf('b', 3));
                UT_EQ(7, subs.IndexOf('c', 3));

                UT_EQ(8, subs.IndexOf('d', 7));
                UT_EQ(8, subs.IndexOf('d', 8));
                UT_EQ(-1, subs.IndexOf('d', 9));
            }

            // search null, empty string
            subs.Set("abc@" + "abcd abcd" + "abc@de", 4, 9);
            {
                UT_EQ(0, subs.IndexOf((AString)null));
                UT_EQ(5, subs.IndexOf((AString)null, 5));
                UT_EQ(-1, subs.IndexOf((AString)null, 50));

                UT_EQ(0, subs.IndexOf((AString)null, -5));

                UT_EQ(0, subs.IndexOf((String)null));
                UT_EQ(5, subs.IndexOf((String)null, 5));
                UT_EQ(-1, subs.IndexOf((String)null, 50));
                UT_EQ(0, subs.IndexOf((String)null, -5));

                UT_EQ(0, subs.IndexOf("", -5));
                UT_EQ(0, subs.IndexOf("", 0));
                UT_EQ(4, subs.IndexOf("", 4));
                UT_EQ(-1, subs.IndexOf("", 100));
            }

            // search
            subs.Set("abc@" + "abcd abcd" + "abc@de", 4, 9);
            {
                UT_EQ(0, subs.IndexOf("abcd"));
                UT_EQ(1, subs.IndexOf("b"));
                UT_EQ(4, subs.IndexOf(" abcd"));
                UT_EQ(5, subs.IndexOf("abcd", 1));
                UT_EQ(0, subs.IndexOf("abcd", -1));
                UT_EQ(-1, subs.IndexOf("xyz", -10));
            }

            // ignore case
            String t = "Hallo A-Worx util";

            subs.Set("abc@" + t + "abc@de", 4, t.Length);
            {
                UT_EQ(6, subs.IndexOf("a-worx", 0, Case.Ignore));
                UT_EQ(6, subs.IndexOf("a-worx", 1, Case.Ignore));
                UT_EQ(6, subs.IndexOf("a-worx", -10, Case.Ignore));
                UT_EQ(6, subs.IndexOf("a-worx", 6, Case.Ignore));
                UT_EQ(-1, subs.IndexOf("a-worx", 7, Case.Ignore));
                UT_EQ(-1, subs.IndexOf("a-worx", 100, Case.Ignore));
                UT_EQ(0, subs.IndexOf("hal", 0, Case.Ignore));
                UT_EQ(-1, subs.IndexOf("hal", 1, Case.Ignore));
                UT_EQ(13, subs.IndexOf("util", 1, Case.Ignore));
                UT_EQ(13, subs.IndexOf("UTIL", 5, Case.Ignore));
                UT_EQ(13, subs.IndexOf("UTIL", 13, Case.Ignore));
                UT_EQ(-1, subs.IndexOf("UTIL", 14, Case.Ignore));
            }
            // ------------------ search one of several characters ------------------
            subs.Set("abc@" + "abcd abcde" + "abc@de", 4, 10);
            {
                // search one of
                int l = subs.Length();
                UT_EQ(4, subs.IndexOfAny(CString.DefaultWhitespaces, Inclusion.Include));
                UT_EQ(-1, subs.IndexOfAny("x".ToCharArray(), Inclusion.Include));
                UT_EQ(-1, subs.IndexOfAny("xy".ToCharArray(), Inclusion.Include));
                UT_EQ(-1, subs.IndexOfAny("xyz".ToCharArray(), Inclusion.Include));
                UT_EQ(3, subs.IndexOfAny("xyd".ToCharArray(), Inclusion.Include));
                UT_EQ(3, subs.IndexOfAny("d".ToCharArray(), Inclusion.Include));
                UT_EQ(3, subs.IndexOfAny("xyd".ToCharArray(), Inclusion.Include, -2));
                UT_EQ(8, subs.IndexOfAny("xyd".ToCharArray(), Inclusion.Include, 4));
                UT_EQ(-1, subs.IndexOfAny("xyd".ToCharArray(), Inclusion.Include, 20));

                UT_EQ(-1, subs.LastIndexOfAny("".ToCharArray(), Inclusion.Include));
                UT_EQ(-1, subs.LastIndexOfAny("x".ToCharArray(), Inclusion.Include));
                UT_EQ(-1, subs.LastIndexOfAny("xy".ToCharArray(), Inclusion.Include));
                UT_EQ(-1, subs.LastIndexOfAny("xyz".ToCharArray(), Inclusion.Include));
                UT_EQ(8, subs.LastIndexOfAny("xyd".ToCharArray(), Inclusion.Include));
                UT_EQ(-1, subs.LastIndexOfAny("xyd".ToCharArray(), Inclusion.Include, -2));
                UT_EQ(-1, subs.LastIndexOfAny("xyd".ToCharArray(), Inclusion.Include, 2));
                UT_EQ(3, subs.LastIndexOfAny("xyd".ToCharArray(), Inclusion.Include, 4));
                UT_EQ(0, subs.LastIndexOfAny("a".ToCharArray(), Inclusion.Include, 4));
                UT_EQ(1, subs.LastIndexOfAny("b".ToCharArray(), Inclusion.Include, 4));
                UT_EQ(1, subs.LastIndexOfAny("ba".ToCharArray(), Inclusion.Include, 4));
                UT_EQ(0, subs.LastIndexOfAny("xa".ToCharArray(), Inclusion.Include, 4));
                UT_EQ(8, subs.LastIndexOfAny("xyd".ToCharArray(), Inclusion.Include, 20));
                UT_EQ(8, subs.LastIndexOfAny("d".ToCharArray(), Inclusion.Include, 20));
                UT_EQ(9, subs.LastIndexOfAny("e".ToCharArray(), Inclusion.Include, 20));

                // search NOT one of
                UT_EQ(0, subs.IndexOfAny("".ToCharArray(), Inclusion.Exclude));
                UT_EQ(0, subs.IndexOfAny("x".ToCharArray(), Inclusion.Exclude));
                UT_EQ(0, subs.IndexOfAny("xy".ToCharArray(), Inclusion.Exclude));
                UT_EQ(0, subs.IndexOfAny("xyz".ToCharArray(), Inclusion.Exclude));
                UT_EQ(1, subs.IndexOfAny("a".ToCharArray(), Inclusion.Exclude));
                UT_EQ(2, subs.IndexOfAny("ba".ToCharArray(), Inclusion.Exclude));
                UT_EQ(3, subs.IndexOfAny("abc".ToCharArray(), Inclusion.Exclude));
                UT_EQ(3, subs.IndexOfAny("acb".ToCharArray(), Inclusion.Exclude));
                UT_EQ(3, subs.IndexOfAny("cba".ToCharArray(), Inclusion.Exclude));
                UT_EQ(3, subs.IndexOfAny("xcba".ToCharArray(), Inclusion.Exclude));

                UT_EQ(l - 1, subs.LastIndexOfAny("".ToCharArray(), Inclusion.Exclude));
                UT_EQ(l - 1, subs.LastIndexOfAny("x".ToCharArray(), Inclusion.Exclude));
                UT_EQ(l - 1, subs.LastIndexOfAny("xy".ToCharArray(), Inclusion.Exclude));
                UT_EQ(l - 2, subs.LastIndexOfAny("e".ToCharArray(), Inclusion.Exclude));
                UT_EQ(l - 3, subs.LastIndexOfAny("de".ToCharArray(), Inclusion.Exclude));
                UT_EQ(l - 4, subs.LastIndexOfAny("cde".ToCharArray(), Inclusion.Exclude));
                UT_EQ(l - 4, subs.LastIndexOfAny("ced".ToCharArray(), Inclusion.Exclude));
                UT_EQ(l - 4, subs.LastIndexOfAny("ecd".ToCharArray(), Inclusion.Exclude));
                UT_EQ(5, subs.LastIndexOfAny("ecd".ToCharArray(), Inclusion.Exclude, 5));
                UT_EQ(4, subs.LastIndexOfAny("ecd".ToCharArray(), Inclusion.Exclude, 4));
                UT_EQ(1, subs.LastIndexOfAny("acd".ToCharArray(), Inclusion.Exclude, 3));
                UT_EQ(-1, subs.LastIndexOfAny("abc".ToCharArray(), Inclusion.Exclude, 2));
                UT_EQ(3, subs.LastIndexOfAny("xay".ToCharArray(), Inclusion.Exclude, 3));
                UT_EQ(2, subs.LastIndexOfAny("d".ToCharArray(), Inclusion.Exclude, 3));
                UT_EQ(-1, subs.LastIndexOfAny("a".ToCharArray(), Inclusion.Exclude, 0));
            }
        }