| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220 |
- <?php
- // +----------------------------------------------------------------------
- // | ThinkPHP [ WE CAN DO IT JUST THINK ]
- // +----------------------------------------------------------------------
- // | Copyright (c) 2006~2016 http://thinkphp.cn All rights reserved.
- // +----------------------------------------------------------------------
- // | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
- // +----------------------------------------------------------------------
- // | Author: liu21st <liu21st@gmail.com>
- // +----------------------------------------------------------------------
- /**
- * Debug测试
- * @author 大漠 <zhylninc@gmail.com>
- */
- namespace tests\thinkphp\library\think;
- use tests\thinkphp\library\think\config\ConfigInitTrait;
- use think\Config;
- use think\Debug;
- use think\Response;
- use think\response\Redirect;
- class debugTest extends \PHPUnit_Framework_TestCase
- {
- use ConfigInitTrait;
- /**
- *
- * @var Debug
- */
- protected $object;
- /**
- * Sets up the fixture, for example, opens a network connection.
- * This method is called before a test is executed.
- */
- protected function setUp()
- {
- $this->object = new Debug();
- }
- /**
- * Tears down the fixture, for example, closes a network connection.
- * This method is called after a test is executed.
- */
- protected function tearDown()
- {}
- /**
- * @covers \think\Debug::remark
- * @todo Implement testRemark().
- */
- public function testRemark()
- {
- $name = "testremarkkey";
- Debug::remark($name);
- }
- /**
- * @covers \think\Debug::getRangeTime
- * @todo Implement testGetRangeTime().
- */
- public function testGetRangeTime()
- {
- $start = "testGetRangeTimeStart";
- $end = "testGetRangeTimeEnd";
- Debug::remark($start);
- usleep(20000);
- // \think\Debug::remark($end);
- $time = Debug::getRangeTime($start, $end);
- $this->assertLessThan(0.03, $time);
- //$this->assertEquals(0.03, ceil($time));
- }
- /**
- * @covers \think\Debug::getUseTime
- * @todo Implement testGetUseTime().
- */
- public function testGetUseTime()
- {
- $time = Debug::getUseTime();
- $this->assertLessThan(30, $time);
- }
- /**
- * @covers \think\Debug::getThroughputRate
- * @todo Implement testGetThroughputRate().
- */
- public function testGetThroughputRate()
- {
- usleep(100000);
- $throughputRate = Debug::getThroughputRate();
- $this->assertLessThan(10, $throughputRate);
- }
- /**
- * @covers \think\Debug::getRangeMem
- * @todo Implement testGetRangeMem().
- */
- public function testGetRangeMem()
- {
- $start = "testGetRangeMemStart";
- $end = "testGetRangeMemEnd";
- Debug::remark($start);
- $str = "";
- for ($i = 0; $i < 10000; $i++) {
- $str .= "mem";
- }
- $rangeMem = Debug::getRangeMem($start, $end);
- $this->assertLessThan(33, explode(" ", $rangeMem)[0]);
- }
- /**
- * @covers \think\Debug::getUseMem
- * @todo Implement testGetUseMem().
- */
- public function testGetUseMem()
- {
- $useMem = Debug::getUseMem();
- $this->assertLessThan(35, explode(" ", $useMem)[0]);
- }
- /**
- * @covers \think\Debug::getMemPeak
- * @todo Implement testGetMemPeak().
- */
- public function testGetMemPeak()
- {
- $start = "testGetMemPeakStart";
- $end = "testGetMemPeakEnd";
- Debug::remark($start);
- $str = "";
- for ($i = 0; $i < 100000; $i++) {
- $str .= "mem";
- }
- $memPeak = Debug::getMemPeak($start, $end);
- $this->assertLessThan(500, explode(" ", $memPeak)[0]);
- }
- /**
- * @covers \think\Debug::getFile
- * @todo Implement testGetFile().
- */
- public function testGetFile()
- {
- $count = Debug::getFile();
- $this->assertEquals(count(get_included_files()), $count);
- $info = Debug::getFile(true);
- $this->assertEquals(count(get_included_files()), count($info));
- $this->assertContains("KB", $info[0]);
- }
- /**
- * @covers \think\Debug::dump
- * @todo Implement testDump().
- */
- public function testDump()
- {
- if (strstr(PHP_VERSION, 'hhvm')) {
- return;
- }
- $var = [];
- $var["key"] = "val";
- $output = Debug::dump($var, false, $label = "label");
- $array = explode("array", json_encode($output));
- if (IS_WIN) {
- $this->assertEquals("(1) {\\n [\\\"key\\\"] => string(3) \\\"val\\\"\\n}\\n\\r\\n\"", end($array));
- } elseif (strstr(PHP_OS, 'Darwin')) {
- $this->assertEquals("(1) {\\n [\\\"key\\\"] => string(3) \\\"val\\\"\\n}\\n\\n\"", end($array));
- } else {
- $this->assertEquals("(1) {\\n 'key' =>\\n string(3) \\\"val\\\"\\n}\\n\\n\"", end($array));
- }
- }
- /**
- * @expectedException \think\exception\ClassNotFoundException
- */
- public function testInjectWithErrorType()
- {
- Config::set('trace', ['type' => 'NullDebug']);
- $response = new Response();
- $context = 'TestWithErrorType';
- Debug::inject($response, $context);
- }
- public function testInject()
- {
- Config::set('trace', ['type' => 'Console']);
- $response = new Response();
- $context = 'TestWithoutBodyTag';
- Debug::inject($response, $context);
- $this->assertNotEquals('TestWithoutBodyTag', $context);
- $this->assertStringStartsWith('TestWithoutBodyTag', $context);
- $response = new Response();
- $context = '<body></body>';
- Debug::inject($response, $context);
- $this->assertNotEquals('<body></body>', $context);
- $this->assertStringStartsWith('<body>', $context);
- $this->assertStringEndsWith('</body>', $context);
- $response = new Redirect();
- $context = '<body></body>';
- Debug::inject($response, $context);
- $this->assertEquals('<body></body>', $context);
- }
- }
|