#6344: msort function added to the Set class to help with array sorting using
multiple column parameters
----------------------------+-----------------------------------------------
    Reporter:  ebadedude    |         Owner:           
        Type:  Enhancement  |        Status:  new      
    Priority:  Medium       |     Milestone:  1.3.x.x  
   Component:  Core Libs    |       Version:  1.2 Final
    Severity:  Normal       |    Resolution:           
    Keywords:               |   Php_version:  n/a      
Cake_version:               |  
----------------------------+-----------------------------------------------
Comment (by ebadedude):

 Added Test Cases


 {{{
 /**
  * testMsort method
  *
  * @access public
  * @return void
  */
         function testMsort() {
                 $a = array(
                         0 => array('Person' => array('name' => 'Jeff'),
 'Friend' => array(array('name' => 'Nate', 'pettype' => 'dog'))),
                         1 => array('Person' => array('name' => 'Mark'),
 'Friend' => array(array('name' => 'Lindsay', 'pettype' => 'python'))),
                         2 => array('Person' => array('name' =>
 'Tracy'),'Friend' => array(array('name' => 'Lindsay', 'pettype' =>
 'cat'))),
                         3 => array('Person' => array('name' => 'Joan'),
 'Friend' => array(array('name' => 'Geoffrey', 'pettype' => 'hampster')))
                 );
                 $b = array(
                         0 => array('Person' => array('name' => 'Joan'),
 'Friend' => array(array('name' => 'Geoffrey', 'pettype' => 'hampster'))),
                         1 => array('Person' => array('name' =>
 'Tracy'),'Friend' => array(array('name' => 'Lindsay', 'pettype' =>
 'cat'))),
                         2 => array('Person' => array('name' => 'Mark'),
 'Friend' => array(array('name' => 'Lindsay', 'pettype' => 'python'))),
                         3 => array('Person' => array('name' => 'Jeff'),
 'Friend' => array(array('name' => 'Nate', 'pettype' => 'dog')))
                 );
                 $a = Set::msort($a, array('{n}.Friend.{n}.name' => 'asc',
 '{n}.Friend.{n}.pettype' => 'asc'));
                 $this->assertIdentical($a, $b);

                 $b = array(
                         0 => array('Person' => array('name' => 'Jeff'),
 'Friend' => array(array('name' => 'Nate', 'pettype' => 'dog'))),
                         1 => array('Person' => array('name' => 'Mark'),
 'Friend' => array(array('name' => 'Lindsay', 'pettype' => 'python'))),
                         2 => array('Person' => array('name' =>
 'Tracy'),'Friend' => array(array('name' => 'Lindsay', 'pettype' =>
 'cat'))),
                         3 => array('Person' => array('name' => 'Joan'),
 'Friend' => array(array('name' => 'Geoffrey', 'pettype' => 'hampster')))
                 );
                 $a = array(
                         0 => array('Person' => array('name' => 'Joan'),
 'Friend' => array(array('name' => 'Geoffrey', 'pettype' => 'hampster'))),
                         1 => array('Person' => array('name' =>
 'Tracy'),'Friend' => array(array('name' => 'Lindsay', 'pettype' =>
 'cat'))),
                         2 => array('Person' => array('name' => 'Mark'),
 'Friend' => array(array('name' => 'Lindsay', 'pettype' => 'python'))),
                         3 => array('Person' => array('name' => 'Jeff'),
 'Friend' => array(array('name' => 'Nate', 'pettype' => 'dog')))
                 );
                 $a = Set::msort($a, array('{n}.Friend.{n}.name' => 'desc',
 '{n}.Friend.{n}.pettype' => 'desc'));
                 $this->assertIdentical($a, $b);

                 $a = array(
                         0 => array('Person' => array('name' => 'Jeff'),
 'Friend' => array(array('name' => 'Nate', 'pettype' => 'dog'))),
                         1 => array('Person' => array('name' => 'Mark'),
 'Friend' => array(array('name' => 'Lindsay', 'pettype' => 'python'))),
                         2 => array('Person' => array('name' =>
 'Tracy'),'Friend' => array(array('name' => 'Lindsay', 'pettype' =>
 'cat'))),
                         3 => array('Person' => array('name' => 'Joan'),
 'Friend' => array(array('name' => 'Geoffrey', 'pettype' => 'hampster')))
                 );
                 $b = array(
                         0 => array('Person' => array('name' => 'Jeff'),
 'Friend' => array(array('name' => 'Nate', 'pettype' => 'dog'))),
                         1 => array('Person' => array('name' => 'Joan'),
 'Friend' => array(array('name' => 'Geoffrey', 'pettype' => 'hampster'))),
                         2 => array('Person' => array('name' => 'Mark'),
 'Friend' => array(array('name' => 'Lindsay', 'pettype' => 'python'))),
                         3 => array('Person' => array('name' =>
 'Tracy'),'Friend' => array(array('name' => 'Lindsay', 'pettype' =>
 'cat')))
                 );
                 $a = Set::msort($a, array('{n}.Person.name' => 'asc',
 '{n}.Friend.{n}.name' => 'desc'));
                 $this->assertIdentical($a, $b);

                 $a = array(
                         array(7,6,4),
                         array(3,4,5),
                         array(3,2,1),
                 );

                 $b = array(
                         array(3,2,1),
                         array(3,4,5),
                         array(7,6,4),
                 );

                 $a = Set::msort($a, array('{n}.{n}' => 'asc'));
                 $this->assertIdentical($a, $b);

                 $a = array(
                         array(7,6,4),
                         array(3,4,5),
                         array(3,2,array(1,1,1)),
                 );

                 $b = array(
                         array(3,2,array(1,1,1)),
                         array(3,4,5),
                         array(7,6,4),
                 );

                 $a = Set::msort($a, array('{n}' => 'asc'));
                 $this->assertIdentical($a, $b);

                 $a = array(
                         0 => array('Person' => array('name' => 'Jeff')),
                         1 => array('Shirt' => array('color' => 'black'))
                 );
                 $b = array(
                         0 => array('Shirt' => array('color' => 'black')),
                         1 => array('Person' => array('name' => 'Jeff')),
                 );
                 $a = Set::msort($a, array('{n}.Person.name' => 'asc'));
                 $this->assertIdentical($a, $b);
         }
 }}}

-- 
Ticket URL: <https://trac.cakephp.org/ticket/6344#comment:1>
CakePHP : The Rapid Development Framework for PHP <https://trac.cakephp.org/>
Cake is a rapid development framework for PHP which uses commonly known design 
patterns like ActiveRecord, Association Data Mapping, Front Controller and MVC. 
Our primary goal is to provide a structured framework that enables PHP users at 
all levels to rapidly develop robust web applications, without any loss to 
flexibility.
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"tickets cakephp" group.
To post to this group, send email to tickets-cakephp@googlegroups.com
To unsubscribe from this group, send email to 
tickets-cakephp+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/tickets-cakephp?hl=en
-~----------~----~----~----~------~----~------~--~---

  • [CakePHP : The Rapid Dev... CakePHP : The Rapid Development Framework for PHP
    • Re: [CakePHP : The ... CakePHP : The Rapid Development Framework for PHP

Reply via email to