public function testSortBy()
 {
     // from js
     $people = array((object) array('name' => 'curly', 'age' => 50), (object) array('name' => 'moe', 'age' => 30));
     $people_sorted = __u::sortBy($people, function ($person) {
         return $person->age;
     });
     $this->assertEquals(array('moe', 'curly'), __u::pluck($people_sorted, 'name'), 'stooges sorted by age');
     // extra
     $stooges = array(array('name' => 'moe', 'age' => 40), array('name' => 'larry', 'age' => 50), array('name' => 'curly', 'age' => 60));
     $this->assertEquals($stooges, __u::sortBy($stooges, function ($stooge) {
         return $stooge['age'];
     }));
     $this->assertEquals(array($stooges[2], $stooges[1], $stooges[0]), __u::sortBy($stooges, function ($stooge) {
         return $stooge['name'];
     }));
     $this->assertEquals(array(5, 4, 6, 3, 1, 2), __u::sortBy(array(1, 2, 3, 4, 5, 6), function ($num) {
         return sin($num);
     }));
     $this->assertEquals($stooges, __u($stooges)->sortBy(function ($stooge) {
         return $stooge['age'];
     }), 'works with OO-style call');
     // docs
     $this->assertEquals(array(3, 2, 1), __u::sortBy(array(1, 2, 3), function ($n) {
         return -$n;
     }));
 }