Esempio n. 1
0
 /**
  * @test
  */
 public function shouldSortArrayByCompoundComparator()
 {
     //given
     $product1 = new Product(array('name' => 'b', 'description' => '2'));
     $product2 = new Product(array('name' => 'a', 'description' => '1'));
     $product3 = new Product(array('name' => 'a', 'description' => '2'));
     $array = array($product3, $product1, $product2);
     $comparator = Comparator::compound(Comparator::reverse(Comparator::compareBy('name')), Comparator::compareBy('description'));
     //when
     $sorted = Arrays::sort($array, $comparator);
     //then
     Assert::thatArray($sorted)->containsExactly($product1, $product2, $product3);
 }
Esempio n. 2
0
 /**
  * @test
  */
 public function shouldNotUseFinalTieBreakerWhenAnyPriorResolves()
 {
     //given
     $alwaysLess = Functions::constant(-1);
     $alwaysGreater = Functions::constant(1);
     $alwaysEqual = Functions::constant(0);
     $greaterComparator = Comparator::compound($alwaysEqual, $alwaysGreater, $alwaysLess);
     $lesserComparator1 = Comparator::compound($alwaysEqual, $alwaysLess, $alwaysGreater);
     $lesserComparator2 = Comparator::compound($alwaysLess, $alwaysEqual, $alwaysEqual);
     //when
     $greater = $greaterComparator(null, null);
     $lesser1 = $lesserComparator1(null, null);
     $lesser2 = $lesserComparator2(null, null);
     //then
     $this->assertEquals(-1, $lesser1);
     $this->assertEquals(1, $greater);
     $this->assertEquals(-1, $lesser2);
 }