@@ -916,7 +916,6 @@ public async Task GoBackFromRouteWithMultiplePaths()
916
916
await shell . Navigation . PopAsync ( ) ;
917
917
}
918
918
919
-
920
919
[ Test ]
921
920
public async Task GoBackFromRouteWithMultiplePathsHierarchical ( )
922
921
{
@@ -933,6 +932,70 @@ public async Task GoBackFromRouteWithMultiplePathsHierarchical()
933
932
await shell . Navigation . PopAsync ( ) ;
934
933
}
935
934
935
+ [ Test ]
936
+ public async Task HierarchicalNavigation ( )
937
+ {
938
+ Routing . RegisterRoute ( "page1/page2" , typeof ( ShellTestPage ) ) ;
939
+ var shell = new TestShell (
940
+ CreateShellItem ( shellSectionRoute : "page1" )
941
+ ) ;
942
+
943
+ await shell . GoToAsync ( $ "page1/page2?{ nameof ( ShellTestPage . SomeQueryParameter ) } =1") ;
944
+
945
+ Assert . AreEqual ( "1" , ( ( ShellTestPage ) shell . CurrentPage ) . SomeQueryParameter ) ;
946
+ }
947
+
948
+ [ Test ]
949
+ public async Task HierarchicalNavigationMultipleRoutes ( )
950
+ {
951
+ Routing . RegisterRoute ( "page1/page2" , typeof ( ShellTestPage ) ) ;
952
+ Routing . RegisterRoute ( "page1/page2/page3" , typeof ( TestPage1 ) ) ;
953
+ var shell = new TestShell (
954
+ CreateShellItem ( shellSectionRoute : "page1" )
955
+ ) ;
956
+
957
+ await shell . GoToAsync ( $ "page1/page2?{ nameof ( ShellTestPage . SomeQueryParameter ) } =1") ;
958
+
959
+ Assert . AreEqual ( "1" , ( ( ShellTestPage ) shell . CurrentPage ) . SomeQueryParameter ) ;
960
+ await shell . GoToAsync ( $ "page1/page2/page3") ;
961
+
962
+ Assert . IsTrue ( shell . CurrentPage is TestPage1 ) ;
963
+ Assert . IsTrue ( shell . Navigation . NavigationStack [ 1 ] is ShellTestPage ) ;
964
+ }
965
+
966
+ [ Test ]
967
+ public async Task HierarchicalNavigationMultipleRoutesVariation1 ( )
968
+ {
969
+ Routing . RegisterRoute ( "page1/page2" , typeof ( ShellTestPage ) ) ;
970
+ Routing . RegisterRoute ( "page1/page2/page3" , typeof ( TestPage1 ) ) ;
971
+ var shell = new TestShell (
972
+ CreateShellItem ( shellSectionRoute : "page1" )
973
+ ) ;
974
+
975
+ await shell . GoToAsync ( $ "page1/page2/page3") ;
976
+
977
+ Assert . IsTrue ( shell . CurrentPage is TestPage1 ) ;
978
+ Assert . IsTrue ( shell . Navigation . NavigationStack [ 1 ] is ShellTestPage ) ;
979
+ }
980
+
981
+ [ Test ]
982
+ public async Task HierarchicalNavigationWithBackNavigation ( )
983
+ {
984
+ Routing . RegisterRoute ( "page1/page2" , typeof ( ShellTestPage ) ) ;
985
+ Routing . RegisterRoute ( "page1/page2/page3" , typeof ( TestPage1 ) ) ;
986
+ var shell = new TestShell (
987
+ CreateShellItem ( shellSectionRoute : "page1" )
988
+ ) ;
989
+
990
+ await shell . GoToAsync ( $ "page1/page2") ;
991
+ await shell . GoToAsync ( $ "page1/page2/page3") ;
992
+ Assert . IsTrue ( shell . CurrentPage is TestPage1 ) ;
993
+ await shell . GoToAsync ( $ "..") ;
994
+ Assert . IsTrue ( shell . CurrentPage is ShellTestPage ) ;
995
+ await shell . GoToAsync ( $ "..") ;
996
+ Assert . IsTrue ( shell . CurrentPage is ContentPage ) ;
997
+ }
998
+
936
999
public class NavigationMonitoringTab : Tab
937
1000
{
938
1001
public List < string > NavigationsFired = new List < string > ( ) ;
0 commit comments