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; })); }