@@ -358,4 +358,72 @@ public function testToRwxString(): void
358358
359359 $ this ->assertSame ('r-Sr-Sr-T ' , $ permissions ->toRwxString ());
360360 }
361+
362+ /**
363+ *
364+ */
365+ public function testAdd (): void
366+ {
367+ $ permissions = new Permissions ;
368+
369+ $ this ->assertSame (0o0000 , $ permissions ->toInt ());
370+
371+ //
372+
373+ $ this ->assertInstanceOf (Permissions::class, $ permissions ->add (Permission::OWNER_FULL ));
374+
375+ $ this ->assertSame (0o0700 , $ permissions ->toInt ());
376+
377+ //
378+
379+ $ permissions ->add (Permission::OWNER_FULL );
380+
381+ $ this ->assertSame (0o0700 , $ permissions ->toInt ());
382+
383+ //
384+
385+ $ permissions ->add (Permission::GROUP_FULL );
386+
387+ $ this ->assertSame (0o0770 , $ permissions ->toInt ());
388+
389+ //
390+
391+ $ permissions ->add (Permission::PUBLIC_READ , Permission::PUBLIC_WRITE , Permission::PUBLIC_EXECUTE );
392+
393+ $ this ->assertSame (0o0777 , $ permissions ->toInt ());
394+ }
395+
396+ /**
397+ *
398+ */
399+ public function testRemove (): void
400+ {
401+ $ permissions = Permissions::fromInt (0o777 );
402+
403+ $ this ->assertSame (0o0777 , $ permissions ->toInt ());
404+
405+ //
406+
407+ $ this ->assertInstanceOf (Permissions::class, $ permissions ->remove (Permission::PUBLIC_WRITE ));
408+
409+ $ this ->assertSame (0o0775 , $ permissions ->toInt ());
410+
411+ //
412+
413+ $ permissions ->remove (Permission::PUBLIC_WRITE );
414+
415+ $ this ->assertSame (0o0775 , $ permissions ->toInt ());
416+
417+ //
418+
419+ $ permissions ->remove (Permission::GROUP_WRITE );
420+
421+ $ this ->assertSame (0o0755 , $ permissions ->toInt ());
422+
423+ //
424+
425+ $ permissions ->remove (Permission::PUBLIC_EXECUTE , Permission::GROUP_EXECUTE );
426+
427+ $ this ->assertSame (0o0744 , $ permissions ->toInt ());
428+ }
361429}
0 commit comments