/**
  * @dataProvider tokenProvider
  */
 public function testParseRange($version, $tokenList, $expectedRange, $expectedSerialization)
 {
     $comparatorFactory = new ComparatorFactory();
     $versionBuilder = new VersionBuilder(new LabelBuilder());
     $wildcardParser = new WildcardRangeParser($comparatorFactory->get('>='), $comparatorFactory->get('<'));
     $matcherList = array(new CaretRangeParser($comparatorFactory->get('>='), $comparatorFactory->get('<')), new TildeRangeParser($wildcardParser), $wildcardParser, new BranchParser($wildcardParser), new ComparatorVersionParser($comparatorFactory, $versionBuilder), new HyphenatedRangeParser($versionBuilder, $comparatorFactory->get('>='), $comparatorFactory->get('<'), $comparatorFactory->get('<=')));
     $parser = new VersionParser($matcherList);
     $range = $parser->parseRange($tokenList);
     $this->assertEquals($expectedRange, $range);
     $this->assertEquals($expectedSerialization, strval($range));
 }
 /**
  * Parse a version range & return an object implementing VersionRangeInterface that encodes those rules.
  *
  * @param string $rangeString
  *
  * @return VersionRangeInterface
  */
 public function parseRange($rangeString)
 {
     $tokenList = $this->tokenizer->tokenize($rangeString);
     return $this->parser->parseRange($tokenList);
 }