public function testMethods() { $name = 'Test'; $rules = ['name' => ['type' => TypeService::TYPE_ANY, 'required' => true], 'resolve' => ['type' => TypeService::TYPE_CALLABLE, 'final' => true]]; $config = new TestConfig(['name' => $name]); $this->assertEquals($config->getName(), $name); $this->assertEquals($config->get('name'), $name); $this->assertEquals($config->get('non existing key'), null); $this->assertEquals($config->set('name', 'StrangeName'), $config); $this->assertEquals($config->get('name'), 'StrangeName'); $this->assertEquals($config->get('non existing', 'default'), 'default'); $this->assertEquals($config->isName(), 'StrangeName'); $this->assertEquals($config->setName('StrangeName 2'), $config); $config->set('var', 'value'); $this->assertEquals($config->getVar(), 'value'); $this->assertEquals($config->getRules(), $rules); $this->assertEquals($config->getContextRules(), $rules); $this->assertNull($config->getResolveFunction()); $object = new ObjectType(['name' => 'TestObject', 'fields' => ['id' => ['type' => new IntType()]]]); $finalConfig = new TestConfig(['name' => $name . 'final', 'resolve' => function () { return []; }], $object, true); $this->assertEquals($finalConfig->getType(), null); $rules['resolve']['required'] = true; $this->assertEquals($finalConfig->getContextRules(), $rules); $this->assertNotNull($finalConfig->getResolveFunction()); $configExtraFields = new TestConfigExtraFields(['name' => 'Test', 'extraField' => 'extraValue']); $this->assertEquals('extraValue', $configExtraFields->get('extraField')); }