// +---------------------------------------------------------------------- /** * 模板测试 * @author Haotong Lin */ namespace tests\thinkphp\library\think; use think\Template; class templateTest extends \PHPUnit_Framework_TestCase { public function testVar() { $template = new Template(); $content = << EOF; $template->parse($content); $this->assertEquals($data, $content); $content = << EOF; $template->parse($content); $this->assertEquals($data, $content); $content = << EOF; $template->parse($content); $this->assertEquals($data, $content); $content = << EOF; $template->parse($content); $this->assertEquals($data, $content); $content = << EOF; $template->parse($content); $this->assertEquals($data, $content); $content = << EOF; $template->parse($content); $this->assertEquals($data, $content); $content = << EOF; $template->parse($content); $this->assertEquals($data, $content); $content = << EOF; $template->parse($content); $this->assertEquals($data, $content); $content = << EOF; $template->parse($content); $this->assertEquals($data, $content); $content = << EOF; $template->parse($content); $this->assertEquals($data, $content); $content = << EOF; $template->parse($content); $this->assertEquals($data, $content); $content = << EOF; $template->parse($content); $this->assertEquals($data, $content); $content = <<parse($content); $this->assertEquals($data, $content); $content = <<parse($content); $this->assertEquals($data, $content); } public function testVarFunction() { $template = new Template(); $content = << EOF; $template->parse($content); $this->assertEquals($data, $content); $content = << EOF; $template->parse($content); $this->assertEquals($data, $content); $content = << EOF; $template->parse($content); $this->assertEquals($data, $content); } public function testVarIdentify() { $config['tpl_begin'] = '<#'; $config['tpl_end'] = '#>'; $config['tpl_var_identify'] = ''; $template = new Template($config); $content = << EOF; $data = <<a) ? (is_array(\$info)?\$info['a']:\$info->a) : 'test'; ?> EOF; $template->parse($content); $this->assertEquals($data, $content); $content = << EOF; $data = <<a)==(is_array(\$info)?\$info['b']:\$info->b)) echo 'test'; ?> EOF; $template->parse($content); $this->assertEquals($data, $content); $content = << EOF; $data = <<a) !== ''?(is_array(\$info)?\$info['a']:\$info->a):'test')?'yes':'no'; ?> EOF; $template->parse($content); $this->assertEquals($data, $content); $template2 = new Template(); $template2->tpl_var_identify = 'obj'; $content = <<b)?'yes':'no'; ?> EOF; $template2->parse($content); $this->assertEquals($data, $content); } public function testTag() { $config['view_path'] = dirname(__FILE__) . '/'; $config['view_suffix'] = '.html'; $template = new Template($config); $files = ['extend' => 'extend', 'include' => 'include']; $template->assign('files', $files); $content = <<
include2 include2 {\$message} mainbody {\$name}
EOF; $template->parse($content); $this->assertEquals($data, $content); } public function testThinkVar() { $config['tpl_begin'] = '{'; $config['tpl_end'] = '}'; $template = new Template($config); $_SERVER['SERVER_NAME'] = 'server_name'; $_GET['action'] = 'action'; $_POST['action'] = 'action'; $_COOKIE['name'] = 'name'; \think\Session::set('action', ['name' => 'name']); define('SITE_NAME', 'site_name'); $content = << {\$Think.GET.action}
{\$Think.POST.action}
{\$Think.COOKIE.action}
{\$Think.COOKIE.action.name}
{\$Think.SESSION.action}
{\$Think.SESSION.action.name}
{\$Think.ENV.OS}
{\$Think.REQUEST.action}
{\$Think.CONST.SITE_NAME}
{\$Think.LANG.action}
{\$Think.CONFIG.action.name}
{\$Think.NOW}
{\$Think.VERSION}
{\$Think.LDELIM}
{\$Think.RDELIM}
{\$Think.SITE_NAME}
{\$Think.SITE.URL} EOF; $data = <<
















EOF; $template->parse($content); $this->assertEquals($data, $content); } public function testDisplay() { $template = new Template(); $template->assign('name', 'name'); $config = [ 'strip_space' => true, 'view_path' => dirname(__FILE__) . '/', ]; $data = ['name' => 'value']; $template->display('display', $data, $config); $this->expectOutputString('value'); } public function testFetch() { $template = new Template(); $template->view_path = dirname(__FILE__) . '/'; $data = ['name' => 'value']; $content = <<fetch($content, $data); $this->expectOutputString('value'); } public function testVarAssign() { $template = new Template(); $template->assign('name', 'value'); $value = $template->get('name'); $this->assertEquals('value', $value); } public function testVarGet() { $template = new Template(); $data = ['a' => 'a', 'b' => 'b']; $template->assign($data); $this->assertEquals($data, $template->get()); } }