3 declare(strict_types
=1);
5 namespace PhpMyAdmin\Tests\Gis
;
7 use PhpMyAdmin\Gis\GisMultiPoint
;
8 use PhpMyAdmin\Image\ImageWrapper
;
11 use function preg_match
;
14 * @covers \PhpMyAdmin\Gis\GisMultiPoint
16 class GisMultiPointTest
extends GisGeomTestCase
18 /** @var GisMultiPoint */
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
28 $this->object = GisMultiPoint
::singleton();
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
42 * data provider for testGenerateWkt
44 * @return array data for testGenerateWkt
46 public function providerForTestGenerateWkt(): array
64 $gis_data2 = $gis_data1;
65 $gis_data2[0]['MULTIPOINT']['no_of_points'] = -1;
72 'MULTIPOINT(5.02 8.45,1.56 4.36)',
78 'MULTIPOINT(5.02 8.45)',
84 * test getShape method
86 public function testGetShape(): void
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
129 $temp2['gis_type'] = 'MULTIPOINT';
133 "'MULTIPOINT(5.02 8.45,6.14 0.15)',124",
141 'MULTIPOINT(5.02 8.45,6.14 0.15)',
149 * data provider for testScaleRow
151 * @return array data for testScaleRow
153 public function providerForTestScaleRow(): array
157 'MULTIPOINT(12 35,48 75,69 23,25 45,14 53,35 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)',
179 ['x' => 12, 'y' => 69, 'scale' => 2, 'height' => 150],
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(
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
217 'MULTIPOINT(12 35,48 75,69 23,25 45,14 53,35 78)',
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(
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
262 'MULTIPOINT(12 35,48 75,69 23,25 45,14 53,35 78)',
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(
308 $this->object->prepareRowAsOl(
319 * data provider for testPrepareRowAsOl() test case
321 * @return array test data for testPrepareRowAsOl() test case
323 public function providerForPrepareRowAsOl(): array
327 'MULTIPOINT(12 35,48 75,69 23,25 45,14 53,35 78)',
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);',