ILIAS  trunk Revision v11.0_alpha-3011-gc6b235a2e85
ResultTest.php
Go to the documentation of this file.
1<?php
2
19declare(strict_types=1);
20
21require_once("vendor/composer/vendor/autoload.php");
22
23use ILIAS\Data;
24use PHPUnit\Framework\TestCase;
25
31class ResultTest extends TestCase
32{
33 private ?Data\Factory $f;
34
35 protected function setUp(): void
36 {
37 $this->f = new Data\Factory();
38 }
39
40 protected function tearDown(): void
41 {
42 $this->f = null;
43 }
44
45 public function testValue(): void
46 {
47 $result = $this->f->ok(3.154);
48 $this->assertEquals(3.154, $result->value());
49 }
50
51 public function testNoValue(): void
52 {
53 $result = $this->f->error("Something went wrong");
54
55 try {
56 $result->value();
57 $raised = false;
58 } catch (Exception $e) {
59 $raised = true;
60 }
61
62 $this->assertTrue($raised);
63 }
64
65 public function testIsOk(): void
66 {
67 $result = $this->f->ok(3.154);
68 $this->assertTrue($result->isOk());
69 $this->assertFalse($result->isError());
70 }
71
72 public function testError(): void
73 {
74 $result = $this->f->error("Something went wrong");
75 $this->assertEquals("Something went wrong", $result->error());
76 }
77
78 public function testNoError(): void
79 {
80 $result = $this->f->ok(3.154);
81
82 try {
83 $result->error();
84 $raised = false;
85 } catch (LogicException $e) {
86 $raised = true;
87 }
88
89 $this->assertTrue($raised);
90 }
91
92 public function testIsError(): void
93 {
94 $result = $this->f->error("Something went wrong");
95 $this->assertTrue($result->isError());
96 $this->assertFalse($result->isOk());
97 }
98
99 public function testValueOr(): void
100 {
101 $result = $this->f->ok(3.154);
102 $this->assertEquals(3.154, $result->valueOr(5));
103 }
104
105 public function testValueOrDefault(): void
106 {
107 $result = $this->f->error("Something went wrong");
108 $this->assertEquals(5, $result->valueOr(5));
109 }
110
111 public function testMapOk(): void
112 {
113 $result = $this->f->ok(3);
114 $multiplicator = 3;
115 $new_result = $result->map(function ($v) use ($multiplicator) {
116 return $v * $multiplicator;
117 });
118
119 $this->assertInstanceOf(Data\Result::class, $new_result);
120 $this->assertNotEquals($result, $new_result);
121 $this->assertEquals(9, $new_result->value());
122 }
123
124 public function testMapError(): void
125 {
126 $result = $this->f->error("Something went wrong");
127 $multiplicator = 3;
128 $new_result = $result->map(function ($v) use ($multiplicator) {
129 return $v * $multiplicator;
130 });
131
132 $this->assertEquals($result, $new_result);
133 }
134
135 public function testThenOk(): void
136 {
137 $result = $this->f->ok(3);
138 $multiplicator = 3;
139 $new_result = $result->then(function ($v) use ($multiplicator) {
140 return $this->f->ok(($v * $multiplicator));
141 });
142
143 $this->assertInstanceOf(Data\Result::class, $new_result);
144 $this->assertNotEquals($result, $new_result);
145 $this->assertEquals(9, $new_result->value());
146 }
147
148 public function testThenCallableNull(): void
149 {
150 $result = $this->f->ok(3);
151 $new_result = $result->then(function ($v) {
152 return null;
153 });
154
155 $this->assertInstanceOf(Data\Result::class, $new_result);
156 $this->assertEquals($result, $new_result);
157 }
158
159 public function testThenError(): void
160 {
161 $result = $this->f->error("Something went wrong");
162 $multiplicator = 3;
163 $new_result = $result->then(function ($v) use ($multiplicator) {
164 return $this->f->ok(($v * $multiplicator));
165 });
166
167 $this->assertInstanceOf(Data\Result::class, $new_result);
168 $this->assertEquals($result, $new_result);
169 }
170
171 public function testThenNoResult(): void
172 {
173 $result = $this->f->ok(3);
174
175 try {
176 $new_result = $result->then(function ($v) {
177 return 4;
178 });
179
180 $raised = false;
181 } catch (UnexpectedValueException $e) {
182 $raised = true;
183 }
184
185 $this->assertTrue($raised);
186 }
187
188 public function testExceptError(): void
189 {
190 $result = $this->f->error("Something went wrong");
191 $exception = "Something else went wrong";
192
193 $new_result = $result->except(function ($v) use ($exception) {
194 return $this->f->error($exception);
195 });
196
197 $this->assertInstanceOf(Data\Result::class, $new_result);
198 $this->assertNotEquals($result, $new_result);
199 $this->assertEquals("Something else went wrong", $new_result->error());
200 }
201
202 public function testExceptCallableNull(): void
203 {
204 $result = $this->f->error("Something went wrong");
205 $exception = "Something else went wrong";
206
207 $new_result = $result->except(function ($v) {
208 return null;
209 });
210
211 $this->assertInstanceOf(Data\Result::class, $new_result);
212 $this->assertEquals($result, $new_result);
213 }
214
215 public function testExceptOk(): void
216 {
217 $result = $this->f->ok(3);
218 $exception = "Something else went wrong";
219
220 $new_result = $result->except(function ($v) use ($exception) {
221 return $this->f->error($exception);
222 });
223
224 $this->assertInstanceOf(Data\Result::class, $new_result);
225 $this->assertEquals($result, $new_result);
226 }
227
228 public function testExceptNoResult(): void
229 {
230 $result = $this->f->error("Something went wrong");
231
232 try {
233 $new_result = $result->except(function ($v) {
234 return "New error text";
235 });
236
237 $raised = false;
238 } catch (UnexpectedValueException $e) {
239 $raised = true;
240 }
241
242 $this->assertTrue($raised);
243 }
244}
Tests working with result object.
Definition: ResultTest.php:32
testThenNoResult()
Definition: ResultTest.php:171
testExceptNoResult()
Definition: ResultTest.php:228
testExceptCallableNull()
Definition: ResultTest.php:202
testValueOrDefault()
Definition: ResultTest.php:105
testThenCallableNull()
Definition: ResultTest.php:148
Data Factory $f
Definition: ResultTest.php:33