PageRenderTime 26ms CodeModel.GetById 22ms RepoModel.GetById 0ms app.codeStats 0ms

/sites/all/libraries/geoPHP/tests/tests/20120702Test.php

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