Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/phpmyadmin/phpmyadmin.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorDan Ungureanu <udan1107@gmail.com>2015-07-15 18:08:18 +0300
committerDan Ungureanu <udan1107@gmail.com>2015-07-15 18:08:18 +0300
commit024d96700d7aa8601687ebbc5a14bfbd103d7d56 (patch)
treecb349f92e762c0f38c9b2aa329e7ba1e322c3a01 /test
parent4c24db081295ad034c0a7c52694d7612d9893761 (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.php146
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));
+ }
+}