--TEST--
ReflectionClass::getModifierNames() basic tests
--CREDITS--
Felix De Vliegher <felix.devliegher@gmail.com>
--FILE--
<?php

class {}
abstract class 
{}
final class 
{}

class 
x
{
    function 
__construct() {}
    function 
__destruct() {}
    private function 
a() {}
    private static function 
b() {}
    protected function 
c() {}
    protected static function 
d() {}
    public function 
e() {}
    public static function 
f() {}
    final function 
g() {}
    function 
h() {}
}

abstract class 
y
{
    abstract function 
a();
    abstract protected function 
b();
}

function 
dump_modifierNames($class) {
    
$obj = new ReflectionClass($class);
    
var_dump($obj->getName(), Reflection::getModifierNames($obj->getModifiers()));
}

function 
dump_methodModifierNames($class) {
    
$obj = new ReflectionClass($class);
    foreach(
$obj->getMethods() as $method) {
        
var_dump($obj->getName() . "::" $method->getName(), Reflection::getModifierNames($method->getModifiers()));
    }
}

dump_modifierNames('a');
dump_modifierNames('b');
dump_modifierNames('c');

dump_methodModifierNames('x');
dump_methodModifierNames('y');

?>
==DONE==
--EXPECT--
string(1) "a"
array(0) {
}
string(1) "b"
array(1) {
  [0]=>
  string(8) "abstract"
}
string(1) "c"
array(1) {
  [0]=>
  string(5) "final"
}
string(14) "x::__construct"
array(1) {
  [0]=>
  string(6) "public"
}
string(13) "x::__destruct"
array(1) {
  [0]=>
  string(6) "public"
}
string(4) "x::a"
array(1) {
  [0]=>
  string(7) "private"
}
string(4) "x::b"
array(2) {
  [0]=>
  string(7) "private"
  [1]=>
  string(6) "static"
}
string(4) "x::c"
array(1) {
  [0]=>
  string(9) "protected"
}
string(4) "x::d"
array(2) {
  [0]=>
  string(9) "protected"
  [1]=>
  string(6) "static"
}
string(4) "x::e"
array(1) {
  [0]=>
  string(6) "public"
}
string(4) "x::f"
array(2) {
  [0]=>
  string(6) "public"
  [1]=>
  string(6) "static"
}
string(4) "x::g"
array(2) {
  [0]=>
  string(5) "final"
  [1]=>
  string(6) "public"
}
string(4) "x::h"
array(1) {
  [0]=>
  string(6) "public"
}
string(4) "y::a"
array(2) {
  [0]=>
  string(8) "abstract"
  [1]=>
  string(6) "public"
}
string(4) "y::b"
array(2) {
  [0]=>
  string(8) "abstract"
  [1]=>
  string(9) "protected"
}
==DONE==