diff options
author | Dan Ungureanu <udan1107@gmail.com> | 2015-07-15 18:08:18 +0300 |
---|---|---|
committer | Dan Ungureanu <udan1107@gmail.com> | 2015-07-15 18:08:18 +0300 |
commit | 024d96700d7aa8601687ebbc5a14bfbd103d7d56 (patch) | |
tree | cb349f92e762c0f38c9b2aa329e7ba1e322c3a01 /test | |
parent | 4c24db081295ad034c0a7c52694d7612d9893761 (diff) |
Reorganized code.
Fixed a bug that miscalculated the position of the tokens.
Added tests.
Signed-off-by: Dan Ungureanu <udan1107@gmail.com>
Diffstat (limited to 'test')
-rw-r--r-- | test/libraries/PMA_Linter_Test.php | 146 |
1 files changed, 146 insertions, 0 deletions
diff --git a/test/libraries/PMA_Linter_Test.php b/test/libraries/PMA_Linter_Test.php new file mode 100644 index 0000000000..7a5b60df2e --- /dev/null +++ b/test/libraries/PMA_Linter_Test.php @@ -0,0 +1,146 @@ +<?php +/* vim: set expandtab sw=4 ts=4 sts=4: */ +/** + * Tests for Linter.class.php. + * + * @package PhpMyAdmin-test + */ + +/* + * Include to test. + */ +require_once 'libraries/Linter.class.php'; + +/** + * Tests for Linter.class.php. + * + * @package PhpMyAdmin-test + */ +class PMA_Linter_Test extends PHPUnit_Framework_TestCase +{ + + /** + * Test for PMA_Linter::getLines + * + * @return void + */ + public function testGetLines() + { + $this->assertEquals(array(0), PMA_Linter::getLines('')); + $this->assertEquals(array(0, 2), PMA_Linter::getLines("a\nb")); + $this->assertEquals(array(0, 4, 7), PMA_Linter::getLines("abc\nde\n")); + } + + /** + * Test for PMA_Linter::findLineNumberAndColumn + * + * @return void + */ + public function testFindLineNumberAndColumn() + { + // Let the analyzed string be: + // ^abc$ + // ^de$ + // ^$ + // + // Where `^` is the beginning of the line and `$` the end of the line. + // + // Positions of each character (by line): + // ( a, 0), ( b, 1), ( c, 2), (\n, 3), + // ( d, 4), ( e, 5), (\n, 6), + // (\n, 7). + $this->assertEquals( + array(1, 0), + PMA_Linter::findLineNumberAndColumn(array(0, 4, 7), 4) + ); + $this->assertEquals( + array(1, 1), + PMA_Linter::findLineNumberAndColumn(array(0, 4, 7), 5) + ); + $this->assertEquals( + array(1, 2), + PMA_Linter::findLineNumberAndColumn(array(0, 4, 7), 6) + ); + $this->assertEquals( + array(2, 0), + PMA_Linter::findLineNumberAndColumn(array(0, 4, 7), 7) + ); + } + + /** + * Test for PMA_Linter::lint + * + * @return void + */ + public function testLintEmpty() + { + $this->expectOutputString('[]'); + PMA_Linter::lint(''); + } + + /** + * Test for PMA_Linter::lint + * + * @return void + */ + public function testLintNoErrors() + { + $this->expectOutputString('[]'); + PMA_Linter::lint('SELECT * FROM tbl'); + } + + /** + * Test for PMA_Linter::lint + * + * @return void + */ + public function testLintErrors() + { + $this->expectOutputString( + json_encode( + array( + array( + 'message' => 'Unrecognized data type. (near <code>IN</code>)', + 'fromLine' => 0, + 'fromColumn' => 22, + 'toLine' => 0, + 'toColumn' => 24, + 'severity' => 'error', + ), + array( + 'message' => 'A closing bracket was expected. (near <code>IN</code>)', + 'fromLine' => 0, + 'fromColumn' => 22, + 'toLine' => 0, + 'toColumn' => 24, + 'severity' => 'error', + ) + ) + ) + ); + PMA_Linter::lint('CREATE TABLE tbl ( id IN'); + } + + /** + * Test for PMA_Linter::lint + * + * @return void + */ + public function testLongQuery() { + $this->expectOutputString( + json_encode( + array( + array( + 'message' => 'The linting is disabled for this query because it exceededs the maxmimum length.', + 'fromLine' => 0, + 'fromColumn' => 0, + 'toLine' => 0, + 'toColumn' => 0, + 'severity' => 'warning', + ) + ) + ) + ); + PMA_Linter::lint(str_repeat(";", 10001)); + } +} |