public function testAlternativesExtractor() { $matcher = new Matcher(); $this->assertEquals(['name', 'alternate'], $matcher->extractAlternatives('[name|alternate]')); $this->assertEquals(['name', 'alternate', 'last'], $matcher->extractAlternatives('[name|alternate||last]')); // missing trailing ']' $this->expectsException(function () use($matcher) { $matcher->extractAlternatives('[invalid|syntax'); }, Exception::class); // no alternatives $this->expectsException(function () use($matcher) { $matcher->extractAlternatives('[]'); }, Exception::class); // no alternatives $this->expectsException(function () use($matcher) { $matcher->extractAlternatives('[|]'); }, Exception::class); }