@@ -672,6 +672,51 @@ public function testAsymmetricVisibility()
672
672
$ this ->assertFalse ($ this ->extractor ->isWritable (AsymmetricVisibility::class, 'protectedPrivate ' ));
673
673
}
674
674
675
+ /**
676
+ * @requires PHP 8.4
677
+ */
678
+ public function testAsymmetricVisibilityAllowPublicOnly ()
679
+ {
680
+ $ extractor = new ReflectionExtractor (null , null , null , true , ReflectionExtractor::ALLOW_PUBLIC );
681
+
682
+ $ this ->assertTrue ($ extractor ->isReadable (AsymmetricVisibility::class, 'publicPrivate ' ));
683
+ $ this ->assertTrue ($ extractor ->isReadable (AsymmetricVisibility::class, 'publicProtected ' ));
684
+ $ this ->assertFalse ($ extractor ->isReadable (AsymmetricVisibility::class, 'protectedPrivate ' ));
685
+ $ this ->assertFalse ($ extractor ->isWritable (AsymmetricVisibility::class, 'publicPrivate ' ));
686
+ $ this ->assertFalse ($ extractor ->isWritable (AsymmetricVisibility::class, 'publicProtected ' ));
687
+ $ this ->assertFalse ($ extractor ->isWritable (AsymmetricVisibility::class, 'protectedPrivate ' ));
688
+ }
689
+
690
+ /**
691
+ * @requires PHP 8.4
692
+ */
693
+ public function testAsymmetricVisibilityAllowProtectedOnly ()
694
+ {
695
+ $ extractor = new ReflectionExtractor (null , null , null , true , ReflectionExtractor::ALLOW_PROTECTED );
696
+
697
+ $ this ->assertFalse ($ extractor ->isReadable (AsymmetricVisibility::class, 'publicPrivate ' ));
698
+ $ this ->assertFalse ($ extractor ->isReadable (AsymmetricVisibility::class, 'publicProtected ' ));
699
+ $ this ->assertTrue ($ extractor ->isReadable (AsymmetricVisibility::class, 'protectedPrivate ' ));
700
+ $ this ->assertFalse ($ extractor ->isWritable (AsymmetricVisibility::class, 'publicPrivate ' ));
701
+ $ this ->assertTrue ($ extractor ->isWritable (AsymmetricVisibility::class, 'publicProtected ' ));
702
+ $ this ->assertFalse ($ extractor ->isWritable (AsymmetricVisibility::class, 'protectedPrivate ' ));
703
+ }
704
+
705
+ /**
706
+ * @requires PHP 8.4
707
+ */
708
+ public function testAsymmetricVisibilityAllowPrivateOnly ()
709
+ {
710
+ $ extractor = new ReflectionExtractor (null , null , null , true , ReflectionExtractor::ALLOW_PRIVATE );
711
+
712
+ $ this ->assertFalse ($ extractor ->isReadable (AsymmetricVisibility::class, 'publicPrivate ' ));
713
+ $ this ->assertFalse ($ extractor ->isReadable (AsymmetricVisibility::class, 'publicProtected ' ));
714
+ $ this ->assertFalse ($ extractor ->isReadable (AsymmetricVisibility::class, 'protectedPrivate ' ));
715
+ $ this ->assertTrue ($ extractor ->isWritable (AsymmetricVisibility::class, 'publicPrivate ' ));
716
+ $ this ->assertFalse ($ extractor ->isWritable (AsymmetricVisibility::class, 'publicProtected ' ));
717
+ $ this ->assertTrue ($ extractor ->isWritable (AsymmetricVisibility::class, 'protectedPrivate ' ));
718
+ }
719
+
675
720
/**
676
721
* @requires PHP 8.4
677
722
*/
0 commit comments