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 + -
显示快捷键?