123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289 |
- <?php
- require_once('../geoPHP.inc');
- require_once('PHPUnit/Autoload.php');
- class Tests_20120702 extends PHPUnit_Framework_TestCase {
- function setUp() {
- }
- function testMethods() {
- $format = 'gpx';
- $value = file_get_contents('./input/20120702.gpx');
- $geometry = geoPHP::load($value, $format);
- $methods = array(
- array('name' => 'area'),
- array('name' => 'boundary'),
- array('name' => 'getBBox'),
- array('name' => 'centroid'),
- array('name' => 'length'),
- array('name' => 'greatCircleLength', 'argument' => 6378137),
- array('name' => 'haversineLength'),
- array('name' => 'y'),
- array('name' => 'x'),
- array('name' => 'numGeometries'),
- array('name' => 'geometryN', 'argument' => '1'),
- array('name' => 'startPoint'),
- array('name' => 'endPoint'),
- array('name' => 'isRing'),
- array('name' => 'isClosed'),
- array('name' => 'numPoints'),
- array('name' => 'pointN', 'argument' => '1'),
- array('name' => 'exteriorRing'),
- array('name' => 'numInteriorRings'),
- array('name' => 'interiorRingN', 'argument' => '1'),
- array('name' => 'dimension'),
- array('name' => 'geometryType'),
- array('name' => 'SRID'),
- array('name' => 'setSRID', 'argument' => '4326'),
- );
- foreach($methods as $method) {
- $argument = NULL;
- $method_name = $method['name'];
- if (isset($method['argument'])) {
- $argument = $method['argument'];
- }
- $this->_methods_tester($geometry, $method_name, $argument);
- }
- }
- function _methods_tester($geometry, $method_name, $argument) {
- if (!method_exists($geometry, $method_name)) {
- $this->fail("Method ".$method_name.'() doesn\'t exists.');
- return;
- }
- switch ($method_name) {
- case 'y':
- case 'x':
- if ($geometry->geometryType() == 'Point') {
- $this->assertNotNull($geometry->$method_name($argument), 'Failed on ' . $method_name);
- }
- if ($geometry->geometryType() == 'LineString') {
- $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name);
- }
- if ($geometry->geometryType() == 'MultiLineString') {
- $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name);
- }
- break;
- case 'geometryN':
- if ($geometry->geometryType() == 'Point') {
- $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name);
- }
- if ($geometry->geometryType() == 'LineString') {
- $this->assertNotNull($geometry->$method_name($argument), 'Failed on ' . $method_name);
- }
- if ($geometry->geometryType() == 'MultiLineString') {
- $this->assertNotNull($geometry->$method_name($argument), 'Failed on ' . $method_name);
- }
- break;
- case 'startPoint':
- if ($geometry->geometryType() == 'Point') {
- $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name);
- }
- if ($geometry->geometryType() == 'LineString') {
- $this->assertNotNull($geometry->$method_name($argument), 'Failed on ' . $method_name);
- }
- if ($geometry->geometryType() == 'MultiLineString') {
- //TODO: Add a method startPoint() to MultiLineString.
- //$this->assertNotNull($geometry->$method_name($argument), 'Failed on ' . $method_name);
- }
- break;
- case 'endPoint':
- if ($geometry->geometryType() == 'Point') {
- $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name);
- }
- if ($geometry->geometryType() == 'LineString') {
- $this->assertNotNull($geometry->$method_name($argument), 'Failed on ' . $method_name);
- }
- if ($geometry->geometryType() == 'MultiLineString') {
- //TODO: Add a method endPoint() to MultiLineString.
- //$this->assertNotNull($geometry->$method_name($argument), 'Failed on ' . $method_name);
- }
- break;
- case 'isRing':
- if ($geometry->geometryType() == 'Point') {
- $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name);
- }
- if ($geometry->geometryType() == 'LineString') {
- $this->assertNotNull($geometry->$method_name($argument), 'Failed on ' . $method_name);
- }
- if ($geometry->geometryType() == 'MultiLineString') {
- $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name);
- }
- break;
- case 'isClosed':
- if ($geometry->geometryType() == 'Point') {
- $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name);
- }
- if ($geometry->geometryType() == 'LineString') {
- $this->assertNotNull($geometry->$method_name($argument), 'Failed on ' . $method_name);
- }
- if ($geometry->geometryType() == 'MultiLineString') {
- $this->assertNotNull($geometry->$method_name($argument), 'Failed on ' . $method_name);
- }
- break;
- case 'pointN':
- if ($geometry->geometryType() == 'Point') {
- $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name);
- }
- if ($geometry->geometryType() == 'LineString') {
- $this->assertNotNull($geometry->$method_name($argument), 'Failed on ' . $method_name);
- }
- if ($geometry->geometryType() == 'MultiLineString') {
- //TODO: Add a method pointN() to MultiLineString.
- //$this->assertNotNull($geometry->$method_name($argument), 'Failed on ' . $method_name);
- }
- break;
- case 'exteriorRing':
- if ($geometry->geometryType() == 'Point') {
- $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name);
- }
- if ($geometry->geometryType() == 'LineString') {
- $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name);
- }
- if ($geometry->geometryType() == 'MultiLineString') {
- $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name);
- }
- break;
- case 'numInteriorRings':
- if ($geometry->geometryType() == 'Point') {
- $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name);
- }
- if ($geometry->geometryType() == 'LineString') {
- $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name);
- }
- if ($geometry->geometryType() == 'MultiLineString') {
- $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name);
- }
- break;
- case 'interiorRingN':
- if ($geometry->geometryType() == 'Point') {
- $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name);
- }
- if ($geometry->geometryType() == 'LineString') {
- $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name);
- }
- if ($geometry->geometryType() == 'MultiLineString') {
- $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name);
- }
- break;
- case 'setSRID':
- //TODO: The method setSRID() should return TRUE.
- break;
- case 'SRID':
- if ($geometry->geometryType() == 'Point') {
- $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name);
- }
- if ($geometry->geometryType() == 'LineString') {
- $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name);
- }
- if ($geometry->geometryType() == 'MultiLineString') {
- $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name);
- }
- break;
- case 'getBBox':
- if ($geometry->geometryType() == 'Point') {
- $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name);
- }
- if ($geometry->geometryType() == 'LineString') {
- $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name);
- }
- if ($geometry->geometryType() == 'MultiLineString') {
- $this->assertNotNull($geometry->$method_name($argument), 'Failed on ' . $method_name);
- }
- break;
- case 'centroid':
- if ($geometry->geometryType() == 'Point') {
- $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name);
- }
- if ($geometry->geometryType() == 'LineString') {
- $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name);
- }
- if ($geometry->geometryType() == 'MultiLineString') {
- $this->assertNotNull($geometry->$method_name($argument), 'Failed on ' . $method_name);
- }
- break;
- case 'length':
- if ($geometry->geometryType() == 'Point') {
- $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name);
- }
- if ($geometry->geometryType() == 'LineString') {
- $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name);
- }
- if ($geometry->geometryType() == 'MultiLineString') {
- $this->assertEquals($geometry->$method_name($argument), (float) '0.11624637315233', 'Failed on ' . $method_name);
- }
- break;
- case 'numGeometries':
- if ($geometry->geometryType() == 'Point') {
- $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name);
- }
- if ($geometry->geometryType() == 'LineString') {
- $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name);
- }
- if ($geometry->geometryType() == 'MultiLineString') {
- $this->assertNotNull($geometry->$method_name($argument), 'Failed on ' . $method_name);
- }
- break;
- case 'numPoints':
- if ($geometry->geometryType() == 'Point') {
- $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name);
- }
- if ($geometry->geometryType() == 'LineString') {
- $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name);
- }
- if ($geometry->geometryType() == 'MultiLineString') {
- $this->assertNotNull($geometry->$method_name($argument), 'Failed on ' . $method_name);
- }
- break;
- case 'dimension':
- if ($geometry->geometryType() == 'Point') {
- $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name);
- }
- if ($geometry->geometryType() == 'LineString') {
- $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name);
- }
- if ($geometry->geometryType() == 'MultiLineString') {
- $this->assertNotNull($geometry->$method_name($argument), 'Failed on ' . $method_name);
- }
- break;
- case 'boundary':
- if ($geometry->geometryType() == 'Point') {
- $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name);
- }
- if ($geometry->geometryType() == 'LineString') {
- $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name);
- }
- if ($geometry->geometryType() == 'MultiLineString') {
- $this->assertNotNull($geometry->$method_name($argument), 'Failed on ' . $method_name);
- }
- break;
- case 'greatCircleLength':
- if ($geometry->geometryType() == 'Point') {
- $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name);
- }
- if ($geometry->geometryType() == 'LineString') {
- $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name);
- }
- if ($geometry->geometryType() == 'MultiLineString') {
- $this->assertNotEquals($geometry->$method_name($argument), '9500.9359867418', 'Failed on ' . $method_name);
- }
- break;
- case 'haversineLength':
- case 'area':
- $this->assertNotNull($geometry->$method_name($argument), 'Failed on ' . $method_name);
- break;
- case 'geometryType':
- $this->assertNotNull($geometry->$method_name($argument), 'Failed on ' . $method_name);
- break;
- default:
- $this->assertTrue($geometry->$method_name($argument), 'Failed on ' . $method_name);
- }
- }
- }
|