/**
  * @param string        $inFilename
  * @param Specification $spec
  * @param string        $outFilename
  *
  * @return string
  * @throws \Exception
  */
 public function convert($inFilename, Specification $spec, $outFilename)
 {
     $converter = $this->resolver->resolve($spec);
     if (!$converter) {
         throw new \Exception("No converter found for specification " . get_class($spec));
     }
     return $converter->convert($inFilename, $spec, $outFilename);
 }
 public function testResolveReturnsOnlyAcceptingConverter()
 {
     $converter1 = $this->prophesize(ConverterInterface::class);
     $converter2 = $this->prophesize(ConverterInterface::class);
     $resolver = new ConverterResolver(array($converter1->reveal(), $converter2->reveal()));
     $converter1->accept(Argument::cetera())->willReturn(false);
     $converter2->accept(Argument::cetera())->willReturn(true);
     $extractor = $resolver->resolve(new Image());
     $this->assertSame($converter2->reveal(), $extractor);
 }