From d98dcddae87777faf3b7d6f1d3862073b1dfcb72 Mon Sep 17 00:00:00 2001 From: Anton Grebnev Date: Fri, 28 Oct 2011 16:56:22 +0400 Subject: [PATCH] Profiler classes tested --- tests/util/profiler/CommandProfilerTest.php | 42 ++++++ tests/util/profiler/ProfilerTest.php | 190 ++++++++++++++++++++++++++++ 2 files changed, 232 insertions(+) create mode 100644 tests/util/profiler/CommandProfilerTest.php create mode 100644 tests/util/profiler/ProfilerTest.php diff --git a/tests/util/profiler/CommandProfilerTest.php b/tests/util/profiler/CommandProfilerTest.php new file mode 100644 index 0000000..8278b91 --- /dev/null +++ b/tests/util/profiler/CommandProfilerTest.php @@ -0,0 +1,42 @@ + + * @link http://netmonsters.ru + * @package Majestic + * @subpackage UnitTests + * @since 2011-10-28 + * + * Unit tests for CommandProfiler class + */ + +require_once dirname(__FILE__) . '/../../../util/profiler/CommandProfiler.php'; + +class CommandProfilerTest extends PHPUnit_Framework_TestCase +{ + + private $profiler; + + public function setUp() + { + $this->profiler = new CommandProfiler('method', 'exec'); + $this->profiler->end(); + } + + public function testGetEllapsed() + { + $this->assertGreaterThan(0, $this->profiler->getElapsed()); + } + + public function testGetType() + { + $this->assertEquals('method', $this->profiler->getType()); + $this->assertNotEquals('argument', $this->profiler->getType()); + } + + public function testGetCommand() + { + $this->assertEquals('exec', $this->profiler->getCommand()); + $this->assertNotEquals('grep', $this->profiler->getCommand()); + } +} \ No newline at end of file diff --git a/tests/util/profiler/ProfilerTest.php b/tests/util/profiler/ProfilerTest.php new file mode 100644 index 0000000..0ab4253 --- /dev/null +++ b/tests/util/profiler/ProfilerTest.php @@ -0,0 +1,190 @@ + + * @link http://netmonsters.ru + * @package Majestic + * @subpackage UnitTests + * @since 2011-10-28 + * + * Unit tests for CommandProfiler class + */ + +require_once dirname(__FILE__) . '/../../../exception/GeneralException.php'; +require_once dirname(__FILE__) . '/../../../util/FirePHPCore-0.3.2/lib/FirePHPCore/fb.php'; +require_once dirname(__FILE__) . '/../../../util/profiler/Profiler.php'; + +/** + * @TODO: Profiler->getJson() hardly depends on FB library + */ +class ProfilerTest extends PHPUnit_Framework_TestCase +{ + + public function run(PHPUnit_Framework_TestResult $result = NULL) + { + $this->setPreserveGlobalState(false); + return parent::run($result); + } + + public function setUp() + { + set_new_overload(array($this, 'newCallback')); + } + + /** + * @expectedException GeneralException + * @expectedExceptionMessage Need to turn on DEBUG before use. + * @runInSeparateProcess + */ + public function testGetInstaceNoDebug() + { + if (!defined('DEBUG')) { + define('DEBUG', false); + } + Profiler::getInstance(); + } + + /** + * @runInSeparateProcess + */ + public function testGetInstance() + { + if (!defined('DEBUG')) { + define('DEBUG', true); + } + $profiler = Profiler::getInstance(); + $this->assertInstanceOf('Profiler', $profiler); + $this->assertSame($profiler, Profiler::getInstance()); + } + + /** + * @runInSeparateProcess + */ + public function testProfilerCommand() + { + if (!defined('DEBUG')) { + define('DEBUG', true); + } + $this->getMock('CommandProfiler', array('getType', 'getCommand', 'getElapsed'), array(), 'CommandProfilerMock', false); + $profiler = Profiler::getInstance(); + $cmdProfiler = $profiler->profilerCommand('command', 'type'); + $this->assertInstanceOf('CommandProfiler', $cmdProfiler); + } + + /** + * @runInSeparateProcess + */ + public function testStartEndNoCommandProfiler() + { + if (!defined('DEBUG')) { + define('DEBUG', true); + } + $profiler = Profiler::getInstance(); + $profiler->start(); + $result = $profiler->end(''); + $this->assertNotEquals('', $result); + $this->assertStringStartsWith('', $result); + $this->assertStringEndsWith(']
', $result); + $this->assertContains('
', $result); + + + $this->assertEquals('html', $profiler->end('html')); + } + + /** + * @runInSeparateProcess + */ + public function testStartEndWithCommandProfiler() + { + if (!defined('DEBUG')) { + define('DEBUG', true); + } + + $this->getMock('CommandProfiler', array('getType', 'getCommand', 'getElapsed'), array(), 'CommandProfilerMock', false); + $profiler = Profiler::getInstance(); + $cmdProfiler = $profiler->profilerCommand('command', 'type'); + + $profiler->start(); + $result = $profiler->end(''); + $this->assertNotEquals('', $result); + $this->assertStringEndsNotWith(']
', $result); + $this->assertContains('Queries: 1 [0 ms]
() [0ms]
', $result); + } + + /** + * @runInSeparateProcess + */ + public function testGetJSON() + { + if (!defined('DEBUG')) { + define('DEBUG', true); + } + + $this->getMock('CommandProfiler', array('getType', 'getCommand', 'getElapsed'), array(), 'CommandProfilerMock', false); + $profiler = Profiler::getInstance(); + $cmdProfiler = $profiler->profilerCommand('command', 'type'); + $this->assertNull($profiler->getJson()); + } + + /** + * @runInSeparateProcess + */ + public function testGetCLI() + { + if (!defined('DEBUG')) { + define('DEBUG', true); + } + + $this->getMock('CommandProfiler', array('getType', 'getCommand', 'getElapsed'), array(), 'CommandProfilerMock', false); + $profiler = Profiler::getInstance(); + $cmdProfiler = $profiler->profilerCommand('command', 'type'); + $result = $profiler->getCli(); + echo $result; + $this->assertNotNull($result); + } + + public function tearDown() + { +// if (defined('DEBUG')) { +// $debug = DEBUG ? 'TRUE' : 'FALSE'; +// echo PHP_EOL . __CLASS__ . ' ' . $debug . PHP_EOL; +// } else { +// echo PHP_EOL . __CLASS__ . ' ' . 'DEBUG NOT DEFINED' . PHP_EOL; +// } + unset_new_overload(); + } + + protected function newCallback($className) + { + switch ($className) { + case 'CommandProfiler': + return 'CommandProfilerMock'; + default: + return $className; + } + } +} +// +// +//class CommandProfilerMock +//{ +// +// public function __construct($type, $command) +// { +// } +// +// public function getCommand() +// { +// return 'command'; +// } +// +// public function getType() +// { +// return 'type'; +// } +// +// public function getElapsed() +// { +// return 10; +// } +//} \ No newline at end of file