From 024d96700d7aa8601687ebbc5a14bfbd103d7d56 Mon Sep 17 00:00:00 2001 From: Dan Ungureanu Date: Wed, 15 Jul 2015 18:08:18 +0300 Subject: Reorganized code. Fixed a bug that miscalculated the position of the tokens. Added tests. Signed-off-by: Dan Ungureanu --- test/libraries/PMA_Linter_Test.php | 146 +++++++++++++++++++++++++++++++++++++ 1 file changed, 146 insertions(+) create mode 100644 test/libraries/PMA_Linter_Test.php (limited to 'test') 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 @@ +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 IN)', + 'fromLine' => 0, + 'fromColumn' => 22, + 'toLine' => 0, + 'toColumn' => 24, + 'severity' => 'error', + ), + array( + 'message' => 'A closing bracket was expected. (near IN)', + '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)); + } +} -- cgit v1.2.3