Chris@13: 10, Chris@0: 'endLine' => 11, Chris@13: ]; Chris@0: $error = new Error('Some error', $attributes); Chris@0: Chris@0: $this->assertSame('Some error', $error->getRawMessage()); Chris@0: $this->assertSame($attributes, $error->getAttributes()); Chris@0: $this->assertSame(10, $error->getStartLine()); Chris@0: $this->assertSame(11, $error->getEndLine()); Chris@0: $this->assertSame('Some error on line 10', $error->getMessage()); Chris@0: Chris@0: return $error; Chris@0: } Chris@0: Chris@0: /** Chris@0: * @depends testConstruct Chris@0: */ Chris@0: public function testSetMessageAndLine(Error $error) { Chris@0: $error->setRawMessage('Some other error'); Chris@0: $this->assertSame('Some other error', $error->getRawMessage()); Chris@0: Chris@0: $error->setStartLine(15); Chris@0: $this->assertSame(15, $error->getStartLine()); Chris@0: $this->assertSame('Some other error on line 15', $error->getMessage()); Chris@0: } Chris@0: Chris@0: public function testUnknownLine() { Chris@0: $error = new Error('Some error'); Chris@0: Chris@0: $this->assertSame(-1, $error->getStartLine()); Chris@0: $this->assertSame(-1, $error->getEndLine()); Chris@0: $this->assertSame('Some error on unknown line', $error->getMessage()); Chris@0: } Chris@0: Chris@0: /** @dataProvider provideTestColumnInfo */ Chris@0: public function testColumnInfo($code, $startPos, $endPos, $startColumn, $endColumn) { Chris@13: $error = new Error('Some error', [ Chris@0: 'startFilePos' => $startPos, Chris@0: 'endFilePos' => $endPos, Chris@13: ]); Chris@0: Chris@13: $this->assertTrue($error->hasColumnInfo()); Chris@0: $this->assertSame($startColumn, $error->getStartColumn($code)); Chris@0: $this->assertSame($endColumn, $error->getEndColumn($code)); Chris@0: Chris@0: } Chris@0: Chris@0: public function provideTestColumnInfo() { Chris@13: return [ Chris@0: // Error at "bar" Chris@13: ["assertFalse($error->hasColumnInfo()); Chris@0: try { Chris@0: $error->getStartColumn(''); Chris@0: $this->fail('Expected RuntimeException'); Chris@0: } catch (\RuntimeException $e) { Chris@0: $this->assertSame('Error does not have column information', $e->getMessage()); Chris@0: } Chris@0: try { Chris@0: $error->getEndColumn(''); Chris@0: $this->fail('Expected RuntimeException'); Chris@0: } catch (\RuntimeException $e) { Chris@0: $this->assertSame('Error does not have column information', $e->getMessage()); Chris@0: } Chris@0: } Chris@0: Chris@0: public function testInvalidPosInfo() { Chris@17: $this->expectException(\RuntimeException::class); Chris@17: $this->expectExceptionMessage('Invalid position information'); Chris@13: $error = new Error('Some error', [ Chris@0: 'startFilePos' => 10, Chris@0: 'endFilePos' => 11, Chris@13: ]); Chris@0: $error->getStartColumn('code'); Chris@0: } Chris@0: }