Remove `@access` annotations
[phpmyadmin.git] / test / classes / Gis / GisMultiPointTest.php
blob5ec5dcebcfc860eb5da0471f69be0e62be3b179e
1 <?php
3 declare(strict_types=1);
5 namespace PhpMyAdmin\Tests\Gis;
7 use PhpMyAdmin\Gis\GisMultiPoint;
8 use PhpMyAdmin\Image\ImageWrapper;
9 use TCPDF;
11 use function preg_match;
13 /**
14 * @covers \PhpMyAdmin\Gis\GisMultiPoint
16 class GisMultiPointTest extends GisGeomTestCase
18 /** @var GisMultiPoint */
19 protected $object;
21 /**
22 * Sets up the fixture, for example, opens a network connection.
23 * This method is called before a test is executed.
25 protected function setUp(): void
27 parent::setUp();
28 $this->object = GisMultiPoint::singleton();
31 /**
32 * Tears down the fixture, for example, closes a network connection.
33 * This method is called after a test is executed.
35 protected function tearDown(): void
37 parent::tearDown();
38 unset($this->object);
41 /**
42 * data provider for testGenerateWkt
44 * @return array data for testGenerateWkt
46 public function providerForTestGenerateWkt(): array
48 $gis_data1 = [
49 0 => [
50 'MULTIPOINT' => [
51 'no_of_points' => 2,
52 0 => [
53 'x' => 5.02,
54 'y' => 8.45,
56 1 => [
57 'x' => 1.56,
58 'y' => 4.36,
64 $gis_data2 = $gis_data1;
65 $gis_data2[0]['MULTIPOINT']['no_of_points'] = -1;
67 return [
69 $gis_data1,
71 null,
72 'MULTIPOINT(5.02 8.45,1.56 4.36)',
75 $gis_data2,
77 null,
78 'MULTIPOINT(5.02 8.45)',
83 /**
84 * test getShape method
86 public function testGetShape(): void
88 $gis_data = [
89 'numpoints' => 2,
90 'points' => [
91 0 => [
92 'x' => 5.02,
93 'y' => 8.45,
95 1 => [
96 'x' => 6.14,
97 'y' => 0.15,
102 $this->assertEquals(
103 $this->object->getShape($gis_data),
104 'MULTIPOINT(5.02 8.45,6.14 0.15)'
109 * data provider for testGenerateParams
111 * @return array data for testGenerateParams
113 public function providerForTestGenerateParams(): array
115 $temp1 = [
116 'MULTIPOINT' => [
117 'no_of_points' => 2,
118 0 => [
119 'x' => '5.02',
120 'y' => '8.45',
122 1 => [
123 'x' => '6.14',
124 'y' => '0.15',
128 $temp2 = $temp1;
129 $temp2['gis_type'] = 'MULTIPOINT';
131 return [
133 "'MULTIPOINT(5.02 8.45,6.14 0.15)',124",
134 null,
136 'srid' => '124',
137 0 => $temp1,
141 'MULTIPOINT(5.02 8.45,6.14 0.15)',
143 [2 => $temp2],
149 * data provider for testScaleRow
151 * @return array data for testScaleRow
153 public function providerForTestScaleRow(): array
155 return [
157 'MULTIPOINT(12 35,48 75,69 23,25 45,14 53,35 78)',
159 'minX' => 12,
160 'maxX' => 69,
161 'minY' => 23,
162 'maxY' => 78,
169 * @requires extension gd
171 public function testPrepareRowAsPng(): void
173 $image = ImageWrapper::create(120, 150);
174 $this->assertNotNull($image);
175 $return = $this->object->prepareRowAsPng(
176 'MULTIPOINT(12 35,48 75,69 23,25 45,14 53,35 78)',
177 'image',
178 '#B02EE0',
179 ['x' => 12, 'y' => 69, 'scale' => 2, 'height' => 150],
180 $image
182 $this->assertEquals(120, $return->width());
183 $this->assertEquals(150, $return->height());
187 * test case for prepareRowAsPdf() method
189 * @param string $spatial GIS MULTIPOINT object
190 * @param string $label label for the GIS MULTIPOINT object
191 * @param string $point_color color for the GIS MULTIPOINT object
192 * @param array $scale_data array containing data related to scaling
193 * @param TCPDF $pdf TCPDF instance
195 * @dataProvider providerForPrepareRowAsPdf
197 public function testPrepareRowAsPdf(
198 string $spatial,
199 string $label,
200 string $point_color,
201 array $scale_data,
202 TCPDF $pdf
203 ): void {
204 $return = $this->object->prepareRowAsPdf($spatial, $label, $point_color, $scale_data, $pdf);
205 $this->assertInstanceOf(TCPDF::class, $return);
209 * data provider for testPrepareRowAsPdf() test case
211 * @return array test data for testPrepareRowAsPdf() test case
213 public function providerForPrepareRowAsPdf(): array
215 return [
217 'MULTIPOINT(12 35,48 75,69 23,25 45,14 53,35 78)',
218 'pdf',
219 '#B02EE0',
221 'x' => 12,
222 'y' => 69,
223 'scale' => 2,
224 'height' => 150,
226 new TCPDF(),
232 * test case for prepareRowAsSvg() method
234 * @param string $spatial GIS MULTIPOINT object
235 * @param string $label label for the GIS MULTIPOINT object
236 * @param string $pointColor color for the GIS MULTIPOINT object
237 * @param array $scaleData array containing data related to scaling
238 * @param string $output expected output
240 * @dataProvider providerForPrepareRowAsSvg
242 public function testPrepareRowAsSvg(
243 string $spatial,
244 string $label,
245 string $pointColor,
246 array $scaleData,
247 string $output
248 ): void {
249 $string = $this->object->prepareRowAsSvg($spatial, $label, $pointColor, $scaleData);
250 $this->assertEquals(1, preg_match($output, $string));
254 * data provider for testPrepareRowAsSvg() test case
256 * @return array test data for testPrepareRowAsSvg() test case
258 public function providerForPrepareRowAsSvg(): array
260 return [
262 'MULTIPOINT(12 35,48 75,69 23,25 45,14 53,35 78)',
263 'svg',
264 '#B02EE0',
266 'x' => 12,
267 'y' => 69,
268 'scale' => 2,
269 'height' => 150,
271 '/^(<circle cx="72" cy="138" r="3" name="svg" class="multipoint '
272 . 'vector" fill="white" stroke="#B02EE0" stroke-width="2" id="svg)'
273 . '(\d+)("\/><circle cx="114" cy="242" r="3" name="svg" class="mult'
274 . 'ipoint vector" fill="white" stroke="#B02EE0" stroke-width="2" id'
275 . '="svg)(\d+)("\/><circle cx="26" cy="198" r="3" name="svg" class='
276 . '"multipoint vector" fill="white" stroke="#B02EE0" stroke-width='
277 . '"2" id="svg)(\d+)("\/><circle cx="4" cy="182" r="3" name="svg" '
278 . 'class="multipoint vector" fill="white" stroke="#B02EE0" stroke-'
279 . 'width="2" id="svg)(\d+)("\/><circle cx="46" cy="132" r="3" name='
280 . '"svg" class="multipoint vector" fill="white" stroke="#B02EE0" '
281 . 'stroke-width="2" id="svg)(\d+)("\/>)$/',
287 * test case for prepareRowAsOl() method
289 * @param string $spatial GIS MULTIPOINT object
290 * @param int $srid spatial reference ID
291 * @param string $label label for the GIS MULTIPOINT object
292 * @param array $point_color color for the GIS MULTIPOINT object
293 * @param array $scale_data array containing data related to scaling
294 * @param string $output expected output
296 * @dataProvider providerForPrepareRowAsOl
298 public function testPrepareRowAsOl(
299 string $spatial,
300 int $srid,
301 string $label,
302 array $point_color,
303 array $scale_data,
304 string $output
305 ): void {
306 $this->assertEquals(
307 $output,
308 $this->object->prepareRowAsOl(
309 $spatial,
310 $srid,
311 $label,
312 $point_color,
313 $scale_data
319 * data provider for testPrepareRowAsOl() test case
321 * @return array test data for testPrepareRowAsOl() test case
323 public function providerForPrepareRowAsOl(): array
325 return [
327 'MULTIPOINT(12 35,48 75,69 23,25 45,14 53,35 78)',
328 4326,
329 'Ol',
330 [176, 46, 224],
332 'minX' => '0',
333 'minY' => '0',
334 'maxX' => '1',
335 'maxY' => '1',
337 'var fill = new ol.style.Fill({"color":"white"});var stroke = new ol.style.Stroke({'
338 . '"color":[176,46,224],"width":2});var style = new ol.style.Style({image: new ol.s'
339 . 'tyle.Circle({fill: fill,stroke: stroke,radius: 3}),fill: fill,stroke: stroke,tex'
340 . 't: new ol.style.Text({"text":"Ol","offsetY":-9})});var minLoc = [0, 0];var maxLo'
341 . 'c = [1, 1];var ext = ol.extent.boundingExtent([minLoc, maxLoc]);ext = ol.proj.tr'
342 . 'ansformExtent(ext, ol.proj.get("EPSG:4326"), ol.proj.get(\'EPSG:3857\'));map.get'
343 . 'View().fit(ext, map.getSize());var multiPoint = new ol.geom.MultiPoint(new Array'
344 . '((new ol.geom.Point([12,35]).transform(ol.proj.get("EPSG:4326"), ol.proj.get(\'E'
345 . 'PSG:3857\'))).getCoordinates(), (new ol.geom.Point([48,75]).transform(ol.proj.ge'
346 . 't("EPSG:4326"), ol.proj.get(\'EPSG:3857\'))).getCoordinates(), (new ol.geom.Poin'
347 . 't([69,23]).transform(ol.proj.get("EPSG:4326"), ol.proj.get(\'EPSG:3857\'))).getC'
348 . 'oordinates(), (new ol.geom.Point([25,45]).transform(ol.proj.get("EPSG:4326"), ol'
349 . '.proj.get(\'EPSG:3857\'))).getCoordinates(), (new ol.geom.Point([14,53]).transfo'
350 . 'rm(ol.proj.get("EPSG:4326"), ol.proj.get(\'EPSG:3857\'))).getCoordinates(), (new'
351 . ' ol.geom.Point([35,78]).transform(ol.proj.get("EPSG:4326"), ol.proj.get(\'EPSG:3'
352 . '857\'))).getCoordinates()));var feature = new ol.Feature({geometry: multiPoint})'
353 . ';feature.setStyle(style);vectorLayer.addFeature(feature);',