[BUGFIX] SqlParser: trim all kinds of whitespaces
[Packages/TYPO3.CMS.git] / typo3 / sysext / core / Tests / Unit / Database / SqlParserTest.php
index a2db999..ed6389a 100644 (file)
@@ -31,12 +31,12 @@ namespace TYPO3\CMS\Core\Tests\Unit\Database;
 class SqlParserTest extends \TYPO3\CMS\Core\Tests\UnitTestCase {
 
        /**
 class SqlParserTest extends \TYPO3\CMS\Core\Tests\UnitTestCase {
 
        /**
-        * @var \TYPO3\CMS\Core\Database\SqlParser
+        * @var \TYPO3\CMS\Core\Database\SqlParser|\TYPO3\CMS\Core\Tests\AccessibleObjectInterface
         */
        private $fixture;
 
        public function setUp() {
         */
        private $fixture;
 
        public function setUp() {
-               $this->fixture = new \TYPO3\CMS\Core\Database\SqlParser();
+               $this->fixture = $this->getAccessibleMock('\\TYPO3\\CMS\\Core\\Database\\SqlParser', array('dummy'));
        }
 
        public function tearDown() {
        }
 
        public function tearDown() {
@@ -47,7 +47,6 @@ class SqlParserTest extends \TYPO3\CMS\Core\Tests\UnitTestCase {
         * Regression test
         *
         * @test
         * Regression test
         *
         * @test
-        * @todo Define visibility
         */
        public function compileWhereClauseDoesNotDropClauses() {
                $clauses = array(
         */
        public function compileWhereClauseDoesNotDropClauses() {
                $clauses = array(
@@ -122,6 +121,37 @@ class SqlParserTest extends \TYPO3\CMS\Core\Tests\UnitTestCase {
                $this->assertContains('IFNULL', $output);
        }
 
                $this->assertContains('IFNULL', $output);
        }
 
+       /**
+        * Data provider for trimSqlReallyTrimsAllWhitespace
+        *
+        * @see trimSqlReallyTrimsAllWhitespace
+        */
+       public function trimSqlReallyTrimsAllWhitespaceDataProvider() {
+               return array(
+                       'Nothing to trim' => array('SELECT * FROM test WHERE 1=1;', 'SELECT * FROM test WHERE 1=1 '),
+                       'Space after ;' => array('SELECT * FROM test WHERE 1=1; ', 'SELECT * FROM test WHERE 1=1 '),
+                       'Space before ;' => array('SELECT * FROM test WHERE 1=1 ;', 'SELECT * FROM test WHERE 1=1 '),
+                       'Space before and after ;' => array('SELECT * FROM test WHERE 1=1 ; ', 'SELECT * FROM test WHERE 1=1 '),
+                       'Linefeed after ;' => array('SELECT * FROM test WHERE 1=1' . LF . ';', 'SELECT * FROM test WHERE 1=1 '),
+                       'Linefeed before ;' => array('SELECT * FROM test WHERE 1=1;' . LF, 'SELECT * FROM test WHERE 1=1 '),
+                       'Linefeed before and after ;' => array('SELECT * FROM test WHERE 1=1' . LF . ';' . LF, 'SELECT * FROM test WHERE 1=1 '),
+                       'Tab after ;' => array('SELECT * FROM test WHERE 1=1' . TAB . ';', 'SELECT * FROM test WHERE 1=1 '),
+                       'Tab before ;' => array('SELECT * FROM test WHERE 1=1;' . TAB, 'SELECT * FROM test WHERE 1=1 '),
+                       'Tab before and after ;' => array('SELECT * FROM test WHERE 1=1' . TAB . ';' . TAB, 'SELECT * FROM test WHERE 1=1 '),
+               );
+       }
+
+       /**
+        * @test
+        * @dataProvider trimSqlReallyTrimsAllWhitespaceDataProvider
+        * @param string $sql The SQL to trim
+        * @param string $expected The expected trimmed SQL with single space at the end
+        */
+       public function trimSqlReallyTrimsAllWhitespace($sql, $expected) {
+               $result = $this->fixture->_call('trimSQL', $sql);
+               $this->assertSame($expected, $result);
+       }
+
 }
 
 ?>
\ No newline at end of file
 }
 
 ?>
\ No newline at end of file