Open Journal Systems  3.3.0
CollectionsTest.php
1 <?php
2 
3 /*
4  * Copyright (C) 2016 Sebastian Böttger <seboettg@gmail.com>
5  * You may use, distribute and modify this code under the
6  * terms of the MIT license.
7  *
8  * You should have received a copy of the MIT license with
9  * this file. If not, please visit: https://opensource.org/licenses/mit-license.php
10  */
11 
12 namespace Seboettg\Collection\Test;
13 
14 use PHPUnit\Framework\TestCase;
19 
20 class CollectionsTest extends TestCase
21 {
22 
26  private $numeratedArrayList;
27 
28  public function setUp()
29  {
30  $this->numeratedArrayList = new ArrayList([
31  new Element("a", "aa"),
32  new Element("b", "bb"),
33  new Element("c", "cc"),
34  new Element("k", "kk"),
35  new Element("d", "dd"),
36  ]);
37  }
38 
39  public function testSort()
40  {
41  Collections::sort($this->numeratedArrayList, new MyAscendingComparator());
42  $arr = $this->numeratedArrayList;
43  for ($i = 0; $i < $arr->count() - 1; ++$i) {
44  $lte = (ord($arr[$i]->getAttr1()) <= ord($arr[$i++]->getAttr1()));
45  if (!$lte) {
46  break;
47  }
48  }
49  $this->assertTrue($lte);
50  }
51 
52  public function testSortCustomOrder()
53  {
54  $order = ["d", "k", "a", "b", "c"];
55  Collections::sort($this->numeratedArrayList, new MyCustomOrderComparator(Comparator::ORDER_CUSTOM, $order));
56  for ($i = 0; $i < count($order); ++$i) {
57  $this->assertTrue($order[$i] === $this->numeratedArrayList->get($i)->getAttr1());
58  }
59  }
60 
61 }
62 
63 class MyAscendingComparator extends Comparator
64 {
73  public function compare(Comparable $a, Comparable $b)
74  {
75  return $a->compareTo($b);
76  }
77 }
78 
79 class MyDescendingComparator extends Comparator
80 {
89  public function compare(Comparable $a, Comparable $b)
90  {
91  return $b->compareTo($a);
92  }
93 }
94 
95 class MyCustomOrderComparator extends Comparator
96 {
97 
106  public function compare(Comparable $a, Comparable $b)
107  {
108  return (array_search($a->getAttr1(), $this->customOrder) >= array_search($b->getAttr1(), $this->customOrder)) ? 1 : -1;
109  }
110 }
Seboettg\Collection\Comparator
Definition: generic/citationStyleLanguage/lib/vendor/seboettg/collection/src/Seboettg/Collection/Comparator.php:23
Seboettg\Collection\Test\MyDescendingComparator
Definition: CollectionsTest.php:82
Seboettg\Collection\Test\CollectionsTest
Definition: CollectionsTest.php:20
Seboettg\Collection\Test
Definition: ArrayListTest.php:12
Seboettg\Collection\Test\CollectionsTest\setUp
setUp()
Definition: CollectionsTest.php:31
Seboettg\Collection\Comparable
Definition: Comparable.php:24
Seboettg\Collection\Test\CollectionsTest\testSort
testSort()
Definition: CollectionsTest.php:42
Seboettg\Collection\Test\MyAscendingComparator\compare
compare(Comparable $a, Comparable $b)
Definition: CollectionsTest.php:76
Seboettg\Collection\Test\MyCustomOrderComparator\compare
compare(Comparable $a, Comparable $b)
Definition: CollectionsTest.php:109
Seboettg\Collection\Test\MyCustomOrderComparator
Definition: CollectionsTest.php:98
Seboettg\Collection\Collections
Definition: Collections.php:12
Seboettg\Collection\count
count()
Definition: ArrayListTrait.php:253
Seboettg\Collection\Collections\sort
static sort(ArrayList &$list, Comparator $comparator)
Definition: Collections.php:22
Seboettg\Collection\Test\Element
Definition: ArrayListTest.php:288
Seboettg\Collection\Test\MyAscendingComparator
Definition: CollectionsTest.php:66
Seboettg\Collection\Test\CollectionsTest\testSortCustomOrder
testSortCustomOrder()
Definition: CollectionsTest.php:55
Seboettg\Collection\Test\MyDescendingComparator\compare
compare(Comparable $a, Comparable $b)
Definition: CollectionsTest.php:92
Seboettg\Collection\Comparable\compareTo
compareTo(Comparable $b)
Seboettg\Collection\ArrayList
Definition: ArrayList.php:20
Seboettg\Collection\Comparator\ORDER_CUSTOM
const ORDER_CUSTOM
Definition: generic/citationStyleLanguage/lib/vendor/seboettg/collection/src/Seboettg/Collection/Comparator.php:39