public void InternalUriMergeTests()
        {
            // Test all the possible combinations of these values (except for BaseUri of #fragment1 as base Uri's cannot be fragments by definition):
            // /Views/Home.xaml
            // /Home.xaml
            // /FooAssembly;component/FooHome.xaml
            // /BarAssembly;component/BarHome.xaml
            // #fragment1
            // abc

            InternalUriMergeTest[] tests = new InternalUriMergeTest[] {
                // BaseUri of /Views/Home.xaml, all permutations of NewUri
                new InternalUriMergeTest() { BaseUri = RelativeUri("/Views/Home.xaml"),
                                             NewUri = RelativeUri("/Home.xaml"),
                                             ResultingUri = RelativeUri("/Home.xaml") },

                new InternalUriMergeTest() { BaseUri = RelativeUri("/Views/Home.xaml"),
                                             NewUri = RelativeUri("/FooAssembly;component/FooHome.xaml"),
                                             ResultingUri = RelativeUri("/FooAssembly;component/FooHome.xaml") },

                new InternalUriMergeTest() { BaseUri = RelativeUri("/Views/Home.xaml"),
                                             NewUri = RelativeUri("/BarAssembly;component/BarHome.xaml"),
                                             ResultingUri = RelativeUri("/BarAssembly;component/BarHome.xaml") },

                new InternalUriMergeTest() { BaseUri = RelativeUri("/Views/Home.xaml"),
                                             NewUri = RelativeUri("#fragment1"),
                                             ResultingUri = RelativeUri("/Views/Home.xaml#fragment1") },

                new InternalUriMergeTest() { BaseUri = RelativeUri("/Views/Home.xaml"),
                                             NewUri = RelativeUri("abc"),
                                             ResultingUri = RelativeUri("abc") },


                // BaseUri of /Home.xaml, all permutations of NewUri
                new InternalUriMergeTest() { BaseUri = RelativeUri("/Home.xaml"),
                                             NewUri = RelativeUri("/Views/Home.xaml"),
                                             ResultingUri = RelativeUri("/Views/Home.xaml") },

                new InternalUriMergeTest() { BaseUri = RelativeUri("/Home.xaml"),
                                             NewUri = RelativeUri("/FooAssembly;component/FooHome.xaml"),
                                             ResultingUri = RelativeUri("/FooAssembly;component/FooHome.xaml") },

                new InternalUriMergeTest() { BaseUri = RelativeUri("/Home.xaml"),
                                             NewUri = RelativeUri("/BarAssembly;component/BarHome.xaml"),
                                             ResultingUri = RelativeUri("/BarAssembly;component/BarHome.xaml") },

                new InternalUriMergeTest() { BaseUri = RelativeUri("/Home.xaml"),
                                             NewUri = RelativeUri("#fragment1"),
                                             ResultingUri = RelativeUri("/Home.xaml#fragment1") },

                new InternalUriMergeTest() { BaseUri = RelativeUri("/Home.xaml"),
                                             NewUri = RelativeUri("abc"),
                                             ResultingUri = RelativeUri("abc") },



                // BaseUri of FooAssembly;component/FooHome.xaml, all permutations of NewUri
                new InternalUriMergeTest() { BaseUri = RelativeUri("/FooAssembly;component/FooHome.xaml"),
                                             NewUri = RelativeUri("/Views/Home.xaml"),
                                             ResultingUri = RelativeUri("/Views/Home.xaml") },

                new InternalUriMergeTest() { BaseUri = RelativeUri("/FooAssembly;component/FooHome.xaml"),
                                             NewUri = RelativeUri("/Home.xaml"),
                                             ResultingUri = RelativeUri("/Home.xaml") },

                new InternalUriMergeTest() { BaseUri = RelativeUri("/FooAssembly;component/FooHome.xaml"),
                                             NewUri = RelativeUri("/BarAssembly;component/BarHome.xaml"),
                                             ResultingUri = RelativeUri("/BarAssembly;component/BarHome.xaml") },

                new InternalUriMergeTest() { BaseUri = RelativeUri("/FooAssembly;component/FooHome.xaml"),
                                             NewUri = RelativeUri("#fragment1"),
                                             ResultingUri = RelativeUri("/FooAssembly;component/FooHome.xaml#fragment1") },

                new InternalUriMergeTest() { BaseUri = RelativeUri("/FooAssembly;component/FooHome.xaml"),
                                             NewUri = RelativeUri("abc"),
                                             ResultingUri = RelativeUri("abc") },


                // BaseUri of BarAssembly;component/BarHome.xaml, all permutations of NewUri
                new InternalUriMergeTest() { BaseUri = RelativeUri("/BarAssembly;component/BarHome.xaml"),
                                             NewUri = RelativeUri("/Views/Home.xaml"),
                                             ResultingUri = RelativeUri("/Views/Home.xaml") },

                new InternalUriMergeTest() { BaseUri = RelativeUri("/BarAssembly;component/BarHome.xaml"),
                                             NewUri = RelativeUri("/Home.xaml"),
                                             ResultingUri = RelativeUri("/Home.xaml") },

                new InternalUriMergeTest() { BaseUri = RelativeUri("/BarAssembly;component/BarHome.xaml"),
                                             NewUri = RelativeUri("/FooAssembly;component/FooHome.xaml"),
                                             ResultingUri = RelativeUri("/FooAssembly;component/FooHome.xaml") },

                new InternalUriMergeTest() { BaseUri = RelativeUri("/BarAssembly;component/BarHome.xaml"),
                                             NewUri = RelativeUri("#fragment1"),
                                             ResultingUri = RelativeUri("/BarAssembly;component/BarHome.xaml#fragment1") },

                new InternalUriMergeTest() { BaseUri = RelativeUri("/BarAssembly;component/BarHome.xaml"),
                                             NewUri = RelativeUri("abc"),
                                             ResultingUri = RelativeUri("abc") },


                // BaseUri of abc, all permutations of NewUri
                new InternalUriMergeTest() { BaseUri = RelativeUri("abc"),
                                             NewUri = RelativeUri("/Views/Home.xaml"),
                                             ResultingUri = RelativeUri("/Views/Home.xaml") },

                new InternalUriMergeTest() { BaseUri = RelativeUri("abc"),
                                             NewUri = RelativeUri("/Home.xaml"),
                                             ResultingUri = RelativeUri("/Home.xaml") },

                new InternalUriMergeTest() { BaseUri = RelativeUri("abc"),
                                             NewUri = RelativeUri("/FooAssembly;component/FooHome.xaml"),
                                             ResultingUri = RelativeUri("/FooAssembly;component/FooHome.xaml") },

                new InternalUriMergeTest() { BaseUri = RelativeUri("abc"),
                                             NewUri = RelativeUri("/BarAssembly;component/BarHome.xaml"),
                                             ResultingUri = RelativeUri("/BarAssembly;component/BarHome.xaml") },

                new InternalUriMergeTest() { BaseUri = RelativeUri("abc"),
                                             NewUri = RelativeUri("#fragment1"),
                                             ResultingUri = RelativeUri("abc#fragment1") }
            };


            foreach (var test in tests)
            {
                Uri mergedUri = UriParsingHelper.InternalUriMerge(test.BaseUri, test.NewUri);
                Assert.AreEqual(test.ResultingUri, mergedUri,
                                string.Format("When merging\n{0}\nand\n{1}\nThe result should have been\n{2}\n, but it was\n{3}",
                                              test.BaseUri,
                                              test.NewUri,
                                              test.ResultingUri,
                                              mergedUri));
            }
        }
