@@ -12,7 +12,7 @@ use std::borrow::Cow;
12
12
use std:: cell:: { Cell , RefCell } ;
13
13
use std:: net:: { Ipv4Addr , Ipv6Addr } ;
14
14
use std:: path:: { Path , PathBuf } ;
15
- use url:: { form_urlencoded, Host , Url } ;
15
+ use url:: { form_urlencoded, Host , Origin , Url } ;
16
16
17
17
#[ test]
18
18
fn size ( ) {
@@ -517,6 +517,51 @@ fn test_origin_hash() {
517
517
assert_ne ! ( hash( & opaque_origin) , hash( & other_opaque_origin) ) ;
518
518
}
519
519
520
+ #[ test]
521
+ fn test_origin_blob_equality ( ) {
522
+ let origin = & Url :: parse ( "http://example.net/" ) . unwrap ( ) . origin ( ) ;
523
+ let blob_origin = & Url :: parse ( "blob:http://example.net/" ) . unwrap ( ) . origin ( ) ;
524
+
525
+ assert_eq ! ( origin, blob_origin) ;
526
+ }
527
+
528
+ #[ test]
529
+ fn test_origin_opaque ( ) {
530
+ assert ! ( !Origin :: new_opaque( ) . is_tuple( ) ) ;
531
+ assert ! ( !& Url :: parse( "blob:malformed//" ) . unwrap( ) . origin( ) . is_tuple( ) )
532
+ }
533
+
534
+ #[ test]
535
+ fn test_origin_unicode_serialization ( ) {
536
+ let unicode_urls = [
537
+ "http://😅.com" ,
538
+ "ftp://🙂.com"
539
+ ] ;
540
+ for unicode_url in & unicode_urls {
541
+ let origin = Url :: parse ( unicode_url) . unwrap ( ) . origin ( ) ;
542
+ assert_eq ! ( origin. unicode_serialization( ) , * unicode_url) ;
543
+ }
544
+
545
+ let ascii_origins = [
546
+ Url :: parse ( "http://example.net/" ) . unwrap ( ) . origin ( ) ,
547
+ Url :: parse ( "http://example.net:80/" ) . unwrap ( ) . origin ( ) ,
548
+ Url :: parse ( "http://example.net:81/" ) . unwrap ( ) . origin ( ) ,
549
+ Url :: parse ( "http://example.net" ) . unwrap ( ) . origin ( ) ,
550
+ Url :: parse ( "http://example.net/hello" ) . unwrap ( ) . origin ( ) ,
551
+ Url :: parse ( "https://example.net" ) . unwrap ( ) . origin ( ) ,
552
+ Url :: parse ( "ftp://example.net" ) . unwrap ( ) . origin ( ) ,
553
+ Url :: parse ( "file://example.net" ) . unwrap ( ) . origin ( ) ,
554
+ Url :: parse ( "http://user@example.net/" ) . unwrap ( ) . origin ( ) ,
555
+ Url :: parse ( "http://user:pass@example.net/" )
556
+ . unwrap ( )
557
+ . origin ( ) ,
558
+ Url :: parse ( "http://127.0.0.1" ) . unwrap ( ) . origin ( ) ,
559
+ ] ;
560
+ for ascii_origin in & ascii_origins {
561
+ assert_eq ! ( ascii_origin. ascii_serialization( ) , ascii_origin. unicode_serialization( ) ) ;
562
+ }
563
+ }
564
+
520
565
#[ test]
521
566
fn test_windows_unc_path ( ) {
522
567
if !cfg ! ( windows) {
0 commit comments