@@ -533,6 +533,13 @@ public static function withSldWorksProvider(): iterable
533533 'expectedSld ' => 'www ' ,
534534 'expectedHost ' => 'www.com ' ,
535535 ],
536+ [
537+ 'host ' => 'example.com ' ,
538+ 'publicSuffix ' => 'com ' ,
539+ 'sld ' => 'www. ' ,
540+ 'expectedSld ' => 'www ' ,
541+ 'expectedHost ' => 'www.com ' ,
542+ ],
536543 [
537544 'host ' => 'www.example.com ' ,
538545 'publicSuffix ' => 'com ' ,
@@ -547,6 +554,13 @@ public static function withSldWorksProvider(): iterable
547554 'expectedSld ' => 'hamburger ' ,
548555 'expectedHost ' => 'www.hamburger.co.uk ' ,
549556 ],
557+ [
558+ 'host ' => 'www.bbc.co.uk ' ,
559+ 'publicSuffix ' => 'co.uk ' ,
560+ 'sld ' => 'hamburger. ' ,
561+ 'expectedSld ' => 'hamburger ' ,
562+ 'expectedHost ' => 'www.hamburger.co.uk ' ,
563+ ],
550564 ];
551565 }
552566
@@ -557,6 +571,20 @@ public function testItCanNotAppendAnEmptySLD(): void
557571 ResolvedDomain::fromICANN ('private.ulb.ac.be ' , 2 )->withSecondLevelDomain (null );
558572 }
559573
574+ public function testItCanNotAppendAnEmptyRootLabelSLD (): void
575+ {
576+ $ this ->expectException (SyntaxError::class);
577+
578+ ResolvedDomain::fromICANN ('private.ulb.ac.be ' , 2 )->withSecondLevelDomain ('. ' );
579+ }
580+
581+ public function testItCanNotAppendAnInvalidRootLabelSLD (): void
582+ {
583+ $ this ->expectException (UnableToResolveDomain::class);
584+
585+ ResolvedDomain::fromICANN ('private.ulb.ac.be ' , 2 )->withSecondLevelDomain ('toto.foo. ' );
586+ }
587+
560588 public function testItCanNotAppendASLDToAResolvedDomainWithoutSuffix (): void
561589 {
562590 $ this ->expectException (UnableToResolveDomain::class);
@@ -571,6 +599,13 @@ public function testItCanNotAppendAnInvalidSLDToAResolvedDomain(): void
571599 ResolvedDomain::fromIANA ('private.ulb.ac.be ' )->withSecondLevelDomain ('foo.bar ' );
572600 }
573601
602+ public function testItCanNotAppendAnInvalidSubDomainToAResolvedDomain (): void
603+ {
604+ $ this ->expectException (SyntaxError::class);
605+
606+ ResolvedDomain::fromIANA ('private.ulb.ac.be ' )->withSubDomain ('' );
607+ }
608+
574609 public function testItReturnsTheInstanceWhenTheSLDIsEqual (): void
575610 {
576611 $ domain = ResolvedDomain::fromICANN ('private.ulb.ac.be ' , 2 );
0 commit comments