Gittern\Proxy\DecoratorTest::assertClassIsGaplessDecorator PHP Method

assertClassIsGaplessDecorator() public method

public assertClassIsGaplessDecorator ( $base_class, $decorator_class )
    public function assertClassIsGaplessDecorator($base_class, $decorator_class)
    {
        $base_rc = new ReflectionClass($base_class);
        $decorator_rc = new ReflectionClass($decorator_class);
        $this->assertTrue($decorator_rc->isSubclassOf($base_class));
        $base_methods = $base_rc->getMethods(ReflectionMethod::IS_PUBLIC);
        foreach ($base_methods as $base_method) {
            $decorator_method = $decorator_rc->getMethod($base_method->getName());
            $declaring_rc = $decorator_method->getDeclaringClass();
            $declaring_class_name = $declaring_rc->getName();
            if ((!$decorator_rc->isSubclassOf($declaring_class_name) || $base_rc->isSubclassOf($declaring_class_name) || $base_rc == $declaring_rc) && $declaring_rc != $decorator_rc) {
                $this->fail(sprintf("Method %s expected to be redeclared in decorator, but wasn't.", $base_method->getName()));
            }
        }
    }