Mercurial > hg > Members > shoshi > webvirt
diff cake/tests/cases/libs/class_registry.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/class_registry.test.php Sun Jul 24 21:08:31 2011 +0900 @@ -0,0 +1,325 @@ +<?php +/** + * ClassRegistryTest 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 + * @since CakePHP(tm) v 1.2.0.5432 + * @license http://www.opensource.org/licenses/opengroup.php The Open Group Test Suite License + */ +App::import('Core', 'ClassRegistry'); + +/** + * ClassRegisterModel class + * + * @package cake + * @subpackage cake.tests.cases.libs + */ +class ClassRegisterModel extends CakeTestModel { + +/** + * useTable property + * + * @var bool false + * @access public + */ + var $useTable = false; +} + +/** + * RegisterArticle class + * + * @package cake + * @subpackage cake.tests.cases.libs + */ +class RegisterArticle extends ClassRegisterModel { + +/** + * name property + * + * @var string 'RegisterArticle' + * @access public + */ + var $name = 'RegisterArticle'; +} + +/** + * RegisterArticleFeatured class + * + * @package cake + * @subpackage cake.tests.cases.libs + */ +class RegisterArticleFeatured extends ClassRegisterModel { + +/** + * name property + * + * @var string 'RegisterArticleFeatured' + * @access public + */ + var $name = 'RegisterArticleFeatured'; +} + +/** + * RegisterArticleTag class + * + * @package cake + * @subpackage cake.tests.cases.libs + */ +class RegisterArticleTag extends ClassRegisterModel { + +/** + * name property + * + * @var string 'RegisterArticleTag' + * @access public + */ + var $name = 'RegisterArticleTag'; +} + +/** + * RegistryPluginAppModel class + * + * @package cake + * @subpackage cake.tests.cases.libs + */ +class RegistryPluginAppModel extends ClassRegisterModel { + +/** + * tablePrefix property + * + * @var string 'something_' + * @access public + */ + var $tablePrefix = 'something_'; +} + +/** + * TestRegistryPluginModel class + * + * @package cake + * @subpackage cake.tests.cases.libs + */ +class TestRegistryPluginModel extends RegistryPluginAppModel { + +/** + * name property + * + * @var string 'TestRegistryPluginModel' + * @access public + */ + var $name = 'TestRegistryPluginModel'; +} + +/** + * RegisterCategory class + * + * @package cake + * @subpackage cake.tests.cases.libs + */ +class RegisterCategory extends ClassRegisterModel { + +/** + * name property + * + * @var string 'RegisterCategory' + * @access public + */ + var $name = 'RegisterCategory'; +} + +/** + * ClassRegistryTest class + * + * @package cake + * @subpackage cake.tests.cases.libs + */ +class ClassRegistryTest extends CakeTestCase { + +/** + * testAddModel method + * + * @access public + * @return void + */ + function testAddModel() { + if (PHP5) { + $Tag = ClassRegistry::init('RegisterArticleTag'); + } else { + $Tag =& ClassRegistry::init('RegisterArticleTag'); + } + $this->assertTrue(is_a($Tag, 'RegisterArticleTag')); + + $TagCopy = ClassRegistry::isKeySet('RegisterArticleTag'); + $this->assertTrue($TagCopy); + + $Tag->name = 'SomeNewName'; + + if (PHP5) { + $TagCopy = ClassRegistry::getObject('RegisterArticleTag'); + } else { + $TagCopy =& ClassRegistry::getObject('RegisterArticleTag'); + } + + $this->assertTrue(is_a($TagCopy, 'RegisterArticleTag')); + $this->assertIdentical($Tag, $TagCopy); + + if (PHP5) { + $NewTag = ClassRegistry::init(array('class' => 'RegisterArticleTag', 'alias' => 'NewTag')); + } else { + $NewTag =& ClassRegistry::init(array('class' => 'RegisterArticleTag', 'alias' => 'NewTag')); + } + $this->assertTrue(is_a($Tag, 'RegisterArticleTag')); + + if (PHP5) { + $NewTagCopy = ClassRegistry::init(array('class' => 'RegisterArticleTag', 'alias' => 'NewTag')); + } else { + $NewTagCopy =& ClassRegistry::init(array('class' => 'RegisterArticleTag', 'alias' => 'NewTag')); + } + + $this->assertNotIdentical($Tag, $NewTag); + $this->assertIdentical($NewTag, $NewTagCopy); + + $NewTag->name = 'SomeOtherName'; + $this->assertNotIdentical($Tag, $NewTag); + $this->assertIdentical($NewTag, $NewTagCopy); + + $Tag->name = 'SomeOtherName'; + $this->assertNotIdentical($Tag, $NewTag); + + $this->assertTrue($TagCopy->name === 'SomeOtherName'); + + if (PHP5) { + $User = ClassRegistry::init(array('class' => 'RegisterUser', 'alias' => 'User', 'table' => false)); + } else { + $User =& ClassRegistry::init(array('class' => 'RegisterUser', 'alias' => 'User', 'table' => false)); + } + $this->assertTrue(is_a($User, 'AppModel')); + + if (PHP5) { + $UserCopy = ClassRegistry::init(array('class' => 'RegisterUser', 'alias' => 'User', 'table' => false)); + } else { + $UserCopy =& ClassRegistry::init(array('class' => 'RegisterUser', 'alias' => 'User', 'table' => false)); + } + $this->assertTrue(is_a($UserCopy, 'AppModel')); + $this->assertIdentical($User, $UserCopy); + + if (PHP5) { + $Category = ClassRegistry::init(array('class' => 'RegisterCategory')); + } else { + $Category =& ClassRegistry::init(array('class' => 'RegisterCategory')); + } + $this->assertTrue(is_a($Category, 'RegisterCategory')); + + if (PHP5) { + $ParentCategory = ClassRegistry::init(array('class' => 'RegisterCategory', 'alias' => 'ParentCategory')); + } else { + $ParentCategory =& ClassRegistry::init(array('class' => 'RegisterCategory', 'alias' => 'ParentCategory')); + } + $this->assertTrue(is_a($ParentCategory, 'RegisterCategory')); + $this->assertNotIdentical($Category, $ParentCategory); + + $this->assertNotEqual($Category->alias, $ParentCategory->alias); + $this->assertEqual('RegisterCategory', $Category->alias); + $this->assertEqual('ParentCategory', $ParentCategory->alias); + } + +/** + * testClassRegistryFlush method + * + * @access public + * @return void + */ + function testClassRegistryFlush() { + $ArticleTag = ClassRegistry::getObject('RegisterArticleTag'); + $this->assertTrue(is_a($ArticleTag, 'RegisterArticleTag')); + ClassRegistry::flush(); + + $NoArticleTag = ClassRegistry::isKeySet('RegisterArticleTag'); + $this->assertFalse($NoArticleTag); + $this->assertTrue(is_a($ArticleTag, 'RegisterArticleTag')); + } + +/** + * testAddMultipleModels method + * + * @access public + * @return void + */ + function testAddMultipleModels() { + $Article = ClassRegistry::isKeySet('Article'); + $this->assertFalse($Article); + + $Featured = ClassRegistry::isKeySet('Featured'); + $this->assertFalse($Featured); + + $Tag = ClassRegistry::isKeySet('Tag'); + $this->assertFalse($Tag); + + $models = array(array('class' => 'RegisterArticle', 'alias' => 'Article'), + array('class' => 'RegisterArticleFeatured', 'alias' => 'Featured'), + array('class' => 'RegisterArticleTag', 'alias' => 'Tag')); + + $added = ClassRegistry::init($models); + $this->assertTrue($added); + + $Article = ClassRegistry::isKeySet('Article'); + $this->assertTrue($Article); + + $Featured = ClassRegistry::isKeySet('Featured'); + $this->assertTrue($Featured); + + $Tag = ClassRegistry::isKeySet('Tag'); + $this->assertTrue($Tag); + + $Article = ClassRegistry::getObject('Article'); + $this->assertTrue(is_a($Article, 'RegisterArticle')); + + $Featured = ClassRegistry::getObject('Featured'); + $this->assertTrue(is_a($Featured, 'RegisterArticleFeatured')); + + $Tag = ClassRegistry::getObject('Tag'); + $this->assertTrue(is_a($Tag, 'RegisterArticleTag')); + } + +/** + * testPluginAppModel method + * + * @access public + * @return void + */ + function testPluginAppModel() { + $TestRegistryPluginModel = ClassRegistry::isKeySet('TestRegistryPluginModel'); + $this->assertFalse($TestRegistryPluginModel); + + $TestRegistryPluginModel = ClassRegistry::init('RegistryPlugin.TestRegistryPluginModel'); + $this->assertTrue(is_a($TestRegistryPluginModel, 'TestRegistryPluginModel')); + + $this->assertEqual($TestRegistryPluginModel->tablePrefix, 'something_'); + + if (PHP5) { + $PluginUser = ClassRegistry::init(array('class' => 'RegistryPlugin.RegisterUser', 'alias' => 'RegistryPluginUser', 'table' => false)); + } else { + $PluginUser =& ClassRegistry::init(array('class' => 'RegistryPlugin.RegisterUser', 'alias' => 'RegistryPluginUser', 'table' => false)); + } + $this->assertTrue(is_a($PluginUser, 'RegistryPluginAppModel')); + + if (PHP5) { + $PluginUserCopy = ClassRegistry::getObject('RegistryPluginUser'); + } else { + $PluginUserCopy =& ClassRegistry::getObject('RegistryPluginUser'); + } + $this->assertTrue(is_a($PluginUserCopy, 'RegistryPluginAppModel')); + $this->assertIdentical($PluginUser, $PluginUserCopy); + } +}