Chris@0
|
1 <?php
|
Chris@0
|
2
|
Chris@0
|
3 namespace Drupal\Tests\Component\Utility;
|
Chris@0
|
4
|
Chris@0
|
5 use Drupal\Component\Utility\Image;
|
Chris@0
|
6 use PHPUnit\Framework\TestCase;
|
Chris@0
|
7
|
Chris@0
|
8 /**
|
Chris@0
|
9 * @coversDefaultClass \Drupal\Component\Utility\Image
|
Chris@0
|
10 * @group Image
|
Chris@0
|
11 */
|
Chris@0
|
12 class ImageTest extends TestCase {
|
Chris@0
|
13
|
Chris@0
|
14 /**
|
Chris@0
|
15 * Tests all control flow branches in image_dimensions_scale().
|
Chris@0
|
16 *
|
Chris@0
|
17 * @dataProvider providerTestScaleDimensions
|
Chris@0
|
18 */
|
Chris@0
|
19 public function testScaleDimensions($input, $output) {
|
Chris@0
|
20 // Process the test dataset.
|
Chris@0
|
21 $return_value = Image::scaleDimensions($input['dimensions'], $input['width'], $input['height'], $input['upscale']);
|
Chris@0
|
22
|
Chris@0
|
23 // Check the width.
|
Chris@0
|
24 $this->assertEquals($output['dimensions']['width'], $input['dimensions']['width'], sprintf('Computed width (%s) does not equal expected width (%s)', $output['dimensions']['width'], $input['dimensions']['width']));
|
Chris@0
|
25
|
Chris@0
|
26 // Check the height.
|
Chris@0
|
27 $this->assertEquals($output['dimensions']['height'], $input['dimensions']['height'], sprintf('Computed height (%s) does not equal expected height (%s)', $output['dimensions']['height'], $input['dimensions']['height']));
|
Chris@0
|
28
|
Chris@0
|
29 // Check the return value.
|
Chris@0
|
30 $this->assertEquals($output['return_value'], $return_value, 'Incorrect return value.');
|
Chris@0
|
31 }
|
Chris@0
|
32
|
Chris@0
|
33 /**
|
Chris@0
|
34 * Provides data for image dimension scale tests.
|
Chris@0
|
35 *
|
Chris@0
|
36 * @return array
|
Chris@0
|
37 * Keyed array containing:
|
Chris@0
|
38 * - 'input' - Array which contains input for Image::scaleDimensions().
|
Chris@0
|
39 * - 'output' - Array which contains expected output after passing
|
Chris@0
|
40 * through Image::scaleDimensions. Also contains a boolean
|
Chris@0
|
41 * 'return_value' which should match the expected return value.
|
Chris@0
|
42 *
|
Chris@0
|
43 * @see testScaleDimensions()
|
Chris@0
|
44 */
|
Chris@0
|
45 public function providerTestScaleDimensions() {
|
Chris@0
|
46 // Define input / output datasets to test different branch conditions.
|
Chris@0
|
47 $tests = [];
|
Chris@0
|
48
|
Chris@0
|
49 // Test branch conditions:
|
Chris@0
|
50 // - No height.
|
Chris@0
|
51 // - Upscale, don't need to upscale.
|
Chris@0
|
52 $tests[] = [
|
Chris@0
|
53 'input' => [
|
Chris@0
|
54 'dimensions' => [
|
Chris@0
|
55 'width' => 1000,
|
Chris@0
|
56 'height' => 2000,
|
Chris@0
|
57 ],
|
Chris@0
|
58 'width' => 200,
|
Chris@0
|
59 'height' => NULL,
|
Chris@0
|
60 'upscale' => TRUE,
|
Chris@0
|
61 ],
|
Chris@0
|
62 'output' => [
|
Chris@0
|
63 'dimensions' => [
|
Chris@0
|
64 'width' => 200,
|
Chris@0
|
65 'height' => 400,
|
Chris@0
|
66 ],
|
Chris@0
|
67 'return_value' => TRUE,
|
Chris@0
|
68 ],
|
Chris@0
|
69 ];
|
Chris@0
|
70
|
Chris@0
|
71 // Test branch conditions:
|
Chris@0
|
72 // - No width.
|
Chris@0
|
73 // - Don't upscale, don't need to upscale.
|
Chris@0
|
74 $tests[] = [
|
Chris@0
|
75 'input' => [
|
Chris@0
|
76 'dimensions' => [
|
Chris@0
|
77 'width' => 1000,
|
Chris@0
|
78 'height' => 800,
|
Chris@0
|
79 ],
|
Chris@0
|
80 'width' => NULL,
|
Chris@0
|
81 'height' => 140,
|
Chris@0
|
82 'upscale' => FALSE,
|
Chris@0
|
83 ],
|
Chris@0
|
84 'output' => [
|
Chris@0
|
85 'dimensions' => [
|
Chris@0
|
86 'width' => 175,
|
Chris@0
|
87 'height' => 140,
|
Chris@0
|
88 ],
|
Chris@0
|
89 'return_value' => TRUE,
|
Chris@0
|
90 ],
|
Chris@0
|
91 ];
|
Chris@0
|
92
|
Chris@0
|
93 // Test branch conditions:
|
Chris@0
|
94 // - Source aspect ratio greater than target.
|
Chris@0
|
95 // - Upscale, need to upscale.
|
Chris@0
|
96 $tests[] = [
|
Chris@0
|
97 'input' => [
|
Chris@0
|
98 'dimensions' => [
|
Chris@0
|
99 'width' => 8,
|
Chris@0
|
100 'height' => 20,
|
Chris@0
|
101 ],
|
Chris@0
|
102 'width' => 200,
|
Chris@0
|
103 'height' => 140,
|
Chris@0
|
104 'upscale' => TRUE,
|
Chris@0
|
105 ],
|
Chris@0
|
106 'output' => [
|
Chris@0
|
107 'dimensions' => [
|
Chris@0
|
108 'width' => 56,
|
Chris@0
|
109 'height' => 140,
|
Chris@0
|
110 ],
|
Chris@0
|
111 'return_value' => TRUE,
|
Chris@0
|
112 ],
|
Chris@0
|
113 ];
|
Chris@0
|
114
|
Chris@0
|
115 // Test branch condition: target aspect ratio greater than source.
|
Chris@0
|
116 $tests[] = [
|
Chris@0
|
117 'input' => [
|
Chris@0
|
118 'dimensions' => [
|
Chris@0
|
119 'width' => 2000,
|
Chris@0
|
120 'height' => 800,
|
Chris@0
|
121 ],
|
Chris@0
|
122 'width' => 200,
|
Chris@0
|
123 'height' => 140,
|
Chris@0
|
124 'upscale' => FALSE,
|
Chris@0
|
125 ],
|
Chris@0
|
126 'output' => [
|
Chris@0
|
127 'dimensions' => [
|
Chris@0
|
128 'width' => 200,
|
Chris@0
|
129 'height' => 80,
|
Chris@0
|
130 ],
|
Chris@0
|
131 'return_value' => TRUE,
|
Chris@0
|
132 ],
|
Chris@0
|
133 ];
|
Chris@0
|
134
|
Chris@0
|
135 // Test branch condition: don't upscale, need to upscale.
|
Chris@0
|
136 $tests[] = [
|
Chris@0
|
137 'input' => [
|
Chris@0
|
138 'dimensions' => [
|
Chris@0
|
139 'width' => 100,
|
Chris@0
|
140 'height' => 50,
|
Chris@0
|
141 ],
|
Chris@0
|
142 'width' => 200,
|
Chris@0
|
143 'height' => 140,
|
Chris@0
|
144 'upscale' => FALSE,
|
Chris@0
|
145 ],
|
Chris@0
|
146 'output' => [
|
Chris@0
|
147 'dimensions' => [
|
Chris@0
|
148 'width' => 100,
|
Chris@0
|
149 'height' => 50,
|
Chris@0
|
150 ],
|
Chris@0
|
151 'return_value' => FALSE,
|
Chris@0
|
152 ],
|
Chris@0
|
153 ];
|
Chris@0
|
154
|
Chris@0
|
155 return $tests;
|
Chris@0
|
156 }
|
Chris@0
|
157
|
Chris@0
|
158 }
|