/profiles/drupalrooms/modules/contrib/geophp/geoPHP/tests/tests/20120702Test.php

https://github.com/istos/DrupalRooms · PHP · 289 lines · 272 code · 10 blank · 7 comment · 117 complexity · 39bad8be998e6f8c98f059b6eeb2346e MD5 · raw file

  1. <?php
  2. require_once('../geoPHP.inc');
  3. require_once('PHPUnit/Autoload.php');
  4. class Tests_20120702 extends PHPUnit_Framework_TestCase {
  5. function setUp() {
  6. }
  7. function testMethods() {
  8. $format = 'gpx';
  9. $value = file_get_contents('./input/20120702.gpx');
  10. $geometry = geoPHP::load($value, $format);
  11. $methods = array(
  12. array('name' => 'area'),
  13. array('name' => 'boundary'),
  14. array('name' => 'getBBox'),
  15. array('name' => 'centroid'),
  16. array('name' => 'length'),
  17. array('name' => 'greatCircleLength', 'argument' => 6378137),
  18. array('name' => 'haversineLength'),
  19. array('name' => 'y'),
  20. array('name' => 'x'),
  21. array('name' => 'numGeometries'),
  22. array('name' => 'geometryN', 'argument' => '1'),
  23. array('name' => 'startPoint'),
  24. array('name' => 'endPoint'),
  25. array('name' => 'isRing'),
  26. array('name' => 'isClosed'),
  27. array('name' => 'numPoints'),
  28. array('name' => 'pointN', 'argument' => '1'),
  29. array('name' => 'exteriorRing'),
  30. array('name' => 'numInteriorRings'),
  31. array('name' => 'interiorRingN', 'argument' => '1'),
  32. array('name' => 'dimension'),
  33. array('name' => 'geometryType'),
  34. array('name' => 'SRID'),
  35. array('name' => 'setSRID', 'argument' => '4326'),
  36. );
  37. foreach($methods as $method) {
  38. $argument = NULL;
  39. $method_name = $method['name'];
  40. if (isset($method['argument'])) {
  41. $argument = $method['argument'];
  42. }
  43. $this->_methods_tester($geometry, $method_name, $argument);
  44. }
  45. }
  46. function _methods_tester($geometry, $method_name, $argument) {
  47. if (!method_exists($geometry, $method_name)) {
  48. $this->fail("Method ".$method_name.'() doesn\'t exists.');
  49. return;
  50. }
  51. switch ($method_name) {
  52. case 'y':
  53. case 'x':
  54. if ($geometry->geometryType() == 'Point') {
  55. $this->assertNotNull($geometry->$method_name($argument), 'Failed on ' . $method_name);
  56. }
  57. if ($geometry->geometryType() == 'LineString') {
  58. $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name);
  59. }
  60. if ($geometry->geometryType() == 'MultiLineString') {
  61. $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name);
  62. }
  63. break;
  64. case 'geometryN':
  65. if ($geometry->geometryType() == 'Point') {
  66. $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name);
  67. }
  68. if ($geometry->geometryType() == 'LineString') {
  69. $this->assertNotNull($geometry->$method_name($argument), 'Failed on ' . $method_name);
  70. }
  71. if ($geometry->geometryType() == 'MultiLineString') {
  72. $this->assertNotNull($geometry->$method_name($argument), 'Failed on ' . $method_name);
  73. }
  74. break;
  75. case 'startPoint':
  76. if ($geometry->geometryType() == 'Point') {
  77. $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name);
  78. }
  79. if ($geometry->geometryType() == 'LineString') {
  80. $this->assertNotNull($geometry->$method_name($argument), 'Failed on ' . $method_name);
  81. }
  82. if ($geometry->geometryType() == 'MultiLineString') {
  83. //TODO: Add a method startPoint() to MultiLineString.
  84. //$this->assertNotNull($geometry->$method_name($argument), 'Failed on ' . $method_name);
  85. }
  86. break;
  87. case 'endPoint':
  88. if ($geometry->geometryType() == 'Point') {
  89. $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name);
  90. }
  91. if ($geometry->geometryType() == 'LineString') {
  92. $this->assertNotNull($geometry->$method_name($argument), 'Failed on ' . $method_name);
  93. }
  94. if ($geometry->geometryType() == 'MultiLineString') {
  95. //TODO: Add a method endPoint() to MultiLineString.
  96. //$this->assertNotNull($geometry->$method_name($argument), 'Failed on ' . $method_name);
  97. }
  98. break;
  99. case 'isRing':
  100. if ($geometry->geometryType() == 'Point') {
  101. $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name);
  102. }
  103. if ($geometry->geometryType() == 'LineString') {
  104. $this->assertNotNull($geometry->$method_name($argument), 'Failed on ' . $method_name);
  105. }
  106. if ($geometry->geometryType() == 'MultiLineString') {
  107. $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name);
  108. }
  109. break;
  110. case 'isClosed':
  111. if ($geometry->geometryType() == 'Point') {
  112. $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name);
  113. }
  114. if ($geometry->geometryType() == 'LineString') {
  115. $this->assertNotNull($geometry->$method_name($argument), 'Failed on ' . $method_name);
  116. }
  117. if ($geometry->geometryType() == 'MultiLineString') {
  118. $this->assertNotNull($geometry->$method_name($argument), 'Failed on ' . $method_name);
  119. }
  120. break;
  121. case 'pointN':
  122. if ($geometry->geometryType() == 'Point') {
  123. $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name);
  124. }
  125. if ($geometry->geometryType() == 'LineString') {
  126. $this->assertNotNull($geometry->$method_name($argument), 'Failed on ' . $method_name);
  127. }
  128. if ($geometry->geometryType() == 'MultiLineString') {
  129. //TODO: Add a method pointN() to MultiLineString.
  130. //$this->assertNotNull($geometry->$method_name($argument), 'Failed on ' . $method_name);
  131. }
  132. break;
  133. case 'exteriorRing':
  134. if ($geometry->geometryType() == 'Point') {
  135. $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name);
  136. }
  137. if ($geometry->geometryType() == 'LineString') {
  138. $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name);
  139. }
  140. if ($geometry->geometryType() == 'MultiLineString') {
  141. $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name);
  142. }
  143. break;
  144. case 'numInteriorRings':
  145. if ($geometry->geometryType() == 'Point') {
  146. $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name);
  147. }
  148. if ($geometry->geometryType() == 'LineString') {
  149. $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name);
  150. }
  151. if ($geometry->geometryType() == 'MultiLineString') {
  152. $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name);
  153. }
  154. break;
  155. case 'interiorRingN':
  156. if ($geometry->geometryType() == 'Point') {
  157. $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name);
  158. }
  159. if ($geometry->geometryType() == 'LineString') {
  160. $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name);
  161. }
  162. if ($geometry->geometryType() == 'MultiLineString') {
  163. $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name);
  164. }
  165. break;
  166. case 'setSRID':
  167. //TODO: The method setSRID() should return TRUE.
  168. break;
  169. case 'SRID':
  170. if ($geometry->geometryType() == 'Point') {
  171. $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name);
  172. }
  173. if ($geometry->geometryType() == 'LineString') {
  174. $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name);
  175. }
  176. if ($geometry->geometryType() == 'MultiLineString') {
  177. $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name);
  178. }
  179. break;
  180. case 'getBBox':
  181. if ($geometry->geometryType() == 'Point') {
  182. $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name);
  183. }
  184. if ($geometry->geometryType() == 'LineString') {
  185. $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name);
  186. }
  187. if ($geometry->geometryType() == 'MultiLineString') {
  188. $this->assertNotNull($geometry->$method_name($argument), 'Failed on ' . $method_name);
  189. }
  190. break;
  191. case 'centroid':
  192. if ($geometry->geometryType() == 'Point') {
  193. $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name);
  194. }
  195. if ($geometry->geometryType() == 'LineString') {
  196. $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name);
  197. }
  198. if ($geometry->geometryType() == 'MultiLineString') {
  199. $this->assertNotNull($geometry->$method_name($argument), 'Failed on ' . $method_name);
  200. }
  201. break;
  202. case 'length':
  203. if ($geometry->geometryType() == 'Point') {
  204. $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name);
  205. }
  206. if ($geometry->geometryType() == 'LineString') {
  207. $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name);
  208. }
  209. if ($geometry->geometryType() == 'MultiLineString') {
  210. $this->assertEquals($geometry->$method_name($argument), (float) '0.11624637315233', 'Failed on ' . $method_name);
  211. }
  212. break;
  213. case 'numGeometries':
  214. if ($geometry->geometryType() == 'Point') {
  215. $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name);
  216. }
  217. if ($geometry->geometryType() == 'LineString') {
  218. $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name);
  219. }
  220. if ($geometry->geometryType() == 'MultiLineString') {
  221. $this->assertNotNull($geometry->$method_name($argument), 'Failed on ' . $method_name);
  222. }
  223. break;
  224. case 'numPoints':
  225. if ($geometry->geometryType() == 'Point') {
  226. $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name);
  227. }
  228. if ($geometry->geometryType() == 'LineString') {
  229. $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name);
  230. }
  231. if ($geometry->geometryType() == 'MultiLineString') {
  232. $this->assertNotNull($geometry->$method_name($argument), 'Failed on ' . $method_name);
  233. }
  234. break;
  235. case 'dimension':
  236. if ($geometry->geometryType() == 'Point') {
  237. $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name);
  238. }
  239. if ($geometry->geometryType() == 'LineString') {
  240. $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name);
  241. }
  242. if ($geometry->geometryType() == 'MultiLineString') {
  243. $this->assertNotNull($geometry->$method_name($argument), 'Failed on ' . $method_name);
  244. }
  245. break;
  246. case 'boundary':
  247. if ($geometry->geometryType() == 'Point') {
  248. $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name);
  249. }
  250. if ($geometry->geometryType() == 'LineString') {
  251. $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name);
  252. }
  253. if ($geometry->geometryType() == 'MultiLineString') {
  254. $this->assertNotNull($geometry->$method_name($argument), 'Failed on ' . $method_name);
  255. }
  256. break;
  257. case 'greatCircleLength':
  258. if ($geometry->geometryType() == 'Point') {
  259. $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name);
  260. }
  261. if ($geometry->geometryType() == 'LineString') {
  262. $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name);
  263. }
  264. if ($geometry->geometryType() == 'MultiLineString') {
  265. $this->assertNotEquals($geometry->$method_name($argument), '9500.9359867418', 'Failed on ' . $method_name);
  266. }
  267. break;
  268. case 'haversineLength':
  269. case 'area':
  270. $this->assertNotNull($geometry->$method_name($argument), 'Failed on ' . $method_name);
  271. break;
  272. case 'geometryType':
  273. $this->assertNotNull($geometry->$method_name($argument), 'Failed on ' . $method_name);
  274. break;
  275. default:
  276. $this->assertTrue($geometry->$method_name($argument), 'Failed on ' . $method_name);
  277. }
  278. }
  279. }