44
55namespace Cucumber \Gherkin \ParserException ;
66
7+ use Cucumber \Gherkin \Location ;
78use Cucumber \Gherkin \ParserException ;
89use PHPUnit \Framework \TestCase ;
910
1011final class CompositeParserExceptionTest extends TestCase
1112{
13+ public function testMessageContainsAHeaderAndALineForEachException (): void
14+ {
15+ $ compositeParserException = new CompositeParserException ([
16+ new class ('Message 1 ' , null ) extends ParserException {},
17+ new class ('Message 2 ' , null ) extends ParserException {},
18+ ]);
19+
20+ $ message = $ compositeParserException ->getMessage ();
21+
22+ self ::assertStringStartsWith ("(-1:-1): Parser errors: \n" , $ message );
23+ self ::assertCount (3 , explode ("\n" , $ message ));
24+ }
25+
26+
1227 public function testMessageContainsAllTheChildMessages (): void
1328 {
1429 $ compositeParserException = new CompositeParserException ([
@@ -21,4 +36,17 @@ public function testMessageContainsAllTheChildMessages(): void
2136 self ::assertStringContainsString ('Message 1 ' , $ message );
2237 self ::assertStringContainsString ('Message 2 ' , $ message );
2338 }
39+
40+ public function testMessageContainsAllTheChildLocations (): void
41+ {
42+ $ compositeParserException = new CompositeParserException ([
43+ new class ('' , new Location (100 , 200 )) extends ParserException {},
44+ new class ('' , new Location (300 , 400 )) extends ParserException {},
45+ ]);
46+
47+ $ message = $ compositeParserException ->getMessage ();
48+
49+ self ::assertStringContainsString ('(100:200) ' , $ message );
50+ self ::assertStringContainsString ('(300:400) ' , $ message );
51+ }
2452}
0 commit comments