@@ -672,6 +672,51 @@ public function testAsymmetricVisibility()
672672 $ this ->assertFalse ($ this ->extractor ->isWritable (AsymmetricVisibility::class, 'protectedPrivate ' ));
673673 }
674674
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+
675720 /**
676721 * @requires PHP 8.4
677722 */
0 commit comments