set.test.php

来自「Cake Framwork , Excellent」· PHP 代码 · 共 1,605 行 · 第 1/5 页

PHP
1,605
字号
	}/** * testClassicExtract method *  * @access public * @return void */	function testClassicExtract() {		$a = array(			array('Article' => array('id' => 1, 'title' => 'Article 1')),			array('Article' => array('id' => 2, 'title' => 'Article 2')),			array('Article' => array('id' => 3, 'title' => 'Article 3')));		$result = Set::extract($a, '{n}.Article.id');		$expected = array( 1, 2, 3 );		$this->assertIdentical($result, $expected);		$result = Set::extract($a, '{n}.Article.title');		$expected = array( 'Article 1', 'Article 2', 'Article 3' );		$this->assertIdentical($result, $expected);		$a = array(			array('Article' => array('id' => 1, 'title' => 'Article 1',				'User' => array('id' => 1, 'username' => 'mariano.iglesias'))),			array('Article' => array('id' => 2, 'title' => 'Article 2',				'User' => array('id' => 1, 'username' => 'mariano.iglesias'))),			array('Article' => array('id' => 3, 'title' => 'Article 3',				'User' => array('id' => 2, 'username' => 'phpnut'))));		$result = Set::extract($a, '{n}.Article.User.username');		$expected = array( 'mariano.iglesias', 'mariano.iglesias', 'phpnut' );		$this->assertIdentical($result, $expected);		$a = array(			array('Article' => array('id' => 1, 'title' => 'Article 1',				'Comment' => array(					array('id' => 10, 'title' => 'Comment 10'),					array('id' => 11, 'title' => 'Comment 11'),					array('id' => 12, 'title' => 'Comment 12')))),			array('Article' => array('id' => 2, 'title' => 'Article 2',				'Comment' => array(					array('id' => 13, 'title' => 'Comment 13'),					array('id' => 14, 'title' => 'Comment 14')))),			array('Article' => array('id' => 3, 'title' => 'Article 3')));		$result = Set::extract($a, '{n}.Article.Comment.{n}.id');		$expected = array (array(10, 11, 12), array(13, 14), null);		$this->assertIdentical($result, $expected);		$result = Set::extract($a, '{n}.Article.Comment.{n}.title');		$expected = array (array('Comment 10', 'Comment 11', 'Comment 12'), array('Comment 13', 'Comment 14'), null);		$this->assertIdentical($result, $expected);		$a = array(array('1day' => '20 sales'), array('1day' => '2 sales'));		$result = Set::extract($a, '{n}.1day');		$expected = array('20 sales', '2 sales');		$this->assertIdentical($result, $expected);    	$a = array(			'pages'     => array('name' => 'page'),			'fruites'   => array('name' => 'fruit'),			0           => array('name' => 'zero')		);		$result = Set::extract($a, '{s}.name');		$expected = array('page','fruit');		$this->assertIdentical($result, $expected);		$a = array(			0 => array('pages' => array('name' => 'page')),			1 => array('fruites'=> array('name' => 'fruit')),			'test' => array(array('name' => 'jippi')),			'dot.test' => array(array('name' => 'jippi'))		);		$result = Set::extract($a, '{n}.{s}.name');		$expected = array(0 => array('page'), 1 => array('fruit'));		$this->assertIdentical($result, $expected);		$result = Set::extract($a, '{s}.{n}.name');		$expected = array(array('jippi'), array('jippi'));		$this->assertIdentical($result, $expected);		$result = Set::extract($a,'{\w+}.{\w+}.name');		$expected = array(array('pages' => 'page'), array('fruites' => 'fruit'), 'test' => array('jippi'), 'dot.test' => array('jippi'));		$this->assertIdentical($result, $expected);		$result = Set::extract($a,'{\d+}.{\w+}.name');		$expected = array(array('pages' => 'page'), array('fruites' => 'fruit'));		$this->assertIdentical($result, $expected);		$result = Set::extract($a,'{n}.{\w+}.name');    	$expected = array(array('pages' => 'page'), array('fruites' => 'fruit'));		$this->assertIdentical($result, $expected);		$result = Set::extract($a,'{s}.{\d+}.name');		$expected = array(array('jippi'), array('jippi'));		$this->assertIdentical($result, $expected);		$result = Set::extract($a,'{s}');		$expected = array(array(array('name' => 'jippi')), array(array('name' => 'jippi')));		$this->assertIdentical($result, $expected);		$result = Set::extract($a,'{[a-z]}');		$expected = array('test' => array(array('name' => 'jippi')), 'dot.test' => array(array('name' => 'jippi')));		$this->assertIdentical($result, $expected);		$result = Set::extract($a, '{dot\.test}.{n}');		$expected = array('dot.test' => array(array('name' => 'jippi')));		$this->assertIdentical($result, $expected);	}/** * testCheck method *  * @access public * @return void */	function testCheck() {		$set = new Set(array(			'My Index 1' => array('First' => 'The first item')		));		$this->assertTrue($set->check('My Index 1.First'));		$set = new Set(array(			'My Index 1' => array('First' => array('Second' => array('Third' => array('Fourth' => 'Heavy. Nesting.'))))		));		$this->assertTrue($set->check('My Index 1.First.Second'));		$this->assertTrue($set->check('My Index 1.First.Second.Third'));		$this->assertTrue($set->check('My Index 1.First.Second.Third.Fourth'));	}/** * testWritingWithFunkyKeys method *  * @access public * @return void */	function testWritingWithFunkyKeys() {		$set = new Set();		$set->insert('Session Test', "test");		$this->assertEqual($set->extract('Session Test'), 'test');		$set->remove('Session Test');		$this->assertFalse($set->check('Session Test'));		$this->assertTrue($set->insert('Session Test.Test Case', "test"));		$this->assertTrue($set->check('Session Test.Test Case'));	}/** * testCombine method *  * @access public * @return void */	function testCombine() {	    $result = Set::combine(array(), '{n}.User.id', '{n}.User.Data');	    $this->assertFalse($result);	    $result = Set::combine('', '{n}.User.id', '{n}.User.Data');	    $this->assertFalse($result);	    		$a = array(			array('User' => array('id' => 2, 'group_id' => 1,				'Data' => array('user' => 'mariano.iglesias','name' => 'Mariano Iglesias'))),			array('User' => array('id' => 14, 'group_id' => 2,				'Data' => array('user' => 'phpnut', 'name' => 'Larry E. Masters'))),			array('User' => array('id' => 25, 'group_id' => 1,				'Data' => array('user' => 'gwoo','name' => 'The Gwoo'))));		$result = Set::combine($a, '{n}.User.id');		$expected = array(2 => null, 14 => null, 25 => null);		$this->assertIdentical($result, $expected);		$result = Set::combine($a, '{n}.User.id', '{n}.User.non-existant');		$expected = array(2 => null, 14 => null, 25 => null);		$this->assertIdentical($result, $expected);		$result = Set::combine($a, '{n}.User.id', '{n}.User.Data');		$expected = array(			2 => array('user' => 'mariano.iglesias',	'name' => 'Mariano Iglesias'),			14 => array('user' => 'phpnut',	'name' => 'Larry E. Masters'),			25 => array('user' => 'gwoo',	'name' => 'The Gwoo'));		$this->assertIdentical($result, $expected);		$result = Set::combine($a, '{n}.User.id', '{n}.User.Data.name');		$expected = array(			2 => 'Mariano Iglesias',			14 => 'Larry E. Masters',			25 => 'The Gwoo');		$this->assertIdentical($result, $expected);		$result = Set::combine($a, '{n}.User.id', '{n}.User.Data', '{n}.User.group_id');		$expected = array(			1 => array(				2 => array('user' => 'mariano.iglesias', 'name' => 'Mariano Iglesias'),				25 => array('user' => 'gwoo', 'name' => 'The Gwoo')),			2 => array(				14 => array('user' => 'phpnut', 'name' => 'Larry E. Masters')));		$this->assertIdentical($result, $expected);		$result = Set::combine($a, '{n}.User.id', '{n}.User.Data.name', '{n}.User.group_id');		$expected = array(			1 => array(				2 => 'Mariano Iglesias',				25 => 'The Gwoo'),			2 => array(				14 => 'Larry E. Masters'));		$this->assertIdentical($result, $expected);		$Set =& new Set($a);		$result = $Set->combine('{n}.User.id');		$expected = array(2 => null, 14 => null, 25 => null);		$this->assertIdentical($result, $expected);		$result = $Set->combine('{n}.User.id', '{n}.User.Data');		$expected = array(			2 => array('user' => 'mariano.iglesias', 'name' => 'Mariano Iglesias'),			14 => array('user' => 'phpnut', 'name' => 'Larry E. Masters'),			25 => array('user' => 'gwoo', 'name' => 'The Gwoo'));		$this->assertIdentical($result, $expected);		$result = $Set->combine('{n}.User.id', '{n}.User.Data.name');		$expected = array(2 => 'Mariano Iglesias', 14 => 'Larry E. Masters', 25 => 'The Gwoo');		$this->assertIdentical($result, $expected);		$result = $Set->combine('{n}.User.id', '{n}.User.Data', '{n}.User.group_id');		$expected = array(			1 => array(				2 => array('user' => 'mariano.iglesias', 'name' => 'Mariano Iglesias'),				25 => array('user' => 'gwoo', 'name' => 'The Gwoo')),			2 => array(				14 => array('user' => 'phpnut', 'name' => 'Larry E. Masters')));		$this->assertIdentical($result, $expected);		$result = $Set->combine('{n}.User.id', '{n}.User.Data.name', '{n}.User.group_id');		$expected = array(			1 => array(				2 => 'Mariano Iglesias',				25 => 'The Gwoo'),			2 => array(				14 => 'Larry E. Masters'));		$this->assertIdentical($result, $expected);		$result = Set::combine($a, '{n}.User.id', array('{0}: {1}', '{n}.User.Data.user', '{n}.User.Data.name'), '{n}.User.group_id');		$expected = array (			1 => array (				2 => 'mariano.iglesias: Mariano Iglesias',				25 => 'gwoo: The Gwoo'),			2 => array (14 => 'phpnut: Larry E. Masters'));		$this->assertIdentical($result, $expected);		$result = Set::combine($a, array('{0}: {1}', '{n}.User.Data.user', '{n}.User.Data.name'), '{n}.User.id');		$expected = array('mariano.iglesias: Mariano Iglesias' => 2, 'phpnut: Larry E. Masters' => 14, 'gwoo: The Gwoo' => 25);		$this->assertIdentical($result, $expected);		$result = Set::combine($a, array('{1}: {0}', '{n}.User.Data.user', '{n}.User.Data.name'), '{n}.User.id');		$expected = array('Mariano Iglesias: mariano.iglesias' => 2, 'Larry E. Masters: phpnut' => 14, 'The Gwoo: gwoo' => 25);		$this->assertIdentical($result, $expected);		$result = Set::combine($a, array('%1$s: %2$d', '{n}.User.Data.user', '{n}.User.id'), '{n}.User.Data.name');		$expected = array('mariano.iglesias: 2' => 'Mariano Iglesias', 'phpnut: 14' => 'Larry E. Masters', 'gwoo: 25' => 'The Gwoo');		$this->assertIdentical($result, $expected);		$result = Set::combine($a, array('%2$d: %1$s', '{n}.User.Data.user', '{n}.User.id'), '{n}.User.Data.name');		$expected = array('2: mariano.iglesias' => 'Mariano Iglesias', '14: phpnut' => 'Larry E. Masters', '25: gwoo' => 'The Gwoo');		$this->assertIdentical($result, $expected);	}/** * testMapReverse method *  * @access public * @return void */	function testMapReverse() {		$result = Set::reverse(null);		$this->assertEqual($result, null);		$result = Set::reverse(false);		$this->assertEqual($result, false);		$expected = array(		'Array1' => array(				'Array1Data1' => 'Array1Data1 value 1', 'Array1Data2' => 'Array1Data2 value 2'),		'Array2' => array(				0 => array('Array2Data1' => 1, 'Array2Data2' => 'Array2Data2 value 2', 'Array2Data3' => 'Array2Data3 value 2', 'Array2Data4' => 'Array2Data4 value 4'),				1 => array('Array2Data1' => 2, 'Array2Data2' => 'Array2Data2 value 2', 'Array2Data3' => 'Array2Data3 value 2', 'Array2Data4' => 'Array2Data4 value 4'),				2 => array('Array2Data1' => 3, 'Array2Data2' => 'Array2Data2 value 2', 'Array2Data3' => 'Array2Data3 value 2', 'Array2Data4' => 'Array2Data4 value 4'),				3 => array('Array2Data1' => 4, 'Array2Data2' => 'Array2Data2 value 2', 'Array2Data3' => 'Array2Data3 value 2', 'Array2Data4' => 'Array2Data4 value 4'),				4 => array('Array2Data1' => 5, 'Array2Data2' => 'Array2Data2 value 2', 'Array2Data3' => 'Array2Data3 value 2', 'Array2Data4' => 'Array2Data4 value 4')),		'Array3' => array(				0 => array('Array3Data1' => 1, 'Array3Data2' => 'Array3Data2 value 2', 'Array3Data3' => 'Array3Data3 value 2', 'Array3Data4' => 'Array3Data4 value 4'),				1 => array('Array3Data1' => 2, 'Array3Data2' => 'Array3Data2 value 2', 'Array3Data3' => 'Array3Data3 value 2', 'Array3Data4' => 'Array3Data4 value 4'),				2 => array('Array3Data1' => 3, 'Array3Data2' => 'Array3Data2 value 2', 'Array3Data3' => 'Array3Data3 value 2', 'Array3Data4' => 'Array3Data4 value 4'),				3 => array('Array3Data1' => 4, 'Array3Data2' => 'Array3Data2 value 2', 'Array3Data3' => 'Array3Data3 value 2', 'Array3Data4' => 'Array3Data4 value 4'),				4 => array('Array3Data1' => 5, 'Array3Data2' => 'Array3Data2 value 2', 'Array3Data3' => 'Array3Data3 value 2', 'Array3Data4' => 'Array3Data4 value 4')));		$map = Set::map($expected, true);		$this->assertEqual($map->Array1->Array1Data1, $expected['Array1']['Array1Data1']);		$this->assertEqual($map->Array2[0]->Array2Data1, $expected['Array2'][0]['Array2Data1']);		$result = Set::reverse($map);		$this->assertIdentical($result, $expected);		$expected = array(			'Post' => array('id'=> 1, 'title' => 'First Post'),			'Comment' => array(				array('id'=> 1, 'title' => 'First Comment'),				array('id'=> 2, 'title' => 'Second Comment')			),			'Tag' => array(				array('id'=> 1, 'title' => 'First Tag'),				array('id'=> 2, 'title' => 'Second Tag')			),		);		$map = Set::map($expected);		$this->assertIdentical($map->title, $expected['Post']['title']);		foreach ($map->Comment as $comment) {			$ids[] = $comment->id;		}		$this->assertIdentical($ids, array(1, 2));		$expected = array(		'Array1' => array(				'Array1Data1' => 'Array1Data1 value 1', 'Array1Data2' => 'Array1Data2 value 2', 'Array1Data3' => 'Array1Data3 value 3','Array1Data4' => 'Array1Data4 value 4',				'Array1Data5' => 'Array1Data5 value 5', 'Array1Data6' => 'Array1Data6 value 6', 'Array1Data7' => 'Array1Data7 value 7', 'Array1Data8' => 'Array1Data8 value 8'),

⌨️ 快捷键说明

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