public function testSpecks($version, $provider)
{
$specs = new SpecManager($version, $provider);
$definitions = $specs->getDefinitions('#^Api.*|Response$#');
$this->assertNotEmpty($definitions);
/* @var $definition ObjectEntity */
foreach ($definitions as $name => $definition) {
$intersectProp = array_intersect($definition->required, $definition->readOnly);
$this->assertEmpty($intersectProp, sprintf('The property %s is mutually exclusive. should be required or read-only. Object %s in %s spec', implode(', ', $intersectProp), $name, $provider));
//discriminator must be in the required property list
if (!empty($definition->discriminator)) {
$this->assertTrue(in_array($definition->discriminator, $definition->required), sprintf('Property discriminator must be required Object %s in %s spec', $name, $provider));
}
}
}