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)); } }