197 lines
4.9 KiB
PHP
197 lines
4.9 KiB
PHP
<?php
|
|
require __DIR__.'/../lib/SqlFormatter.php';
|
|
|
|
// Force SqlFormatter to run in non-CLI mode for tests
|
|
SqlFormatter::$cli = false;
|
|
|
|
class SqlFormatterTest extends PHPUnit_Framework_TestCase {
|
|
protected $sqlData;
|
|
|
|
/**
|
|
* @dataProvider formatHighlightData
|
|
*/
|
|
function testFormatHighlight($sql, $html) {
|
|
$this->assertEquals(trim($html), trim(SqlFormatter::format($sql)));
|
|
}
|
|
/**
|
|
* @dataProvider formatData
|
|
*/
|
|
function testFormat($sql, $html) {
|
|
$this->assertEquals(trim($html), trim(SqlFormatter::format($sql, false)));
|
|
}
|
|
/**
|
|
* @dataProvider highlightData
|
|
*/
|
|
function testHighlight($sql, $html) {
|
|
$this->assertEquals(trim($html), trim(SqlFormatter::highlight($sql)));
|
|
}
|
|
/**
|
|
* @dataProvider highlightCliData
|
|
*/
|
|
function testCliHighlight($sql, $html) {
|
|
SqlFormatter::$cli = true;
|
|
$this->assertEquals(trim($html), trim(SqlFormatter::format($sql)));
|
|
SqlFormatter::$cli = false;
|
|
}
|
|
/**
|
|
* @dataProvider compressData
|
|
*/
|
|
function testCompress($sql, $html) {
|
|
$this->assertEquals(trim($html), trim(SqlFormatter::compress($sql)));
|
|
}
|
|
|
|
function testUsePre() {
|
|
SqlFormatter::$use_pre = false;
|
|
$actual = SqlFormatter::highlight("test");
|
|
$expected = '<span style="color: #333;">test</span>';
|
|
$this->assertEquals($actual,$expected);
|
|
|
|
SqlFormatter::$use_pre = true;
|
|
$actual = SqlFormatter::highlight("test");
|
|
$expected = '<pre style="color: black; background-color: white;"><span style="color: #333;">test</span></pre>';
|
|
$this->assertEquals($actual,$expected);
|
|
}
|
|
|
|
function testSplitQuery() {
|
|
$expected = array(
|
|
"SELECT 'test' FROM MyTable;",
|
|
"SELECT Column2 FROM SomeOther Table WHERE (test = true);"
|
|
);
|
|
|
|
$actual = SqlFormatter::splitQuery(implode(';',$expected));
|
|
|
|
$this->assertEquals($expected, $actual);
|
|
}
|
|
|
|
function testSplitQueryEmpty() {
|
|
$sql = "SELECT 1;SELECT 2;\n-- This is a comment\n;SELECT 3";
|
|
$expected = array("SELECT 1;","SELECT 2;","SELECT 3");
|
|
$actual = SqlFormatter::splitQuery($sql);
|
|
|
|
$this->assertEquals($expected, $actual);
|
|
}
|
|
|
|
function testRemoveComments() {
|
|
$expected = SqlFormatter::format("SELECT\n * FROM\n MyTable",false);
|
|
$sql = "/* this is a comment */SELECT#This is another comment\n * FROM-- One final comment\n MyTable";
|
|
$actual = SqlFormatter::removeComments($sql);
|
|
|
|
$this->assertEquals($expected, $actual);
|
|
}
|
|
|
|
function testCacheStats() {
|
|
$stats = SqlFormatter::getCacheStats();
|
|
$this->assertGreaterThan(1,$stats['hits']);
|
|
}
|
|
|
|
function formatHighlightData() {
|
|
$formatHighlightData = explode("\n\n",file_get_contents(__DIR__."/format-highlight.html"));
|
|
$sqlData = $this->sqlData();
|
|
|
|
$return = array();
|
|
foreach($formatHighlightData as $i=>$data) {
|
|
$return[] = array(
|
|
$sqlData[$i],
|
|
$data
|
|
);
|
|
}
|
|
|
|
return $return;
|
|
}
|
|
|
|
function highlightCliData() {
|
|
$clidata = explode("\n\n",file_get_contents(__DIR__."/clihighlight.html"));
|
|
$sqlData = $this->sqlData();
|
|
|
|
$return = array();
|
|
foreach($clidata as $i=>$data) {
|
|
$return[] = array(
|
|
$sqlData[$i],
|
|
$data
|
|
);
|
|
}
|
|
|
|
return $return;
|
|
}
|
|
|
|
function formatData() {
|
|
$formatData = explode("\n\n",file_get_contents(__DIR__."/format.html"));
|
|
$sqlData = $this->sqlData();
|
|
|
|
$return = array();
|
|
foreach($formatData as $i=>$data) {
|
|
$return[] = array(
|
|
$sqlData[$i],
|
|
$data
|
|
);
|
|
}
|
|
|
|
return $return;
|
|
}
|
|
|
|
function compressData() {
|
|
$compressData = explode("\n\n",file_get_contents(__DIR__."/compress.html"));
|
|
$sqlData = $this->sqlData();
|
|
|
|
$return = array();
|
|
foreach($compressData as $i=>$data) {
|
|
$return[] = array(
|
|
$sqlData[$i],
|
|
$data
|
|
);
|
|
}
|
|
|
|
return $return;
|
|
}
|
|
|
|
function highlightData() {
|
|
$highlightData = explode("\n\n",file_get_contents(__DIR__."/highlight.html"));
|
|
$sqlData = $this->sqlData();
|
|
|
|
$return = array();
|
|
foreach($highlightData as $i=>$data) {
|
|
$return[] = array(
|
|
$sqlData[$i],
|
|
$data
|
|
);
|
|
}
|
|
|
|
return $return;
|
|
}
|
|
|
|
|
|
|
|
function sqlData() {
|
|
if(!$this->sqlData) {
|
|
$this->sqlData = explode("\n\n",file_get_contents(__DIR__."/sql.sql"));
|
|
}
|
|
|
|
/**
|
|
$formatHighlight = array();
|
|
$highlight = array();
|
|
$format = array();
|
|
$compress = array();
|
|
$clihighlight = array();
|
|
|
|
foreach($this->sqlData as $sql) {
|
|
$formatHighlight[] = trim(SqlFormatter::format($sql));
|
|
$highlight[] = trim(SqlFormatter::highlight($sql));
|
|
$format[] = trim(SqlFormatter::format($sql, false));
|
|
$compress[] = trim(SqlFormatter::compress($sql));
|
|
|
|
SqlFormatter::$cli = true;
|
|
$clihighlight[] = trim(SqlFormatter::format($sql));
|
|
SqlFormatter::$cli = false;
|
|
}
|
|
|
|
file_put_contents(__DIR__."/format-highlight.html", implode("\n\n",$formatHighlight));
|
|
file_put_contents(__DIR__."/highlight.html", implode("\n\n",$highlight));
|
|
file_put_contents(__DIR__."/format.html", implode("\n\n",$format));
|
|
file_put_contents(__DIR__."/compress.html", implode("\n\n",$compress));
|
|
file_put_contents(__DIR__."/clihighlight.html", implode("\n\n",$clihighlight));
|
|
/**/
|
|
|
|
return $this->sqlData;
|
|
}
|
|
|
|
}
|