ILIAS  trunk Revision v11.0_alpha-3011-gc6b235a2e85
ilBuddySystemRelationCollectionTestCase.php
Go to the documentation of this file.
1<?php
2
19declare(strict_types=1);
20
21use PHPUnit\Framework\Attributes\DataProvider;
22
24{
25 #[DataProvider('provideElements')]
26 public function testElementsCanBeInitiallyAdded(array $elements): void
27 {
28 $collection = new ilBuddySystemRelationCollection($elements);
29
30 $this->assertFalse($collection->isEmpty());
31 $this->assertSame($elements, $collection->toArray());
32 $this->assertSame(array_values($elements), $collection->getValues());
33 $this->assertSame(array_keys($elements), $collection->getKeys());
34
35 foreach ($elements as $key => $elm) {
36 $this->assertArrayHasKey($collection->getKey($elm), $elements);
37 $this->assertTrue(isset($collection[$key]));
38 $this->assertEquals($collection[$key], $elm);
39 }
40 }
41
42 #[DataProvider('provideElements')]
43 public function testElementsCanBeAddedAndRemoved(array $elements): void
44 {
45 $collection = new ilBuddySystemRelationCollection();
46 $this->assertTrue($collection->isEmpty());
47
48 foreach ($elements as $elm) {
49 $collection->add($elm);
50 $this->assertTrue($collection->contains($elm));
51 }
52
53 foreach ($elements as $elm) {
54 $collection->removeElement($elm);
55 $this->assertFalse($collection->contains($elm));
56 }
57
58 $this->assertTrue($collection->isEmpty());
59
60 foreach ($elements as $elm) {
61 $collection->add($elm);
62 $this->assertTrue($collection->contains($elm));
63 }
64
65 foreach ($elements as $elm) {
66 $key = $collection->getKey($elm);
67 $collection->remove($key);
68 $this->assertFalse($collection->contains($elm));
69 }
70
71 $this->assertTrue($collection->isEmpty());
72
73 foreach ($elements as $key => $elm) {
74 $collection[$key] = $elm;
75 $this->assertTrue($collection->contains($elm));
76 }
77
78 foreach ($elements as $key => $elm) {
79 unset($collection[$key]);
80 $this->assertFalse($collection->contains($elm));
81 }
82
83 $this->assertTrue($collection->isEmpty());
84
85 $collection[] = 5;
86
87 $data = $collection->toArray();
88 $this->assertSame(5, reset($data));
89 }
90
91 #[DataProvider('provideElements')]
92 public function testIterator(array $elements): void
93 {
94 $collection = new ilBuddySystemRelationCollection($elements);
95 $iterations = 0;
96 foreach ($collection as $key => $item) {
97 $this->assertSame($elements[$key], $item, "Item $key not match");
98 $iterations++;
99 }
100 $this->assertCount($iterations, $elements, 'Number of iterations not match');
101 }
102
104 {
105 $this->expectException(InvalidArgumentException::class);
106 $collection = new ilBuddySystemRelationCollection();
107 $collection->removeElement(5);
108 }
109
111 {
112 $this->expectException(InvalidArgumentException::class);
113 $collection = new ilBuddySystemRelationCollection();
114 $collection->remove('phpunit');
115 }
116
117 public function testElementsCanBeSliced(): void
118 {
119 $collection = new ilBuddySystemRelationCollection();
120 $collection->add(1);
121 $collection->add(2);
122 $collection->add(3);
123 $collection->add(4);
124
125 $this->assertCount(2, $collection->filter(fn(int $elm): bool => $elm % 2 === 0)->toArray());
126 }
127
128 public function testElementsCanBeFiltered(): void
129 {
130 $collection = new ilBuddySystemRelationCollection();
131 $collection->add(1);
132 $collection->add(2);
133 $collection->add(3);
134 $collection->add(4);
135
136 $this->assertSame([3], $collection->slice(2, 1)->getValues());
137 }
138
142 public static function provideElements(): array
143 {
144 $relation1 = new ilBuddySystemRelation(new ilBuddySystemUnlinkedRelationState(), 1, 2, false, time());
145 $relation2 = new ilBuddySystemRelation(new ilBuddySystemUnlinkedRelationState(), 3, 4, false, time());
146 $relation3 = new ilBuddySystemRelation(new ilBuddySystemUnlinkedRelationState(), 5, 6, false, time());
147 $relation4 = new ilBuddySystemRelation(new ilBuddySystemUnlinkedRelationState(), 7, 8, false, time());
148 $relation5 = new ilBuddySystemRelation(new ilBuddySystemUnlinkedRelationState(), 9, 10, false, time());
149
150 return [
151 'indexed' => [[0, 1, 2, 3, 4, 5]],
152 'associative' => [['A' => 'a', 'B' => 'b', 'C' => 'c']],
153 'mixed' => [[0, 'A' => 'a', 1, 'B' => 'b', 2, 3]],
154 'relations' => [[$relation1, $relation2, $relation3, $relation4, $relation5]]
155 ];
156 }
157}
Class ilBuddySystemRelationCollection A collection which contains all entries of a buddy list.
Class ilBuddySystemRelation.