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