@@ -1479,3 +1479,35 @@ fn test_can_be_a_base_with_path_segments_mut() {
1479
1479
. collect ( ) ;
1480
1480
assert_eq ! ( segments, vec![ "" , "not-a-host" ] ) ;
1481
1481
}
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