summaryrefslogtreecommitdiff
path: root/www/wiki/extensions/Maps/tests/Unit/Elements/LineTest.php
blob: 5ca462ff47db130999cabed817288a0fb897d966 (plain)
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
<?php

namespace Maps\Tests\Unit\Elements;

use DataValues\Geo\Values\LatLongValue;
use Maps\Elements\Line;

/**
 * @covers \Maps\Elements\Line
 *
 * @licence GNU GPL v2+
 * @author Jeroen De Dauw < jeroendedauw@gmail.com >
 */
class LineTest extends BaseElementTest {

	/**
	 * @see BaseElementTest::getClass
	 *
	 * @since 3.0
	 *
	 * @return string
	 */
	public function getClass() {
		return Line::class;
	}

	public function validConstructorProvider() {
		$argLists = [];

		$argLists[] = [ [] ];
		$argLists[] = [ [ new LatLongValue( 4, 2 ) ] ];

		$argLists[] = [
			[
				new LatLongValue( 4, 2 ),
				new LatLongValue( 2, 4 ),
				new LatLongValue( 42, 42 ),
			]
		];

		return $argLists;
	}

	public function invalidConstructorProvider() {
		$argLists = [];

		$argLists[] = [ [ '~=[,,_,,]:3' ] ];
		$argLists[] = [ [ new LatLongValue( 4, 2 ), '~=[,,_,,]:3' ] ];
		$argLists[] = [ [ '~=[,,_,,]:3', new LatLongValue( 4, 2 ) ] ];

		return $argLists;
	}

	/**
	 * @dataProvider instanceProvider
	 *
	 * @param Line $line
	 * @param array $arguments
	 */
	public function testGetLineCoordinates( Line $line, array $arguments ) {
		$coordinates = $line->getLineCoordinates();

		$this->assertInternalType( 'array', $coordinates );
		$this->assertEquals( count( $arguments[0] ), count( $coordinates ) );

		foreach ( $coordinates as $geoCoordinate ) {
			$this->assertInstanceOf( LatLongValue::class, $geoCoordinate );
		}
	}

}