コード例 #1
0
        public void TestCamelCaseSplit()
        {
            const string String1   = "ThisIsOneTestString";
            const string String2   = "ThisOneABCContainsAbreviation";
            const string String3   = "ThisOneContainsASingleCharacterWord";
            const string String4   = "ThisOneEndsWithAbbreviationABC";
            const string String5   = "ThisOneEndsWithASingleCharacterWordZ";
            var          expected1 = new[] { "This", "Is", "One", "Test", "String" };
            var          expected2 = new[] { "This", "One", "ABC", "Contains", "Abreviation" };
            var          expected3 = new[] { "This", "One", "Contains", "A", "Single", "Character", "Word" };
            var          expected4 = new[] { "This", "One", "Ends", "With", "Abbreviation", "ABC" };
            var          expected5 = new[] { "This", "One", "Ends", "With", "A", "Single", "Character", "Word", "Z" };

            var split1 = String1.CamelCaseSplit();

            Assert.AreEqual(expected1.Length, split1.Count);
            for (int i = 0; i < expected1.Length; ++i)
            {
                Assert.AreEqual(expected1[i], split1[i]);
            }
            var split2 = String2.CamelCaseSplit();

            Assert.AreEqual(expected2.Length, split2.Count);
            for (int i = 0; i < expected2.Length; ++i)
            {
                Assert.AreEqual(expected2[i], split2[i]);
            }
            var split3 = String3.CamelCaseSplit();

            Assert.AreEqual(expected3.Length, split3.Count);
            for (int i = 0; i < expected3.Length; ++i)
            {
                Assert.AreEqual(expected3[i], split3[i]);
            }
            var split4 = String4.CamelCaseSplit();

            Assert.AreEqual(expected4.Length, split4.Count);
            for (int i = 0; i < expected4.Length; ++i)
            {
                Assert.AreEqual(expected4[i], split4[i]);
            }
            var split5 = String5.CamelCaseSplit();

            Assert.AreEqual(expected5.Length, split5.Count);
            for (int i = 0; i < expected5.Length; ++i)
            {
                Assert.AreEqual(expected5[i], split5[i]);
            }
        }
        protected override DataTemplate SelectTemplateCore(object item, DependencyObject container)
        {
            //validate
            if (item == null)
            {
                return(DefaultTemplate);
            }

            //get string
            var str = item as string;

            if (item.GetType().IsPrimitive || item.GetType().IsEnum)
            {
                str = item.ToString();
            }

            //select template
            if (str == null)
            {
                return(DefaultTemplate);
            }
            if (String1 != null && String1.Split(',').Contains(str))
            {
                return(Template1);
            }
            if (String2 != null && String2.Split(',').Contains(str))
            {
                return(Template2);
            }
            if (String3 != null && String3.Split(',').Contains(str))
            {
                return(Template3);
            }
            if (String4 != null && String4.Split(',').Contains(str))
            {
                return(Template4);
            }
            if (String5 != null && String5.Split(',').Contains(str))
            {
                return(Template5);
            }
            if (String6 != null && String6.Split(',').Contains(str))
            {
                return(Template6);
            }
            if (String7 != null && String7.Split(',').Contains(str))
            {
                return(Template7);
            }
            if (String8 != null && String8.Split(',').Contains(str))
            {
                return(Template8);
            }
            if (String9 != null && String9.Split(',').Contains(str))
            {
                return(Template9);
            }
            if (String10 != null && String10.Split(',').Contains(str))
            {
                return(Template10);
            }
            return(DefaultTemplate);
        }