Mercurial > hg > isophonics-drupal-site
diff vendor/nikic/php-parser/test/PhpParser/ErrorTest.php @ 0:4c8ae668cc8c
Initial import (non-working)
author | Chris Cannam |
---|---|
date | Wed, 29 Nov 2017 16:09:58 +0000 |
parents | |
children | 5fb285c0d0e3 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/nikic/php-parser/test/PhpParser/ErrorTest.php Wed Nov 29 16:09:58 2017 +0000 @@ -0,0 +1,106 @@ +<?php + +namespace PhpParser; + +class ErrorTest extends \PHPUnit_Framework_TestCase +{ + public function testConstruct() { + $attributes = array( + 'startLine' => 10, + 'endLine' => 11, + ); + $error = new Error('Some error', $attributes); + + $this->assertSame('Some error', $error->getRawMessage()); + $this->assertSame($attributes, $error->getAttributes()); + $this->assertSame(10, $error->getStartLine()); + $this->assertSame(11, $error->getEndLine()); + $this->assertSame('Some error on line 10', $error->getMessage()); + + return $error; + } + + /** + * @depends testConstruct + */ + public function testSetMessageAndLine(Error $error) { + $error->setRawMessage('Some other error'); + $this->assertSame('Some other error', $error->getRawMessage()); + + $error->setStartLine(15); + $this->assertSame(15, $error->getStartLine()); + $this->assertSame('Some other error on line 15', $error->getMessage()); + } + + public function testUnknownLine() { + $error = new Error('Some error'); + + $this->assertSame(-1, $error->getStartLine()); + $this->assertSame(-1, $error->getEndLine()); + $this->assertSame('Some error on unknown line', $error->getMessage()); + } + + /** @dataProvider provideTestColumnInfo */ + public function testColumnInfo($code, $startPos, $endPos, $startColumn, $endColumn) { + $error = new Error('Some error', array( + 'startFilePos' => $startPos, + 'endFilePos' => $endPos, + )); + + $this->assertSame(true, $error->hasColumnInfo()); + $this->assertSame($startColumn, $error->getStartColumn($code)); + $this->assertSame($endColumn, $error->getEndColumn($code)); + + } + + public function provideTestColumnInfo() { + return array( + // Error at "bar" + array("<?php foo bar baz", 10, 12, 11, 13), + array("<?php\nfoo bar baz", 10, 12, 5, 7), + array("<?php foo\nbar baz", 10, 12, 1, 3), + array("<?php foo bar\nbaz", 10, 12, 11, 13), + array("<?php\r\nfoo bar baz", 11, 13, 5, 7), + // Error at "baz" + array("<?php foo bar baz", 14, 16, 15, 17), + array("<?php foo bar\nbaz", 14, 16, 1, 3), + // Error at string literal + array("<?php foo 'bar\nbaz' xyz", 10, 18, 11, 4), + array("<?php\nfoo 'bar\nbaz' xyz", 10, 18, 5, 4), + array("<?php foo\n'\nbarbaz\n'\nxyz", 10, 19, 1, 1), + // Error over full string + array("<?php", 0, 4, 1, 5), + array("<?\nphp", 0, 5, 1, 3), + ); + } + + public function testNoColumnInfo() { + $error = new Error('Some error', 3); + + $this->assertSame(false, $error->hasColumnInfo()); + try { + $error->getStartColumn(''); + $this->fail('Expected RuntimeException'); + } catch (\RuntimeException $e) { + $this->assertSame('Error does not have column information', $e->getMessage()); + } + try { + $error->getEndColumn(''); + $this->fail('Expected RuntimeException'); + } catch (\RuntimeException $e) { + $this->assertSame('Error does not have column information', $e->getMessage()); + } + } + + /** + * @expectedException \RuntimeException + * @expectedExceptionMessage Invalid position information + */ + public function testInvalidPosInfo() { + $error = new Error('Some error', array( + 'startFilePos' => 10, + 'endFilePos' => 11, + )); + $error->getStartColumn('code'); + } +}