set.test.php

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

PHP
1,605
字号
		$a = Set::sort($a, '{n}.Person.name', 'asc');		$this->assertIdentical($a, $b);	}/** * testExtract method *  * @access public * @return void */	function testExtract() {		$a = array(			array(				'Article' => array('id' => '1', 'user_id' => '1', 'title' => 'First Article', 'body' => 'First Article Body', 'published' => 'Y', 'created' => '2007-03-18 10:39:23', 'updated' => '2007-03-18 10:41:31'),				'User' => array('id' => '1', 'user' => 'mariano', 'password' => '5f4dcc3b5aa765d61d8327deb882cf99', 'created' => '2007-03-17 01:16:23', 'updated' => '2007-03-17 01:18:31'),				'Comment' => array(					array('id' => '1', 'article_id' => '1', 'user_id' => '2', 'comment' => 'First Comment for First Article', 'published' => 'Y', 'created' => '2007-03-18 10:45:23', 'updated' => '2007-03-18 10:47:31'),					array('id' => '2', 'article_id' => '1', 'user_id' => '4', 'comment' => 'Second Comment for First Article', 'published' => 'Y', 'created' => '2007-03-18 10:47:23', 'updated' => '2007-03-18 10:49:31'),				),				'Tag' => array(					array('id' => '1', 'tag' => 'tag1', 'created' => '2007-03-18 12:22:23', 'updated' => '2007-03-18 12:24:31'),					array('id' => '2', 'tag' => 'tag2', 'created' => '2007-03-18 12:24:23', 'updated' => '2007-03-18 12:26:31')				),				'Deep' => array(					'Nesting' => array(						'test' => array(							1 => 'foo',							2 => array(								'and' => array('more' => 'stuff')							)						)					)				)			),			array(				'Article' => array('id' => '3', 'user_id' => '1', 'title' => 'Third Article', 'body' => 'Third Article Body', 'published' => 'Y', 'created' => '2007-03-18 10:43:23', 'updated' => '2007-03-18 10:45:31'),				'User' => array('id' => '2', 'user' => 'mariano', 'password' => '5f4dcc3b5aa765d61d8327deb882cf99', 'created' => '2007-03-17 01:16:23', 'updated' => '2007-03-17 01:18:31'),				'Comment' => array(),				'Tag' => array()			),			array(				'Article' => array('id' => '3', 'user_id' => '1', 'title' => 'Third Article', 'body' => 'Third Article Body', 'published' => 'Y', 'created' => '2007-03-18 10:43:23', 'updated' => '2007-03-18 10:45:31'),				'User' => array('id' => '3', 'user' => 'mariano', 'password' => '5f4dcc3b5aa765d61d8327deb882cf99', 'created' => '2007-03-17 01:16:23', 'updated' => '2007-03-17 01:18:31'),				'Comment' => array(),				'Tag' => array()			),			array(				'Article' => array('id' => '3', 'user_id' => '1', 'title' => 'Third Article', 'body' => 'Third Article Body', 'published' => 'Y', 'created' => '2007-03-18 10:43:23', 'updated' => '2007-03-18 10:45:31'),				'User' => array('id' => '4', 'user' => 'mariano', 'password' => '5f4dcc3b5aa765d61d8327deb882cf99', 'created' => '2007-03-17 01:16:23', 'updated' => '2007-03-17 01:18:31'),				'Comment' => array(),				'Tag' => array()			),			array(				'Article' => array('id' => '3', 'user_id' => '1', 'title' => 'Third Article', 'body' => 'Third Article Body', 'published' => 'Y', 'created' => '2007-03-18 10:43:23', 'updated' => '2007-03-18 10:45:31'),				'User' => array('id' => '5', 'user' => 'mariano', 'password' => '5f4dcc3b5aa765d61d8327deb882cf99', 'created' => '2007-03-17 01:16:23', 'updated' => '2007-03-17 01:18:31'),				'Comment' => array(),				'Tag' => array()			)		);		$b = array('Deep' => $a[0]['Deep']);		$c = array(			array(				'a' => array(					'I' => array(						'a' => 1					)				)			),			array(				'a' => array(					2				)			),			array(				'a' => array(					'II' => array(						'a' => 3,						'III' => array(							'a' => array('foo' => 4)						)					)				)			),		);		$expected = array(			$c[0], $c[0]['a']['I'], $c[1], $c[2], array('a' => $c[2]['a']['II']['a']), $c[2]['a']['II']['III']		);		$expected = array(1,2,3,4,5);		$r = Set::extract('/User/id', $a);		$this->assertEqual($r, $expected);		$expected = array(array('id' => 1), array('id' => 2), array('id' => 3), array('id' => 4), array('id' => 5));		$r = Set::extract('/User/id', $a, array('flatten' => false));		$this->assertEqual($r, $expected);		$expected = array(array('test' => $a[0]['Deep']['Nesting']['test']));		$this->assertEqual(Set::extract('/Deep/Nesting/test', $a), $expected);		$this->assertEqual(Set::extract('/Deep/Nesting/test', $b), $expected);		$expected = array(array('test' => $a[0]['Deep']['Nesting']['test']));		$r = Set::extract('/Deep/Nesting/test/1/..', $a);		$this->assertEqual($r, $expected);		$expected = array(array('test' => $a[0]['Deep']['Nesting']['test']));		$r = Set::extract('/Deep/Nesting/test/2/and/../..', $a);		$this->assertEqual($r, $expected);		$expected = array(array('test' => $a[0]['Deep']['Nesting']['test']));		$r = Set::extract('/Deep/Nesting/test/2/../../../Nesting/test/2/..', $a);		$this->assertEqual($r, $expected);		$expected = array(2);		$r = Set::extract('/User[2]/id', $a);		$this->assertEqual($r, $expected);		$expected = array(4, 5);		$r = Set::extract('/User[id>3]/id', $a);		$this->assertEqual($r, $expected);		$expected = array(2, 3);		$r = Set::extract('/User[id>1][id<=3]/id', $a);		$this->assertEqual($r, $expected);		$expected = array(array('I'), array('II'));		$r = Set::extract('/a/@*', $c);		$this->assertEqual($r, $expected);		$single = array(			'User' => array(				'id' => 4,				'name' => 'Neo',			)		);		$tricky = array(			0 => array(				'User' => array(					'id' => 1,					'name' => 'John',				)			),			1 => array(				'User' => array(					'id' => 2,					'name' => 'Bob',				)			),			2 => array(				'User' => array(					'id' => 3,					'name' => 'Tony',				)			),			'User' => array(				'id' => 4,				'name' => 'Neo',			)		);		$expected = array(1, 2, 3, 4);		$r = Set::extract('/User/id', $tricky);		$this->assertEqual($r, $expected);		$expected = array(4);		$r = Set::extract('/User/id', $single);		$this->assertEqual($r, $expected);		$expected = array(1, 3);		$r = Set::extract('/User[name=/n/]/id', $tricky);		$this->assertEqual($r, $expected);		$expected = array(4);		$r = Set::extract('/User[name=/N/]/id', $tricky);		$this->assertEqual($r, $expected);		$expected = array(1, 3, 4);		$r = Set::extract('/User[name=/N/i]/id', $tricky);		$this->assertEqual($r, $expected);		$expected = array(array('id', 'name'), array('id', 'name'), array('id', 'name'), array('id', 'name'));		$r = Set::extract('/User/@*', $tricky);		$this->assertEqual($r, $expected);		$common = array(			array(				'Article' => array(					'id' => 1,					'name' => 'Article 1',				),				'Comment' => array(					array(						'id' => 1,						'user_id' => 5,						'article_id' => 1,						'text' => 'Comment 1',					),					array(						'id' => 2,						'user_id' => 23,						'article_id' => 1,						'text' => 'Comment 2',					),					array(						'id' => 3,						'user_id' => 17,						'article_id' => 1,						'text' => 'Comment 3',					),				),			),			array(				'Article' => array(					'id' => 2,					'name' => 'Article 2',				),				'Comment' => array(					array(						'id' => 4,						'user_id' => 2,						'article_id' => 2,						'text' => 'Comment 4',						'addition' => '',					),					array(						'id' => 5,						'user_id' => 23,						'article_id' => 2,						'text' => 'Comment 5',						'addition' => 'foo',					),				),			),			array(				'Article' => array(					'id' => 3,					'name' => 'Article 3',				),				'Comment' => array(),			)		);		$r = Set::extract('/Comment/id', $common);		$expected = array(1, 2, 3, 4, 5);		$this->assertEqual($r, $expected);		$expected = array(1, 2, 4, 5);		$r = Set::extract('/Comment[id!=3]/id', $common);		$this->assertEqual($r, $expected);		$r = Set::extract('/', $common);		$this->assertEqual($r, $common);		$expected = array(1, 2, 4, 5);		$r = Set::extract($common, '/Comment[id!=3]/id');		$this->assertEqual($r, $expected);		$expected = array($common[0]['Comment'][2]);		$r = Set::extract($common, '/Comment/2');		$this->assertEqual($r, $expected);		$expected = array($common[0]['Comment'][0]);		$r = Set::extract($common, '/Comment[1]/.[id=1]');		$this->assertEqual($r, $expected);		$expected = array($common[1]['Comment'][1]);		$r = Set::extract($common, '/1/Comment/.[2]');		$this->assertEqual($r, $expected);		$expected = array();		$r = Set::extract('/User/id', array());		$this->assertEqual($r, $expected);		$expected = array(5);		$r = Set::extract('/Comment/id[:last]', $common);		$this->assertEqual($r, $expected);		$expected = array(1);		$r = Set::extract('/Comment/id[:first]', $common);		$this->assertEqual($r, $expected);		$expected = array(3);		$r = Set::extract('/Article[:last]/id', $common);		$this->assertEqual($r, $expected);				$expected = array(array('Comment' => $common[1]['Comment'][0]));		$r = Set::extract('/Comment[addition=]', $common);		$this->assertEqual($r, $expected);	}/** * undocumented function * * @return void * @author Felix *//** * testMatches method *  * @access public * @return void */	function testMatches() {		$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')));		$this->assertTrue(Set::matches(array('id=2'), $a[1]['Article']));		$this->assertFalse(Set::matches(array('id>2'), $a[1]['Article']));		$this->assertTrue(Set::matches(array('id>=2'), $a[1]['Article']));		$this->assertTrue(Set::matches(array('id>1'), $a[1]['Article']));		$this->assertTrue(Set::matches(array('id>1', 'id<3', 'id!=0'), $a[1]['Article']));		$this->assertTrue(Set::matches(array('3'), null, 3));		$this->assertTrue(Set::matches(array('5'), null, 5));		$this->assertTrue(Set::matches(array('id'), $a[1]['Article']));		$this->assertTrue(Set::matches(array('id', 'title'), $a[1]['Article']));		$this->assertFalse(Set::matches(array('non-existant'), $a[1]['Article']));		$this->assertTrue(Set::matches('/Article[id=2]', $a));		$this->assertFalse(Set::matches('/Article[id=4]', $a));

⌨️ 快捷键说明

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