public function testInterfaceMethods()
{
$interface = new TestInterfaceType();
$this->assertEquals($interface->getNamedType(), $interface->getType());
$nameField = new Field(['name' => 'name', 'type' => new StringType()]);
$nameField->getName();
$this->assertEquals(['name' => $nameField], $interface->getFields());
$object = new ObjectType(['name' => 'Test', 'fields' => ['name' => new StringType()], 'interfaces' => [$interface]]);
$this->assertEquals([$interface], $object->getInterfaces());
$this->assertTrue($interface->isValidValue($object));
$this->assertFalse($interface->isValidValue('invalid object'));
$this->assertEquals($interface->serialize($object), $object);
$interfaceType = new InterfaceType(['name' => 'UserInterface', 'fields' => ['name' => new StringType()], 'resolveType' => function ($object) {
return $object;
}]);
$this->assertEquals('UserInterface', $interfaceType->getName());
$this->assertEquals($object, $interfaceType->resolveType($object));
$this->assertTrue($interfaceType->isValidValue($object));
$this->assertFalse($interfaceType->isValidValue('invalid object'));
}