unit_tests.py 26 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975
  1. """!@package grass.temporal
  2. @brief GRASS Python scripting module (temporal GIS functions)
  3. Temporal GIS unit tests
  4. Usage:
  5. @code
  6. import grass.temporal as tgis
  7. tgis.test_increment_datetime_by_string()
  8. ...
  9. @endcode
  10. (C) 2008-2011 by the GRASS Development Team
  11. This program is free software under the GNU General Public
  12. License (>=v2). Read the file COPYING that comes with GRASS
  13. for details.
  14. @author Soeren Gebbert
  15. """
  16. from datetime import datetime, date, time, timedelta
  17. import grass.script.core as core
  18. from temporal_granularity import *
  19. from datetime_math import *
  20. from space_time_datasets import *
  21. ###############################################################################
  22. def test_increment_datetime_by_string():
  23. # First test
  24. print "# Test 1"
  25. dt = datetime(2001, 9, 1, 0, 0, 0)
  26. string = "60 seconds, 4 minutes, 12 hours, 10 days, 1 weeks, 5 months, 1 years"
  27. dt1 = datetime(2003,2,18,12,5,0)
  28. dt2 = increment_datetime_by_string(dt, string)
  29. print dt
  30. print dt2
  31. delta = dt1 -dt2
  32. if delta.days != 0 or delta.seconds != 0:
  33. core.error("increment computation is wrong %s" % (delta))
  34. # Second test
  35. print "# Test 2"
  36. dt = datetime(2001, 11, 1, 0, 0, 0)
  37. string = "1 months"
  38. dt1 = datetime(2001,12,1)
  39. dt2 = increment_datetime_by_string(dt, string)
  40. print dt
  41. print dt2
  42. delta = dt1 -dt2
  43. if delta.days != 0 or delta.seconds != 0:
  44. core.error("increment computation is wrong %s" % (delta))
  45. # Third test
  46. print "# Test 3"
  47. dt = datetime(2001, 11, 1, 0, 0, 0)
  48. string = "13 months"
  49. dt1 = datetime(2002,12,1)
  50. dt2 = increment_datetime_by_string(dt, string)
  51. print dt
  52. print dt2
  53. delta = dt1 -dt2
  54. if delta.days != 0 or delta.seconds != 0:
  55. core.error("increment computation is wrong %s" % (delta))
  56. # 4. test
  57. print "# Test 4"
  58. dt = datetime(2001, 1, 1, 0, 0, 0)
  59. string = "72 months"
  60. dt1 = datetime(2007,1,1)
  61. dt2 = increment_datetime_by_string(dt, string)
  62. print dt
  63. print dt2
  64. delta = dt1 -dt2
  65. if delta.days != 0 or delta.seconds != 0:
  66. core.error("increment computation is wrong %s" % (delta))
  67. ###############################################################################
  68. def test_adjust_datetime_to_granularity():
  69. # First test
  70. print "Test 1"
  71. dt = datetime(2001, 8, 8, 12,30,30)
  72. result = adjust_datetime_to_granularity(dt, "5 seconds")
  73. correct = datetime(2001, 8, 8, 12,30,30)
  74. delta = correct - result
  75. if delta.days != 0 or delta.seconds != 0:
  76. core.error("Granularity adjustment computation is wrong %s" % (delta))
  77. # Second test
  78. print "Test 2"
  79. result = adjust_datetime_to_granularity(dt, "20 minutes")
  80. correct = datetime(2001, 8, 8, 12,30,00)
  81. delta = correct - result
  82. if delta.days != 0 or delta.seconds != 0:
  83. core.error("Granularity adjustment computation is wrong %s" % (delta))
  84. # Third test
  85. print "Test 2"
  86. result = adjust_datetime_to_granularity(dt, "20 minutes")
  87. correct = datetime(2001, 8, 8, 12,30,00)
  88. delta = correct - result
  89. if delta.days != 0 or delta.seconds != 0:
  90. core.error("Granularity adjustment computation is wrong %s" % (delta))
  91. # 4. test
  92. print "Test 4"
  93. result = adjust_datetime_to_granularity(dt, "3 hours")
  94. correct = datetime(2001, 8, 8, 12,00,00)
  95. delta = correct - result
  96. if delta.days != 0 or delta.seconds != 0:
  97. core.error("Granularity adjustment computation is wrong %s" % (delta))
  98. # 5. test
  99. print "Test 5"
  100. result = adjust_datetime_to_granularity(dt, "5 days")
  101. correct = datetime(2001, 8, 8, 00,00,00)
  102. delta = correct - result
  103. if delta.days != 0 or delta.seconds != 0:
  104. core.error("Granularity adjustment computation is wrong %s" % (delta))
  105. # 6. test
  106. print "Test 6"
  107. result = adjust_datetime_to_granularity(dt, "2 weeks")
  108. correct = datetime(2001, 8, 6, 00,00,00)
  109. delta = correct - result
  110. if delta.days != 0 or delta.seconds != 0:
  111. core.error("Granularity adjustment computation is wrong %s" % (delta))
  112. # 7. test
  113. print "Test 7"
  114. result = adjust_datetime_to_granularity(dt, "6 months")
  115. correct = datetime(2001, 8, 1, 00,00,00)
  116. delta = correct - result
  117. if delta.days != 0 or delta.seconds != 0:
  118. core.error("Granularity adjustment computation is wrong %s" % (delta))
  119. # 8. test
  120. print "Test 8"
  121. result = adjust_datetime_to_granularity(dt, "2 years")
  122. correct = datetime(2001, 1, 1, 00,00,00)
  123. delta = correct - result
  124. if delta.days != 0 or delta.seconds != 0:
  125. core.error("Granularity adjustment computation is wrong %s" % (delta))
  126. # 9. test
  127. print "Test 9"
  128. result = adjust_datetime_to_granularity(dt, "2 years, 3 months, 5 days, 3 hours, 3 minutes, 2 seconds")
  129. correct = datetime(2001, 8, 8, 12,30,30)
  130. delta = correct - result
  131. if delta.days != 0 or delta.seconds != 0:
  132. core.error("Granularity adjustment computation is wrong %s" % (delta))
  133. # 10. test
  134. print "Test 10"
  135. result = adjust_datetime_to_granularity(dt, "3 months, 5 days, 3 minutes")
  136. correct = datetime(2001, 8, 8, 12,30,00)
  137. delta = correct - result
  138. if delta.days != 0 or delta.seconds != 0:
  139. core.error("Granularity adjustment computation is wrong %s" % (delta))
  140. # 11. test
  141. print "Test 11"
  142. result = adjust_datetime_to_granularity(dt, "3 weeks, 5 days")
  143. correct = datetime(2001, 8, 8, 00,00,00)
  144. delta = correct - result
  145. if delta.days != 0 or delta.seconds != 0:
  146. core.error("Granularity adjustment computation is wrong %s" % (delta))
  147. ###############################################################################
  148. def test_compute_datetime_delta():
  149. print "Test 1"
  150. start = datetime(2001, 1, 1, 00,00,00)
  151. end = datetime(2001, 1, 1, 00,00,00)
  152. comp = compute_datetime_delta(start, end)
  153. result = comp["second"]
  154. correct = 0
  155. delta = correct - result
  156. if delta != 0:
  157. core.error("Compute datetime delta is wrong %s" % (delta))
  158. print "Test 2"
  159. start = datetime(2001, 1, 1, 00,00,14)
  160. end = datetime(2001, 1, 1, 00,00,44)
  161. comp = compute_datetime_delta(start, end)
  162. result = comp["second"]
  163. correct = 30
  164. delta = correct - result
  165. if delta != 0:
  166. core.error("Compute datetime delta is wrong %s" % (delta))
  167. print "Test 3"
  168. start = datetime(2001, 1, 1, 00,00,44)
  169. end = datetime(2001, 1, 1, 00,01,14)
  170. comp = compute_datetime_delta(start, end)
  171. result = comp["second"]
  172. correct = 30
  173. delta = correct - result
  174. if delta != 0:
  175. core.error("Compute datetime delta is wrong %s" % (delta))
  176. print "Test 4"
  177. start = datetime(2001, 1, 1, 00,00,30)
  178. end = datetime(2001, 1, 1, 00,05,30)
  179. comp = compute_datetime_delta(start, end)
  180. result = comp["second"]
  181. correct = 300
  182. delta = correct - result
  183. if delta != 0:
  184. core.error("Compute datetime delta is wrong %s" % (delta))
  185. print "Test 5"
  186. start = datetime(2001, 1, 1, 00,00,00)
  187. end = datetime(2001, 1, 1, 00,01,00)
  188. comp = compute_datetime_delta(start, end)
  189. result = comp["minute"]
  190. correct = 1
  191. delta = correct - result
  192. if delta != 0:
  193. core.error("Compute datetime delta is wrong %s" % (delta))
  194. print "Test 6"
  195. start = datetime(2011,10,31, 00,45,00)
  196. end = datetime(2011,10,31, 01,45,00)
  197. comp = compute_datetime_delta(start, end)
  198. result = comp["minute"]
  199. correct = 60
  200. delta = correct - result
  201. if delta != 0:
  202. core.error("Compute datetime delta is wrong %s" % (delta))
  203. print "Test 7"
  204. start = datetime(2011,10,31, 00,45,00)
  205. end = datetime(2011,10,31, 01,15,00)
  206. comp = compute_datetime_delta(start, end)
  207. result = comp["minute"]
  208. correct = 30
  209. delta = correct - result
  210. if delta != 0:
  211. core.error("Compute datetime delta is wrong %s" % (delta))
  212. print "Test 8"
  213. start = datetime(2011,10,31, 00,45,00)
  214. end = datetime(2011,10,31, 12,15,00)
  215. comp = compute_datetime_delta(start, end)
  216. result = comp["minute"]
  217. correct = 690
  218. delta = correct - result
  219. if delta != 0:
  220. core.error("Compute datetime delta is wrong %s" % (delta))
  221. print "Test 9"
  222. start = datetime(2011,10,31, 00,00,00)
  223. end = datetime(2011,10,31, 01,00,00)
  224. comp = compute_datetime_delta(start, end)
  225. result = comp["hour"]
  226. correct = 1
  227. delta = correct - result
  228. if delta != 0:
  229. core.error("Compute datetime delta is wrong %s" % (delta))
  230. print "Test 10"
  231. start = datetime(2011,10,31, 00,00,00)
  232. end = datetime(2011,11,01, 01,00,00)
  233. comp = compute_datetime_delta(start, end)
  234. result = comp["hour"]
  235. correct = 25
  236. delta = correct - result
  237. if delta != 0:
  238. core.error("Compute datetime delta is wrong %s" % (delta))
  239. print "Test 11"
  240. start = datetime(2011,10,31, 12,00,00)
  241. end = datetime(2011,11,01, 06,00,00)
  242. comp = compute_datetime_delta(start, end)
  243. result = comp["hour"]
  244. correct = 18
  245. delta = correct - result
  246. if delta != 0:
  247. core.error("Compute datetime delta is wrong %s" % (delta))
  248. print "Test 12"
  249. start = datetime(2011,11,01, 00,00,00)
  250. end = datetime(2011,12,01, 01,00,00)
  251. comp = compute_datetime_delta(start, end)
  252. result = comp["hour"]
  253. correct = 30 * 24 + 1
  254. delta = correct - result
  255. if delta != 0:
  256. core.error("Compute datetime delta is wrong %s" % (delta))
  257. print "Test 13"
  258. start = datetime(2011,11,01, 00,00,00)
  259. end = datetime(2011,11,05, 00,00,00)
  260. comp = compute_datetime_delta(start, end)
  261. result = comp["day"]
  262. correct = 4
  263. delta = correct - result
  264. if delta != 0:
  265. core.error("Compute datetime delta is wrong %s" % (delta))
  266. print "Test 14"
  267. start = datetime(2011,10,06, 00,00,00)
  268. end = datetime(2011,11,05, 00,00,00)
  269. comp = compute_datetime_delta(start, end)
  270. result = comp["day"]
  271. correct = 30
  272. delta = correct - result
  273. if delta != 0:
  274. core.error("Compute datetime delta is wrong %s" % (delta))
  275. print "Test 15"
  276. start = datetime(2011,12,02, 00,00,00)
  277. end = datetime(2012,01,01, 00,00,00)
  278. comp = compute_datetime_delta(start, end)
  279. result = comp["day"]
  280. correct = 30
  281. delta = correct - result
  282. if delta != 0:
  283. core.error("Compute datetime delta is wrong %s" % (delta))
  284. print "Test 16"
  285. start = datetime(2011,01,01, 00,00,00)
  286. end = datetime(2011,02,01, 00,00,00)
  287. comp = compute_datetime_delta(start, end)
  288. result = comp["month"]
  289. correct = 1
  290. delta = correct - result
  291. if delta != 0:
  292. core.error("Compute datetime delta is wrong %s" % (delta))
  293. print "Test 17"
  294. start = datetime(2011,12,01, 00,00,00)
  295. end = datetime(2012,01,01, 00,00,00)
  296. comp = compute_datetime_delta(start, end)
  297. result = comp["month"]
  298. correct = 1
  299. delta = correct - result
  300. if delta != 0:
  301. core.error("Compute datetime delta is wrong %s" % (delta))
  302. print "Test 18"
  303. start = datetime(2011,12,01, 00,00,00)
  304. end = datetime(2012,06,01, 00,00,00)
  305. comp = compute_datetime_delta(start, end)
  306. result = comp["month"]
  307. correct = 6
  308. delta = correct - result
  309. if delta != 0:
  310. core.error("Compute datetime delta is wrong %s" % (delta))
  311. print "Test 19"
  312. start = datetime(2011,06,01, 00,00,00)
  313. end = datetime(2021,06,01, 00,00,00)
  314. comp = compute_datetime_delta(start, end)
  315. result = comp["year"]
  316. correct = 10
  317. delta = correct - result
  318. if delta != 0:
  319. core.error("Compute datetime delta is wrong %s" % (delta))
  320. print "Test 20"
  321. start = datetime(2011,06,01, 00,00,00)
  322. end = datetime(2012,06,01, 12,00,00)
  323. comp = compute_datetime_delta(start, end)
  324. result = comp["hour"]
  325. d = end - start
  326. correct = 12 + d.days * 24
  327. delta = correct - result
  328. if delta != 0:
  329. core.error("Compute datetime delta is wrong %s" % (delta))
  330. print "Test 21"
  331. start = datetime(2011,06,01, 00,00,00)
  332. end = datetime(2012,06,01, 12,30,00)
  333. comp = compute_datetime_delta(start, end)
  334. result = comp["minute"]
  335. d = end - start
  336. correct = d.days * 24 * 60 + 12 * 60 + 30
  337. delta = correct - result
  338. if delta != 0:
  339. core.error("Compute datetime delta is wrong %s" % (delta))
  340. print "Test 22"
  341. start = datetime(2011,06,01, 00,00,00)
  342. end = datetime(2012,06,01, 12,00,05)
  343. comp = compute_datetime_delta(start, end)
  344. result = comp["second"]
  345. d = end - start
  346. correct = 5 + 60 * 60 * 12 + d.days * 24 * 60 * 60
  347. delta = correct - result
  348. if delta != 0:
  349. core.error("Compute datetime delta is wrong %s" % (delta))
  350. print "Test 23"
  351. start = datetime(2011,06,01, 00,00,00)
  352. end = datetime(2012,06,01, 00,30,00)
  353. comp = compute_datetime_delta(start, end)
  354. result = comp["minute"]
  355. d = end - start
  356. correct = 30 + d.days * 24 * 60
  357. delta = correct - result
  358. if delta != 0:
  359. core.error("Compute datetime delta is wrong %s" % (delta))
  360. print "Test 24"
  361. start = datetime(2011,06,01, 00,00,00)
  362. end = datetime(2012,06,01, 00,00,05)
  363. comp = compute_datetime_delta(start, end)
  364. result = comp["second"]
  365. d = end - start
  366. correct = 5 + d.days * 24 * 60 * 60
  367. delta = correct - result
  368. if delta != 0:
  369. core.error("Compute datetime delta is wrong %s" % (delta))
  370. ###############################################################################
  371. def test_compute_relative_time_granularity():
  372. # First we test intervals
  373. print "Test 1"
  374. maps = []
  375. fact = 5
  376. start = 1
  377. end = start * fact
  378. for i in range(6):
  379. end = start * fact
  380. map = raster_dataset(None)
  381. map.set_relative_time(start, end)
  382. maps.append(map)
  383. start = end
  384. fact = fact - 1
  385. gran = round(compute_relative_time_granularity(maps))
  386. if fact - gran != 0:
  387. core.error("Wrong granularity reference %i != gran %i" % (fact, gran))
  388. print "Test 2"
  389. maps = []
  390. fact = 3
  391. start = 1.0/86400
  392. end = start * fact
  393. for i in range(10):
  394. end = start * fact
  395. map = raster_dataset(None)
  396. map.set_relative_time(start, end)
  397. maps.append(map)
  398. start = end
  399. fact = fact - 1
  400. gran = round(compute_relative_time_granularity(maps) * 86400)
  401. if fact - gran != 0:
  402. core.error("Wrong granularity reference %i != gran %i" % (fact, gran))
  403. print "Test 3 with gaps"
  404. maps = []
  405. fact = 3
  406. start = 1
  407. end = start + fact
  408. for i in range(10):
  409. shift = i*2*fact
  410. start = shift
  411. end = start + fact
  412. map = raster_dataset(None)
  413. map.set_relative_time(start, end)
  414. maps.append(map)
  415. gran = round(compute_relative_time_granularity(maps))
  416. if fact - gran != 0:
  417. core.error("Wrong granularity reference %i != gran %i" % (fact, gran))
  418. # Second we test intervals and points mixed
  419. print "Test 4 intervals and points"
  420. maps = []
  421. fact = 5
  422. start = 1
  423. end = start * fact
  424. count = 0
  425. for i in range(6):
  426. end = start * fact
  427. map = raster_dataset(None)
  428. if count % 2 == 0:
  429. map.set_relative_time(start, end)
  430. else:
  431. map.set_relative_time(start, None)
  432. maps.append(map)
  433. start = end
  434. count += 1
  435. fact = fact - 1
  436. gran = round(compute_relative_time_granularity(maps))
  437. if fact - gran != 0:
  438. core.error("Wrong granularity reference %i != gran %i" % (fact, gran))
  439. # Second we test points only
  440. print "Test 5 points only"
  441. maps = []
  442. fact = 3
  443. start = 1.0/86400
  444. for i in range(10):
  445. point = (i + 1)*fact*start
  446. map = raster_dataset(None)
  447. map.set_relative_time(point, None)
  448. maps.append(map)
  449. gran = round(compute_relative_time_granularity(maps) * 86400)
  450. if fact - gran != 0:
  451. core.error("Wrong granularity reference %i != gran %i" % (fact, gran))
  452. ###############################################################################
  453. def test_compute_absolute_time_granularity():
  454. # First we test intervals
  455. print "Test 1"
  456. maps = []
  457. a = datetime(2001, 1, 1)
  458. increment = "1 years"
  459. for i in range(10):
  460. start = increment_datetime_by_string(a, increment, i)
  461. end = increment_datetime_by_string(a, increment, i + 1)
  462. map = raster_dataset(None)
  463. map.set_absolute_time(start, end)
  464. maps.append(map)
  465. gran = compute_absolute_time_granularity(maps)
  466. if increment != gran:
  467. core.error("Wrong granularity reference %s != gran %s" % (increment, gran))
  468. print "Test 2"
  469. maps = []
  470. a = datetime(2001, 1, 1)
  471. increment = "3 years"
  472. for i in range(10):
  473. start = increment_datetime_by_string(a, increment, i)
  474. end = increment_datetime_by_string(a, increment, i + 1)
  475. map = raster_dataset(None)
  476. map.set_absolute_time(start, end)
  477. maps.append(map)
  478. gran = compute_absolute_time_granularity(maps)
  479. if increment != gran:
  480. core.error("Wrong granularity reference %s != gran %s" % (increment, gran))
  481. print "Test 3"
  482. maps = []
  483. a = datetime(2001, 5, 1)
  484. increment = "1 months"
  485. for i in range(20):
  486. start = increment_datetime_by_string(a, increment, i)
  487. end = increment_datetime_by_string(a, increment, i + 1)
  488. map = raster_dataset(None)
  489. map.set_absolute_time(start, end)
  490. maps.append(map)
  491. gran = compute_absolute_time_granularity(maps)
  492. if increment != gran:
  493. core.error("Wrong granularity reference %s != gran %s" % (increment, gran))
  494. print "Test 4"
  495. maps = []
  496. a = datetime(2001, 1, 1)
  497. increment = "3 months"
  498. for i in range(20):
  499. start = increment_datetime_by_string(a, increment, i)
  500. end = increment_datetime_by_string(a, increment, i + 1)
  501. map = raster_dataset(None)
  502. map.set_absolute_time(start, end)
  503. maps.append(map)
  504. gran = compute_absolute_time_granularity(maps)
  505. if increment != gran:
  506. core.error("Wrong granularity reference %s != gran %s" % (increment, gran))
  507. print "Test 3"
  508. maps = []
  509. a = datetime(2001, 1, 1)
  510. increment = "1 days"
  511. for i in range(6):
  512. start = increment_datetime_by_string(a, increment, i)
  513. end = increment_datetime_by_string(a, increment, i + 1)
  514. map = raster_dataset(None)
  515. map.set_absolute_time(start, end)
  516. maps.append(map)
  517. gran = compute_absolute_time_granularity(maps)
  518. if increment != gran:
  519. core.error("Wrong granularity reference %s != gran %s" % (increment, gran))
  520. print "Test 4"
  521. maps = []
  522. a = datetime(2001, 1, 14)
  523. increment = "14 days"
  524. for i in range(6):
  525. start = increment_datetime_by_string(a, increment, i)
  526. end = increment_datetime_by_string(a, increment, i + 1)
  527. map = raster_dataset(None)
  528. map.set_absolute_time(start, end)
  529. maps.append(map)
  530. gran = compute_absolute_time_granularity(maps)
  531. if increment != gran:
  532. core.error("Wrong granularity reference %s != gran %s" % (increment, gran))
  533. print "Test 5"
  534. maps = []
  535. a = datetime(2001, 3, 1)
  536. increment = "1 months, 4 days"
  537. for i in range(20):
  538. start = increment_datetime_by_string(a, increment, i)
  539. end = increment_datetime_by_string(a, increment, i + 1)
  540. map = raster_dataset(None)
  541. map.set_absolute_time(start, end)
  542. maps.append(map)
  543. increment = "1 days"
  544. gran = compute_absolute_time_granularity(maps)
  545. if increment != gran:
  546. core.error("Wrong granularity reference %s != gran %s" % (increment, gran))
  547. print "Test 6"
  548. maps = []
  549. a = datetime(2001, 2, 11)
  550. increment = "1 days, 1 hours"
  551. for i in range(20):
  552. start = increment_datetime_by_string(a, increment, i)
  553. end = increment_datetime_by_string(a, increment, i + 1)
  554. map = raster_dataset(None)
  555. map.set_absolute_time(start, end)
  556. maps.append(map)
  557. increment = "25 hours"
  558. gran = compute_absolute_time_granularity(maps)
  559. if increment != gran:
  560. core.error("Wrong granularity reference %s != gran %s" % (increment, gran))
  561. print "Test 7"
  562. maps = []
  563. a = datetime(2001, 6, 12)
  564. increment = "6 hours"
  565. for i in range(20):
  566. start = increment_datetime_by_string(a, increment, i)
  567. end = increment_datetime_by_string(a, increment, i + 1)
  568. map = raster_dataset(None)
  569. map.set_absolute_time(start, end)
  570. maps.append(map)
  571. gran = compute_absolute_time_granularity(maps)
  572. if increment != gran:
  573. core.error("Wrong granularity reference %s != gran %s" % (increment, gran))
  574. print "Test 8"
  575. maps = []
  576. a = datetime(2001, 1, 1)
  577. increment = "20 minutes"
  578. for i in range(20):
  579. start = increment_datetime_by_string(a, increment, i)
  580. end = increment_datetime_by_string(a, increment, i + 1)
  581. map = raster_dataset(None)
  582. map.set_absolute_time(start, end)
  583. maps.append(map)
  584. gran = compute_absolute_time_granularity(maps)
  585. if increment != gran:
  586. core.error("Wrong granularity reference %s != gran %s" % (increment, gran))
  587. print "Test 9"
  588. maps = []
  589. a = datetime(2001, 1, 1)
  590. increment = "5 hours, 25 minutes"
  591. for i in range(20):
  592. start = increment_datetime_by_string(a, increment, i)
  593. end = increment_datetime_by_string(a, increment, i + 1)
  594. map = raster_dataset(None)
  595. map.set_absolute_time(start, end)
  596. maps.append(map)
  597. increment = "325 minutes"
  598. gran = compute_absolute_time_granularity(maps)
  599. if increment != gran:
  600. core.error("Wrong granularity reference %s != gran %s" % (increment, gran))
  601. print "Test 10"
  602. maps = []
  603. a = datetime(2001, 1, 1)
  604. increment = "5 minutes, 30 seconds"
  605. for i in range(20):
  606. start = increment_datetime_by_string(a, increment, i)
  607. end = increment_datetime_by_string(a, increment, i + 1)
  608. map = raster_dataset(None)
  609. map.set_absolute_time(start, end)
  610. maps.append(map)
  611. increment = "330 seconds"
  612. gran = compute_absolute_time_granularity(maps)
  613. if increment != gran:
  614. core.error("Wrong granularity reference %s != gran %s" % (increment, gran))
  615. print "Test 11"
  616. maps = []
  617. a = datetime(2001,12,31)
  618. increment = "60 minutes, 30 seconds"
  619. for i in range(24):
  620. start = increment_datetime_by_string(a, increment, i)
  621. end = increment_datetime_by_string(a, increment, i + 1)
  622. map = raster_dataset(None)
  623. map.set_absolute_time(start, end)
  624. maps.append(map)
  625. increment = "3630 seconds"
  626. gran = compute_absolute_time_granularity(maps)
  627. if increment != gran:
  628. core.error("Wrong granularity reference %s != gran %s" % (increment, gran))
  629. print "Test 12"
  630. maps = []
  631. a = datetime(2001,12,31, 12, 30, 30)
  632. increment = "3600 seconds"
  633. for i in range(24):
  634. start = increment_datetime_by_string(a, increment, i)
  635. end = increment_datetime_by_string(a, increment, i + 1)
  636. map = raster_dataset(None)
  637. map.set_absolute_time(start, end)
  638. maps.append(map)
  639. gran = compute_absolute_time_granularity(maps)
  640. if increment != gran:
  641. core.error("Wrong granularity reference %s != gran %s" % (increment, gran))
  642. # Test absolute time points
  643. print "Test 13"
  644. maps = []
  645. a = datetime(2001,12,31, 12, 30, 30)
  646. increment = "3600 seconds"
  647. for i in range(24):
  648. start = increment_datetime_by_string(a, increment, i)
  649. end = None
  650. map = raster_dataset(None)
  651. map.set_absolute_time(start, end)
  652. maps.append(map)
  653. gran = compute_absolute_time_granularity(maps)
  654. if increment != gran:
  655. core.error("Wrong granularity reference %s != gran %s" % (increment, gran))
  656. print "Test 14"
  657. maps = []
  658. a = datetime(2001,12,31, 00, 00, 00)
  659. increment = "20 days"
  660. for i in range(24):
  661. start = increment_datetime_by_string(a, increment, i)
  662. end = None
  663. map = raster_dataset(None)
  664. map.set_absolute_time(start, end)
  665. maps.append(map)
  666. gran = compute_absolute_time_granularity(maps)
  667. if increment != gran:
  668. core.error("Wrong granularity reference %s != gran %s" % (increment, gran))
  669. print "Test 15"
  670. maps = []
  671. a = datetime(2001,12,01, 00, 00, 00)
  672. increment = "5 months"
  673. for i in range(24):
  674. start = increment_datetime_by_string(a, increment, i)
  675. end = None
  676. map = raster_dataset(None)
  677. map.set_absolute_time(start, end)
  678. maps.append(map)
  679. gran = compute_absolute_time_granularity(maps)
  680. if increment != gran:
  681. core.error("Wrong granularity reference %s != gran %s" % (increment, gran))
  682. # Test absolute time interval and points
  683. print "Test 16"
  684. maps = []
  685. a = datetime(2001,12,31, 12, 30, 30)
  686. increment = "3600 seconds"
  687. for i in range(24):
  688. start = increment_datetime_by_string(a, increment, i)
  689. end = increment_datetime_by_string(a, increment, i + 1)
  690. map = raster_dataset(None)
  691. map.set_absolute_time(start, end)
  692. maps.append(map)
  693. a = datetime(2002,02,01, 12, 30, 30)
  694. for i in range(24):
  695. start = increment_datetime_by_string(a, increment, i)
  696. end = None
  697. map = raster_dataset(None)
  698. map.set_absolute_time(start, end)
  699. maps.append(map)
  700. gran = compute_absolute_time_granularity(maps)
  701. if increment != gran:
  702. core.error("Wrong granularity reference %s != gran %s" % (increment, gran))
  703. print "Test 17"
  704. maps = []
  705. a = datetime(2001,1,1)
  706. increment = "2 days"
  707. for i in range(8):
  708. start = increment_datetime_by_string(a, increment, i)
  709. end = increment_datetime_by_string(a, increment, i + 1)
  710. map = raster_dataset(None)
  711. map.set_absolute_time(start, end)
  712. maps.append(map)
  713. a = datetime(2001,02,02)
  714. for i in range(8):
  715. start = increment_datetime_by_string(a, increment, i)
  716. end = None
  717. map = raster_dataset(None)
  718. map.set_absolute_time(start, end)
  719. maps.append(map)
  720. gran = compute_absolute_time_granularity(maps)
  721. if increment != gran:
  722. core.error("Wrong granularity reference %s != gran %s" % (increment, gran))