-
-
Notifications
You must be signed in to change notification settings - Fork 15
Expand file tree
/
Copy pathGeometryTest.php
More file actions
841 lines (814 loc) · 35.7 KB
/
GeometryTest.php
File metadata and controls
841 lines (814 loc) · 35.7 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
<?php
declare(strict_types=1);
/*
* This file is part of the OrbitaleImageMagickPHP package.
*
* (c) Alexandre Rock Ancelet <alex@orbitale.io>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Orbitale\Component\ImageMagick\Tests\References;
use Orbitale\Component\ImageMagick\Command;
use Orbitale\Component\ImageMagick\ReferenceClasses\Geometry;
use Orbitale\Component\ImageMagick\Tests\AbstractTestCase;
class GeometryTest extends AbstractTestCase
{
/**
* @dataProvider provideValidGeometries
*/
public function testGeometry(?int $width, ?int $height, ?int $x, ?int $y, ?string $aspectRatio): void
{
$geometry = new Geometry($width, $height, $x, $y, $aspectRatio);
try {
$validatedGeometry = $geometry->validate();
} catch (\Exception $e) {
static::fail($e->getMessage());
return;
}
static::assertIsString($validatedGeometry);
static::assertNotEmpty($validatedGeometry);
if ('' === $validatedGeometry) {
static::markTestSkipped('No geometry to check. ['.$validatedGeometry.'] ['.\implode(',', \func_get_args()).']');
}
$command = new Command(IMAGEMAGICK_DIR);
$outputFile = $this->resourcesDir.'/outputs/moon_180_test_geometry_'.\md5($width.$height.$x.$y.$aspectRatio.'test_geo').'.jpg';
if (\file_exists($outputFile)) {
\unlink($outputFile);
}
$command
->convert($this->resourcesDir.'/moon_180.jpg')
->resize($geometry)
->file($outputFile, false)
;
$response = $command->run();
static::assertTrue($response->isSuccessful(), \sprintf(
"Geometry fixture \"%s\" returned an ImageMagick error.\nFull command: %s\nErrors:\n%s\n%s",
$geometry->validate(),
$command->getCommand(),
$response->getOutput(),
$response->getError()
));
static::assertFileExists($outputFile);
}
public function provideValidGeometries(): ?\Generator
{
// width, height, x, y, aspectRatio
yield 0 => [null, null, null, 0, null];
yield 1 => [null, null, null, -1, null];
yield 2 => [null, null, null, 1, null];
yield 3 => [null, null, 0, null, null];
yield 4 => [null, null, 0, 0, null];
yield 5 => [null, null, 0, -1, null];
yield 6 => [null, null, 0, 1, null];
yield 7 => [null, null, -1, null, null];
yield 8 => [null, null, -1, 0, null];
yield 9 => [null, null, -1, -1, null];
yield 10 => [null, null, -1, 1, null];
yield 11 => [null, null, 1, null, null];
yield 12 => [null, null, 1, 0, null];
yield 13 => [null, null, 1, -1, null];
yield 14 => [null, null, 1, 1, null];
yield 15 => [null, 100, null, null, null];
yield 16 => [null, 100, null, null, '<'];
yield 17 => [null, 100, null, null, '!'];
yield 18 => [null, 100, null, null, '^'];
yield 19 => [null, 100, null, null, '>'];
yield 20 => [null, 100, null, 0, null];
yield 21 => [null, 100, null, 0, '<'];
yield 22 => [null, 100, null, 0, '!'];
yield 23 => [null, 100, null, 0, '^'];
yield 24 => [null, 100, null, 0, '>'];
yield 25 => [null, 100, null, -1, null];
yield 26 => [null, 100, null, -1, '<'];
yield 27 => [null, 100, null, -1, '!'];
yield 28 => [null, 100, null, -1, '^'];
yield 29 => [null, 100, null, -1, '>'];
yield 30 => [null, 100, null, 1, null];
yield 31 => [null, 100, null, 1, '<'];
yield 32 => [null, 100, null, 1, '!'];
yield 33 => [null, 100, null, 1, '^'];
yield 34 => [null, 100, null, 1, '>'];
yield 35 => [null, 100, 0, null, null];
yield 36 => [null, 100, 0, null, '<'];
yield 37 => [null, 100, 0, null, '!'];
yield 38 => [null, 100, 0, null, '^'];
yield 39 => [null, 100, 0, null, '>'];
yield 40 => [null, 100, 0, 0, null];
yield 41 => [null, 100, 0, 0, '<'];
yield 42 => [null, 100, 0, 0, '!'];
yield 43 => [null, 100, 0, 0, '^'];
yield 44 => [null, 100, 0, 0, '>'];
yield 45 => [null, 100, 0, -1, null];
yield 46 => [null, 100, 0, -1, '<'];
yield 47 => [null, 100, 0, -1, '!'];
yield 48 => [null, 100, 0, -1, '^'];
yield 49 => [null, 100, 0, -1, '>'];
yield 50 => [null, 100, 0, 1, null];
yield 51 => [null, 100, 0, 1, '<'];
yield 52 => [null, 100, 0, 1, '!'];
yield 53 => [null, 100, 0, 1, '^'];
yield 54 => [null, 100, 0, 1, '>'];
yield 55 => [null, 100, -1, null, null];
yield 56 => [null, 100, -1, null, '<'];
yield 57 => [null, 100, -1, null, '!'];
yield 58 => [null, 100, -1, null, '^'];
yield 59 => [null, 100, -1, null, '>'];
yield 60 => [null, 100, -1, 0, null];
yield 61 => [null, 100, -1, 0, '<'];
yield 62 => [null, 100, -1, 0, '!'];
yield 63 => [null, 100, -1, 0, '^'];
yield 64 => [null, 100, -1, 0, '>'];
yield 65 => [null, 100, -1, -1, null];
yield 66 => [null, 100, -1, -1, '<'];
yield 67 => [null, 100, -1, -1, '!'];
yield 68 => [null, 100, -1, -1, '^'];
yield 69 => [null, 100, -1, -1, '>'];
yield 70 => [null, 100, -1, 1, null];
yield 71 => [null, 100, -1, 1, '<'];
yield 72 => [null, 100, -1, 1, '!'];
yield 73 => [null, 100, -1, 1, '^'];
yield 74 => [null, 100, -1, 1, '>'];
yield 75 => [null, 100, 1, null, null];
yield 76 => [null, 100, 1, null, '<'];
yield 77 => [null, 100, 1, null, '!'];
yield 78 => [null, 100, 1, null, '^'];
yield 79 => [null, 100, 1, null, '>'];
yield 80 => [null, 100, 1, 0, null];
yield 81 => [null, 100, 1, 0, '<'];
yield 82 => [null, 100, 1, 0, '!'];
yield 83 => [null, 100, 1, 0, '^'];
yield 84 => [null, 100, 1, 0, '>'];
yield 85 => [null, 100, 1, -1, null];
yield 86 => [null, 100, 1, -1, '<'];
yield 87 => [null, 100, 1, -1, '!'];
yield 88 => [null, 100, 1, -1, '^'];
yield 89 => [null, 100, 1, -1, '>'];
yield 90 => [null, 100, 1, 1, null];
yield 91 => [null, 100, 1, 1, '<'];
yield 92 => [null, 100, 1, 1, '!'];
yield 93 => [null, 100, 1, 1, '^'];
yield 94 => [null, 100, 1, 1, '>'];
yield 95 => [100, null, null, null, null];
yield 96 => [100, null, null, null, '<'];
yield 97 => [100, null, null, null, '!'];
yield 98 => [100, null, null, null, '^'];
yield 99 => [100, null, null, null, '>'];
yield 100 => [100, null, null, 0, null];
yield 101 => [100, null, null, 0, '<'];
yield 102 => [100, null, null, 0, '!'];
yield 103 => [100, null, null, 0, '^'];
yield 104 => [100, null, null, 0, '>'];
yield 105 => [100, null, null, -1, null];
yield 106 => [100, null, null, -1, '<'];
yield 107 => [100, null, null, -1, '!'];
yield 108 => [100, null, null, -1, '^'];
yield 109 => [100, null, null, -1, '>'];
yield 110 => [100, null, null, 1, null];
yield 111 => [100, null, null, 1, '<'];
yield 112 => [100, null, null, 1, '!'];
yield 113 => [100, null, null, 1, '^'];
yield 114 => [100, null, null, 1, '>'];
yield 115 => [100, null, 0, null, null];
yield 116 => [100, null, 0, null, '<'];
yield 117 => [100, null, 0, null, '!'];
yield 118 => [100, null, 0, null, '^'];
yield 119 => [100, null, 0, null, '>'];
yield 120 => [100, null, 0, 0, null];
yield 121 => [100, null, 0, 0, '<'];
yield 122 => [100, null, 0, 0, '!'];
yield 123 => [100, null, 0, 0, '^'];
yield 124 => [100, null, 0, 0, '>'];
yield 125 => [100, null, 0, -1, null];
yield 126 => [100, null, 0, -1, '<'];
yield 127 => [100, null, 0, -1, '!'];
yield 128 => [100, null, 0, -1, '^'];
yield 129 => [100, null, 0, -1, '>'];
yield 130 => [100, null, 0, 1, null];
yield 131 => [100, null, 0, 1, '<'];
yield 132 => [100, null, 0, 1, '!'];
yield 133 => [100, null, 0, 1, '^'];
yield 134 => [100, null, 0, 1, '>'];
yield 135 => [100, null, -1, null, null];
yield 136 => [100, null, -1, null, '<'];
yield 137 => [100, null, -1, null, '!'];
yield 138 => [100, null, -1, null, '^'];
yield 139 => [100, null, -1, null, '>'];
yield 140 => [100, null, -1, 0, null];
yield 141 => [100, null, -1, 0, '<'];
yield 142 => [100, null, -1, 0, '!'];
yield 143 => [100, null, -1, 0, '^'];
yield 144 => [100, null, -1, 0, '>'];
yield 145 => [100, null, -1, -1, null];
yield 146 => [100, null, -1, -1, '<'];
yield 147 => [100, null, -1, -1, '!'];
yield 148 => [100, null, -1, -1, '^'];
yield 149 => [100, null, -1, -1, '>'];
yield 150 => [100, null, -1, 1, null];
yield 151 => [100, null, -1, 1, '<'];
yield 152 => [100, null, -1, 1, '!'];
yield 153 => [100, null, -1, 1, '^'];
yield 154 => [100, null, -1, 1, '>'];
yield 155 => [100, null, 1, null, null];
yield 156 => [100, null, 1, null, '<'];
yield 157 => [100, null, 1, null, '!'];
yield 158 => [100, null, 1, null, '^'];
yield 159 => [100, null, 1, null, '>'];
yield 160 => [100, null, 1, 0, null];
yield 161 => [100, null, 1, 0, '<'];
yield 162 => [100, null, 1, 0, '!'];
yield 163 => [100, null, 1, 0, '^'];
yield 164 => [100, null, 1, 0, '>'];
yield 165 => [100, null, 1, -1, null];
yield 166 => [100, null, 1, -1, '<'];
yield 167 => [100, null, 1, -1, '!'];
yield 168 => [100, null, 1, -1, '^'];
yield 169 => [100, null, 1, -1, '>'];
yield 170 => [100, null, 1, 1, null];
yield 171 => [100, null, 1, 1, '<'];
yield 172 => [100, null, 1, 1, '!'];
yield 173 => [100, null, 1, 1, '^'];
yield 174 => [100, null, 1, 1, '>'];
yield 175 => [100, 100, null, null, null];
yield 176 => [100, 100, null, null, '<'];
yield 177 => [100, 100, null, null, '!'];
yield 178 => [100, 100, null, null, '^'];
yield 179 => [100, 100, null, null, '>'];
yield 180 => [100, 100, null, 0, null];
yield 181 => [100, 100, null, 0, '<'];
yield 182 => [100, 100, null, 0, '!'];
yield 183 => [100, 100, null, 0, '^'];
yield 184 => [100, 100, null, 0, '>'];
yield 185 => [100, 100, null, -1, null];
yield 186 => [100, 100, null, -1, '<'];
yield 187 => [100, 100, null, -1, '!'];
yield 188 => [100, 100, null, -1, '^'];
yield 189 => [100, 100, null, -1, '>'];
yield 190 => [100, 100, null, 1, null];
yield 191 => [100, 100, null, 1, '<'];
yield 192 => [100, 100, null, 1, '!'];
yield 193 => [100, 100, null, 1, '^'];
yield 194 => [100, 100, null, 1, '>'];
yield 195 => [100, 100, 0, null, null];
yield 196 => [100, 100, 0, null, '<'];
yield 197 => [100, 100, 0, null, '!'];
yield 198 => [100, 100, 0, null, '^'];
yield 199 => [100, 100, 0, null, '>'];
yield 200 => [100, 100, 0, 0, null];
yield 201 => [100, 100, 0, 0, '<'];
yield 202 => [100, 100, 0, 0, '!'];
yield 203 => [100, 100, 0, 0, '^'];
yield 204 => [100, 100, 0, 0, '>'];
yield 205 => [100, 100, 0, -1, null];
yield 206 => [100, 100, 0, -1, '<'];
yield 207 => [100, 100, 0, -1, '!'];
yield 208 => [100, 100, 0, -1, '^'];
yield 209 => [100, 100, 0, -1, '>'];
yield 210 => [100, 100, 0, 1, null];
yield 211 => [100, 100, 0, 1, '<'];
yield 212 => [100, 100, 0, 1, '!'];
yield 213 => [100, 100, 0, 1, '^'];
yield 214 => [100, 100, 0, 1, '>'];
yield 215 => [100, 100, -1, null, null];
yield 216 => [100, 100, -1, null, '<'];
yield 217 => [100, 100, -1, null, '!'];
yield 218 => [100, 100, -1, null, '^'];
yield 219 => [100, 100, -1, null, '>'];
yield 220 => [100, 100, -1, 0, null];
yield 221 => [100, 100, -1, 0, '<'];
yield 222 => [100, 100, -1, 0, '!'];
yield 223 => [100, 100, -1, 0, '^'];
yield 224 => [100, 100, -1, 0, '>'];
yield 225 => [100, 100, -1, -1, null];
yield 226 => [100, 100, -1, -1, '<'];
yield 227 => [100, 100, -1, -1, '!'];
yield 228 => [100, 100, -1, -1, '^'];
yield 229 => [100, 100, -1, -1, '>'];
yield 230 => [100, 100, -1, 1, null];
yield 231 => [100, 100, -1, 1, '<'];
yield 232 => [100, 100, -1, 1, '!'];
yield 233 => [100, 100, -1, 1, '^'];
yield 234 => [100, 100, -1, 1, '>'];
yield 235 => [100, 100, 1, null, null];
yield 236 => [100, 100, 1, null, '<'];
yield 237 => [100, 100, 1, null, '!'];
yield 238 => [100, 100, 1, null, '^'];
yield 239 => [100, 100, 1, null, '>'];
yield 240 => [100, 100, 1, 0, null];
yield 241 => [100, 100, 1, 0, '<'];
yield 242 => [100, 100, 1, 0, '!'];
yield 243 => [100, 100, 1, 0, '^'];
yield 244 => [100, 100, 1, 0, '>'];
yield 245 => [100, 100, 1, -1, null];
yield 246 => [100, 100, 1, -1, '<'];
yield 247 => [100, 100, 1, -1, '!'];
yield 248 => [100, 100, 1, -1, '^'];
yield 249 => [100, 100, 1, -1, '>'];
yield 250 => [100, 100, 1, 1, null];
yield 251 => [100, 100, 1, 1, '<'];
yield 252 => [100, 100, 1, 1, '!'];
yield 253 => [100, 100, 1, 1, '^'];
yield 254 => [100, 100, 1, 1, '>'];
}
/**
* @dataProvider provideWrongGeometries
*/
public function testWrongGeometry(?int $width, ?int $height, ?int $x, ?int $y, ?string $aspectRatio): void
{
$geometry = new Geometry($width, $height, $x, $y, $aspectRatio);
$expectedGeometry = Geometry::createFromParameters($width, $height, $x, $y, $aspectRatio);
$message = null;
try {
$geometry->validate();
} catch (\InvalidArgumentException $e) {
$message = $e->getMessage();
}
static::assertNotNull($message, 'No exception for geometry "'.$expectedGeometry.'"');
static::assertStringStartsWith('The specified geometry ('.$expectedGeometry.') is invalid.', $message, "Wrong exception message:\n$message");
}
public function provideWrongGeometries(): ?\Generator
{
yield 0 => [null, null, null, null, '<'];
yield 1 => [null, null, null, null, '!'];
yield 2 => [null, null, null, null, '^'];
yield 3 => [null, null, null, null, '>'];
yield 4 => [null, null, null, 0, '<'];
yield 5 => [null, null, null, 0, '!'];
yield 6 => [null, null, null, 0, '^'];
yield 7 => [null, null, null, 0, '>'];
yield 8 => [null, null, null, -1, '<'];
yield 9 => [null, null, null, -1, '!'];
yield 10 => [null, null, null, -1, '^'];
yield 11 => [null, null, null, -1, '>'];
yield 12 => [null, null, null, 1, '<'];
yield 13 => [null, null, null, 1, '!'];
yield 14 => [null, null, null, 1, '^'];
yield 15 => [null, null, null, 1, '>'];
yield 16 => [null, null, 0, null, '<'];
yield 17 => [null, null, 0, null, '!'];
yield 18 => [null, null, 0, null, '^'];
yield 19 => [null, null, 0, null, '>'];
yield 20 => [null, null, 0, 0, '<'];
yield 21 => [null, null, 0, 0, '!'];
yield 22 => [null, null, 0, 0, '^'];
yield 23 => [null, null, 0, 0, '>'];
yield 24 => [null, null, 0, -1, '<'];
yield 25 => [null, null, 0, -1, '!'];
yield 26 => [null, null, 0, -1, '^'];
yield 27 => [null, null, 0, -1, '>'];
yield 28 => [null, null, 0, 1, '<'];
yield 29 => [null, null, 0, 1, '!'];
yield 30 => [null, null, 0, 1, '^'];
yield 31 => [null, null, 0, 1, '>'];
yield 32 => [null, null, -1, null, '<'];
yield 33 => [null, null, -1, null, '!'];
yield 34 => [null, null, -1, null, '^'];
yield 35 => [null, null, -1, null, '>'];
yield 36 => [null, null, -1, 0, '<'];
yield 37 => [null, null, -1, 0, '!'];
yield 38 => [null, null, -1, 0, '^'];
yield 39 => [null, null, -1, 0, '>'];
yield 40 => [null, null, -1, -1, '<'];
yield 41 => [null, null, -1, -1, '!'];
yield 42 => [null, null, -1, -1, '^'];
yield 43 => [null, null, -1, -1, '>'];
yield 44 => [null, null, -1, 1, '<'];
yield 45 => [null, null, -1, 1, '!'];
yield 46 => [null, null, -1, 1, '^'];
yield 47 => [null, null, -1, 1, '>'];
yield 48 => [null, null, 1, null, '<'];
yield 49 => [null, null, 1, null, '!'];
yield 50 => [null, null, 1, null, '^'];
yield 51 => [null, null, 1, null, '>'];
yield 52 => [null, null, 1, 0, '<'];
yield 53 => [null, null, 1, 0, '!'];
yield 54 => [null, null, 1, 0, '^'];
yield 55 => [null, null, 1, 0, '>'];
yield 56 => [null, null, 1, -1, '<'];
yield 57 => [null, null, 1, -1, '!'];
yield 58 => [null, null, 1, -1, '^'];
yield 59 => [null, null, 1, -1, '>'];
yield 60 => [null, null, 1, 1, '<'];
yield 61 => [null, null, 1, 1, '!'];
yield 62 => [null, null, 1, 1, '^'];
yield 63 => [null, null, 1, 1, '>'];
yield 64 => [null, 0, null, null, null];
yield 65 => [null, 0, null, null, '<'];
yield 66 => [null, 0, null, null, '!'];
yield 67 => [null, 0, null, null, '^'];
yield 68 => [null, 0, null, null, '>'];
yield 69 => [null, 0, null, 0, null];
yield 70 => [null, 0, null, 0, '<'];
yield 71 => [null, 0, null, 0, '!'];
yield 72 => [null, 0, null, 0, '^'];
yield 73 => [null, 0, null, 0, '>'];
yield 74 => [null, 0, null, -1, null];
yield 75 => [null, 0, null, -1, '<'];
yield 76 => [null, 0, null, -1, '!'];
yield 77 => [null, 0, null, -1, '^'];
yield 78 => [null, 0, null, -1, '>'];
yield 79 => [null, 0, null, 1, null];
yield 80 => [null, 0, null, 1, '<'];
yield 81 => [null, 0, null, 1, '!'];
yield 82 => [null, 0, null, 1, '^'];
yield 83 => [null, 0, null, 1, '>'];
yield 84 => [null, 0, 0, null, null];
yield 85 => [null, 0, 0, null, '<'];
yield 86 => [null, 0, 0, null, '!'];
yield 87 => [null, 0, 0, null, '^'];
yield 88 => [null, 0, 0, null, '>'];
yield 89 => [null, 0, 0, 0, null];
yield 90 => [null, 0, 0, 0, '<'];
yield 91 => [null, 0, 0, 0, '!'];
yield 92 => [null, 0, 0, 0, '^'];
yield 93 => [null, 0, 0, 0, '>'];
yield 94 => [null, 0, 0, -1, null];
yield 95 => [null, 0, 0, -1, '<'];
yield 96 => [null, 0, 0, -1, '!'];
yield 97 => [null, 0, 0, -1, '^'];
yield 98 => [null, 0, 0, -1, '>'];
yield 99 => [null, 0, 0, 1, null];
yield 100 => [null, 0, 0, 1, '<'];
yield 101 => [null, 0, 0, 1, '!'];
yield 102 => [null, 0, 0, 1, '^'];
yield 103 => [null, 0, 0, 1, '>'];
yield 104 => [null, 0, -1, null, null];
yield 105 => [null, 0, -1, null, '<'];
yield 106 => [null, 0, -1, null, '!'];
yield 107 => [null, 0, -1, null, '^'];
yield 108 => [null, 0, -1, null, '>'];
yield 109 => [null, 0, -1, 0, null];
yield 110 => [null, 0, -1, 0, '<'];
yield 111 => [null, 0, -1, 0, '!'];
yield 112 => [null, 0, -1, 0, '^'];
yield 113 => [null, 0, -1, 0, '>'];
yield 114 => [null, 0, -1, -1, null];
yield 115 => [null, 0, -1, -1, '<'];
yield 116 => [null, 0, -1, -1, '!'];
yield 117 => [null, 0, -1, -1, '^'];
yield 118 => [null, 0, -1, -1, '>'];
yield 119 => [null, 0, -1, 1, null];
yield 120 => [null, 0, -1, 1, '<'];
yield 121 => [null, 0, -1, 1, '!'];
yield 122 => [null, 0, -1, 1, '^'];
yield 123 => [null, 0, -1, 1, '>'];
yield 124 => [null, 0, 1, null, null];
yield 125 => [null, 0, 1, null, '<'];
yield 126 => [null, 0, 1, null, '!'];
yield 127 => [null, 0, 1, null, '^'];
yield 128 => [null, 0, 1, null, '>'];
yield 129 => [null, 0, 1, 0, null];
yield 130 => [null, 0, 1, 0, '<'];
yield 131 => [null, 0, 1, 0, '!'];
yield 132 => [null, 0, 1, 0, '^'];
yield 133 => [null, 0, 1, 0, '>'];
yield 134 => [null, 0, 1, -1, null];
yield 135 => [null, 0, 1, -1, '<'];
yield 136 => [null, 0, 1, -1, '!'];
yield 137 => [null, 0, 1, -1, '^'];
yield 138 => [null, 0, 1, -1, '>'];
yield 139 => [null, 0, 1, 1, null];
yield 140 => [null, 0, 1, 1, '<'];
yield 141 => [null, 0, 1, 1, '!'];
yield 142 => [null, 0, 1, 1, '^'];
yield 143 => [null, 0, 1, 1, '>'];
yield 144 => [0, null, null, null, null];
yield 145 => [0, null, null, null, '<'];
yield 146 => [0, null, null, null, '!'];
yield 147 => [0, null, null, null, '^'];
yield 148 => [0, null, null, null, '>'];
yield 149 => [0, null, null, 0, null];
yield 150 => [0, null, null, 0, '<'];
yield 151 => [0, null, null, 0, '!'];
yield 152 => [0, null, null, 0, '^'];
yield 153 => [0, null, null, 0, '>'];
yield 154 => [0, null, null, -1, null];
yield 155 => [0, null, null, -1, '<'];
yield 156 => [0, null, null, -1, '!'];
yield 157 => [0, null, null, -1, '^'];
yield 158 => [0, null, null, -1, '>'];
yield 159 => [0, null, null, 1, null];
yield 160 => [0, null, null, 1, '<'];
yield 161 => [0, null, null, 1, '!'];
yield 162 => [0, null, null, 1, '^'];
yield 163 => [0, null, null, 1, '>'];
yield 164 => [0, null, 0, null, null];
yield 165 => [0, null, 0, null, '<'];
yield 166 => [0, null, 0, null, '!'];
yield 167 => [0, null, 0, null, '^'];
yield 168 => [0, null, 0, null, '>'];
yield 169 => [0, null, 0, 0, null];
yield 170 => [0, null, 0, 0, '<'];
yield 171 => [0, null, 0, 0, '!'];
yield 172 => [0, null, 0, 0, '^'];
yield 173 => [0, null, 0, 0, '>'];
yield 174 => [0, null, 0, -1, null];
yield 175 => [0, null, 0, -1, '<'];
yield 176 => [0, null, 0, -1, '!'];
yield 177 => [0, null, 0, -1, '^'];
yield 178 => [0, null, 0, -1, '>'];
yield 179 => [0, null, 0, 1, null];
yield 180 => [0, null, 0, 1, '<'];
yield 181 => [0, null, 0, 1, '!'];
yield 182 => [0, null, 0, 1, '^'];
yield 183 => [0, null, 0, 1, '>'];
yield 184 => [0, null, -1, null, null];
yield 185 => [0, null, -1, null, '<'];
yield 186 => [0, null, -1, null, '!'];
yield 187 => [0, null, -1, null, '^'];
yield 188 => [0, null, -1, null, '>'];
yield 189 => [0, null, -1, 0, null];
yield 190 => [0, null, -1, 0, '<'];
yield 191 => [0, null, -1, 0, '!'];
yield 192 => [0, null, -1, 0, '^'];
yield 193 => [0, null, -1, 0, '>'];
yield 194 => [0, null, -1, -1, null];
yield 195 => [0, null, -1, -1, '<'];
yield 196 => [0, null, -1, -1, '!'];
yield 197 => [0, null, -1, -1, '^'];
yield 198 => [0, null, -1, -1, '>'];
yield 199 => [0, null, -1, 1, null];
yield 200 => [0, null, -1, 1, '<'];
yield 201 => [0, null, -1, 1, '!'];
yield 202 => [0, null, -1, 1, '^'];
yield 203 => [0, null, -1, 1, '>'];
yield 204 => [0, null, 1, null, null];
yield 205 => [0, null, 1, null, '<'];
yield 206 => [0, null, 1, null, '!'];
yield 207 => [0, null, 1, null, '^'];
yield 208 => [0, null, 1, null, '>'];
yield 209 => [0, null, 1, 0, null];
yield 210 => [0, null, 1, 0, '<'];
yield 211 => [0, null, 1, 0, '!'];
yield 212 => [0, null, 1, 0, '^'];
yield 213 => [0, null, 1, 0, '>'];
yield 214 => [0, null, 1, -1, null];
yield 215 => [0, null, 1, -1, '<'];
yield 216 => [0, null, 1, -1, '!'];
yield 217 => [0, null, 1, -1, '^'];
yield 218 => [0, null, 1, -1, '>'];
yield 219 => [0, null, 1, 1, null];
yield 220 => [0, null, 1, 1, '<'];
yield 221 => [0, null, 1, 1, '!'];
yield 222 => [0, null, 1, 1, '^'];
yield 223 => [0, null, 1, 1, '>'];
yield 224 => [0, 0, null, null, null];
yield 225 => [0, 0, null, null, '<'];
yield 226 => [0, 0, null, null, '!'];
yield 227 => [0, 0, null, null, '^'];
yield 228 => [0, 0, null, null, '>'];
yield 229 => [0, 0, null, 0, null];
yield 230 => [0, 0, null, 0, '<'];
yield 231 => [0, 0, null, 0, '!'];
yield 232 => [0, 0, null, 0, '^'];
yield 233 => [0, 0, null, 0, '>'];
yield 234 => [0, 0, null, -1, null];
yield 235 => [0, 0, null, -1, '<'];
yield 236 => [0, 0, null, -1, '!'];
yield 237 => [0, 0, null, -1, '^'];
yield 238 => [0, 0, null, -1, '>'];
yield 239 => [0, 0, null, 1, null];
yield 240 => [0, 0, null, 1, '<'];
yield 241 => [0, 0, null, 1, '!'];
yield 242 => [0, 0, null, 1, '^'];
yield 243 => [0, 0, null, 1, '>'];
yield 244 => [0, 0, 0, null, null];
yield 245 => [0, 0, 0, null, '<'];
yield 246 => [0, 0, 0, null, '!'];
yield 247 => [0, 0, 0, null, '^'];
yield 248 => [0, 0, 0, null, '>'];
yield 249 => [0, 0, 0, 0, null];
yield 250 => [0, 0, 0, 0, '<'];
yield 251 => [0, 0, 0, 0, '!'];
yield 252 => [0, 0, 0, 0, '^'];
yield 253 => [0, 0, 0, 0, '>'];
yield 254 => [0, 0, 0, -1, null];
yield 255 => [0, 0, 0, -1, '<'];
yield 256 => [0, 0, 0, -1, '!'];
yield 257 => [0, 0, 0, -1, '^'];
yield 258 => [0, 0, 0, -1, '>'];
yield 259 => [0, 0, 0, 1, null];
yield 260 => [0, 0, 0, 1, '<'];
yield 261 => [0, 0, 0, 1, '!'];
yield 262 => [0, 0, 0, 1, '^'];
yield 263 => [0, 0, 0, 1, '>'];
yield 264 => [0, 0, -1, null, null];
yield 265 => [0, 0, -1, null, '<'];
yield 266 => [0, 0, -1, null, '!'];
yield 267 => [0, 0, -1, null, '^'];
yield 268 => [0, 0, -1, null, '>'];
yield 269 => [0, 0, -1, 0, null];
yield 270 => [0, 0, -1, 0, '<'];
yield 271 => [0, 0, -1, 0, '!'];
yield 272 => [0, 0, -1, 0, '^'];
yield 273 => [0, 0, -1, 0, '>'];
yield 274 => [0, 0, -1, -1, null];
yield 275 => [0, 0, -1, -1, '<'];
yield 276 => [0, 0, -1, -1, '!'];
yield 277 => [0, 0, -1, -1, '^'];
yield 278 => [0, 0, -1, -1, '>'];
yield 279 => [0, 0, -1, 1, null];
yield 280 => [0, 0, -1, 1, '<'];
yield 281 => [0, 0, -1, 1, '!'];
yield 282 => [0, 0, -1, 1, '^'];
yield 283 => [0, 0, -1, 1, '>'];
yield 284 => [0, 0, 1, null, null];
yield 285 => [0, 0, 1, null, '<'];
yield 286 => [0, 0, 1, null, '!'];
yield 287 => [0, 0, 1, null, '^'];
yield 288 => [0, 0, 1, null, '>'];
yield 289 => [0, 0, 1, 0, null];
yield 290 => [0, 0, 1, 0, '<'];
yield 291 => [0, 0, 1, 0, '!'];
yield 292 => [0, 0, 1, 0, '^'];
yield 293 => [0, 0, 1, 0, '>'];
yield 294 => [0, 0, 1, -1, null];
yield 295 => [0, 0, 1, -1, '<'];
yield 296 => [0, 0, 1, -1, '!'];
yield 297 => [0, 0, 1, -1, '^'];
yield 298 => [0, 0, 1, -1, '>'];
yield 299 => [0, 0, 1, 1, null];
yield 300 => [0, 0, 1, 1, '<'];
yield 301 => [0, 0, 1, 1, '!'];
yield 302 => [0, 0, 1, 1, '^'];
yield 303 => [0, 0, 1, 1, '>'];
yield 304 => [0, 100, null, null, null];
yield 305 => [0, 100, null, null, '<'];
yield 306 => [0, 100, null, null, '!'];
yield 307 => [0, 100, null, null, '^'];
yield 308 => [0, 100, null, null, '>'];
yield 309 => [0, 100, null, 0, null];
yield 310 => [0, 100, null, 0, '<'];
yield 311 => [0, 100, null, 0, '!'];
yield 312 => [0, 100, null, 0, '^'];
yield 313 => [0, 100, null, 0, '>'];
yield 314 => [0, 100, null, -1, null];
yield 315 => [0, 100, null, -1, '<'];
yield 316 => [0, 100, null, -1, '!'];
yield 317 => [0, 100, null, -1, '^'];
yield 318 => [0, 100, null, -1, '>'];
yield 319 => [0, 100, null, 1, null];
yield 320 => [0, 100, null, 1, '<'];
yield 321 => [0, 100, null, 1, '!'];
yield 322 => [0, 100, null, 1, '^'];
yield 323 => [0, 100, null, 1, '>'];
yield 324 => [0, 100, 0, null, null];
yield 325 => [0, 100, 0, null, '<'];
yield 326 => [0, 100, 0, null, '!'];
yield 327 => [0, 100, 0, null, '^'];
yield 328 => [0, 100, 0, null, '>'];
yield 329 => [0, 100, 0, 0, null];
yield 330 => [0, 100, 0, 0, '<'];
yield 331 => [0, 100, 0, 0, '!'];
yield 332 => [0, 100, 0, 0, '^'];
yield 333 => [0, 100, 0, 0, '>'];
yield 334 => [0, 100, 0, -1, null];
yield 335 => [0, 100, 0, -1, '<'];
yield 336 => [0, 100, 0, -1, '!'];
yield 337 => [0, 100, 0, -1, '^'];
yield 338 => [0, 100, 0, -1, '>'];
yield 339 => [0, 100, 0, 1, null];
yield 340 => [0, 100, 0, 1, '<'];
yield 341 => [0, 100, 0, 1, '!'];
yield 342 => [0, 100, 0, 1, '^'];
yield 343 => [0, 100, 0, 1, '>'];
yield 344 => [0, 100, -1, null, null];
yield 345 => [0, 100, -1, null, '<'];
yield 346 => [0, 100, -1, null, '!'];
yield 347 => [0, 100, -1, null, '^'];
yield 348 => [0, 100, -1, null, '>'];
yield 349 => [0, 100, -1, 0, null];
yield 350 => [0, 100, -1, 0, '<'];
yield 351 => [0, 100, -1, 0, '!'];
yield 352 => [0, 100, -1, 0, '^'];
yield 353 => [0, 100, -1, 0, '>'];
yield 354 => [0, 100, -1, -1, null];
yield 355 => [0, 100, -1, -1, '<'];
yield 356 => [0, 100, -1, -1, '!'];
yield 357 => [0, 100, -1, -1, '^'];
yield 358 => [0, 100, -1, -1, '>'];
yield 359 => [0, 100, -1, 1, null];
yield 360 => [0, 100, -1, 1, '<'];
yield 361 => [0, 100, -1, 1, '!'];
yield 362 => [0, 100, -1, 1, '^'];
yield 363 => [0, 100, -1, 1, '>'];
yield 364 => [0, 100, 1, null, null];
yield 365 => [0, 100, 1, null, '<'];
yield 366 => [0, 100, 1, null, '!'];
yield 367 => [0, 100, 1, null, '^'];
yield 368 => [0, 100, 1, null, '>'];
yield 369 => [0, 100, 1, 0, null];
yield 370 => [0, 100, 1, 0, '<'];
yield 371 => [0, 100, 1, 0, '!'];
yield 372 => [0, 100, 1, 0, '^'];
yield 373 => [0, 100, 1, 0, '>'];
yield 374 => [0, 100, 1, -1, null];
yield 375 => [0, 100, 1, -1, '<'];
yield 376 => [0, 100, 1, -1, '!'];
yield 377 => [0, 100, 1, -1, '^'];
yield 378 => [0, 100, 1, -1, '>'];
yield 379 => [0, 100, 1, 1, null];
yield 380 => [0, 100, 1, 1, '<'];
yield 381 => [0, 100, 1, 1, '!'];
yield 382 => [0, 100, 1, 1, '^'];
yield 383 => [0, 100, 1, 1, '>'];
yield 384 => [100, 0, null, null, null];
yield 385 => [100, 0, null, null, '<'];
yield 386 => [100, 0, null, null, '!'];
yield 387 => [100, 0, null, null, '^'];
yield 388 => [100, 0, null, null, '>'];
yield 389 => [100, 0, null, 0, null];
yield 390 => [100, 0, null, 0, '<'];
yield 391 => [100, 0, null, 0, '!'];
yield 392 => [100, 0, null, 0, '^'];
yield 393 => [100, 0, null, 0, '>'];
yield 394 => [100, 0, null, -1, null];
yield 395 => [100, 0, null, -1, '<'];
yield 396 => [100, 0, null, -1, '!'];
yield 397 => [100, 0, null, -1, '^'];
yield 398 => [100, 0, null, -1, '>'];
yield 399 => [100, 0, null, 1, null];
yield 400 => [100, 0, null, 1, '<'];
yield 401 => [100, 0, null, 1, '!'];
yield 402 => [100, 0, null, 1, '^'];
yield 403 => [100, 0, null, 1, '>'];
yield 404 => [100, 0, 0, null, null];
yield 405 => [100, 0, 0, null, '<'];
yield 406 => [100, 0, 0, null, '!'];
yield 407 => [100, 0, 0, null, '^'];
yield 408 => [100, 0, 0, null, '>'];
yield 409 => [100, 0, 0, 0, null];
yield 410 => [100, 0, 0, 0, '<'];
yield 411 => [100, 0, 0, 0, '!'];
yield 412 => [100, 0, 0, 0, '^'];
yield 413 => [100, 0, 0, 0, '>'];
yield 414 => [100, 0, 0, -1, null];
yield 415 => [100, 0, 0, -1, '<'];
yield 416 => [100, 0, 0, -1, '!'];
yield 417 => [100, 0, 0, -1, '^'];
yield 418 => [100, 0, 0, -1, '>'];
yield 419 => [100, 0, 0, 1, null];
yield 420 => [100, 0, 0, 1, '<'];
yield 421 => [100, 0, 0, 1, '!'];
yield 422 => [100, 0, 0, 1, '^'];
yield 423 => [100, 0, 0, 1, '>'];
yield 424 => [100, 0, -1, null, null];
yield 425 => [100, 0, -1, null, '<'];
yield 426 => [100, 0, -1, null, '!'];
yield 427 => [100, 0, -1, null, '^'];
yield 428 => [100, 0, -1, null, '>'];
yield 429 => [100, 0, -1, 0, null];
yield 430 => [100, 0, -1, 0, '<'];
yield 431 => [100, 0, -1, 0, '!'];
yield 432 => [100, 0, -1, 0, '^'];
yield 433 => [100, 0, -1, 0, '>'];
yield 434 => [100, 0, -1, -1, null];
yield 435 => [100, 0, -1, -1, '<'];
yield 436 => [100, 0, -1, -1, '!'];
yield 437 => [100, 0, -1, -1, '^'];
yield 438 => [100, 0, -1, -1, '>'];
yield 439 => [100, 0, -1, 1, null];
yield 440 => [100, 0, -1, 1, '<'];
yield 441 => [100, 0, -1, 1, '!'];
yield 442 => [100, 0, -1, 1, '^'];
yield 443 => [100, 0, -1, 1, '>'];
yield 444 => [100, 0, 1, null, null];
yield 445 => [100, 0, 1, null, '<'];
yield 446 => [100, 0, 1, null, '!'];
yield 447 => [100, 0, 1, null, '^'];
yield 448 => [100, 0, 1, null, '>'];
yield 449 => [100, 0, 1, 0, null];
yield 450 => [100, 0, 1, 0, '<'];
yield 451 => [100, 0, 1, 0, '!'];
yield 452 => [100, 0, 1, 0, '^'];
yield 453 => [100, 0, 1, 0, '>'];
yield 454 => [100, 0, 1, -1, null];
yield 455 => [100, 0, 1, -1, '<'];
yield 456 => [100, 0, 1, -1, '!'];
yield 457 => [100, 0, 1, -1, '^'];
yield 458 => [100, 0, 1, -1, '>'];
yield 459 => [100, 0, 1, 1, null];
yield 460 => [100, 0, 1, 1, '<'];
yield 461 => [100, 0, 1, 1, '!'];
yield 462 => [100, 0, 1, 1, '^'];
yield 463 => [100, 0, 1, 1, '>'];
}
public function testInvalidAspectRatio(): void
{
$this->expectException(\InvalidArgumentException::class);
$this->expectExceptionMessage(\sprintf("Invalid aspect ratio value to generate geometry, \"%s\" given.\nAvailable: <, !, ^, >", 'invalid_ratio'));
new Geometry(null, null, null, null, 'invalid_ratio');
}
public function testInvalidWidthHeightSeparator(): void
{
$geometryString = '120+1+1';
$this->expectException(\InvalidArgumentException::class);
$this->expectExceptionMessage(\sprintf(
"The specified geometry (%s) is invalid.\n%s\n"."Please refer to ImageMagick command line documentation about geometry:\nhttp://www.imagemagick.org/script/command-line-processing.php#geometry\n",
'120+1+1',
'When using offsets and only width, you must specify the "x" separator like this: 120x+1+1'
));
$geometry = new Geometry($geometryString);
$geometry->validate();
}
}