/**
  * @dataProvider provideFactoryFunctions
  */
 public function testNewParser($factoryFunctions)
 {
     $valueParserFactory = new ValueParserFactory($factoryFunctions);
     $options = new ParserOptions();
     foreach ($valueParserFactory->getParserIds() as $id) {
         $parser = $valueParserFactory->newParser($id, $options);
         $this->assertInstanceOf('ValueParsers\\ValueParser', $parser);
     }
 }
 /**
  * @return ValueParser
  * @throws LogicException
  */
 private function getParser()
 {
     $params = $this->extractRequestParams();
     $options = $this->getOptionsObject($params['options']);
     // Parsers are registered by datatype.
     // Note: parser used to be addressed by a name independent of datatype, using the 'parser'
     // parameter. For backwards compatibility, parsers are also registered under their old names
     // in $wgValueParsers, and thus in the ValueParserFactory.
     $name = $params['datatype'] ?: $params['parser'];
     if (empty($name)) {
         // If neither 'datatype' not 'parser' is given, tell the client to use 'datatype'.
         $this->errorReporter->dieError('No datatype given', 'param-illegal');
     }
     try {
         $parser = $this->valueParserFactory->newParser($name, $options);
         return $parser;
     } catch (OutOfBoundsException $ex) {
         $this->errorReporter->dieError("Unknown datatype `{$name}`", 'unknown-datatype');
         throw new LogicException('dieError() did not throw an exception');
     }
 }