Exemple #1
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));
                }
            }
        }
Exemple #2
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));
            }
        }