Beispiel #2
0
        public void InternalUriMergeTests()
        {
            // Test all the possible combinations of these values (except for BaseUri of #fragment1 as base Uri's cannot be fragments by definition):
            // /Views/Home.xaml
            // /Home.xaml
            // /FooAssembly;component/FooHome.xaml
            // /BarAssembly;component/BarHome.xaml
            // #fragment1
            // abc

            InternalUriMergeTest[] tests = new InternalUriMergeTest[] {
                // BaseUri of /Views/Home.xaml, all permutations of NewUri
                new InternalUriMergeTest()
                {
                    BaseUri      = RelativeUri("/Views/Home.xaml"),
                    NewUri       = RelativeUri("/Home.xaml"),
                    ResultingUri = RelativeUri("/Home.xaml")
                },

                new InternalUriMergeTest()
                {
                    BaseUri      = RelativeUri("/Views/Home.xaml"),
                    NewUri       = RelativeUri("/FooAssembly;component/FooHome.xaml"),
                    ResultingUri = RelativeUri("/FooAssembly;component/FooHome.xaml")
                },

                new InternalUriMergeTest()
                {
                    BaseUri      = RelativeUri("/Views/Home.xaml"),
                    NewUri       = RelativeUri("/BarAssembly;component/BarHome.xaml"),
                    ResultingUri = RelativeUri("/BarAssembly;component/BarHome.xaml")
                },

                new InternalUriMergeTest()
                {
                    BaseUri      = RelativeUri("/Views/Home.xaml"),
                    NewUri       = RelativeUri("#fragment1"),
                    ResultingUri = RelativeUri("/Views/Home.xaml#fragment1")
                },

                new InternalUriMergeTest()
                {
                    BaseUri      = RelativeUri("/Views/Home.xaml"),
                    NewUri       = RelativeUri("abc"),
                    ResultingUri = RelativeUri("abc")
                },


                // BaseUri of /Home.xaml, all permutations of NewUri
                new InternalUriMergeTest()
                {
                    BaseUri      = RelativeUri("/Home.xaml"),
                    NewUri       = RelativeUri("/Views/Home.xaml"),
                    ResultingUri = RelativeUri("/Views/Home.xaml")
                },

                new InternalUriMergeTest()
                {
                    BaseUri      = RelativeUri("/Home.xaml"),
                    NewUri       = RelativeUri("/FooAssembly;component/FooHome.xaml"),
                    ResultingUri = RelativeUri("/FooAssembly;component/FooHome.xaml")
                },

                new InternalUriMergeTest()
                {
                    BaseUri      = RelativeUri("/Home.xaml"),
                    NewUri       = RelativeUri("/BarAssembly;component/BarHome.xaml"),
                    ResultingUri = RelativeUri("/BarAssembly;component/BarHome.xaml")
                },

                new InternalUriMergeTest()
                {
                    BaseUri      = RelativeUri("/Home.xaml"),
                    NewUri       = RelativeUri("#fragment1"),
                    ResultingUri = RelativeUri("/Home.xaml#fragment1")
                },

                new InternalUriMergeTest()
                {
                    BaseUri      = RelativeUri("/Home.xaml"),
                    NewUri       = RelativeUri("abc"),
                    ResultingUri = RelativeUri("abc")
                },



                // BaseUri of FooAssembly;component/FooHome.xaml, all permutations of NewUri
                new InternalUriMergeTest()
                {
                    BaseUri      = RelativeUri("/FooAssembly;component/FooHome.xaml"),
                    NewUri       = RelativeUri("/Views/Home.xaml"),
                    ResultingUri = RelativeUri("/Views/Home.xaml")
                },

                new InternalUriMergeTest()
                {
                    BaseUri      = RelativeUri("/FooAssembly;component/FooHome.xaml"),
                    NewUri       = RelativeUri("/Home.xaml"),
                    ResultingUri = RelativeUri("/Home.xaml")
                },

                new InternalUriMergeTest()
                {
                    BaseUri      = RelativeUri("/FooAssembly;component/FooHome.xaml"),
                    NewUri       = RelativeUri("/BarAssembly;component/BarHome.xaml"),
                    ResultingUri = RelativeUri("/BarAssembly;component/BarHome.xaml")
                },

                new InternalUriMergeTest()
                {
                    BaseUri      = RelativeUri("/FooAssembly;component/FooHome.xaml"),
                    NewUri       = RelativeUri("#fragment1"),
                    ResultingUri = RelativeUri("/FooAssembly;component/FooHome.xaml#fragment1")
                },

                new InternalUriMergeTest()
                {
                    BaseUri      = RelativeUri("/FooAssembly;component/FooHome.xaml"),
                    NewUri       = RelativeUri("abc"),
                    ResultingUri = RelativeUri("abc")
                },


                // BaseUri of BarAssembly;component/BarHome.xaml, all permutations of NewUri
                new InternalUriMergeTest()
                {
                    BaseUri      = RelativeUri("/BarAssembly;component/BarHome.xaml"),
                    NewUri       = RelativeUri("/Views/Home.xaml"),
                    ResultingUri = RelativeUri("/Views/Home.xaml")
                },

                new InternalUriMergeTest()
                {
                    BaseUri      = RelativeUri("/BarAssembly;component/BarHome.xaml"),
                    NewUri       = RelativeUri("/Home.xaml"),
                    ResultingUri = RelativeUri("/Home.xaml")
                },

                new InternalUriMergeTest()
                {
                    BaseUri      = RelativeUri("/BarAssembly;component/BarHome.xaml"),
                    NewUri       = RelativeUri("/FooAssembly;component/FooHome.xaml"),
                    ResultingUri = RelativeUri("/FooAssembly;component/FooHome.xaml")
                },

                new InternalUriMergeTest()
                {
                    BaseUri      = RelativeUri("/BarAssembly;component/BarHome.xaml"),
                    NewUri       = RelativeUri("#fragment1"),
                    ResultingUri = RelativeUri("/BarAssembly;component/BarHome.xaml#fragment1")
                },

                new InternalUriMergeTest()
                {
                    BaseUri      = RelativeUri("/BarAssembly;component/BarHome.xaml"),
                    NewUri       = RelativeUri("abc"),
                    ResultingUri = RelativeUri("abc")
                },


                // BaseUri of abc, all permutations of NewUri
                new InternalUriMergeTest()
                {
                    BaseUri      = RelativeUri("abc"),
                    NewUri       = RelativeUri("/Views/Home.xaml"),
                    ResultingUri = RelativeUri("/Views/Home.xaml")
                },

                new InternalUriMergeTest()
                {
                    BaseUri      = RelativeUri("abc"),
                    NewUri       = RelativeUri("/Home.xaml"),
                    ResultingUri = RelativeUri("/Home.xaml")
                },

                new InternalUriMergeTest()
                {
                    BaseUri      = RelativeUri("abc"),
                    NewUri       = RelativeUri("/FooAssembly;component/FooHome.xaml"),
                    ResultingUri = RelativeUri("/FooAssembly;component/FooHome.xaml")
                },

                new InternalUriMergeTest()
                {
                    BaseUri      = RelativeUri("abc"),
                    NewUri       = RelativeUri("/BarAssembly;component/BarHome.xaml"),
                    ResultingUri = RelativeUri("/BarAssembly;component/BarHome.xaml")
                },

                new InternalUriMergeTest()
                {
                    BaseUri      = RelativeUri("abc"),
                    NewUri       = RelativeUri("#fragment1"),
                    ResultingUri = RelativeUri("abc#fragment1")
                }
            };


            foreach (var test in tests)
            {
                Uri mergedUri = UriParsingHelper.InternalUriMerge(test.BaseUri, test.NewUri);
                Assert.AreEqual(test.ResultingUri, mergedUri,
                                string.Format("When merging\n{0}\nand\n{1}\nThe result should have been\n{2}\n, but it was\n{3}",
                                              test.BaseUri,
                                              test.NewUri,
                                              test.ResultingUri,
                                              mergedUri));
            }
        }