public function testRejectsWhenAPossibleTypeDoesNotImplementTheInterface()
 {
     // rejects when a possible type does not implement the interface
     $InterfaceType = new InterfaceType(['name' => 'InterfaceType', 'fields' => []]);
     $SubType = new ObjectType(['name' => 'SubType', 'fields' => [], 'interfaces' => []]);
     InterfaceType::addImplementationToInterfaces($SubType, [$InterfaceType]);
     // Sanity check.
     $this->assertEquals(1, count($InterfaceType->getPossibleTypes()));
     $this->assertEquals($SubType, $InterfaceType->getPossibleTypes()[0]);
     $schema = new Schema($InterfaceType);
     $validationResult = SchemaValidator::validate($schema, [SchemaValidator::interfacePossibleTypesMustImplementTheInterfaceRule()]);
     $this->assertSame(false, $validationResult->isValid);
     $this->assertSame(1, count($validationResult->errors));
     $this->assertSame('SubType is a possible type of interface InterfaceType but does not ' . 'implement it!', $validationResult->errors[0]->message);
 }