⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tree.test.php

📁 Cake Framwork , Excellent
💻 PHP
📖 第 1 页 / 共 3 页
字号:
<?php/* SVN FILE: $Id: tree.test.php 7118 2008-06-04 20:49:29Z gwoo $ *//** * Short description for file. * * Long description for file * * PHP versions 4 and 5 * * CakePHP(tm) Tests <https://trac.cakephp.org/wiki/Developement/TestSuite> * Copyright 2005-2008, Cake Software Foundation, Inc. *								1785 E. Sahara Avenue, Suite 490-204 *								Las Vegas, Nevada 89104 * *  Licensed under The Open Group Test Suite License *  Redistributions of files must retain the above copyright notice. * * @filesource * @copyright		Copyright 2005-2008, Cake Software Foundation, Inc. * @link				https://trac.cakephp.org/wiki/Developement/TestSuite CakePHP(tm) Tests * @package			cake.tests * @subpackage		cake.tests.cases.libs.model.behaviors * @since			CakePHP(tm) v 1.2.0.5330 * @version			$Revision: 7118 $ * @modifiedby		$LastChangedBy: gwoo $ * @lastmodified	$Date: 2008-06-04 13:49:29 -0700 (Wed, 04 Jun 2008) $ * @license			http://www.opensource.org/licenses/opengroup.php The Open Group Test Suite License *//** * Short description for file * * Long description for file * * @package		cake * @subpackage	cake.tests.cases.libs.model.behaviors */class NumberTree extends CakeTestModel {/** * name property *  * @var string 'NumberTree' * @access public */	var $name = 'NumberTree';/** * actsAs property *  * @var array * @access public */	var $actsAs = array('Tree');/** * initialize method *  * @param int $levelLimit  * @param int $childLimit  * @param mixed $currentLevel  * @param mixed $parent_id  * @param string $prefix  * @param bool $hierachial  * @access public * @return void */	function initialize($levelLimit = 3, $childLimit = 3, $currentLevel = null, $parent_id = null, $prefix = '1', $hierachial = true) {		if (!$parent_id) {			$this->deleteAll(true);			$this->save(array($this->name => array('name' => '1. Root')));			$this->initialize($levelLimit, $childLimit, 1, $this->id, '1', $hierachial);			$this->create(array());		}		if (!$currentLevel || $currentLevel > $levelLimit) {			return;		}		for ($i = 1; $i <= $childLimit; $i++) {			$name = $prefix . '.' . $i;			$data = array($this->name => array('name' => $name));			$this->create($data);			if ($hierachial) {				$data[$this->name]['parent_id'] = $parent_id;			}			$this->save($data);			$this->initialize($levelLimit, $childLimit, $currentLevel + 1, $this->id, $name, $hierachial);		}	}}/** * FlagTree class *  * @package              cake * @subpackage           cake.tests.cases.libs.model.behaviors */class FlagTree extends NumberTree {/** * name property *  * @var string 'FlagTree' * @access public */	var $name = 'FlagTree';}/** * Campaign class *  * @package              cake * @subpackage           cake.tests.cases.libs.model.behaviors */class Campaign extends CakeTestModel {/** * name property *  * @var string 'Campaign' * @access public */	var $name = 'Campaign';/** * hasMany property *  * @var array * @access public */	var $hasMany = array('Ad' => array('fields' => array('id','campaign_id','name') ));}/** * Ad class *  * @package              cake * @subpackage           cake.tests.cases.libs.model.behaviors */class Ad extends CakeTestModel {/** * name property *  * @var string 'Ad' * @access public */	var $name = 'Ad';/** * actsAs property *  * @var array * @access public */	var $actsAs = array('Tree');/** * belongsTo property *  * @var array * @access public */	var $belongsTo = array('Campaign' );}/** * NumberTreeCase class *  * @package              cake * @subpackage           cake.tests.cases.libs.model.behaviors */class NumberTreeCase extends CakeTestCase {/** * fixtures property *  * @var array * @access public */	var $fixtures = array('core.number_tree', 'core.flag_tree', 'core.campaign','core.ad');/** * testInitialize method *  * @access public * @return void */	function testInitialize() {		$this->NumberTree =& new NumberTree();		$this->NumberTree->initialize(2, 2);			$result = $this->NumberTree->find('count');		$this->assertEqual($result, 7);			$validTree = $this->NumberTree->verify();		$this->assertIdentical($validTree, true);	}/** * testStringScope method *  * @access public * @return void */	function testStringScope() {		$this->FlagTree =& new FlagTree();		$this->FlagTree->initialize(2, 3);		$this->FlagTree->id = 1;		$this->FlagTree->saveField('flag', 1);		$this->FlagTree->id = 2;		$this->FlagTree->saveField('flag', 1);		$result = $this->FlagTree->children();		$expected = array(			array('FlagTree' => array('id' => '3', 'name' => '1.1.1', 'parent_id' => '2', 'lft' => '3', 'rght' => '4', 'flag' => '0')),			array('FlagTree' => array('id' => '4', 'name' => '1.1.2', 'parent_id' => '2', 'lft' => '5', 'rght' => '6', 'flag' => '0')),			array('FlagTree' => array('id' => '5', 'name' => '1.1.3', 'parent_id' => '2', 'lft' => '7', 'rght' => '8', 'flag' => '0'))		);		$this->assertEqual($result, $expected);		$this->FlagTree->Behaviors->attach('Tree', array('scope' => 'FlagTree.flag = 1'));		$this->assertEqual($this->FlagTree->children(), array());		$this->FlagTree->id = 1;		$this->FlagTree->Behaviors->attach('Tree', array('scope' => 'FlagTree.flag = 1'));		$result = $this->FlagTree->children();		$expected = array(array('FlagTree' => array('id' => '2', 'name' => '1.1', 'parent_id' => '1', 'lft' => '2', 'rght' => '9', 'flag' => '1')));		$this->assertEqual($result, $expected);		$this->assertTrue($this->FlagTree->delete());		$this->assertEqual($this->FlagTree->find('count'), 11);	}/** * testArrayScope method *  * @access public * @return void */	function testArrayScope() {		$this->FlagTree =& new FlagTree();		$this->FlagTree->initialize(2, 3);		$this->FlagTree->id = 1;		$this->FlagTree->saveField('flag', 1);		$this->FlagTree->id = 2;		$this->FlagTree->saveField('flag', 1);		$result = $this->FlagTree->children();		$expected = array(			array('FlagTree' => array('id' => '3', 'name' => '1.1.1', 'parent_id' => '2', 'lft' => '3', 'rght' => '4', 'flag' => '0')),			array('FlagTree' => array('id' => '4', 'name' => '1.1.2', 'parent_id' => '2', 'lft' => '5', 'rght' => '6', 'flag' => '0')),			array('FlagTree' => array('id' => '5', 'name' => '1.1.3', 'parent_id' => '2', 'lft' => '7', 'rght' => '8', 'flag' => '0'))		);		$this->assertEqual($result, $expected);		$this->FlagTree->Behaviors->attach('Tree', array('scope' => array('FlagTree.flag' => 1)));		$this->assertEqual($this->FlagTree->children(), array());		$this->FlagTree->id = 1;		$this->FlagTree->Behaviors->attach('Tree', array('scope' => array('FlagTree.flag' => 1)));		$result = $this->FlagTree->children();		$expected = array(array('FlagTree' => array('id' => '2', 'name' => '1.1', 'parent_id' => '1', 'lft' => '2', 'rght' => '9', 'flag' => '1')));		$this->assertEqual($result, $expected);		$this->assertTrue($this->FlagTree->delete());		$this->assertEqual($this->FlagTree->find('count'), 11);	}/** * testDetectInvalidLeft method *  * @access public * @return void */	function testDetectInvalidLeft() {		$this->NumberTree =& new NumberTree();		$this->NumberTree->initialize(2, 2);		$result = $this->NumberTree->findByName('1.1');		$save['NumberTree']['id'] = $result['NumberTree']['id'];		$save['NumberTree']['lft'] = 0;		$this->NumberTree->save($save);		$result = $this->NumberTree->verify();		$this->assertNotIdentical($result, true);		$result = $this->NumberTree->recover();		$this->assertIdentical($result, true);		$result = $this->NumberTree->verify();		$this->assertIdentical($result, true);	}/** * testDetectInvalidRight method *  * @access public * @return void */	function testDetectInvalidRight() {		$this->NumberTree =& new NumberTree();		$this->NumberTree->initialize(2, 2);		$result = $this->NumberTree->findByName('1.1');		$save['NumberTree']['id'] = $result['NumberTree']['id'];		$save['NumberTree']['rght'] = 0;		$this->NumberTree->save($save);		$result = $this->NumberTree->verify();		$this->assertNotIdentical($result, true);		$result = $this->NumberTree->recover();		$this->assertIdentical($result, true);		$result = $this->NumberTree->verify();		$this->assertIdentical($result, true);	}/** * testDetectInvalidParent method *  * @access public * @return void */	function testDetectInvalidParent() {		$this->NumberTree =& new NumberTree();		$this->NumberTree->initialize(2, 2);		$result = $this->NumberTree->findByName('1.1');		// Bypass behavior and any other logic		$this->NumberTree->updateAll(array('parent_id' => null), array('id' => $result['NumberTree']['id']));		$result = $this->NumberTree->verify();		$this->assertNotIdentical($result, true);		$result = $this->NumberTree->recover();		$this->assertIdentical($result, true);		$result = $this->NumberTree->verify();		$this->assertIdentical($result, true);	}/** * testDetectNoneExistantParent method *  * @access public * @return void */	function testDetectNoneExistantParent() {		$this->NumberTree =& new NumberTree();		$this->NumberTree->initialize(2, 2);		$result = $this->NumberTree->findByName('1.1');		$this->NumberTree->updateAll(array('parent_id' => 999999), array('id' => $result['NumberTree']['id']));		$result = $this->NumberTree->verify();		$this->assertNotIdentical($result, true);		$result = $this->NumberTree->recover('MPTT');		$this->assertIdentical($result, true);		$result = $this->NumberTree->verify();		$this->assertIdentical($result, true);	}/** * testRecoverFromMissingParent method *  * @access public * @return void */	function testRecoverFromMissingParent() {		$this->NumberTree =& new NumberTree();		$this->NumberTree->initialize(2, 2);		$result = $this->NumberTree->findByName('1.1');		$this->NumberTree->updateAll(array('parent_id' => 999999), array('id' => $result['NumberTree']['id']));		$result = $this->NumberTree->verify();		$this->assertNotIdentical($result, true);		$result = $this->NumberTree->recover();		$this->assertIdentical($result, true);		$result = $this->NumberTree->verify();		$this->assertIdentical($result, true);	}/** * testDetectInvalidParents method *  * @access public * @return void */	function testDetectInvalidParents() {		$this->NumberTree =& new NumberTree();		$this->NumberTree->initialize(2, 2);		$this->NumberTree->updateAll(array('parent_id' => null));		$result = $this->NumberTree->verify();		$this->assertNotIdentical($result, true);		$result = $this->NumberTree->recover();		$this->assertIdentical($result, true);		$result = $this->NumberTree->verify();		$this->assertIdentical($result, true);	}/** * testDetectInvalidLftsRghts method *  * @access public * @return void */	function testDetectInvalidLftsRghts() {		$this->NumberTree =& new NumberTree();		$this->NumberTree->initialize(2, 2);		$this->NumberTree->updateAll(array('lft' => 0, 'rght' => 0));

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -