📄 javascript.test.php
字号:
$expected = '{"Object":{"1":true,"2":false,"3":' . (-1 * $number) . ',"4":-10}}'; $this->assertEqual($result, $expected); } $result = $this->Javascript->object(new TestJavascriptObject()); $expected = '{"property1":"value1","property2":2}'; $this->assertEqual($result, $expected); $object = array('title' => 'New thing', 'indexes' => array(5, 6, 7, 8)); $result = $this->Javascript->object($object, array('block' => true)); $expected = '{"title":"New thing","indexes":[5,6,7,8]}'; $this->assertPattern('/^<script[^<>]+>\s*' . str_replace('/', '\\/', preg_quote('//<![CDATA[')) . '\s*' . str_replace('/', '\\/', preg_quote($expected)) . '\s*' . str_replace('/', '\\/', preg_quote('//]]>')) . '\s*<\/script>$/', $result); $this->assertPattern('/^<script[^<>]+type="text\/javascript">.+<\/script>$/s', $result); $this->assertPattern('/^<script[^<>]+type="text\/javascript"[^<>]*>/', $result); $this->assertNoPattern('/^<script[^type]=[^<>]*>/', $result); $object = array('title' => 'New thing', 'indexes' => array(5, 6, 7, 8), 'object' => array('inner' => array('value' => 1))); $result = $this->Javascript->object($object); $expected = '{"title":"New thing","indexes":[5,6,7,8],"object":{"inner":{"value":1}}}'; $this->assertEqual($result, $expected); if ($this->Javascript->useNative) { $this->Javascript->useNative = false; $this->testObjectGeneration(); $this->Javascript->useNative = true; } } /** * testObjectNonNative method * * @access public * @return void */ function testObjectNonNative() { $oldNative = $this->Javascript->useNative; $this->Javascript->useNative = false; $object = array( 'Object' => array( 'key1' => 'val1', 'key2' => 'val2', 'key3' => 'val3' ) ); $expected = '{"Object":{"key1":val1,"key2":"val2","key3":val3}}'; $result = $this->Javascript->object($object, array('quoteKeys' => false, 'stringKeys' => array('key1', 'key3'))); $this->assertEqual($result, $expected); $this->Javascript->useNative = $oldNative; }/** * testScriptBlock method * * @access public * @return void */ function testScriptBlock() { $result = $this->Javascript->codeBlock('something', true, false); $this->assertPattern('/^<script[^<>]+>something<\/script>$/', $result); $this->assertPattern('/^<script[^<>]+type="text\/javascript">something<\/script>$/', $result); $this->assertPattern('/^<script[^<>]+type="text\/javascript"[^<>]*>/', $result); $this->assertNoPattern('/^<script[^type]=[^<>]*>/', $result); $result = $this->Javascript->codeBlock('something', false, false); $this->assertPattern('/^<script[^<>]+>something<\/script>$/', $result); $this->assertPattern('/^<script[^<>]+type="text\/javascript">something<\/script>$/', $result); $this->assertPattern('/^<script[^<>]+type="text\/javascript"[^<>]*>/', $result); $this->assertNoPattern('/^<script[^type]=[^<>]*>/', $result); $result = $this->Javascript->codeBlock('something', true, true); $this->assertPattern('/^<script[^<>]+>\s*' . str_replace('/', '\\/', preg_quote('//<![CDATA[')) . '\s*something\s*' . str_replace('/', '\\/', preg_quote('//]]>')) . '\s*<\/script>$/', $result); $this->assertPattern('/^<script[^<>]+type="text\/javascript">\s*' . str_replace('/', '\\/', preg_quote('//<![CDATA[')) . '\s*something\s*' . str_replace('/', '\\/', preg_quote('//]]>')) . '\s*<\/script>$/', $result); $this->assertPattern('/^<script[^<>]+type="text\/javascript"[^<>]*>/', $result); $this->assertNoPattern('/^<script[^type]=[^<>]*>/', $result); $result = $this->Javascript->codeBlock('something', false, true); $this->assertPattern('/^<script[^<>]+>\s*' . str_replace('/', '\\/', preg_quote('//<![CDATA[')) . '\s*something\s*' . str_replace('/', '\\/', preg_quote('//]]>')) . '\s*<\/script>$/', $result); $this->assertPattern('/^<script[^<>]+type="text\/javascript">\s*' . str_replace('/', '\\/', preg_quote('//<![CDATA[')) . '\s*something\s*' . str_replace('/', '\\/', preg_quote('//]]>')) . '\s*<\/script>$/', $result); $this->assertPattern('/^<script[^<>]+type="text\/javascript"[^<>]*>/', $result); $this->assertNoPattern('/^<script[^type]=[^<>]*>/', $result); $result = $this->Javascript->codeBlock('something', array('safe' => false)); $this->assertPattern('/^<script[^<>]+>something<\/script>$/', $result); $this->assertPattern('/^<script[^<>]+type="text\/javascript">something<\/script>$/', $result); $this->assertPattern('/^<script[^<>]+type="text\/javascript"[^<>]*>/', $result); $this->assertNoPattern('/^<script[^type]=[^<>]*>/', $result); $result = $this->Javascript->codeBlock('something', array('safe' => true)); $this->assertPattern('/^<script[^<>]+>\s*' . str_replace('/', '\\/', preg_quote('//<![CDATA[')) . '\s*something\s*' . str_replace('/', '\\/', preg_quote('//]]>')) . '\s*<\/script>$/', $result); $this->assertPattern('/^<script[^<>]+type="text\/javascript">\s*' . str_replace('/', '\\/', preg_quote('//<![CDATA[')) . '\s*something\s*' . str_replace('/', '\\/', preg_quote('//]]>')) . '\s*<\/script>$/', $result); $this->assertPattern('/^<script[^<>]+type="text\/javascript"[^<>]*>/', $result); $this->assertNoPattern('/^<script[^type]=[^<>]*>/', $result); $result = $this->Javascript->codeBlock(null, array('safe' => true, 'allowCache' => false)); $this->assertPattern('/^<script[^<>]+>\s*' . str_replace('/', '\\/', preg_quote('//<![CDATA[')) . '\s*$/', $result); $this->assertNoPattern('/^<script[^type]=[^<>]*>/', $result); $result = $this->Javascript->blockEnd(); $this->assertPattern('/^\s*' . str_replace('/', '\\/', preg_quote('//]]>')) . '\s*<\/script>$/', $result); $result = $this->Javascript->codeBlock('something'); $this->assertPattern('/^<script[^<>]+>\s*' . str_replace('/', '\\/', preg_quote('//<![CDATA[')) . '\s*something\s*' . str_replace('/', '\\/', preg_quote('//]]>')) . '\s*<\/script>$/', $result); $this->assertPattern('/^<script[^<>]+type="text\/javascript">.+<\/script>$/s', $result); $this->assertPattern('/^<script[^<>]+type="text\/javascript"[^<>]*>/', $result); $this->assertNoPattern('/^<script[^type]=[^<>]*>/', $result); $result = $this->Javascript->codeBlock(); $this->assertPattern('/^<script[^<>]+>\s*' . str_replace('/', '\\/', preg_quote('//<![CDATA[')) . '\s*$/', $result); $this->assertNoPattern('/^<script[^type]=[^<>]*>/', $result); $result = $this->Javascript->blockEnd(); $this->assertPattern('/^\s*' . str_replace('/', '\\/', preg_quote('//]]>')) . '\s*<\/script>$/', $result); $this->Javascript->cacheEvents(false, true); $this->assertFalse($this->Javascript->inBlock); $result = $this->Javascript->codeBlock(); $this->assertIdentical($result, null); $this->assertTrue($this->Javascript->inBlock); echo 'alert("this is a buffered script");'; $result = $this->Javascript->blockEnd(); $this->assertIdentical($result, null); $this->assertFalse($this->Javascript->inBlock); $result = $this->Javascript->getCache(); $this->assertEqual('alert("this is a buffered script");', $result); }/** * testOutOfLineScriptWriting method * * @access public * @return void */ function testOutOfLineScriptWriting() { echo $this->Javascript->codeBlock('$(document).ready(function() { /* ... */ });', array('inline' => false)); $this->Javascript->codeBlock(null, array('inline' => false)); echo '$(function(){ /* ... */ });'; $this->Javascript->blockEnd(); }/** * testEvent method * * @access public * @return void */ function testEvent() { $result = $this->Javascript->event('myId', 'click', 'something();'); $this->assertPattern('/^<script[^<>]+>\s*' . str_replace('/', '\\/', preg_quote('//<![CDATA[')) . '\s*.+\s*' . str_replace('/', '\\/', preg_quote('//]]>')) . '\s*<\/script>$/', $result); $this->assertPattern('/^<script[^<>]+type="text\/javascript">.+' . str_replace('/', '\\/', preg_quote('Event.observe($(\'myId\'), \'click\', function(event) { something(); }, false);')) . '.+<\/script>$/s', $result); $this->assertPattern('/^<script[^<>]+type="text\/javascript"[^<>]*>/', $result); $this->assertNoPattern('/^<script[^type]=[^<>]*>/', $result); $result = $this->Javascript->event('myId', 'click', 'something();', array('safe' => false)); $this->assertPattern('/^<script[^<>]+>[^<>]+<\/script>$/', $result); $this->assertPattern('/^<script[^<>]+type="text\/javascript">' . str_replace('/', '\\/', preg_quote('Event.observe($(\'myId\'), \'click\', function(event) { something(); }, false);')) . '<\/script>$/', $result); $this->assertPattern('/^<script[^<>]+type="text\/javascript"[^<>]*>/', $result); $this->assertNoPattern('/^<script[^type]=[^<>]*>/', $result); $result = $this->Javascript->event('myId', 'click'); $this->assertPattern('/^<script[^<>]+>\s*' . str_replace('/', '\\/', preg_quote('//<![CDATA[')) . '\s*.+\s*' . str_replace('/', '\\/', preg_quote('//]]>')) . '\s*<\/script>$/', $result); $this->assertPattern('/^<script[^<>]+type="text\/javascript">.+' . str_replace('/', '\\/', preg_quote('Event.observe($(\'myId\'), \'click\', function(event) { }, false);')) . '.+<\/script>$/s', $result); $this->assertPattern('/^<script[^<>]+type="text\/javascript"[^<>]*>/', $result); $this->assertNoPattern('/^<script[^type]=[^<>]*>/', $result); $result = $this->Javascript->event('myId', 'click', 'something();', false); $this->assertPattern('/^<script[^<>]+>\s*' . str_replace('/', '\\/', preg_quote('//<![CDATA[')) . '\s*.+\s*' . str_replace('/', '\\/', preg_quote('//]]>')) . '\s*<\/script>$/', $result); $this->assertPattern('/^<script[^<>]+type="text\/javascript">.+' . str_replace('/', '\\/', preg_quote('Event.observe($(\'myId\'), \'click\', function(event) { something(); }, false);')) . '.+<\/script>$/s', $result); $this->assertPattern('/^<script[^<>]+type="text\/javascript"[^<>]*>/', $result); $this->assertNoPattern('/^<script[^type]=[^<>]*>/', $result); $result = $this->Javascript->event('myId', 'click', 'something();', array('useCapture' => true)); $this->assertPattern('/^<script[^<>]+>\s*' . str_replace('/', '\\/', preg_quote('//<![CDATA[')) . '\s*.+\s*' . str_replace('/', '\\/', preg_quote('//]]>')) . '\s*<\/script>$/', $result); $this->assertPattern('/^<script[^<>]+type="text\/javascript">.+' . str_replace('/', '\\/', preg_quote('Event.observe($(\'myId\'), \'click\', function(event) { something(); }, true);')) . '.+<\/script>$/s', $result); $this->assertPattern('/^<script[^<>]+type="text\/javascript"[^<>]*>/', $result); $this->assertNoPattern('/^<script[^type]=[^<>]*>/', $result); $result = $this->Javascript->event('document', 'load'); $this->assertPattern('/^<script[^<>]+>\s*' . str_replace('/', '\\/', preg_quote('//<![CDATA[')) . '\s*.+\s*' . str_replace('/', '\\/', preg_quote('//]]>')) . '\s*<\/script>$/', $result); $this->assertPattern('/^<script[^<>]+type="text\/javascript">.+' . str_replace('/', '\\/', preg_quote('Event.observe(document, \'load\', function(event) { }, false);')) . '.+<\/script>$/s', $result); $this->assertPattern('/^<script[^<>]+type="text\/javascript"[^<>]*>/', $result); $this->assertNoPattern('/^<script[^type]=[^<>]*>/', $result); $result = $this->Javascript->event('$(\'myId\')', 'click', 'something();', array('safe' => false)); $this->assertPattern('/^<script[^<>]+>[^<>]+<\/script>$/', $result); $this->assertPattern('/^<script[^<>]+type="text\/javascript">' . str_replace('/', '\\/', preg_quote('Event.observe($(\'myId\'), \'click\', function(event) { something(); }, false);')) . '<\/script>$/', $result); $this->assertPattern('/^<script[^<>]+type="text\/javascript"[^<>]*>/', $result); $this->assertNoPattern('/^<script[^type]=[^<>]*>/', $result); $result = $this->Javascript->event('\'document\'', 'load', 'something();', array('safe' => false)); $this->assertPattern('/^<script[^<>]+>[^<>]+<\/script>$/', $result); $this->assertPattern('/^<script[^<>]+type="text\/javascript">' . str_replace('/', '\\/', preg_quote('Event.observe(\'document\', \'load\', function(event) { something(); }, false);')) . '<\/script>$/', $result); $this->assertPattern('/^<script[^<>]+type="text\/javascript"[^<>]*>/', $result); $this->assertNoPattern('/^<script[^type]=[^<>]*>/', $result); $this->Javascript->cacheEvents(); $result = $this->Javascript->event('myId', 'click', 'something();'); $this->assertNull($result); $result = $this->Javascript->getCache(); $this->assertPattern('/^' . str_replace('/', '\\/', preg_quote('Event.observe($(\'myId\'), \'click\', function(event) { something(); }, false);')) . '$/s', $result); $result = $this->Javascript->event('#myId', 'alert(event);'); $this->assertNull($result); $result = $this->Javascript->getCache(); $this->assertPattern('/^\s*var Rules = {\s*\'#myId\': function\(element, event\)\s*{\s*alert\(event\);\s*}\s*}\s*EventSelectors\.start\(Rules\);\s*$/s', $result); }/** * testWriteEvents method * * @access public * @return void */ function testWriteEvents() { $this->Javascript->cacheEvents(); $result = $this->Javascript->event('myId', 'click', 'something();'); $this->assertNull($result); $result = $this->Javascript->writeEvents(); $this->assertPattern('/^<script[^<>]+>\s*' . str_replace('/', '\\/', preg_quote('//<![CDATA[')) . '\s*.+\s*' . str_replace('/', '\\/', preg_quote('//]]>')) . '\s*<\/script>$/', $result); $this->assertPattern('/^<script[^<>]+type="text\/javascript">.+' . str_replace('/', '\\/', preg_quote('Event.observe($(\'myId\'), \'click\', function(event) { something(); }, false);')) . '.+<\/script>$/s', $result); $this->assertPattern('/^<script[^<>]+type="text\/javascript"[^<>]*>/', $result); $this->assertNoPattern('/^<script[^type]=[^<>]*>/', $result); $result = $this->Javascript->getCache(); $this->assertTrue(empty($result)); $this->Javascript->cacheEvents(); $result = $this->Javascript->event('myId', 'click', 'something();'); $this->assertNull($result); $result = $this->Javascript->writeEvents(false); $resultScripts = $this->View->scripts(); reset($resultScripts); $this->assertNull($result); $this->assertEqual(count($resultScripts), 1); $result = current($resultScripts); $this->assertPattern('/^<script[^<>]+>\s*' . str_replace('/', '\\/', preg_quote('//<![CDATA[')) . '\s*.+\s*' . str_replace('/', '\\/', preg_quote('//]]>')) . '\s*<\/script>$/', $result); $this->assertPattern('/^<script[^<>]+type="text\/javascript">.+' . str_replace('/', '\\/', preg_quote('Event.observe($(\'myId\'), \'click\', function(event) { something(); }, false);')) . '.+<\/script>$/s', $result); $this->assertPattern('/^<script[^<>]+type="text\/javascript"[^<>]*>/', $result); $this->assertNoPattern('/^<script[^type]=[^<>]*>/', $result); $result = $this->Javascript->getCache(); $this->assertTrue(empty($result)); } function testEscapeScript() { $result = $this->Javascript->escapeScript(''); $expected = ''; $this->assertEqual($result, $expected); $result = $this->Javascript->escapeScript('CakePHP' . "\n" . 'Rapid Development Framework'); $expected = 'CakePHP\\nRapid Development Framework'; $this->assertEqual($result, $expected); $result = $this->Javascript->escapeScript('CakePHP' . "\r\n" . 'Rapid Development Framework' . "\r" . 'For PHP'); $expected = 'CakePHP\\nRapid Development Framework\\nFor PHP'; $this->assertEqual($result, $expected); $result = $this->Javascript->escapeScript('CakePHP: "Rapid Development Framework"'); $expected = 'CakePHP: \\"Rapid Development Framework\\"'; $this->assertEqual($result, $expected); $result = $this->Javascript->escapeScript('CakePHP: \'Rapid Development Framework\''); $expected = 'CakePHP: \\\'Rapid Development Framework\\\''; $this->assertEqual($result, $expected); } function testEscapeString() { $result = $this->Javascript->escapeString(''); $expected = ''; $this->assertEqual($result, $expected); $result = $this->Javascript->escapeString('CakePHP' . "\n" . 'Rapid Development Framework'); $expected = 'CakePHP\\nRapid Development Framework'; $this->assertEqual($result, $expected); $result = $this->Javascript->escapeString('CakePHP' . "\r\n" . 'Rapid Development Framework' . "\r" . 'For PHP'); $expected = 'CakePHP\\nRapid Development Framework\\nFor PHP'; $this->assertEqual($result, $expected); $result = $this->Javascript->escapeString('CakePHP: "Rapid Development Framework"'); $expected = 'CakePHP: \\"Rapid Development Framework\\"'; $this->assertEqual($result, $expected); $result = $this->Javascript->escapeString('CakePHP: \'Rapid Development Framework\''); $expected = 'CakePHP: \\\'Rapid Development Framework\\\''; $this->assertEqual($result, $expected); } function testAfterRender() { $this->Javascript->cacheEvents(); $result = $this->Javascript->event('myId', 'click', 'something();'); $this->assertNull($result); ob_start(); $this->Javascript->afterRender(); $result = ob_get_clean(); $this->assertPattern('/^<script[^<>]+>\s*' . str_replace('/', '\\/', preg_quote('//<![CDATA[')) . '\s*.+\s*' . str_replace('/', '\\/', preg_quote('//]]>')) . '\s*<\/script>$/', $result); $this->assertPattern('/^<script[^<>]+type="text\/javascript">.+' . str_replace('/', '\\/', preg_quote('Event.observe($(\'myId\'), \'click\', function(event) { something(); }, false);')) . '.+<\/script>$/s', $result); $this->assertPattern('/^<script[^<>]+type="text\/javascript"[^<>]*>/', $result); $this->assertNoPattern('/^<script[^type]=[^<>]*>/', $result); $result = $this->Javascript->getCache(); $this->assertTrue(empty($result)); $old = $this->Javascript->enabled; $this->Javascript->enabled = false; $this->Javascript->cacheEvents(); $result = $this->Javascript->event('myId', 'click', 'something();'); $this->assertNull($result); ob_start(); $this->Javascript->afterRender(); $result = ob_get_clean(); $this->assertTrue(empty($result)); $result = $this->Javascript->getCache(); $this->assertPattern('/^' . str_replace('/', '\\/', preg_quote('Event.observe($(\'myId\'), \'click\', function(event) { something(); }, false);')) . '$/s', $result); $this->Javascript->enabled = $old; }}?>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -