@@ -1479,3 +1479,35 @@ fn test_can_be_a_base_with_path_segments_mut() {
14791479 . collect ( ) ;
14801480 assert_eq ! ( segments, vec![ "" , "not-a-host" ] ) ;
14811481}
1482+
1483+ #[ test]
1484+ fn test_valid_indices_after_set_path ( ) {
1485+ // Testing everything
1486+ let mut url = Url :: parse ( "moz:/" ) . unwrap ( ) ;
1487+ assert ! ( !url. cannot_be_a_base( ) ) ;
1488+
1489+ url. set_path ( "/.//p" ) ;
1490+ url. set_host ( Some ( "host" ) ) . unwrap ( ) ;
1491+ url. set_query ( Some ( "query" ) ) ;
1492+ url. set_fragment ( Some ( "frag" ) ) ;
1493+ assert_eq ! ( url. as_str( ) , "moz://host//p?query#frag" ) ;
1494+ assert_eq ! ( url. host( ) , Some ( Host :: Domain ( "host" ) ) ) ;
1495+ assert_eq ! ( url. path( ) , "//p" ) ;
1496+ assert_eq ! ( url. query( ) , Some ( "query" ) ) ;
1497+ assert_eq ! ( url. fragment( ) , Some ( "frag" ) ) ;
1498+ url. check_invariants ( ) . unwrap ( ) ;
1499+
1500+ url = Url :: parse ( "moz:/.//" ) . unwrap ( ) ;
1501+ assert ! ( !url. cannot_be_a_base( ) ) ;
1502+
1503+ url. set_path ( "p" ) ;
1504+ url. set_host ( Some ( "host" ) ) . unwrap ( ) ;
1505+ url. set_query ( Some ( "query" ) ) ;
1506+ url. set_fragment ( Some ( "frag" ) ) ;
1507+ assert_eq ! ( url. as_str( ) , "moz://host/p?query#frag" ) ;
1508+ assert_eq ! ( url. host( ) , Some ( Host :: Domain ( "host" ) ) ) ;
1509+ assert_eq ! ( url. path( ) , "/p" ) ;
1510+ assert_eq ! ( url. query( ) , Some ( "query" ) ) ;
1511+ assert_eq ! ( url. fragment( ) , Some ( "frag" ) ) ;
1512+ url. check_invariants ( ) . unwrap ( ) ;
1513+ }
0 commit comments