gossi\codegen\tests\model\AbstractPhpStructTest::testMethods PHP Method

testMethods() public method

public testMethods ( )
    public function testMethods()
    {
        $class = new PhpClass();
        $this->assertTrue($class->getMethods()->isEmpty());
        $this->assertSame($class, $class->setMethod($method = new PhpMethod('foo')));
        $this->assertSame(['foo' => $method], $class->getMethods()->toArray());
        $this->assertTrue($class->hasMethod('foo'));
        $this->assertSame($method, $class->getMethod('foo'));
        $this->assertSame($class, $class->removeMethod($method));
        $this->assertEquals([], $class->getMethods()->toArray());
        $class->setMethod($orphaned = new PhpMethod('orphaned'));
        $this->assertSame($class, $orphaned->getParent());
        $this->assertTrue($class->hasMethod($orphaned));
        $this->assertSame($class, $class->setMethods([$method, $method2 = new PhpMethod('bar')]));
        $this->assertSame(['foo' => $method, 'bar' => $method2], $class->getMethods()->toArray());
        $this->assertEquals(['foo', 'bar'], $class->getMethodNames()->toArray());
        $this->assertNull($orphaned->getParent());
        $this->assertSame($method, $class->getMethod($method));
        $this->assertTrue($class->hasMethod($method));
        $this->assertSame($class, $class->removeMethod($method));
        $this->assertFalse($class->hasMethod($method));
        $this->assertFalse($class->getMethods()->isEmpty());
        $class->clearMethods();
        $this->assertTrue($class->getMethods()->isEmpty());
        try {
            $this->assertEmpty($class->getMethod('method-not-found'));
        } catch (\InvalidArgumentException $e) {
            $this->assertNotNull($e);
        }
    }