Mercurial > hg > Members > shoshi > webvirt
diff cake/tests/cases/libs/view/helpers/xml.test.php @ 0:261e66bd5a0c
hg init
author | Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Sun, 24 Jul 2011 21:08:31 +0900 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/cake/tests/cases/libs/view/helpers/xml.test.php Sun Jul 24 21:08:31 2011 +0900 @@ -0,0 +1,298 @@ +<?php +/** + * XmlHelperTest file + * + * PHP versions 4 and 5 + * + * CakePHP(tm) Tests <http://book.cakephp.org/view/1196/Testing> + * Copyright 2005-2010, Cake Software Foundation, Inc. (http://cakefoundation.org) + * + * Licensed under The Open Group Test Suite License + * Redistributions of files must retain the above copyright notice. + * + * @copyright Copyright 2005-2010, Cake Software Foundation, Inc. (http://cakefoundation.org) + * @link http://book.cakephp.org/view/1196/Testing CakePHP(tm) Tests + * @package cake + * @subpackage cake.tests.cases.libs.view.helpers + * @since CakePHP(tm) v 1.2.0.4206 + * @license http://www.opensource.org/licenses/opengroup.php The Open Group Test Suite License + */ +if (!defined('CAKEPHP_UNIT_TEST_EXECUTION')) { + define('CAKEPHP_UNIT_TEST_EXECUTION', 1); +} +App::import('Helper', 'Xml'); + +/** + * TestXml class + * + * @package cake + * @subpackage cake.tests.cases.libs.view.helpers + */ +class TestXml extends Object { + +/** + * content property + * + * @var string '' + * @access public + */ + var $content = ''; + +/** + * construct method + * + * @param mixed $content + * @access private + * @return void + */ + function __construct($content) { + $this->content = $content; + } + +/** + * toString method + * + * @access public + * @return void + */ + function toString() { + return $this->content; + } +} + +/** + * XmlHelperTest class + * + * @package cake + * @subpackage cake.tests.cases.libs.view.helpers + */ +class XmlHelperTest extends CakeTestCase { + +/** + * setUp method + * + * @access public + * @return void + */ + function setUp() { + $this->Xml =& new XmlHelper(); + $this->Xml->beforeRender(); + $manager =& XmlManager::getInstance(); + $manager->namespaces = array(); + } + +/** + * tearDown method + * + * @access public + * @return void + */ + function tearDown() { + unset($this->Xml); + } + +/** + * testAddNamespace method + * + * @access public + * @return void + */ + function testAddNamespace() { + $this->Xml->addNs('custom', 'http://example.com/dtd.xml'); + $manager =& XmlManager::getInstance(); + + $expected = array('custom' => 'http://example.com/dtd.xml'); + $this->assertEqual($manager->namespaces, $expected); + } + +/** + * testRemoveNamespace method + * + * @access public + * @return void + */ + function testRemoveNamespace() { + $this->Xml->addNs('custom', 'http://example.com/dtd.xml'); + $this->Xml->addNs('custom2', 'http://example.com/dtd2.xml'); + $manager =& XmlManager::getInstance(); + + $expected = array('custom' => 'http://example.com/dtd.xml', 'custom2' => 'http://example.com/dtd2.xml'); + $this->assertEqual($manager->namespaces, $expected); + + $this->Xml->removeNs('custom'); + $expected = array('custom2' => 'http://example.com/dtd2.xml'); + $this->assertEqual($manager->namespaces, $expected); + } + +/** + * testRenderZeroElement method + * + * @access public + * @return void + */ + function testRenderZeroElement() { + $result = $this->Xml->elem('count', null, 0); + $expected = '<count>0</count>'; + $this->assertEqual($result, $expected); + + $result = $this->Xml->elem('count', null, array('cdata' => true, 'value' => null)); + $expected = '<count />'; + $this->assertEqual($result, $expected); + } + +/** + * testRenderElementWithNamespace method + * + * @access public + * @return void + */ + function testRenderElementWithNamespace() { + $result = $this->Xml->elem('count', array('namespace' => 'myNameSpace'), 'content'); + $expected = '<myNameSpace:count>content</myNameSpace:count>'; + $this->assertEqual($result, $expected); + + $result = $this->Xml->elem('count', array('namespace' => 'myNameSpace'), 'content', false); + $expected = '<myNameSpace:count>content'; + $this->assertEqual($result, $expected); + + $expected .= '</myNameSpace:count>'; + $result .= $this->Xml->closeElem(); + $this->assertEqual($result, $expected); + } + +/** + * testRenderElementWithComplexContent method + * + * @access public + * @return void + */ + function testRenderElementWithComplexContent() { + $result = $this->Xml->elem('count', array('namespace' => 'myNameSpace'), array('contrived' => 'content')); + $expected = '<myNameSpace:count><content /></myNameSpace:count>'; + $this->assertEqual($result, $expected); + + $result = $this->Xml->elem('count', array('namespace' => 'myNameSpace'), array('cdata' => true, 'value' => 'content')); + $expected = '<myNameSpace:count><![CDATA[content]]></myNameSpace:count>'; + $this->assertEqual($result, $expected); + } + +/** + * testSerialize method + * + * @access public + * @return void + */ + function testSerialize() { + $data = array( + 'test1' => 'test with no quotes', + 'test2' => 'test with "double quotes"' + ); + $result = $this->Xml->serialize($data); + $expected = '<std_class test1="test with no quotes" test2="test with "double quotes"" />'; + $this->assertIdentical($result, $expected); + + $data = array( + 'test1' => 'test with no quotes', + 'test2' => 'test without double quotes' + ); + $result = $this->Xml->serialize($data); + $expected = '<std_class test1="test with no quotes" test2="test without double quotes" />'; + $this->assertIdentical($result, $expected); + + $data = array( + 'ServiceDay' => array('ServiceTime' => array('ServiceTimePrice' => array('dollar' => 1, 'cents' => '2'))) + ); + $result = $this->Xml->serialize($data); + $expected = '<service_day><service_time><service_time_price dollar="1" cents="2" /></service_time></service_day>'; + $this->assertIdentical($result, $expected); + + $data = array( + 'ServiceDay' => array('ServiceTime' => array('ServiceTimePrice' => array('dollar' => 1, 'cents' => '2'))) + ); + $result = $this->Xml->serialize($data, array('format' => 'tags')); + $expected = '<service_day><service_time><service_time_price><dollar>1</dollar><cents>2</cents></service_time_price></service_time></service_day>'; + $this->assertIdentical($result, $expected); + + $data = array( + 'Pages' => array('id' => 2, 'url' => 'http://www.url.com/rb/153/?id=bbbb&t=access') + ); + $result = $this->Xml->serialize($data); + $expected = '<pages id="2" url="http://www.url.com/rb/153/?id=bbbb&t=access" />'; + $this->assertIdentical($result, $expected); + + $test = array( + 'Test' => array('test' => true) + ); + $expected = '<test test="1" />'; + $result = $this->Xml->serialize($test); + $this->assertidentical($expected, $result); + } + +/** + * testSerializeOnMultiDimensionalArray method + * + * @access public + * @return void + */ + function testSerializeOnMultiDimensionalArray() { + $data = array( + 'Statuses' => array( + array('Status' => array('id' => 1)), + array('Status' => array('id' => 2)) + ) + ); + $result = $this->Xml->serialize($data, array('format' => 'tags')); + $expected = '<statuses><status><id>1</id></status><status><id>2</id></status></statuses>'; + $this->assertIdentical($result, $expected); + + } + +/** + * testHeader method + * + * @access public + * @return void + */ + function testHeader() { + $expectedDefaultEncoding = Configure::read('App.encoding'); + if (empty($expectedDefaultEncoding)) { + $expectedDefaultEncoding = 'UTF-8'; + } + $attrib = array(); + $result = $this->Xml->header($attrib); + $expected = '<?xml version="1.0" encoding="'.$expectedDefaultEncoding.'" ?>'; + $this->assertIdentical($result, $expected); + + $attrib = array( + 'encoding' => 'UTF-8', + 'version' => '1.1' + ); + $result = $this->Xml->header($attrib); + $expected = '<?xml version="1.1" encoding="UTF-8" ?>'; + $this->assertIdentical($result, $expected); + + $attrib = array( + 'encoding' => 'UTF-8', + 'version' => '1.2', + 'additional' => 'attribute' + ); + $result = $this->Xml->header($attrib); + $expected = '<?xml version="1.2" encoding="UTF-8" additional="attribute" ?>'; + $this->assertIdentical($result, $expected); + + $attrib = 'encoding="UTF-8" someOther="value"'; + $result = $this->Xml->header($attrib); + $expected = '<?xml encoding="UTF-8" someOther="value" ?>'; + $this->assertIdentical($result, $expected); + } + +/** + * test that calling elem() and then header() doesn't break + * + * @return void + */ + function testElemThenHeader() { + $this->Xml->elem('test', array(), 'foo', false); + $this->assertPattern('/<\?xml/', $this->Xml->header()); + } +}