voruby 1.1.1 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (257) hide show
  1. data/Rakefile.rb +107 -224
  2. data/lib/misc.rb +1 -0
  3. data/lib/misc/misc.rb +60 -0
  4. data/lib/misc/propertyfile.rb +31 -0
  5. data/lib/symphony.rb +1 -0
  6. data/lib/symphony/symphony.rb +247 -0
  7. data/lib/voruby.rb +186 -0
  8. data/lib/voruby/active_votable/active_votable.rb +468 -347
  9. data/lib/voruby/adql/1.0/adql.rb +2418 -0
  10. data/lib/voruby/adql/support.rb +2 -0
  11. data/lib/voruby/misc.rb +351 -0
  12. data/lib/voruby/misc/connection_monitor.rb +97 -0
  13. data/lib/voruby/misc/libxml_ext.rb +121 -0
  14. data/lib/voruby/misc/rexml_ext.rb +223 -0
  15. data/lib/voruby/resolver/resolver.rb +12 -0
  16. data/lib/voruby/resolver/sesame.rb +299 -0
  17. data/lib/voruby/sky_query/sky_query.rb +192 -0
  18. data/lib/voruby/stc/1.10/coords.rb +2272 -0
  19. data/lib/voruby/stc/1.10/region.rb +892 -0
  20. data/lib/voruby/stc/1.10/stc.rb +3271 -0
  21. data/lib/voruby/stc/1.30/stc.rb +8666 -0
  22. data/lib/voruby/stc/support.rb +2 -0
  23. data/lib/voruby/ucd/ucd.rb +173 -0
  24. data/lib/voruby/voevent/1.1/voevent.rb +1124 -0
  25. data/lib/voruby/voevent/support.rb +5 -0
  26. data/lib/voruby/votable/1.0/votable.rb +1807 -0
  27. data/lib/voruby/votable/1.1/votable.rb +2100 -0
  28. data/lib/voruby/votable/votable.rb +305 -0
  29. data/lib/voruby/wesix/wesix.rb +491 -0
  30. data/lib/voruby/xlink/1.2/xlink.rb +21 -0
  31. data/test/voruby/active_votable/complex.vot +60 -0
  32. data/test/voruby/active_votable/error.vot +6 -0
  33. data/test/voruby/active_votable/large.vot +130040 -0
  34. data/test/voruby/active_votable/simple1.vot +38 -0
  35. data/test/voruby/active_votable/simple2.vot +38 -0
  36. data/test/voruby/active_votable/test.rb +193 -0
  37. data/test/voruby/adql/1.0/adql-alias.sql +1 -0
  38. data/test/voruby/adql/1.0/adql-alias.xml +26 -0
  39. data/test/voruby/adql/1.0/adql-avg.sql +1 -0
  40. data/test/voruby/adql/1.0/adql-avg.xml +31 -0
  41. data/test/voruby/adql/1.0/adql-circle.sql +1 -0
  42. data/test/voruby/adql/1.0/adql-circle.xml +46 -0
  43. data/test/voruby/adql/1.0/adql-expr.sql +1 -0
  44. data/test/voruby/adql/1.0/adql-expr.xml +34 -0
  45. data/test/voruby/adql/1.0/adql-function.sql +1 -0
  46. data/test/voruby/adql/1.0/adql-function.xml +41 -0
  47. data/test/voruby/adql/1.0/adql-group.sql +1 -0
  48. data/test/voruby/adql/1.0/adql-group.xml +51 -0
  49. data/test/voruby/adql/1.0/adql-having.sql +1 -0
  50. data/test/voruby/adql/1.0/adql-having.xml +25 -0
  51. data/test/voruby/adql/1.0/adql-like.sql +1 -0
  52. data/test/voruby/adql/1.0/adql-like.xml +17 -0
  53. data/test/voruby/adql/1.0/adql-order.sql +1 -0
  54. data/test/voruby/adql/1.0/adql-order.xml +37 -0
  55. data/test/voruby/adql/1.0/adql-simple.sql +1 -0
  56. data/test/voruby/adql/1.0/adql-simple.xml +12 -0
  57. data/test/voruby/adql/1.0/adql-top.sql +1 -0
  58. data/test/voruby/adql/1.0/adql-top.xml +33 -0
  59. data/test/voruby/adql/1.0/test.rb +2220 -0
  60. data/test/voruby/misc/test.rb +32 -0
  61. data/test/voruby/resolver/sesame/test.rb +56 -0
  62. data/test/voruby/sky_query/test.rb +107 -0
  63. data/test/voruby/stc/1.10/coords_test.rb +3704 -0
  64. data/test/voruby/stc/1.10/region_test.rb +993 -0
  65. data/test/voruby/stc/1.10/stc-catalog-entry-location.xml +112 -0
  66. data/test/voruby/stc/1.10/stc-obs-data-location.xml +126 -0
  67. data/test/voruby/stc/1.10/stc-region-circle.xml +5 -0
  68. data/test/voruby/stc/1.10/stc-region-convex.xml +11 -0
  69. data/test/voruby/stc/1.10/stc-region-convexhull.xml +5 -0
  70. data/test/voruby/stc/1.10/stc-region-ellipse.xml +7 -0
  71. data/test/voruby/stc/1.10/stc-region-intersection.xml +25 -0
  72. data/test/voruby/stc/1.10/stc-region-negation.xml +7 -0
  73. data/test/voruby/stc/1.10/stc-region-polygon.xml +13 -0
  74. data/test/voruby/stc/1.10/stc-region-sector.xml +6 -0
  75. data/test/voruby/stc/1.10/stc-region-union.xml +25 -0
  76. data/test/voruby/stc/1.10/stc-resource-profile.xml +60 -0
  77. data/test/voruby/stc/1.10/stc-search-location.xml +54 -0
  78. data/test/voruby/stc/1.10/stc_test.rb +4626 -0
  79. data/test/voruby/stc/1.30/stc-catalog-entry-location.xml +210 -0
  80. data/test/voruby/stc/1.30/stc-obs-data-location-arecibo.xml +353 -0
  81. data/test/voruby/stc/1.30/stc-obs-data-location-fits.xml +250 -0
  82. data/test/voruby/stc/1.30/stc-obs-data-location-xlink.xml +63 -0
  83. data/test/voruby/stc/1.30/stc-obs-data-location.xml +216 -0
  84. data/test/voruby/stc/1.30/stc-resource-profile-unusual-ref-pos.xml +39 -0
  85. data/test/voruby/stc/1.30/stc-resource-profile.xml +129 -0
  86. data/test/voruby/stc/1.30/stc-search-location-arecibo.xml +86 -0
  87. data/test/voruby/stc/1.30/stc-search-location.xml +101 -0
  88. data/test/voruby/stc/1.30/test.rb +6274 -0
  89. data/test/voruby/ucd/test.rb +48 -0
  90. data/test/voruby/voevent/1.1/test.rb +812 -0
  91. data/test/{voevent/voevent_v1_1.xml → voruby/voevent/1.1/voevent.xml} +2 -2
  92. data/test/voruby/voregistry/0.3/test.rb +137 -0
  93. data/test/voruby/votable/1.0/test.rb +714 -0
  94. data/test/voruby/votable/1.0/votable.basic.xml +660 -0
  95. data/test/voruby/votable/1.0/votable.html +86 -0
  96. data/test/voruby/votable/1.0/votable.ns.xml +56 -0
  97. data/test/voruby/votable/1.1/test.rb +785 -0
  98. data/test/voruby/votable/1.1/votable.basic.xml +38 -0
  99. data/test/voruby/votable/1.1/votable.html +86 -0
  100. data/test/voruby/votable/1.1/votable.ns.xml +56 -0
  101. data/test/voruby/votable/test.rb +15 -0
  102. data/test/voruby/wesix/test.rb +268 -0
  103. data/test/voruby/wesix/testr.fits +28 -0
  104. metadata +234 -247
  105. data/REQUIREMENTS +0 -6
  106. data/lib/voruby/active_votable/loader.rb +0 -5
  107. data/lib/voruby/adql/adql.rb +0 -2787
  108. data/lib/voruby/adql/ext.rb +0 -14
  109. data/lib/voruby/adql/loader.rb +0 -6
  110. data/lib/voruby/adql/operations.rb +0 -54
  111. data/lib/voruby/adql/parser.rb +0 -160
  112. data/lib/voruby/adql/transforms.rb +0 -573
  113. data/lib/voruby/ext.rb +0 -17
  114. data/lib/voruby/loader.rb +0 -4
  115. data/lib/voruby/misc/propertyfile.rb +0 -36
  116. data/lib/voruby/plastic/applications.rb +0 -174
  117. data/lib/voruby/plastic/constants.rb +0 -30
  118. data/lib/voruby/plastic/loader.rb +0 -10
  119. data/lib/voruby/plastic/plastic.rb +0 -1
  120. data/lib/voruby/resources/conesearch/conesearch.rb +0 -9
  121. data/lib/voruby/resources/conesearch/conesearch_v0_2.rb +0 -55
  122. data/lib/voruby/resources/conesearch/conesearch_v0_3.rb +0 -50
  123. data/lib/voruby/resources/conesearch/conesearch_v1_0.rb +0 -72
  124. data/lib/voruby/resources/conesearch/loader.rb +0 -4
  125. data/lib/voruby/resources/loader.rb +0 -50
  126. data/lib/voruby/resources/nodes.rb +0 -190
  127. data/lib/voruby/resources/openskynode/loader.rb +0 -4
  128. data/lib/voruby/resources/openskynode/openskynode.rb +0 -9
  129. data/lib/voruby/resources/openskynode/openskynode_v0_1.rb +0 -54
  130. data/lib/voruby/resources/sia/loader.rb +0 -5
  131. data/lib/voruby/resources/sia/sia.rb +0 -9
  132. data/lib/voruby/resources/sia/sia_v0_6.rb +0 -90
  133. data/lib/voruby/resources/sia/sia_v0_7.rb +0 -89
  134. data/lib/voruby/resources/sia/sia_v1_0.rb +0 -122
  135. data/lib/voruby/resources/stsci.rb +0 -59
  136. data/lib/voruby/resources/vodataservice/coverage_v0_2.rb +0 -195
  137. data/lib/voruby/resources/vodataservice/coverage_v0_3.rb +0 -158
  138. data/lib/voruby/resources/vodataservice/loader.rb +0 -5
  139. data/lib/voruby/resources/vodataservice/vodataservice.rb +0 -9
  140. data/lib/voruby/resources/vodataservice/vodataservice_v0_4.rb +0 -189
  141. data/lib/voruby/resources/vodataservice/vodataservice_v0_5.rb +0 -163
  142. data/lib/voruby/resources/vodataservice/vodataservice_v1_0.rb +0 -221
  143. data/lib/voruby/resources/voregistry/loader.rb +0 -4
  144. data/lib/voruby/resources/voregistry/voregistry.rb +0 -9
  145. data/lib/voruby/resources/voregistry/voregistry_v0_2.rb +0 -40
  146. data/lib/voruby/resources/voregistry/voregistry_v0_3.rb +0 -30
  147. data/lib/voruby/resources/voregistry/voregistry_v1_0.rb +0 -86
  148. data/lib/voruby/resources/voresource/loader.rb +0 -17
  149. data/lib/voruby/resources/voresource/voresource.rb +0 -9
  150. data/lib/voruby/resources/voresource/voresource_v0_10.rb +0 -327
  151. data/lib/voruby/resources/voresource/voresource_v0_9.rb +0 -405
  152. data/lib/voruby/resources/voresource/voresource_v1_0.rb +0 -230
  153. data/lib/voruby/services/ext.rb +0 -11
  154. data/lib/voruby/services/gestalt/footprint.rb +0 -95
  155. data/lib/voruby/services/gestalt/wcs_fixer.rb +0 -105
  156. data/lib/voruby/services/gestalt/wesix.rb +0 -155
  157. data/lib/voruby/services/loader.rb +0 -7
  158. data/lib/voruby/services/registry/registry.rb +0 -53
  159. data/lib/voruby/services/resolver/resolver.rb +0 -35
  160. data/lib/voruby/services/schema/schema.rb +0 -644
  161. data/lib/voruby/sesame/loader.rb +0 -6
  162. data/lib/voruby/sesame/sesame_v1_0.rb +0 -64
  163. data/lib/voruby/simple/loader.rb +0 -6
  164. data/lib/voruby/simple/parameters.rb +0 -196
  165. data/lib/voruby/simple/sap.rb +0 -446
  166. data/lib/voruby/spacetime/loader.rb +0 -3
  167. data/lib/voruby/spacetime/spacetime.rb +0 -607
  168. data/lib/voruby/stc/coords_v1_20.rb +0 -900
  169. data/lib/voruby/stc/loader.rb +0 -55
  170. data/lib/voruby/stc/region_v1_20.rb +0 -274
  171. data/lib/voruby/stc/stc_v1_20.rb +0 -1196
  172. data/lib/voruby/util.rb +0 -27
  173. data/lib/voruby/voevent/loader.rb +0 -7
  174. data/lib/voruby/voevent/voevent_v1_0.rb +0 -213
  175. data/lib/voruby/voevent/voevent_v1_1.rb +0 -196
  176. data/lib/voruby/votables/chandra.rb +0 -373
  177. data/lib/voruby/votables/data.rb +0 -179
  178. data/lib/voruby/votables/galex.rb +0 -377
  179. data/lib/voruby/votables/int.rb +0 -354
  180. data/lib/voruby/votables/libxml_parser.rb +0 -411
  181. data/lib/voruby/votables/libxml_votable.rb +0 -67
  182. data/lib/voruby/votables/loader.rb +0 -10
  183. data/lib/voruby/votables/meta.rb +0 -763
  184. data/lib/voruby/votables/misc.rb +0 -51
  185. data/lib/voruby/votables/nsa.rb +0 -410
  186. data/lib/voruby/votables/rexml_parser.rb +0 -408
  187. data/lib/voruby/votables/rexml_votable.rb +0 -67
  188. data/lib/voruby/votables/sdss.rb +0 -356
  189. data/lib/voruby/votables/transforms.rb +0 -388
  190. data/lib/voruby/votables/tree.rb +0 -45
  191. data/lib/voruby/votables/types.rb +0 -391
  192. data/lib/voruby/votables/votable.rb +0 -687
  193. data/test/active_votable/database.yml +0 -6
  194. data/test/active_votable/test.vot +0 -168492
  195. data/test/active_votable/unittest.rb +0 -41
  196. data/test/adql/test1.adql +0 -49
  197. data/test/adql/test2.adql +0 -51
  198. data/test/adql/test3.adql +0 -81
  199. data/test/adql/test4.adql +0 -53
  200. data/test/adql/test5.adql +0 -55
  201. data/test/adql/test6.adql +0 -18
  202. data/test/adql/test7.adql +0 -48
  203. data/test/adql/unittest.rb +0 -1672
  204. data/test/plastic/test.rb +0 -44
  205. data/test/plastic/test.vot +0 -5385
  206. data/test/plastic/unittest.rb +0 -66
  207. data/test/resources/conesearch/conesearch_v0_3.xml +0 -31
  208. data/test/resources/conesearch/conesearch_v1_0.xml +0 -86
  209. data/test/resources/conesearch/unittest_v0_3.rb +0 -22
  210. data/test/resources/conesearch/unittest_v1_0.rb +0 -24
  211. data/test/resources/openskynode/open_sky_node_v0_1.xml +0 -32
  212. data/test/resources/openskynode/unittest_v0_1.rb +0 -31
  213. data/test/resources/sia/simple_image_access_v0_7.xml +0 -36
  214. data/test/resources/sia/simple_image_access_v1_0.xml +0 -122
  215. data/test/resources/sia/unittest_v0_7.rb +0 -24
  216. data/test/resources/sia/unittest_v1_0.rb +0 -29
  217. data/test/resources/stsci.xml +0 -336
  218. data/test/resources/unittest_stsci.rb +0 -25
  219. data/test/resources/vodataservice/catalog_service_resource_v1_0.xml +0 -128
  220. data/test/resources/vodataservice/data_collection_resource_v0_5.xml +0 -54
  221. data/test/resources/vodataservice/data_collection_resource_v1_0.xml +0 -117
  222. data/test/resources/vodataservice/data_service_resource_v1_0.xml +0 -115
  223. data/test/resources/vodataservice/sky_service_resource_v0_10.xml +0 -45
  224. data/test/resources/vodataservice/table_service_resource_v1_0.xml +0 -122
  225. data/test/resources/vodataservice/tabular_sky_service_resource_v0_10.xml +0 -60
  226. data/test/resources/vodataservice/unittest_v0_5.rb +0 -126
  227. data/test/resources/vodataservice/unittest_v1_0.rb +0 -151
  228. data/test/resources/voregistry/authority_resource_v0_3.xml +0 -20
  229. data/test/resources/voregistry/authority_resource_v1_0.xml +0 -82
  230. data/test/resources/voregistry/registry_service_v0_3.xml +0 -20
  231. data/test/resources/voregistry/registry_service_v1_0.xml +0 -107
  232. data/test/resources/voregistry/unittest_v0_3.rb +0 -31
  233. data/test/resources/voregistry/unittest_v1_0.rb +0 -34
  234. data/test/resources/voresource/organisation_resource_v1_0.xml +0 -90
  235. data/test/resources/voresource/resource_organisation_v0_10.xml +0 -22
  236. data/test/resources/voresource/resource_service_v0_10.xml +0 -19
  237. data/test/resources/voresource/resource_v0_10.xml +0 -19
  238. data/test/resources/voresource/resource_v1_0.xml +0 -79
  239. data/test/resources/voresource/service_resource_v1_0.xml +0 -91
  240. data/test/resources/voresource/unittest_v0_10.rb +0 -61
  241. data/test/resources/voresource/unittest_v0_9.rb +0 -4
  242. data/test/resources/voresource/unittest_v1_0.rb +0 -190
  243. data/test/services/gestalt/unittest.rb +0 -74
  244. data/test/services/registry/unittest.rb +0 -34
  245. data/test/services/resolver/unittest.rb +0 -38
  246. data/test/simple/unittest.rb +0 -46
  247. data/test/spacetime/unittest.rb +0 -39
  248. data/test/stc/catalog_entry_location_v1_20.xml +0 -112
  249. data/test/stc/obs_data_location_v1_20.xml +0 -108
  250. data/test/stc/search_location_v1_20.xml +0 -54
  251. data/test/stc/stc_resource_profile_v1_20.xml +0 -60
  252. data/test/stc/unittest_v1_20.rb +0 -620
  253. data/test/voevent/unittest_v1_0.rb +0 -79
  254. data/test/voevent/unittest_v1_1.rb +0 -70
  255. data/test/voevent/voevent_v1_0.xml +0 -96
  256. data/test/votables/test.vot +0 -366
  257. data/test/votables/unittest.rb +0 -54
@@ -0,0 +1,32 @@
1
+ require 'test/unit'
2
+
3
+ require 'voruby/misc'
4
+ include VORuby::Misc
5
+
6
+ class ConnectionManagerTest < Test::Unit::TestCase
7
+ def setup
8
+ @num_iter = 0
9
+
10
+ @monitor = ConnectionMonitor.new('http://www.noao.edu/', 2)
11
+ @monitor.on_success = Proc.new { |pinger, monitor|
12
+ monitor.stop if @num_iter == 2
13
+ @num_iter += 1
14
+ }
15
+ @monitor.on_failure = Proc.new{ |pinger, monitor|
16
+ monitor.stop
17
+ raise "Connection to #{monitor.url} failed: #{pinger.exception}"
18
+ }
19
+ end
20
+
21
+ def test_success
22
+ assert_nothing_raised { @monitor.start }
23
+ assert_equal 3, @num_iter
24
+ end
25
+
26
+ def test_failure
27
+ @monitor.url = 'http://www.noao.edu/blah/'
28
+ assert_raise RuntimeError do
29
+ @monitor.start
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,56 @@
1
+ require 'test/unit'
2
+
3
+ require 'voruby/resolver/sesame'
4
+ include VORuby::Resolver
5
+
6
+ class SesameTest < Test::Unit::TestCase
7
+ def test_resolve
8
+ sesame = Sesame.resolve('m51', :all)
9
+
10
+ assert_equal 'http://cdsws.u-strasbg.fr/axis/services/Sesame', sesame.end_point
11
+ assert_equal false, sesame.check_availability
12
+ assert_equal 'm51', sesame.target
13
+ assert_equal 3, sesame.resolvers.size
14
+
15
+ resolver = sesame.resolvers.find { |r| r.name == 'Simbad' }
16
+ assert_equal 'Simbad', resolver.name
17
+
18
+ assert_equal 'Seyfert_2', resolver.otype
19
+ assert_equal '13:29:52.36 +47:11:40.8', resolver.jpos
20
+ assert_equal 202.4682083, resolver.jradeg
21
+ assert_equal 47.1946667, resolver.jdedeg
22
+ assert_equal '1999ApJS..125..409C', resolver.ref_pos
23
+ assert_equal 10800, resolver.err_ra_mas
24
+ assert_equal 10800, resolver.err_de_mas
25
+ assert_equal nil, resolver.z
26
+ assert_equal nil, resolver.errz
27
+ assert_equal nil, resolver.refz
28
+ assert_equal 600, resolver.vel
29
+ assert_equal nil, resolver.err_vel
30
+ assert_equal '2004A&A...422...39S', resolver.ref_vel
31
+ assert_equal 'Sc', resolver.mtype
32
+ assert_equal nil, resolver.sptype
33
+ assert_equal 'M 51', resolver.oname
34
+
35
+ assert_equal [202.4682083, 47.1946667], resolver.position
36
+ assert_equal ['13:29:52.36', '+47:11:40.8'], resolver.position(:sexigesimal)
37
+
38
+ assert_equal [
39
+ "M 51", "NGC 5194", "4C 47.36A", "APG 85A", "APG 85", "BD+47 2063",
40
+ "[DML87] 671", "GB1 1327+475", "[H92] 27", "IRAS F13277+4727",
41
+ "IRAS 13277+4727", "ISOSS J13299+4714", "KHG 1-C 5", "KPG 379a",
42
+ "LEDA 47404", "[LPS2002] 16", "[M98c] 132746.9+472716", "MCG+08-25-012",
43
+ "NAME WHIRLPOOL", "NAME QUESTION MARK GALAXY", "NAME WHIRLPOOL GALAXY",
44
+ "PLX 3084", "RX J1329.8+4711", "1RXS J132953.8+471143", "[SLK2004] 853",
45
+ "[T76] 85A", "TC 827", "UGC 8493", "[VDD93] 187A", "VV 403", "VV 1a",
46
+ "VV 1", "[VV2000c] J132952.4+471141", "[VV2003c] J132952.4+471141",
47
+ "[VV2006c] J132952.4+471141", "[VV98c] J132952.7+471143",
48
+ "XMMU J132952.9+471140", "Z 1327.8+4727", "Z 246 - 8"
49
+ ], resolver.aliases
50
+ end
51
+
52
+ def test_resolve_position
53
+ assert_equal [202.4682083, 47.1946667],
54
+ Sesame.resolve_position('m51')
55
+ end
56
+ end
@@ -0,0 +1,107 @@
1
+ require 'test/unit'
2
+
3
+ require 'voruby/sky_query/sky_query'
4
+ include VORuby::SkyQuery
5
+
6
+ class SkyQueryTest < ::Test::Unit::TestCase
7
+ def setup
8
+ @portal = Service.new
9
+ @adql = 'SELECT o.objId, o.ra, o.dec, o.r, o.type, t.objId, t.ra, t.dec ' +
10
+ 'FROM SDSS:PhotoPrimary o, TWOMASS:PhotoPrimary t ' +
11
+ 'WHERE XMATCH(o, t) < 3.5 AND Region(\'CIRCLE J2000 181.3 -0.76 6.5\') AND o.type = 3'
12
+ end
13
+
14
+ def test_sky_nodes
15
+ vot = nil
16
+
17
+ assert_nothing_raised {
18
+ vot = @portal.sky_nodes
19
+ }
20
+
21
+ assert_kind_of VORuby::VOTable::V1_1::VOTable, vot
22
+
23
+ assert vot.resources.first.tables.first.fields.size > 0
24
+ assert vot.resources.first.tables.first.data.format.trs.size > 0
25
+ end
26
+
27
+ def test_query
28
+ vot = nil
29
+
30
+ assert_nothing_raised {
31
+ vot = @portal.query(@adql)
32
+ }
33
+
34
+ assert_kind_of VORuby::VOTable::V1_1::VOTable, vot
35
+
36
+ assert_equal 9, vot.resources.first.tables.first.fields.size
37
+ assert vot.resources.first.tables.first.data.format.trs.size > 0
38
+
39
+ assert_nothing_raised {
40
+ vot = Service.query(@adql)
41
+ }
42
+
43
+ assert_kind_of VORuby::VOTable::V1_1::VOTable, vot
44
+
45
+ assert_equal 9, vot.resources.first.tables.first.fields.size
46
+ assert vot.resources.first.tables.first.data.format.trs.size > 0
47
+ end
48
+
49
+ def test_get_tables
50
+ tables = nil
51
+
52
+ assert_nothing_raised {
53
+ tables = @portal.tables('SDSS')
54
+ }
55
+
56
+ assert tables.size > 0
57
+ end
58
+
59
+ def test_get_table_info
60
+ tbl_info = nil
61
+
62
+ assert_nothing_raised {
63
+ tbl_info = @portal.table_info('SDSS', 'PhotoPrimary')
64
+ }
65
+
66
+ assert_equal 'These objects are the primary survey objects.', tbl_info.description
67
+ assert_equal 'PhotoPrimary', tbl_info.name
68
+ assert_equal -1, tbl_info.rows
69
+ end
70
+
71
+ def test_get_columns
72
+ columns = nil
73
+
74
+ assert_nothing_raised {
75
+ columns = @portal.columns('SDSS', 'PhotoPrimary')
76
+ }
77
+
78
+ assert columns.size > 0
79
+ end
80
+
81
+ def test_get_column_info
82
+ col_info = nil
83
+
84
+ assert_nothing_raised {
85
+ col_info = @portal.column_info('SDSS', 'PhotoPrimary', 'modelMag_i')
86
+ }
87
+
88
+ assert_equal 'modelMag_i', col_info.name
89
+ assert_equal 'mag', col_info.unit
90
+ assert_equal 'better of DeV/Exp magnitude fit', col_info.description
91
+ assert_equal 'PHOT_SDSS_I FIT_PARAM', col_info.ucd
92
+
93
+ assert_raises SOAP::FaultError do
94
+ @portal.column_info('SDSS', 'PhotoPrimary', 'blah')
95
+ end
96
+ end
97
+
98
+ def test_get_meta_columns
99
+ columns = nil
100
+
101
+ assert_nothing_raised {
102
+ columns = @portal.meta_columns('SDSS', 'PhotoPrimary')
103
+ }
104
+
105
+ assert columns.size > 0
106
+ end
107
+ end
@@ -0,0 +1,3704 @@
1
+ require 'voruby/stc/1.10/coords'
2
+ require 'test/unit'
3
+
4
+ include VORuby::STC::V1_10::Coords
5
+
6
+ module VORuby
7
+ module STC
8
+ module V1_10
9
+ module Coords
10
+ module Test
11
+
12
+ class TimeUnitTest < ::Test::Unit::TestCase
13
+ def test_construction
14
+ assert_nothing_raised do
15
+ TimeUnit.new('h')
16
+ end
17
+ end
18
+
19
+ def test_accessors
20
+ unit = TimeUnit.new('d')
21
+ assert_equal 'd', unit.value
22
+
23
+ unit.value = 'cy'
24
+ assert_equal 'cy', unit.value
25
+ end
26
+
27
+ def test_enumeration
28
+ assert_raise ArgumentError do
29
+ TimeUnit.new('z')
30
+ end
31
+
32
+ unit = TimeUnit.new()
33
+ assert_raise ArgumentError do
34
+ unit.value = 'blah'
35
+ end
36
+ end
37
+
38
+ def test_relationships
39
+ assert_kind_of Unit, TimeUnit.new()
40
+ end
41
+ end
42
+
43
+ class PosUnitTest < ::Test::Unit::TestCase
44
+ def test_construction
45
+ assert_nothing_raised do
46
+ PosUnit.new('rad')
47
+ end
48
+ end
49
+
50
+ def test_accessors
51
+ unit = PosUnit.new('km')
52
+ assert_equal 'km', unit.value
53
+
54
+ unit.value = 'Mpc'
55
+ assert_equal 'Mpc', unit.value
56
+ end
57
+
58
+ def test_enumeration
59
+ assert_raise ArgumentError do
60
+ PosUnit.new('in')
61
+ end
62
+
63
+ unit = PosUnit.new()
64
+ assert_raise ArgumentError do
65
+ unit.value = 'blah'
66
+ end
67
+ end
68
+
69
+ def test_relationships
70
+ assert_kind_of Unit, PosUnit.new()
71
+ end
72
+ end
73
+
74
+ class VelTimeUnitTest < ::Test::Unit::TestCase
75
+ def test_construction
76
+ assert_nothing_raised do
77
+ VelTimeUnit.new('d')
78
+ end
79
+ end
80
+
81
+ def test_accessors
82
+ unit = VelTimeUnit.new('s')
83
+ assert_equal 's', unit.value
84
+
85
+ unit.value = 'a'
86
+ assert_equal 'a', unit.value
87
+ end
88
+
89
+ def test_enumeration
90
+ assert_raise ArgumentError do
91
+ VelTimeUnit.new('')
92
+ end
93
+
94
+ unit = VelTimeUnit.new('a')
95
+ assert_raise ArgumentError do
96
+ unit.value = 'blah'
97
+ end
98
+ end
99
+
100
+ def test_relationships
101
+ assert_kind_of Unit, VelTimeUnit.new('a')
102
+ end
103
+ end
104
+
105
+ class SpectralUnitTest < ::Test::Unit::TestCase
106
+ def test_construction
107
+ assert_nothing_raised do
108
+ SpectralUnit.new('A')
109
+ end
110
+ end
111
+
112
+ def test_accessors
113
+ unit = SpectralUnit.new('m')
114
+ assert_equal 'm', unit.value
115
+
116
+ unit.value = 'Hz'
117
+ assert_equal 'Hz', unit.value
118
+ end
119
+
120
+ def test_enumeration
121
+ assert_raise ArgumentError do
122
+ SpectralUnit.new('')
123
+ end
124
+
125
+ unit = SpectralUnit.new('micron')
126
+ assert_raise ArgumentError do
127
+ unit.value = 'blah'
128
+ end
129
+ end
130
+
131
+ def test_relationships
132
+ assert_kind_of Unit, SpectralUnit.new('m')
133
+ end
134
+ end
135
+
136
+ class TimeScaleTest < ::Test::Unit::TestCase
137
+ def test_construction
138
+ assert_nothing_raised do
139
+ TimeScale.new('TAI')
140
+ end
141
+ end
142
+
143
+ def test_accessors
144
+ ts = TimeScale.new('UTC')
145
+ assert_equal 'UTC', ts.value
146
+
147
+ ts.value = 'ET'
148
+ assert_equal 'ET', ts.value
149
+ end
150
+
151
+ def test_enumeration
152
+ assert_raise ArgumentError do
153
+ TimeScale.new('')
154
+ end
155
+
156
+ ts = TimeScale.new('LST')
157
+ assert_raise ArgumentError do
158
+ ts.value = 'blah'
159
+ end
160
+ end
161
+ end
162
+
163
+ class ISOTimeTest < ::Test::Unit::TestCase
164
+ def test_construction
165
+ assert_nothing_raised do
166
+ ISOTime.new(DateTime.now)
167
+ ISOTime.new(DateTime.now.to_s)
168
+ end
169
+
170
+ assert_raise ArgumentError do
171
+ ISOTime.new('blah')
172
+ end
173
+ end
174
+
175
+ def test_accessors
176
+ time = ISOTime.new('2007-02-26T09:20:23')
177
+ assert_equal DateTime.parse('2007-02-26T09:20:23'), time.value
178
+
179
+ assert_raise ArgumentError do
180
+ time.value = 'blah'
181
+ end
182
+ end
183
+
184
+ def test_to_s
185
+ time = ISOTime.new('2007-02-26T09:20:23')
186
+ assert_equal '2007-02-26T09:20:23.000', time.to_s
187
+ end
188
+
189
+ def test_relationships
190
+ assert_kind_of AbsoluteTime, ISOTime.new('2007-02-26T09:20:23')
191
+ end
192
+
193
+ def test_xml
194
+ date = '2007-02-26T09:20:23'
195
+
196
+ t1 = ISOTime.new(date)
197
+ assert_equal "<crd:ISOTime xmlns:crd='http://www.ivoa.net/xml/STC/STCcoords/v1.10'>#{date}.000</crd:ISOTime>", t1.to_xml.to_s
198
+
199
+ t2 = ISOTime.from_xml("<crd:ISOTime xmlns:crd='http://www.ivoa.net/xml/STC/STCcoords/v1.10'>#{date}.000</crd:ISOTime>")
200
+ assert_equal t1, t2
201
+ end
202
+ end
203
+
204
+ class ISOTimeRefTest < ::Test::Unit::TestCase
205
+ def test_construction
206
+ assert_nothing_raised do
207
+ ISOTimeRef.new('ref1')
208
+ end
209
+
210
+ assert_raise ArgumentError do
211
+ ISOTimeRef.new(' ')
212
+ end
213
+ end
214
+
215
+ def test_accessors
216
+ time = ISOTimeRef.new('ref2')
217
+ assert_equal 'ref2', time.value
218
+ end
219
+
220
+ def test_relationships
221
+ assert_kind_of AbsoluteTime, ISOTimeRef.new('ref3')
222
+ end
223
+
224
+ def test_xml
225
+ id = 'ref1'
226
+
227
+ ref1 = ISOTimeRef.new(id)
228
+ assert_equal "<crd:ISOTimeRef xmlns:crd='http://www.ivoa.net/xml/STC/STCcoords/v1.10'>#{id}</crd:ISOTimeRef>", ref1.to_xml.to_s
229
+
230
+ ref2 = ISOTimeRef.from_xml("<crd:ISOTimeRef xmlns:crd='http://www.ivoa.net/xml/STC/STCcoords/v1.10'>#{id}</crd:ISOTimeRef>")
231
+ assert_equal ref1, ref2
232
+ end
233
+ end
234
+
235
+ class JDTimeTest < ::Test::Unit::TestCase
236
+ def test_construction
237
+ assert_nothing_raised do
238
+ JDTime.new('1234.5')
239
+ JDTime.new(1234.5)
240
+ end
241
+
242
+ assert_raise ArgumentError do
243
+ JDTime.new('blah')
244
+ end
245
+ end
246
+
247
+ def test_accessors
248
+ time = JDTime.new('1234.5')
249
+ assert_equal 1234.5, time.value
250
+
251
+ time = JDTime.new(1234.5)
252
+ assert_equal 1234.5, time.value
253
+ end
254
+
255
+ def test_relationships
256
+ assert_kind_of AbsoluteTime, JDTime.new(1234.5)
257
+ end
258
+
259
+ def test_xml
260
+ date = 2454466.5
261
+
262
+ t1 = JDTime.new(date)
263
+ assert_equal "<crd:JDTime xmlns:crd='http://www.ivoa.net/xml/STC/STCcoords/v1.10'>#{date}</crd:JDTime>", t1.to_xml.to_s
264
+
265
+ t2 = JDTime.from_xml("<crd:JDTime xmlns:crd='http://www.ivoa.net/xml/STC/STCcoords/v1.10'>#{date}</crd:JDTime>")
266
+ assert_equal t1, t2
267
+ end
268
+ end
269
+
270
+ class JDTimeRefTest < ::Test::Unit::TestCase
271
+ def test_construction
272
+ assert_nothing_raised do
273
+ JDTimeRef.new('ref1')
274
+ end
275
+
276
+ assert_raise ArgumentError do
277
+ JDTimeRef.new(' ')
278
+ end
279
+ end
280
+
281
+ def test_accessors
282
+ time = JDTimeRef.new('ref2')
283
+ assert_equal 'ref2', time.value
284
+ end
285
+
286
+ def test_relationships
287
+ assert_kind_of AbsoluteTime, JDTimeRef.new('ref3')
288
+ end
289
+
290
+ def test_xml
291
+ id = 'ref1'
292
+
293
+ ref1 = JDTimeRef.new(id)
294
+ assert_equal "<crd:JDTimeRef xmlns:crd='http://www.ivoa.net/xml/STC/STCcoords/v1.10'>#{id}</crd:JDTimeRef>", ref1.to_xml.to_s
295
+
296
+ ref2 = JDTimeRef.from_xml("<crd:JDTimeRef xmlns:crd='http://www.ivoa.net/xml/STC/STCcoords/v1.10'>#{id}</crd:JDTimeRef>")
297
+ assert_equal ref1, ref2
298
+ end
299
+ end
300
+
301
+ class MJDTimeTest < ::Test::Unit::TestCase
302
+ def test_construction
303
+ assert_nothing_raised do
304
+ MJDTime.new('1234.5')
305
+ MJDTime.new(1234.5)
306
+ end
307
+
308
+ assert_raise ArgumentError do
309
+ MJDTime.new('blah')
310
+ end
311
+ end
312
+
313
+ def test_accessors
314
+ time = MJDTime.new('1234.5')
315
+ assert_equal 1234.5, time.value
316
+
317
+ time = MJDTime.new(1234.5)
318
+ assert_equal 1234.5, time.value
319
+ end
320
+
321
+ def test_relationships
322
+ assert_kind_of AbsoluteTime, MJDTime.new(1234.5)
323
+ end
324
+
325
+ def test_xml
326
+ date = 2454466.5
327
+
328
+ t1 = MJDTime.new(date)
329
+ assert_equal "<crd:MJDTime xmlns:crd='http://www.ivoa.net/xml/STC/STCcoords/v1.10'>#{date}</crd:MJDTime>", t1.to_xml.to_s
330
+
331
+ t2 = MJDTime.from_xml("<crd:MJDTime xmlns:crd='http://www.ivoa.net/xml/STC/STCcoords/v1.10'>#{date}</crd:MJDTime>")
332
+ assert_equal t1, t2
333
+ end
334
+ end
335
+
336
+ class MJDTimeRefTest < ::Test::Unit::TestCase
337
+ def test_construction
338
+ assert_nothing_raised do
339
+ MJDTimeRef.new('ref1')
340
+ end
341
+
342
+ assert_raise ArgumentError do
343
+ MJDTimeRef.new(' ')
344
+ end
345
+ end
346
+
347
+ def test_accessors
348
+ time = MJDTimeRef.new('ref2')
349
+ assert_equal 'ref2', time.value
350
+ end
351
+
352
+ def test_relationships
353
+ assert_kind_of AbsoluteTime, MJDTimeRef.new('ref3')
354
+ end
355
+
356
+ def test_xml
357
+ id = 'ref1'
358
+
359
+ ref1 = MJDTimeRef.new(id)
360
+ assert_equal "<crd:MJDTimeRef xmlns:crd='http://www.ivoa.net/xml/STC/STCcoords/v1.10'>#{id}</crd:MJDTimeRef>", ref1.to_xml.to_s
361
+
362
+ ref2 = MJDTimeRef.from_xml("<crd:MJDTimeRef xmlns:crd='http://www.ivoa.net/xml/STC/STCcoords/v1.10'>#{id}</crd:MJDTimeRef>")
363
+ assert_equal ref1, ref2
364
+ end
365
+ end
366
+
367
+ class TimeOriginTest < ::Test::Unit::TestCase
368
+ def test_construction
369
+ assert_nothing_raised do
370
+ TimeOrigin.new
371
+ end
372
+
373
+ assert_raise ArgumentError do
374
+ TimeOrigin.new('blah')
375
+ end
376
+ end
377
+
378
+ def test_accessors
379
+ to = TimeOrigin.new
380
+ assert_equal 'RELOCATABLE', to.value
381
+
382
+ to = TimeOrigin.new('RELOCATABLE')
383
+ assert_equal 'RELOCATABLE', to.value
384
+ end
385
+
386
+ def test_relationships
387
+ assert_kind_of AbsoluteTime, TimeOrigin.new
388
+ end
389
+
390
+ def test_xml
391
+ ref1 = TimeOrigin.new('RELOCATABLE')
392
+ assert_equal "<crd:TimeOrigin xmlns:crd='http://www.ivoa.net/xml/STC/STCcoords/v1.10'>RELOCATABLE</crd:TimeOrigin>", ref1.to_xml.to_s
393
+
394
+ ref2 = TimeOrigin.from_xml("<crd:TimeOrigin xmlns:crd='http://www.ivoa.net/xml/STC/STCcoords/v1.10'>RELOCATABLE</crd:TimeOrigin>")
395
+ assert_equal ref1, ref2
396
+ end
397
+ end
398
+
399
+ class TimeOffsetTest < ::Test::Unit::TestCase
400
+ def test_construction
401
+ assert_nothing_raised do
402
+ TimeOffset.new('1234.5')
403
+ TimeOffset.new(1234.5)
404
+ TimeOffset.new(1234.5, 'h')
405
+ TimeOffset.new(1234.5, TimeUnit.new('h'))
406
+ end
407
+
408
+ assert_raise ArgumentError do
409
+ TimeOffset.new('blah')
410
+ end
411
+ assert_raise ArgumentError do
412
+ TimeOffset.new(1234.6, 'blah')
413
+ end
414
+ end
415
+
416
+ def test_accessors
417
+ to = TimeOffset.new(1234.5, 'h')
418
+ assert_equal 1234.5, to.offset
419
+ assert_equal TimeUnit.new('h'), to.unit
420
+
421
+ to.offset = 3456
422
+ assert_equal 3456, to.offset
423
+
424
+ to.unit = 'yr'
425
+ assert_equal TimeUnit.new('yr'), to.unit
426
+ end
427
+
428
+ def test_relationships
429
+ assert_kind_of RelativeTime, TimeOffset.new(1234.5)
430
+ end
431
+
432
+ def test_to_s
433
+ to = TimeOffset.new(1234.5, 'yr')
434
+ assert_equal '1234.5 yr', to.to_s
435
+ end
436
+
437
+ def test_xml
438
+ o1 = TimeOffset.new(1234.5, TimeUnit.new('h'))
439
+ assert_equal "<crd:TimeOffset crd:unit='h' xmlns:crd='http://www.ivoa.net/xml/STC/STCcoords/v1.10'>1234.5</crd:TimeOffset>", o1.to_xml.to_s
440
+
441
+ o2 = TimeOffset.from_xml("<crd:TimeOffset crd:unit='h' xmlns:crd='http://www.ivoa.net/xml/STC/STCcoords/v1.10'>1234.5</crd:TimeOffset>")
442
+ assert_equal o1, o2
443
+ end
444
+ end
445
+
446
+ class TimeOffsetRefTest < ::Test::Unit::TestCase
447
+ def test_construction
448
+ assert_nothing_raised do
449
+ TimeOffsetRef.new('ref1')
450
+ TimeOffsetRef.new('ref1', 'h')
451
+ TimeOffsetRef.new('ref1', TimeUnit.new('h'))
452
+ end
453
+
454
+ assert_raise ArgumentError do
455
+ TimeOffsetRef.new(' ')
456
+ end
457
+ assert_raise ArgumentError do
458
+ TimeOffsetRef.new('ref1', 'blah')
459
+ end
460
+ end
461
+
462
+ def test_accessors
463
+ to = TimeOffsetRef.new('ref2', 'yr')
464
+ assert_equal 'ref2', to.value
465
+ assert_equal TimeUnit.new('yr'), to.unit
466
+
467
+ to.value = 'ref3'
468
+ assert_equal 'ref3', to.value
469
+
470
+ to.unit = 's'
471
+ assert_equal TimeUnit.new('s'), to.unit
472
+ end
473
+
474
+ def test_relationships
475
+ assert_kind_of RelativeTime, TimeOffsetRef.new('ref3')
476
+ end
477
+
478
+ def test_to_s
479
+ to = TimeOffsetRef.new('ref2', 'yr')
480
+ assert_equal 'ref2 yr', to.to_s
481
+ end
482
+
483
+ def test_xml
484
+ r1 = TimeOffsetRef.new('ref1', 'h')
485
+ assert_equal "<crd:TimeOffsetRef crd:unit='h' xmlns:crd='http://www.ivoa.net/xml/STC/STCcoords/v1.10'>ref1</crd:TimeOffsetRef>", r1.to_xml.to_s
486
+
487
+ r2 = TimeOffsetRef.from_xml("<crd:TimeOffsetRef crd:unit='h' xmlns:crd='http://www.ivoa.net/xml/STC/STCcoords/v1.10'>ref1</crd:TimeOffsetRef>")
488
+ assert_equal r1, r2
489
+ end
490
+ end
491
+
492
+ class AstronTimeTest < ::Test::Unit::TestCase
493
+ def test_construction
494
+ assert_nothing_raised do
495
+ AstronTime.new('UTC', ISOTime.new(DateTime.now))
496
+ AstronTime.new(TimeScale.new('UTC'), ISOTime.new(DateTime.now))
497
+ AstronTime.new(TimeScale.new('UTC'), ISOTime.new(DateTime.now), TimeOffset.new(123, 's'))
498
+ end
499
+
500
+ assert_raise TypeError do
501
+ AstronTime.new('UTC', nil)
502
+ end
503
+ assert_raise TypeError do
504
+ AstronTime.new('UTC', TimeOffset.new(1234, 's'))
505
+ end
506
+ assert_raise TypeError do
507
+ AstronTime.new('UTC', ISOTime.new(DateTime.now), ISOTime.new(DateTime.now))
508
+ end
509
+ end
510
+
511
+ def test_accessors
512
+ now = DateTime.now
513
+ time = AstronTime.new(TimeScale.new('UTC'), ISOTime.new(now), TimeOffset.new(123, 's'))
514
+ assert_equal TimeScale.new('UTC'), time.timescale
515
+ assert_equal ISOTime.new(now), time.absolute_time
516
+ assert_equal TimeOffset.new(123, 's'), time.relative_time
517
+
518
+ time.timescale = 'ET'
519
+ assert_equal TimeScale.new('ET'), time.timescale
520
+
521
+ time.absolute_time = JDTime.new(1234.5)
522
+ assert_equal JDTime.new(1234.5), time.absolute_time
523
+
524
+ time.relative_time = TimeOffset.new(1234.5, 'h')
525
+ assert_equal TimeOffset.new(1234.5, 'h'), time.relative_time
526
+ end
527
+
528
+ def test_xml
529
+ t1 = AstronTime.new(TimeScale.new('UTC'), ISOTime.new(DateTime.parse('2007-01-01')), TimeOffset.new(123, 's'))
530
+
531
+ t2 = AstronTime.from_xml(t1.to_xml)
532
+ assert_equal t1, t2
533
+ end
534
+ end
535
+
536
+ class DoubleArrayTest < ::Test::Unit::TestCase
537
+ def test_construction
538
+ assert_nothing_raised do
539
+ DoubleArray.new([1.0, 2.0, 3.0])
540
+ end
541
+
542
+ assert_raise TypeError do
543
+ DoubleArray.new([1.0, 'blah', 2.0])
544
+ end
545
+ end
546
+
547
+ def test_assignment
548
+ da = DoubleArray.new([1.0, 2.0, 3.0])
549
+
550
+ assert_raises TypeError do
551
+ da[1] = 'blah'
552
+ end
553
+ assert_raises TypeError do
554
+ da << 'blah'
555
+ end
556
+ assert_raises TypeError do
557
+ da.replace([4.5, 2.3, 'blah'])
558
+ end
559
+ assert_raises TypeError do
560
+ da.insert(2, 3.4, 'blah')
561
+ end
562
+ end
563
+
564
+ def test_relationships
565
+ assert_kind_of Array, DoubleArray.new([1.0, 2.0, 3.0])
566
+ end
567
+ end
568
+
569
+ class Double2Test < ::Test::Unit::TestCase
570
+ def test_construction
571
+ assert_nothing_raised do
572
+ Double2.new([3.2, 1.1])
573
+ end
574
+
575
+ assert_raises RuntimeError do
576
+ Double2.new([3.2])
577
+ end
578
+ assert_raises RuntimeError do
579
+ Double2.new([3.2, 2.5, 5.1])
580
+ end
581
+ assert_raises TypeError do
582
+ Double2.new([3.2, 'blah'])
583
+ end
584
+ end
585
+
586
+ def test_assignment
587
+ d2 = Double2.new([1.1, 2.2])
588
+
589
+ assert_raises TypeError do
590
+ d2[1] = 'blah'
591
+ end
592
+ assert_raises RuntimeError do
593
+ d2 << 1.5
594
+ end
595
+ assert_raises RuntimeError do
596
+ d2.clear
597
+ end
598
+ end
599
+
600
+ def test_relationships
601
+ assert_kind_of DoubleArray, Double2.new([1.1, 2.2])
602
+ end
603
+ end
604
+
605
+ class ValueTest < ::Test::Unit::TestCase
606
+ def test_construction
607
+ assert_nothing_raised do
608
+ Value.new(1.2)
609
+ end
610
+
611
+ assert_raises ArgumentError do
612
+ Value.new('blah')
613
+ end
614
+ end
615
+
616
+ def test_accessors
617
+ value = Value.new(1.2)
618
+ assert_equal 1.2, value.value
619
+
620
+ value.value = 3.4
621
+ assert_equal 3.4, value.value
622
+ end
623
+
624
+ def test_relationships
625
+ assert_kind_of CValue, Value.new(1.2)
626
+ end
627
+
628
+ def test_xml
629
+ v1 = Value.new(1.2)
630
+ assert_equal "<crd:Value xmlns:crd='http://www.ivoa.net/xml/STC/STCcoords/v1.10'>1.2</crd:Value>", v1.to_xml.to_s
631
+
632
+ v2 = Value.from_xml("<crd:Value xmlns:crd='http://www.ivoa.net/xml/STC/STCcoords/v1.10'>1.2</crd:Value>")
633
+ assert_equal v1, v2
634
+ end
635
+ end
636
+
637
+ class ValueRefTest < ::Test::Unit::TestCase
638
+ def test_construction
639
+ assert_nothing_raised do
640
+ ValueRef.new('ref1')
641
+ end
642
+
643
+ assert_raises ArgumentError do
644
+ ValueRef.new(' ')
645
+ end
646
+ end
647
+
648
+ def test_accessors
649
+ ref = ValueRef.new('ref1')
650
+ assert_equal 'ref1', ref.value
651
+
652
+ ref.value = 'ref2'
653
+ assert_equal 'ref2', ref.value
654
+ end
655
+
656
+ def test_relationships
657
+ assert_kind_of CValue, ValueRef.new('ref1')
658
+ end
659
+
660
+ def test_xml
661
+ r1 = ValueRef.new('ref1')
662
+ assert_equal "<crd:ValueRef xmlns:crd='http://www.ivoa.net/xml/STC/STCcoords/v1.10'>ref1</crd:ValueRef>", r1.to_xml.to_s
663
+
664
+ r2 = ValueRef.from_xml("<crd:ValueRef xmlns:crd='http://www.ivoa.net/xml/STC/STCcoords/v1.10'>ref1</crd:ValueRef>")
665
+ assert_equal r1, r2
666
+ end
667
+ end
668
+
669
+ class ErrorTest < ::Test::Unit::TestCase
670
+ def test_construction
671
+ assert_nothing_raised do
672
+ Error.new(1.2)
673
+ end
674
+
675
+ assert_raises ArgumentError do
676
+ Error.new('blah')
677
+ end
678
+ end
679
+
680
+ def test_accessors
681
+ err = Error.new(1.2)
682
+ assert_equal 1.2, err.value
683
+
684
+ err.value = 3.4
685
+ assert_equal 3.4, err.value
686
+ end
687
+
688
+ def test_relationships
689
+ assert_kind_of CError, Error.new(1.2)
690
+ end
691
+
692
+ def test_xml
693
+ e1 = Error.new(1.2)
694
+ assert_equal "<crd:Error xmlns:crd='http://www.ivoa.net/xml/STC/STCcoords/v1.10'>1.2</crd:Error>", e1.to_xml.to_s
695
+
696
+ e2 = Error.from_xml("<crd:Error xmlns:crd='http://www.ivoa.net/xml/STC/STCcoords/v1.10'>1.2</crd:Error>")
697
+ assert_equal e1, e2
698
+ end
699
+ end
700
+
701
+ class ErrorRefTest < ::Test::Unit::TestCase
702
+ def test_construction
703
+ assert_nothing_raised do
704
+ ErrorRef.new('ref1')
705
+ end
706
+
707
+ assert_raises ArgumentError do
708
+ ErrorRef.new(' ')
709
+ end
710
+ end
711
+
712
+ def test_accessors
713
+ ref = ErrorRef.new('ref1')
714
+ assert_equal 'ref1', ref.value
715
+
716
+ ref.value = 'ref2'
717
+ assert_equal 'ref2', ref.value
718
+ end
719
+
720
+ def test_relationships
721
+ assert_kind_of CError, ErrorRef.new('ref1')
722
+ end
723
+
724
+ def test_xml
725
+ r1 = ErrorRef.new('ref1')
726
+ assert_equal "<crd:ErrorRef xmlns:crd='http://www.ivoa.net/xml/STC/STCcoords/v1.10'>ref1</crd:ErrorRef>", r1.to_xml.to_s
727
+
728
+ r2 = ErrorRef.from_xml("<crd:ErrorRef xmlns:crd='http://www.ivoa.net/xml/STC/STCcoords/v1.10'>ref1</crd:ErrorRef>")
729
+ assert_equal r1, r2
730
+ end
731
+ end
732
+
733
+ class ResolutionTest < ::Test::Unit::TestCase
734
+ def test_construction
735
+ assert_nothing_raised do
736
+ Resolution.new(1.2)
737
+ end
738
+
739
+ assert_raises ArgumentError do
740
+ Resolution.new('blah')
741
+ end
742
+ end
743
+
744
+ def test_accessors
745
+ res = Resolution.new(1.2)
746
+ assert_equal 1.2, res.value
747
+
748
+ res.value = 3.4
749
+ assert_equal 3.4, res.value
750
+ end
751
+
752
+ def test_relationships
753
+ assert_kind_of CResolution, Resolution.new(1.2)
754
+ end
755
+
756
+ def test_xml
757
+ r1 = Resolution.new(1.2)
758
+ assert_equal "<crd:Resolution xmlns:crd='http://www.ivoa.net/xml/STC/STCcoords/v1.10'>1.2</crd:Resolution>", r1.to_xml.to_s
759
+
760
+ r2 = Resolution.from_xml("<crd:Resolution xmlns:crd='http://www.ivoa.net/xml/STC/STCcoords/v1.10'>1.2</crd:Resolution>")
761
+ assert_equal r1, r2
762
+ end
763
+ end
764
+
765
+ class ResolutionRefTest < ::Test::Unit::TestCase
766
+ def test_construction
767
+ assert_nothing_raised do
768
+ ResolutionRef.new('ref1')
769
+ end
770
+
771
+ assert_raises ArgumentError do
772
+ ResolutionRef.new(' ')
773
+ end
774
+ end
775
+
776
+ def test_accessors
777
+ ref = ResolutionRef.new('ref1')
778
+ assert_equal 'ref1', ref.value
779
+
780
+ ref.value = 'ref2'
781
+ assert_equal 'ref2', ref.value
782
+ end
783
+
784
+ def test_relationships
785
+ assert_kind_of CResolution, ResolutionRef.new('ref1')
786
+ end
787
+
788
+ def test_xml
789
+ r1 = ResolutionRef.new('ref1')
790
+ assert_equal "<crd:ResolutionRef xmlns:crd='http://www.ivoa.net/xml/STC/STCcoords/v1.10'>ref1</crd:ResolutionRef>", r1.to_xml.to_s
791
+
792
+ r2 = ResolutionRef.from_xml("<crd:ResolutionRef xmlns:crd='http://www.ivoa.net/xml/STC/STCcoords/v1.10'>ref1</crd:ResolutionRef>")
793
+ assert_equal r1, r2
794
+ end
795
+ end
796
+
797
+ class SizeTest < ::Test::Unit::TestCase
798
+ def test_construction
799
+ assert_nothing_raised do
800
+ Size.new(1.2)
801
+ end
802
+
803
+ assert_raises ArgumentError do
804
+ Size.new('blah')
805
+ end
806
+ end
807
+
808
+ def test_accessors
809
+ size = Size.new(1.2)
810
+ assert_equal 1.2, size.value
811
+
812
+ size.value = 3.4
813
+ assert_equal 3.4, size.value
814
+ end
815
+
816
+ def test_relationships
817
+ assert_kind_of CSize, Size.new(1.2)
818
+ end
819
+
820
+ def test_xml
821
+ s1 = Size.new(1.2)
822
+ assert_equal "<crd:Size xmlns:crd='http://www.ivoa.net/xml/STC/STCcoords/v1.10'>1.2</crd:Size>", s1.to_xml.to_s
823
+
824
+ s2 = Size.from_xml("<crd:Size xmlns:crd='http://www.ivoa.net/xml/STC/STCcoords/v1.10'>1.2</crd:Size>")
825
+ assert_equal s1, s2
826
+ end
827
+ end
828
+
829
+ class SizeRefTest < ::Test::Unit::TestCase
830
+ def test_construction
831
+ assert_nothing_raised do
832
+ SizeRef.new('ref1')
833
+ end
834
+
835
+ assert_raises ArgumentError do
836
+ SizeRef.new(' ')
837
+ end
838
+ end
839
+
840
+ def test_accessors
841
+ ref = SizeRef.new('ref1')
842
+ assert_equal 'ref1', ref.value
843
+
844
+ ref.value = 'ref2'
845
+ assert_equal 'ref2', ref.value
846
+ end
847
+
848
+ def test_relationships
849
+ assert_kind_of CSize, SizeRef.new('ref1')
850
+ end
851
+
852
+ def test_xml
853
+ r1 = SizeRef.new('ref1')
854
+ assert_equal "<crd:SizeRef xmlns:crd='http://www.ivoa.net/xml/STC/STCcoords/v1.10'>ref1</crd:SizeRef>", r1.to_xml.to_s
855
+
856
+ r2 = SizeRef.from_xml("<crd:SizeRef xmlns:crd='http://www.ivoa.net/xml/STC/STCcoords/v1.10'>ref1</crd:SizeRef>")
857
+ assert_equal r1, r2
858
+ end
859
+ end
860
+
861
+ class PixSizeTest < ::Test::Unit::TestCase
862
+ def test_construction
863
+ assert_nothing_raised do
864
+ PixSize.new(1.2)
865
+ end
866
+
867
+ assert_raises ArgumentError do
868
+ PixSize.new('blah')
869
+ end
870
+ end
871
+
872
+ def test_accessors
873
+ size = PixSize.new(1.2)
874
+ assert_equal 1.2, size.value
875
+
876
+ size.value = 3.4
877
+ assert_equal 3.4, size.value
878
+ end
879
+
880
+ def test_relationships
881
+ assert_kind_of CPixSize, PixSize.new(1.2)
882
+ end
883
+
884
+ def test_xml
885
+ p1 = PixSize.new(1.2)
886
+ assert_equal "<crd:PixSize xmlns:crd='http://www.ivoa.net/xml/STC/STCcoords/v1.10'>1.2</crd:PixSize>", p1.to_xml.to_s
887
+
888
+ p2 = PixSize.from_xml("<crd:PixSize xmlns:crd='http://www.ivoa.net/xml/STC/STCcoords/v1.10'>1.2</crd:PixSize>")
889
+ assert_equal p1, p2
890
+ end
891
+ end
892
+
893
+ class PixSizeRefTest < ::Test::Unit::TestCase
894
+ def test_construction
895
+ assert_nothing_raised do
896
+ PixSizeRef.new('ref1')
897
+ end
898
+
899
+ assert_raises ArgumentError do
900
+ PixSizeRef.new(' ')
901
+ end
902
+ end
903
+
904
+ def test_accessors
905
+ ref = PixSizeRef.new('ref1')
906
+ assert_equal 'ref1', ref.value
907
+
908
+ ref.value = 'ref2'
909
+ assert_equal 'ref2', ref.value
910
+ end
911
+
912
+ def test_relationships
913
+ assert_kind_of CPixSize, PixSizeRef.new('ref1')
914
+ end
915
+
916
+ def test_xml
917
+ r1 = PixSizeRef.new('ref1')
918
+ assert_equal "<crd:PixSizeRef xmlns:crd='http://www.ivoa.net/xml/STC/STCcoords/v1.10'>ref1</crd:PixSizeRef>", r1.to_xml.to_s
919
+
920
+ r2 = PixSizeRef.from_xml("<crd:PixSizeRef xmlns:crd='http://www.ivoa.net/xml/STC/STCcoords/v1.10'>ref1</crd:PixSizeRef>")
921
+ assert_equal r1, r2
922
+ end
923
+ end
924
+
925
+ class ScalarCoordinateTypeTest < ::Test::Unit::TestCase
926
+ def test_construction
927
+ assert_nothing_raised do
928
+ ScalarCoordinateType.new(
929
+ :value => Value.new(123.4),
930
+ :error => [Error.new(1.1), Error.new(2.2)],
931
+ :resolution => [Resolution.new(0.1), Resolution.new(0.5)],
932
+ :size => [Size.new(10.1), Size.new(8.7)],
933
+ :pix_size => [PixSize.new(1.9), PixSize.new(2.2)]
934
+ )
935
+
936
+ ScalarCoordinateType.new(
937
+ :value => Value.new(123.4),
938
+ :error => Error.new(1.1),
939
+ :resolution => Resolution.new(0.1),
940
+ :size => Size.new(10.1),
941
+ :pix_size => PixSize.new(1.9)
942
+ )
943
+
944
+ ScalarCoordinateType.new(
945
+ :value => Value.new(123.4),
946
+ :error => Error.new(1.1)
947
+ )
948
+
949
+ ScalarCoordinateType.new()
950
+ end
951
+
952
+ sc = ScalarCoordinateType.new
953
+ assert_raises TypeError do
954
+ sc.value = Error.new(10.2)
955
+ end
956
+
957
+ assert_raises TypeError do
958
+ sc.error = Value.new(123.4)
959
+ end
960
+ assert_raises ArgumentError do
961
+ sc.error = [Error.new(123.4), Error.new(123.4), Error.new(123.4)]
962
+ end
963
+
964
+ assert_raises TypeError do
965
+ sc.resolution = Error.new(10.2)
966
+ end
967
+ assert_raises ArgumentError do
968
+ sc.resolution = [Resolution.new(123.4), Resolution.new(123.4), Resolution.new(123.4)]
969
+ end
970
+
971
+ assert_raises TypeError do
972
+ sc.size = Error.new(10.2)
973
+ end
974
+ assert_raises ArgumentError do
975
+ sc.size = [Size.new(123.4), Size.new(123.4), Size.new(123.4)]
976
+ end
977
+
978
+ assert_raises TypeError do
979
+ sc.pix_size = Error.new(10.2)
980
+ end
981
+ assert_raises ArgumentError do
982
+ sc.pix_size = [PixSize.new(123.4), PixSize.new(123.4), PixSize.new(123.4)]
983
+ end
984
+ end
985
+
986
+ def test_accessors
987
+ sc = ScalarCoordinateType.new(
988
+ :name => 'MyCoordinate',
989
+ :value => Value.new(123.4),
990
+ :error => [Error.new(1.1), Error.new(2.2)],
991
+ :resolution => [Resolution.new(0.1), Resolution.new(0.2)],
992
+ :size => [Size.new(10.1), Size.new(8.7)],
993
+ :pix_size => [PixSize.new(1.9), PixSize.new(2.2)]
994
+ )
995
+
996
+ assert_equal 'MyCoordinate', sc.name
997
+ assert_equal Value.new(123.4), sc.value
998
+ assert_equal [Error.new(1.1), Error.new(2.2)], sc.error
999
+ assert_equal [Resolution.new(0.1), Resolution.new(0.2)], sc.resolution
1000
+ assert_equal [Size.new(10.1), Size.new(8.7)], sc.size
1001
+ assert_equal [PixSize.new(1.9), PixSize.new(2.2)], sc.pix_size
1002
+
1003
+ sc.name = 'MyOtherCoordinate'
1004
+ assert_equal 'MyOtherCoordinate', sc.name
1005
+ sc.error = Error.new(3.3)
1006
+ assert_equal [Error.new(3.3)], sc.error
1007
+ sc.resolution = Resolution.new(0.6)
1008
+ assert_equal [Resolution.new(0.6)], sc.resolution
1009
+ sc.size = Size.new(5.1)
1010
+ assert_equal [Size.new(5.1)], sc.size
1011
+ sc.pix_size = PixSize.new(3.1)
1012
+ assert_equal [PixSize.new(3.1)], sc.pix_size
1013
+ end
1014
+
1015
+ def test_relationships
1016
+ assert_kind_of CoordinateType, ScalarCoordinateType.new
1017
+ end
1018
+ end
1019
+
1020
+ class TimeCoordinateTest < ::Test::Unit::TestCase
1021
+ def test_constructors
1022
+ assert_nothing_raised do
1023
+ TimeCoordinate.new(
1024
+ :time_instant => AstronTime.new('UTC', ISOTime.new(DateTime.now)),
1025
+ :error => [Error.new(1.1), Error.new(2.2)],
1026
+ :resolution => [Resolution.new(0.1), Resolution.new(0.5)],
1027
+ :size => [Size.new(10.1), Size.new(8.7)],
1028
+ :pix_size => [PixSize.new(1.9), PixSize.new(2.2)],
1029
+ :unit => TimeUnit.new('s')
1030
+ )
1031
+
1032
+ TimeCoordinate.new(
1033
+ :time_instant => AstronTime.new('UTC', ISOTime.new(DateTime.now)),
1034
+ :error => Error.new(1.1),
1035
+ :resolution => Resolution.new(0.1),
1036
+ :size => Size.new(10.1),
1037
+ :pix_size => PixSize.new(1.9)
1038
+ )
1039
+
1040
+ TimeCoordinate.new(
1041
+ :time_instant => AstronTime.new('UTC', ISOTime.new(DateTime.now))
1042
+ )
1043
+
1044
+ TimeCoordinate.new()
1045
+ end
1046
+
1047
+ tc = TimeCoordinate.new
1048
+ assert_raises TypeError do
1049
+ tc.time_instant = Error.new(10.2)
1050
+ end
1051
+
1052
+ assert_raises TypeError do
1053
+ tc.error = Value.new(123.4)
1054
+ end
1055
+ assert_raises ArgumentError do
1056
+ tc.error = [Error.new(123.4), Error.new(123.4), Error.new(123.4)]
1057
+ end
1058
+
1059
+ assert_raises TypeError do
1060
+ tc.resolution = Error.new(10.2)
1061
+ end
1062
+ assert_raises ArgumentError do
1063
+ tc.resolution = [Resolution.new(123.4), Resolution.new(123.4), Resolution.new(123.4)]
1064
+ end
1065
+
1066
+ assert_raises TypeError do
1067
+ tc.size = Error.new(10.2)
1068
+ end
1069
+ assert_raises ArgumentError do
1070
+ tc.size = [Size.new(123.4), Size.new(123.4), Size.new(123.4)]
1071
+ end
1072
+
1073
+ assert_raises TypeError do
1074
+ tc.pix_size = Error.new(10.2)
1075
+ end
1076
+ assert_raises ArgumentError do
1077
+ tc.pix_size = [PixSize.new(123.4), PixSize.new(123.4), PixSize.new(123.4)]
1078
+ end
1079
+
1080
+ assert_raises TypeError do
1081
+ tc.unit = PosUnit.new('rad')
1082
+ end
1083
+ end
1084
+
1085
+ def test_accessors
1086
+ now = DateTime.now
1087
+
1088
+ tc = TimeCoordinate.new(
1089
+ :name => 'MyCoordinate',
1090
+ :time_instant => AstronTime.new('UTC', ISOTime.new(now)),
1091
+ :error => [Error.new(1.1), Error.new(2.2)],
1092
+ :resolution => [Resolution.new(0.1), Resolution.new(0.2)],
1093
+ :size => [Size.new(10.1), Size.new(8.7)],
1094
+ :pix_size => [PixSize.new(1.9), PixSize.new(2.2)],
1095
+ :unit => TimeUnit.new('h')
1096
+ )
1097
+
1098
+ assert_equal 'MyCoordinate', tc.name
1099
+ assert_equal AstronTime.new('UTC', ISOTime.new(now)), tc.time_instant
1100
+ assert_equal [Error.new(1.1), Error.new(2.2)], tc.error
1101
+ assert_equal [Resolution.new(0.1), Resolution.new(0.2)], tc.resolution
1102
+ assert_equal [Size.new(10.1), Size.new(8.7)], tc.size
1103
+ assert_equal [PixSize.new(1.9), PixSize.new(2.2)], tc.pix_size
1104
+ assert_equal TimeUnit.new('h'), tc.unit
1105
+
1106
+ tc.name = 'MyOtherCoordinate'
1107
+ assert_equal 'MyOtherCoordinate', tc.name
1108
+ tc.time_instant = AstronTime.new('LOCAL', ISOTime.new('2007-02-26T16:31:40'))
1109
+ assert_equal AstronTime.new('LOCAL', ISOTime.new('2007-02-26T16:31:40')), tc.time_instant
1110
+ tc.error = Error.new(3.3)
1111
+ assert_equal [Error.new(3.3)], tc.error
1112
+ tc.resolution = Resolution.new(0.6)
1113
+ assert_equal [Resolution.new(0.6)], tc.resolution
1114
+ tc.size = Size.new(5.1)
1115
+ assert_equal [Size.new(5.1)], tc.size
1116
+ tc.pix_size = PixSize.new(3.1)
1117
+ assert_equal [PixSize.new(3.1)], tc.pix_size
1118
+ tc.unit = TimeUnit.new('cy')
1119
+ assert_equal TimeUnit.new('cy'), tc.unit
1120
+ end
1121
+
1122
+ def test_relationships
1123
+ assert_kind_of CoordinateType, TimeCoordinate.new
1124
+ end
1125
+
1126
+ def test_xml
1127
+ tc1 = TimeCoordinate.new(
1128
+ :name => 'MyCoordinate',
1129
+ :time_instant => AstronTime.new('UTC', ISOTime.new(DateTime.parse('2007-01-01'))),
1130
+ :error => [Error.new(1.1), Error.new(2.2)],
1131
+ :resolution => [Resolution.new(0.1), Resolution.new(0.2)],
1132
+ :size => [Size.new(10.1), Size.new(8.7)],
1133
+ :pix_size => [PixSize.new(1.9), PixSize.new(2.2)],
1134
+ :unit => TimeUnit.new('h')
1135
+ )
1136
+
1137
+ tc2 = TimeCoordinate.from_xml(tc1.to_xml)
1138
+ assert_equal tc1, tc2
1139
+ end
1140
+ end
1141
+
1142
+ class Value2Test < ::Test::Unit::TestCase
1143
+ def test_construction
1144
+ assert_nothing_raised do
1145
+ Value2.new([3.2, 1.1])
1146
+ end
1147
+
1148
+ assert_raises RuntimeError do
1149
+ Value2.new([3.2])
1150
+ end
1151
+ assert_raises RuntimeError do
1152
+ Value2.new([3.2, 2.5, 5.1])
1153
+ end
1154
+ assert_raises TypeError do
1155
+ Value2.new([3.2, 'blah'])
1156
+ end
1157
+ end
1158
+
1159
+ def test_assignment
1160
+ d2 = Value2.new([1.1, 2.2])
1161
+
1162
+ assert_raises TypeError do
1163
+ d2[1] = 'blah'
1164
+ end
1165
+ assert_raises RuntimeError do
1166
+ d2 << 1.5
1167
+ end
1168
+ assert_raises RuntimeError do
1169
+ d2.clear
1170
+ end
1171
+ end
1172
+
1173
+ def test_relationships
1174
+ assert_kind_of Double2, Value2.new([1.1, 2.2])
1175
+ assert_kind_of CValue2, Value2.new([1.1, 2.2])
1176
+ end
1177
+
1178
+ def test_xml
1179
+ v1 = Value2.new([1.1, 2.2])
1180
+ assert_equal "<crd:Value2 xmlns:crd='http://www.ivoa.net/xml/STC/STCcoords/v1.10'>1.1 2.2</crd:Value2>", v1.to_xml.to_s
1181
+
1182
+ v2 = Value2.from_xml("<crd:Value2 xmlns:crd='http://www.ivoa.net/xml/STC/STCcoords/v1.10'>1.1 2.2</crd:Value2>")
1183
+ assert_equal v1, v2
1184
+ end
1185
+ end
1186
+
1187
+ class Value2RefTest < ::Test::Unit::TestCase
1188
+ def test_construction
1189
+ assert_nothing_raised do
1190
+ Value2Ref.new('ref1')
1191
+ end
1192
+
1193
+ assert_raises ArgumentError do
1194
+ Value2Ref.new(' ')
1195
+ end
1196
+ end
1197
+
1198
+ def test_accessors
1199
+ ref = Value2Ref.new('ref1')
1200
+ assert_equal 'ref1', ref.value
1201
+
1202
+ ref.value = 'ref2'
1203
+ assert_equal 'ref2', ref.value
1204
+ end
1205
+
1206
+ def test_relationships
1207
+ assert_kind_of CValue2, Value2Ref.new('ref1')
1208
+ end
1209
+
1210
+ def test_xml
1211
+ r1 = Value2Ref.new('ref1')
1212
+ assert_equal "<crd:Value2Ref xmlns:crd='http://www.ivoa.net/xml/STC/STCcoords/v1.10'>ref1</crd:Value2Ref>", r1.to_xml.to_s
1213
+
1214
+ r2 = Value2Ref.from_xml("<crd:Value2Ref xmlns:crd='http://www.ivoa.net/xml/STC/STCcoords/v1.10'>ref1</crd:Value2Ref>")
1215
+ assert_equal r1, r2
1216
+ end
1217
+ end
1218
+
1219
+ class Error2Test < ::Test::Unit::TestCase
1220
+ def test_construction
1221
+ assert_nothing_raised do
1222
+ Error2.new([3.2, 1.1])
1223
+ end
1224
+
1225
+ assert_raises RuntimeError do
1226
+ Error2.new([3.2])
1227
+ end
1228
+ assert_raises RuntimeError do
1229
+ Error2.new([3.2, 2.5, 5.1])
1230
+ end
1231
+ assert_raises TypeError do
1232
+ Error2.new([3.2, 'blah'])
1233
+ end
1234
+ end
1235
+
1236
+ def test_assignment
1237
+ e2 = Error2.new([1.1, 2.2])
1238
+
1239
+ assert_raises TypeError do
1240
+ e2[1] = 'blah'
1241
+ end
1242
+ assert_raises RuntimeError do
1243
+ e2 << 1.5
1244
+ end
1245
+ assert_raises RuntimeError do
1246
+ e2.clear
1247
+ end
1248
+ end
1249
+
1250
+ def test_relationships
1251
+ assert_kind_of Size2Type, Error2.new([1.1, 2.2])
1252
+ assert_kind_of CError2, Error2.new([1.1, 2.2])
1253
+ end
1254
+
1255
+ def test_xml
1256
+ e1 = Error2.new([1.1, 2.2])
1257
+ assert_equal "<crd:Error2 xmlns:crd='http://www.ivoa.net/xml/STC/STCcoords/v1.10'>1.1 2.2</crd:Error2>", e1.to_xml.to_s
1258
+
1259
+ e2 = Error2.from_xml("<crd:Error2 xmlns:crd='http://www.ivoa.net/xml/STC/STCcoords/v1.10'>1.1 2.2</crd:Error2>")
1260
+ assert_equal e1, e2
1261
+ end
1262
+ end
1263
+
1264
+ class Error2MatrixTest < ::Test::Unit::TestCase
1265
+ def test_construction
1266
+ assert_nothing_raised do
1267
+ Error2Matrix.new([3.2, 1.1, 5.5, 0.1])
1268
+ end
1269
+
1270
+ assert_raises RuntimeError do
1271
+ Error2Matrix.new([3.2])
1272
+ end
1273
+ assert_raises RuntimeError do
1274
+ Error2Matrix.new([3.2, 2.5, 5.1, 0.3, 10.9])
1275
+ end
1276
+ assert_raises TypeError do
1277
+ Error2Matrix.new([3.2, 'blah', 9.1, 'yeeha'])
1278
+ end
1279
+ end
1280
+
1281
+ def test_assignment
1282
+ e2m = Error2Matrix.new([1.1, 2.2, 10.2, 0.1])
1283
+
1284
+ assert_raises TypeError do
1285
+ e2m[1] = 'blah'
1286
+ end
1287
+ assert_raises RuntimeError do
1288
+ e2m << 1.5
1289
+ end
1290
+ assert_raises RuntimeError do
1291
+ e2m.clear
1292
+ end
1293
+ end
1294
+
1295
+ def test_relationships
1296
+ assert_kind_of Double4, Error2Matrix.new([1.1, 2.2, 3.3, 4.4])
1297
+ assert_kind_of CError2, Error2Matrix.new([1.1, 2.2, 3.3, 4.4])
1298
+ end
1299
+
1300
+ def test_xml
1301
+ m1 = Error2Matrix.new([1.1, 2.2, 3.3, 4.4])
1302
+ assert_equal "<crd:Error2Matrix xmlns:crd='http://www.ivoa.net/xml/STC/STCcoords/v1.10'>1.1 2.2 3.3 4.4</crd:Error2Matrix>", m1.to_xml.to_s
1303
+
1304
+ m2 = Error2Matrix.from_xml(
1305
+ "<crd:Error2Matrix xmlns:crd='http://www.ivoa.net/xml/STC/STCcoords/v1.10'>1.1 2.2 3.3 4.4</crd:Error2Matrix>"
1306
+ )
1307
+ assert_equal m1, m2
1308
+ end
1309
+ end
1310
+
1311
+ class Error2RefTest < ::Test::Unit::TestCase
1312
+ def test_construction
1313
+ assert_nothing_raised do
1314
+ Error2Ref.new('ref1')
1315
+ end
1316
+
1317
+ assert_raises ArgumentError do
1318
+ Error2Ref.new(' ')
1319
+ end
1320
+ end
1321
+
1322
+ def test_accessors
1323
+ ref = Error2Ref.new('ref1')
1324
+ assert_equal 'ref1', ref.value
1325
+
1326
+ ref.value = 'ref2'
1327
+ assert_equal 'ref2', ref.value
1328
+ end
1329
+
1330
+ def test_relationships
1331
+ assert_kind_of CError2, Error2Ref.new('ref1')
1332
+ end
1333
+
1334
+ def test_xml
1335
+ r1 = Error2Ref.new('ref1')
1336
+ assert_equal "<crd:Error2Ref xmlns:crd='http://www.ivoa.net/xml/STC/STCcoords/v1.10'>ref1</crd:Error2Ref>", r1.to_xml.to_s
1337
+
1338
+ r2 = Error2Ref.from_xml("<crd:Error2Ref xmlns:crd='http://www.ivoa.net/xml/STC/STCcoords/v1.10'>ref1</crd:Error2Ref>")
1339
+ assert_equal r1, r2
1340
+ end
1341
+ end
1342
+
1343
+ class Resolution2Test < ::Test::Unit::TestCase
1344
+ def test_construction
1345
+ assert_nothing_raised do
1346
+ Resolution2.new([3.2, 1.1])
1347
+ end
1348
+
1349
+ assert_raises RuntimeError do
1350
+ Resolution2.new([3.2])
1351
+ end
1352
+ assert_raises RuntimeError do
1353
+ Resolution2.new([3.2, 2.5, 5.1])
1354
+ end
1355
+ assert_raises TypeError do
1356
+ Resolution2.new([3.2, 'blah'])
1357
+ end
1358
+ end
1359
+
1360
+ def test_assignment
1361
+ r2 = Resolution2.new([1.1, 2.2])
1362
+
1363
+ assert_raises TypeError do
1364
+ r2[1] = 'blah'
1365
+ end
1366
+ assert_raises RuntimeError do
1367
+ r2 << 1.5
1368
+ end
1369
+ assert_raises RuntimeError do
1370
+ r2.clear
1371
+ end
1372
+ end
1373
+
1374
+ def test_relationships
1375
+ assert_kind_of Size2Type, Resolution2.new([1.1, 2.2])
1376
+ assert_kind_of CResolution2, Resolution2.new([1.1, 2.2])
1377
+ end
1378
+
1379
+ def test_xml
1380
+ r1 = Resolution2.new([1.1, 2.2])
1381
+ assert_equal "<crd:Resolution2 xmlns:crd='http://www.ivoa.net/xml/STC/STCcoords/v1.10'>1.1 2.2</crd:Resolution2>", r1.to_xml.to_s
1382
+
1383
+ r2 = Resolution2.from_xml("<crd:Resolution2 xmlns:crd='http://www.ivoa.net/xml/STC/STCcoords/v1.10'>1.1 2.2</crd:Resolution2>")
1384
+ assert_equal r1, r2
1385
+ end
1386
+ end
1387
+
1388
+ class Resolution2MatrixTest < ::Test::Unit::TestCase
1389
+ def test_construction
1390
+ assert_nothing_raised do
1391
+ Resolution2Matrix.new([3.2, 1.1, 5.5, 0.1])
1392
+ end
1393
+
1394
+ assert_raises RuntimeError do
1395
+ Resolution2Matrix.new([3.2])
1396
+ end
1397
+ assert_raises RuntimeError do
1398
+ Resolution2Matrix.new([3.2, 2.5, 5.1, 0.3, 10.9])
1399
+ end
1400
+ assert_raises TypeError do
1401
+ Resolution2Matrix.new([3.2, 'blah', 9.1, 'yeeha'])
1402
+ end
1403
+ end
1404
+
1405
+ def test_assignment
1406
+ r2m = Resolution2Matrix.new([1.1, 2.2, 10.2, 0.1])
1407
+
1408
+ assert_raises TypeError do
1409
+ r2m[1] = 'blah'
1410
+ end
1411
+ assert_raises RuntimeError do
1412
+ r2m << 1.5
1413
+ end
1414
+ assert_raises RuntimeError do
1415
+ r2m.clear
1416
+ end
1417
+ end
1418
+
1419
+ def test_relationships
1420
+ assert_kind_of Double4, Resolution2Matrix.new([1.1, 2.2, 3.3, 4.4])
1421
+ assert_kind_of CResolution2, Resolution2Matrix.new([1.1, 2.2, 3.3, 4.4])
1422
+ end
1423
+
1424
+ def test_xml
1425
+ m1 = Resolution2Matrix.new([1.1, 2.2, 3.3, 4.4])
1426
+ assert_equal(
1427
+ "<crd:Resolution2Matrix xmlns:crd='http://www.ivoa.net/xml/STC/STCcoords/v1.10'>1.1 2.2 3.3 4.4</crd:Resolution2Matrix>",
1428
+ m1.to_xml.to_s
1429
+ )
1430
+
1431
+ m2 = Resolution2Matrix.from_xml(
1432
+ "<crd:Resolution2Matrix xmlns:crd='http://www.ivoa.net/xml/STC/STCcoords/v1.10'>1.1 2.2 3.3 4.4</crd:Resolution2Matrix>"
1433
+ )
1434
+ assert_equal m1, m2
1435
+ end
1436
+ end
1437
+
1438
+ class Resolution2RefTest < ::Test::Unit::TestCase
1439
+ def test_construction
1440
+ assert_nothing_raised do
1441
+ Resolution2Ref.new('ref1')
1442
+ end
1443
+
1444
+ assert_raises ArgumentError do
1445
+ Resolution2Ref.new(' ')
1446
+ end
1447
+ end
1448
+
1449
+ def test_accessors
1450
+ ref = Resolution2Ref.new('ref1')
1451
+ assert_equal 'ref1', ref.value
1452
+
1453
+ ref.value = 'ref2'
1454
+ assert_equal 'ref2', ref.value
1455
+ end
1456
+
1457
+ def test_relationships
1458
+ assert_kind_of CResolution2, Resolution2Ref.new('ref1')
1459
+ end
1460
+
1461
+ def test_xml
1462
+ r1 = Resolution2Ref.new('ref1')
1463
+ assert_equal "<crd:Resolution2Ref xmlns:crd='http://www.ivoa.net/xml/STC/STCcoords/v1.10'>ref1</crd:Resolution2Ref>", r1.to_xml.to_s
1464
+
1465
+ r2 = Resolution2Ref.from_xml("<crd:Resolution2Ref xmlns:crd='http://www.ivoa.net/xml/STC/STCcoords/v1.10'>ref1</crd:Resolution2Ref>")
1466
+ assert_equal r1, r2
1467
+ end
1468
+ end
1469
+
1470
+ class Size2Test < ::Test::Unit::TestCase
1471
+ def test_construction
1472
+ assert_nothing_raised do
1473
+ Size2.new([3.2, 1.1])
1474
+ end
1475
+
1476
+ assert_raises RuntimeError do
1477
+ Size2.new([3.2])
1478
+ end
1479
+ assert_raises RuntimeError do
1480
+ Size2.new([3.2, 2.5, 5.1])
1481
+ end
1482
+ assert_raises TypeError do
1483
+ Size2.new([3.2, 'blah'])
1484
+ end
1485
+ end
1486
+
1487
+ def test_assignment
1488
+ s2 = Size2.new([1.1, 2.2])
1489
+
1490
+ assert_raises TypeError do
1491
+ s2[1] = 'blah'
1492
+ end
1493
+ assert_raises RuntimeError do
1494
+ s2 << 1.5
1495
+ end
1496
+ assert_raises RuntimeError do
1497
+ s2.clear
1498
+ end
1499
+ end
1500
+
1501
+ def test_relationships
1502
+ assert_kind_of Size2Type, Size2.new([1.1, 2.2])
1503
+ assert_kind_of CSize2, Size2.new([1.1, 2.2])
1504
+ end
1505
+
1506
+ def test_xml
1507
+ s1 = Size2.new([1.1, 2.2])
1508
+ assert_equal "<crd:Size2 xmlns:crd='http://www.ivoa.net/xml/STC/STCcoords/v1.10'>1.1 2.2</crd:Size2>", s1.to_xml.to_s
1509
+
1510
+ s2 = Size2.from_xml("<crd:Size2 xmlns:crd='http://www.ivoa.net/xml/STC/STCcoords/v1.10'>1.1 2.2</crd:Size2>")
1511
+ assert_equal s1, s2
1512
+ end
1513
+ end
1514
+
1515
+ class Size2MatrixTest < ::Test::Unit::TestCase
1516
+ def test_construction
1517
+ assert_nothing_raised do
1518
+ Size2Matrix.new([3.2, 1.1, 5.5, 0.1])
1519
+ end
1520
+
1521
+ assert_raises RuntimeError do
1522
+ Size2Matrix.new([3.2])
1523
+ end
1524
+ assert_raises RuntimeError do
1525
+ Size2Matrix.new([3.2, 2.5, 5.1, 0.3, 10.9])
1526
+ end
1527
+ assert_raises TypeError do
1528
+ Size2Matrix.new([3.2, 'blah', 9.1, 'yeeha'])
1529
+ end
1530
+ end
1531
+
1532
+ def test_assignment
1533
+ s2m = Size2Matrix.new([1.1, 2.2, 10.2, 0.1])
1534
+
1535
+ assert_raises TypeError do
1536
+ s2m[1] = 'blah'
1537
+ end
1538
+ assert_raises RuntimeError do
1539
+ s2m << 1.5
1540
+ end
1541
+ assert_raises RuntimeError do
1542
+ s2m.clear
1543
+ end
1544
+ end
1545
+
1546
+ def test_relationships
1547
+ assert_kind_of Double4, Size2Matrix.new([1.1, 2.2, 3.3, 4.4])
1548
+ assert_kind_of CSize2, Size2Matrix.new([1.1, 2.2, 3.3, 4.4])
1549
+ end
1550
+
1551
+ def test_xml
1552
+ m1 = Size2Matrix.new([1.1, 2.2, 3.3, 4.4])
1553
+ assert_equal(
1554
+ "<crd:Size2Matrix xmlns:crd='http://www.ivoa.net/xml/STC/STCcoords/v1.10'>1.1 2.2 3.3 4.4</crd:Size2Matrix>",
1555
+ m1.to_xml.to_s
1556
+ )
1557
+
1558
+ m2 = Size2Matrix.from_xml("<crd:Size2Matrix xmlns:crd='http://www.ivoa.net/xml/STC/STCcoords/v1.10'>1.1 2.2 3.3 4.4</crd:Size2Matrix>")
1559
+ assert_equal m1, m2
1560
+ end
1561
+ end
1562
+
1563
+ class Size2RefTest < ::Test::Unit::TestCase
1564
+ def test_construction
1565
+ assert_nothing_raised do
1566
+ Size2Ref.new('ref1')
1567
+ end
1568
+
1569
+ assert_raises ArgumentError do
1570
+ Size2Ref.new(' ')
1571
+ end
1572
+ end
1573
+
1574
+ def test_accessors
1575
+ ref = Size2Ref.new('ref1')
1576
+ assert_equal 'ref1', ref.value
1577
+
1578
+ ref.value = 'ref2'
1579
+ assert_equal 'ref2', ref.value
1580
+ end
1581
+
1582
+ def test_relationships
1583
+ assert_kind_of CSize2, Size2Ref.new('ref1')
1584
+ end
1585
+
1586
+ def test_xml
1587
+ r1 = Size2Ref.new('ref1')
1588
+ assert_equal "<crd:Size2Ref xmlns:crd='http://www.ivoa.net/xml/STC/STCcoords/v1.10'>ref1</crd:Size2Ref>", r1.to_xml.to_s
1589
+
1590
+ r2 = Size2Ref.from_xml("<crd:Size2Ref xmlns:crd='http://www.ivoa.net/xml/STC/STCcoords/v1.10'>ref1</crd:Size2Ref>")
1591
+ assert_equal r1, r2
1592
+ end
1593
+ end
1594
+
1595
+ class PixSize2Test < ::Test::Unit::TestCase
1596
+ def test_construction
1597
+ assert_nothing_raised do
1598
+ PixSize2.new([3.2, 1.1])
1599
+ end
1600
+
1601
+ assert_raises RuntimeError do
1602
+ PixSize2.new([3.2])
1603
+ end
1604
+ assert_raises RuntimeError do
1605
+ PixSize2.new([3.2, 2.5, 5.1])
1606
+ end
1607
+ assert_raises TypeError do
1608
+ PixSize2.new([3.2, 'blah'])
1609
+ end
1610
+ end
1611
+
1612
+ def test_assignment
1613
+ p2 = PixSize2.new([1.1, 2.2])
1614
+
1615
+ assert_raises TypeError do
1616
+ p2[1] = 'blah'
1617
+ end
1618
+ assert_raises RuntimeError do
1619
+ p2 << 1.5
1620
+ end
1621
+ assert_raises RuntimeError do
1622
+ p2.clear
1623
+ end
1624
+ end
1625
+
1626
+ def test_relationships
1627
+ assert_kind_of Size2Type, PixSize2.new([1.1, 2.2])
1628
+ assert_kind_of CPixSize2, PixSize2.new([1.1, 2.2])
1629
+ end
1630
+
1631
+ def test_xml
1632
+ p1 = PixSize2.new([1.1, 2.2])
1633
+ assert_equal "<crd:PixSize2 xmlns:crd='http://www.ivoa.net/xml/STC/STCcoords/v1.10'>1.1 2.2</crd:PixSize2>", p1.to_xml.to_s
1634
+
1635
+ p2 = PixSize2.from_xml("<crd:PixSize2 xmlns:crd='http://www.ivoa.net/xml/STC/STCcoords/v1.10'>1.1 2.2</crd:PixSize2>")
1636
+ assert_equal p1, p2
1637
+ end
1638
+ end
1639
+
1640
+ class PixSize2MatrixTest < ::Test::Unit::TestCase
1641
+ def test_construction
1642
+ assert_nothing_raised do
1643
+ PixSize2Matrix.new([3.2, 1.1, 5.5, 0.1])
1644
+ end
1645
+
1646
+ assert_raises RuntimeError do
1647
+ PixSize2Matrix.new([3.2])
1648
+ end
1649
+ assert_raises RuntimeError do
1650
+ PixSize2Matrix.new([3.2, 2.5, 5.1, 0.3, 10.9])
1651
+ end
1652
+ assert_raises TypeError do
1653
+ PixSize2Matrix.new([3.2, 'blah', 9.1, 'yeeha'])
1654
+ end
1655
+ end
1656
+
1657
+ def test_assignment
1658
+ p2m = PixSize2Matrix.new([1.1, 2.2, 10.2, 0.1])
1659
+
1660
+ assert_raises TypeError do
1661
+ p2m[1] = 'blah'
1662
+ end
1663
+ assert_raises RuntimeError do
1664
+ p2m << 1.5
1665
+ end
1666
+ assert_raises RuntimeError do
1667
+ p2m.clear
1668
+ end
1669
+ end
1670
+
1671
+ def test_relationships
1672
+ assert_kind_of Double4, PixSize2Matrix.new([1.1, 2.2, 3.3, 4.4])
1673
+ assert_kind_of CPixSize2, PixSize2Matrix.new([1.1, 2.2, 3.3, 4.4])
1674
+ end
1675
+
1676
+ def test_xml
1677
+ m1 = PixSize2Matrix.new([1.1, 2.2, 3.3, 4.4])
1678
+ assert_equal(
1679
+ "<crd:PixSize2Matrix xmlns:crd='http://www.ivoa.net/xml/STC/STCcoords/v1.10'>1.1 2.2 3.3 4.4</crd:PixSize2Matrix>",
1680
+ m1.to_xml.to_s
1681
+ )
1682
+
1683
+ m2 = PixSize2Matrix.from_xml(
1684
+ "<crd:PixSize2Matrix xmlns:crd='http://www.ivoa.net/xml/STC/STCcoords/v1.10'>1.1 2.2 3.3 4.4</crd:PixSize2Matrix>"
1685
+ )
1686
+ assert_equal m1, m2
1687
+ end
1688
+ end
1689
+
1690
+ class PixSize2RefTest < ::Test::Unit::TestCase
1691
+ def test_construction
1692
+ assert_nothing_raised do
1693
+ PixSize2Ref.new('ref1')
1694
+ end
1695
+
1696
+ assert_raises ArgumentError do
1697
+ PixSize2Ref.new(' ')
1698
+ end
1699
+ end
1700
+
1701
+ def test_accessors
1702
+ ref = PixSize2Ref.new('ref1')
1703
+ assert_equal 'ref1', ref.value
1704
+
1705
+ ref.value = 'ref2'
1706
+ assert_equal 'ref2', ref.value
1707
+ end
1708
+
1709
+ def test_relationships
1710
+ assert_kind_of CPixSize2, PixSize2Ref.new('ref1')
1711
+ end
1712
+
1713
+ def test_xml
1714
+ r1 = PixSize2Ref.new('ref1')
1715
+ assert_equal "<crd:PixSize2Ref xmlns:crd='http://www.ivoa.net/xml/STC/STCcoords/v1.10'>ref1</crd:PixSize2Ref>", r1.to_xml.to_s
1716
+
1717
+ r2 = PixSize2Ref.from_xml("<crd:PixSize2Ref xmlns:crd='http://www.ivoa.net/xml/STC/STCcoords/v1.10'>ref1</crd:PixSize2Ref>")
1718
+ assert_equal r1, r2
1719
+ end
1720
+ end
1721
+
1722
+ class Vector2CoordinateTest < ::Test::Unit::TestCase
1723
+ def test_construction
1724
+ assert_nothing_raised do
1725
+ Vector2Coordinate.new(
1726
+ :name => 'My Coordinate',
1727
+ :value => Value2.new([123.4, 345.6]),
1728
+ :error => [Error2.new([1.1, 2.2]), Error2.new([2.2, 3.3])],
1729
+ :resolution => [Resolution2.new([0.1, 0.2]), Resolution2.new([0.5, 0.6])],
1730
+ :size => [Size2.new([10.1, 10.2]), Size2.new([8.7, 8.8])],
1731
+ :pix_size => [PixSize2.new([1.9, 2.0]), PixSize2.new([2.2, 3.3])]
1732
+ )
1733
+
1734
+ Vector2Coordinate.new(
1735
+ :value => Value2.new([123.4, 345.6]),
1736
+ :error => [Error2.new([1.1, 2.2]), Error2.new([2.2, 3.3])],
1737
+ :resolution => [Resolution2.new([0.1, 0.2]), Resolution2.new([0.5, 0.6])],
1738
+ :size => [Size2.new([10.1, 10.2]), Size2.new([8.7, 8.8])],
1739
+ :pix_size => [PixSize2.new([1.9, 2.0]), PixSize2.new([2.2, 3.3])]
1740
+ )
1741
+
1742
+ Vector2Coordinate.new(
1743
+ :value => Value2.new([123.4, 345.6]),
1744
+ :error => [Error2.new([1.1, 2.2]), Error2.new([2.2, 3.3])]
1745
+ )
1746
+
1747
+ Vector2Coordinate.new()
1748
+ end
1749
+
1750
+ vc = Vector2Coordinate.new
1751
+ assert_raises TypeError do
1752
+ vc.value = Error.new(10.2)
1753
+ end
1754
+
1755
+ assert_raises TypeError do
1756
+ vc.error = Value.new(123.4)
1757
+ end
1758
+ assert_raises ArgumentError do
1759
+ vc.error = [Error2.new([123.4, 5.1]), Error2.new([123.4, 5.1]), Error2.new([123.4, 5.1])]
1760
+ end
1761
+
1762
+ assert_raises TypeError do
1763
+ vc.resolution = Error.new(10.2)
1764
+ end
1765
+ assert_raises ArgumentError do
1766
+ vc.resolution = [Resolution2.new([123.4, 123.5]), Resolution2.new([123.4, 123.5]), Resolution2.new([123.4, 123.5])]
1767
+ end
1768
+
1769
+ assert_raises TypeError do
1770
+ vc.size = Error.new(10.2)
1771
+ end
1772
+ assert_raises ArgumentError do
1773
+ vc.size = [Size2.new([123.4, 123.4]), Size2.new([123.4, 123.4]), Size2.new([123.4, 123.4])]
1774
+ end
1775
+
1776
+ assert_raises TypeError do
1777
+ vc.pix_size = Error.new(10.2)
1778
+ end
1779
+ assert_raises ArgumentError do
1780
+ vc.pix_size = [PixSize2.new([123.4, 123.4]), PixSize2.new([123.4, 123.4]), PixSize2.new([123.4, 123.4])]
1781
+ end
1782
+ end
1783
+
1784
+ def test_accessors
1785
+ vc = Vector2Coordinate.new(
1786
+ :name => 'MyCoordinate',
1787
+ :value => Value2.new([123.4, 345.6]),
1788
+ :error => [Error2.new([1.1, 2.2]), Error2.new([2.2, 3.3])],
1789
+ :resolution => [Resolution2.new([0.1, 0.2]), Resolution2.new([0.5, 0.6])],
1790
+ :size => [Size2.new([10.1, 10.2]), Size2.new([8.7, 8.8])],
1791
+ :pix_size => [PixSize2.new([1.9, 2.0]), PixSize2.new([2.2, 3.3])]
1792
+ )
1793
+
1794
+ assert_equal 'MyCoordinate', vc.name
1795
+ assert_equal Value2.new([123.4, 345.6]), vc.value
1796
+ assert_equal [Error2.new([1.1, 2.2]), Error2.new([2.2, 3.3])], vc.error
1797
+ assert_equal [Resolution2.new([0.1, 0.2]), Resolution2.new([0.5, 0.6])], vc.resolution
1798
+ assert_equal [Size2.new([10.1, 10.2]), Size2.new([8.7, 8.8])], vc.size
1799
+ assert_equal [PixSize2.new([1.9, 2.0]), PixSize2.new([2.2, 3.3])], vc.pix_size
1800
+
1801
+ vc.name = 'MyOtherCoordinate'
1802
+ assert_equal 'MyOtherCoordinate', vc.name
1803
+ vc.error = Error2.new([3.3, 4.4])
1804
+ assert_equal [Error2.new([3.3, 4.4])], vc.error
1805
+ vc.resolution = Resolution2.new([0.6, 0.7])
1806
+ assert_equal [Resolution2.new([0.6, 0.7])], vc.resolution
1807
+ vc.size = Size2.new([5.1, 5.2])
1808
+ assert_equal [Size2.new([5.1, 5.2])], vc.size
1809
+ vc.pix_size = PixSize2.new([3.1, 3.2])
1810
+ assert_equal [PixSize2.new([3.1, 3.2])], vc.pix_size
1811
+ end
1812
+
1813
+ def test_relationships
1814
+ assert_kind_of CoordinateType, Vector2Coordinate.new
1815
+ end
1816
+ end
1817
+
1818
+ class Value3Test < ::Test::Unit::TestCase
1819
+ def test_construction
1820
+ assert_nothing_raised do
1821
+ Value3.new([3.2, 1.1, 2.2])
1822
+ end
1823
+
1824
+ assert_raises RuntimeError do
1825
+ Value3.new([3.2])
1826
+ end
1827
+ assert_raises RuntimeError do
1828
+ Value3.new([3.2, 2.5, 5.1, 6.9])
1829
+ end
1830
+ assert_raises TypeError do
1831
+ Value3.new([3.2, 'blah'])
1832
+ end
1833
+ end
1834
+
1835
+ def test_assignment
1836
+ d3 = Value3.new([1.1, 2.2, 3.3])
1837
+
1838
+ assert_raises TypeError do
1839
+ d3[1] = 'blah'
1840
+ end
1841
+ assert_raises RuntimeError do
1842
+ d3 << 1.5
1843
+ end
1844
+ assert_raises RuntimeError do
1845
+ d3.clear
1846
+ end
1847
+ end
1848
+
1849
+ def test_relationships
1850
+ assert_kind_of Double3, Value3.new([1.1, 2.2, 3.3])
1851
+ assert_kind_of CValue3, Value3.new([1.1, 2.2, 3.3])
1852
+ end
1853
+
1854
+ def test_xml
1855
+ v1 = Value3.new([1.1, 2.2, 3.3])
1856
+ assert_equal "<crd:Value3 xmlns:crd='http://www.ivoa.net/xml/STC/STCcoords/v1.10'>1.1 2.2 3.3</crd:Value3>", v1.to_xml.to_s
1857
+
1858
+ v2 = Value3.from_xml("<crd:Value3 xmlns:crd='http://www.ivoa.net/xml/STC/STCcoords/v1.10'>1.1 2.2 3.3</crd:Value3>")
1859
+ assert_equal v1, v2
1860
+ end
1861
+ end
1862
+
1863
+ class Value3RefTest < ::Test::Unit::TestCase
1864
+ def test_construction
1865
+ assert_nothing_raised do
1866
+ Value3Ref.new('ref1')
1867
+ end
1868
+
1869
+ assert_raises ArgumentError do
1870
+ Value3Ref.new(' ')
1871
+ end
1872
+ end
1873
+
1874
+ def test_accessors
1875
+ ref = Value3Ref.new('ref1')
1876
+ assert_equal 'ref1', ref.value
1877
+
1878
+ ref.value = 'ref2'
1879
+ assert_equal 'ref2', ref.value
1880
+ end
1881
+
1882
+ def test_relationships
1883
+ assert_kind_of CValue3, Value3Ref.new('ref1')
1884
+ end
1885
+
1886
+ def test_xml
1887
+ r1 = Value3Ref.new('ref1')
1888
+ assert_equal "<crd:Value3Ref xmlns:crd='http://www.ivoa.net/xml/STC/STCcoords/v1.10'>ref1</crd:Value3Ref>", r1.to_xml.to_s
1889
+
1890
+ r2 = Value3Ref.from_xml("<crd:Value3Ref xmlns:crd='http://www.ivoa.net/xml/STC/STCcoords/v1.10'>ref1</crd:Value3Ref>")
1891
+ assert_equal r1, r2
1892
+ end
1893
+ end
1894
+
1895
+ class Error3Test < ::Test::Unit::TestCase
1896
+ def test_construction
1897
+ assert_nothing_raised do
1898
+ Error3.new([3.2, 1.1, 2.2])
1899
+ end
1900
+
1901
+ assert_raises RuntimeError do
1902
+ Error3.new([3.2])
1903
+ end
1904
+ assert_raises RuntimeError do
1905
+ Error3.new([3.2, 2.5, 5.1, 6.6])
1906
+ end
1907
+ assert_raises TypeError do
1908
+ Error3.new([3.2, 'blah'])
1909
+ end
1910
+ end
1911
+
1912
+ def test_assignment
1913
+ e3 = Error3.new([1.1, 2.2, 7.7])
1914
+
1915
+ assert_raises TypeError do
1916
+ e3[1] = 'blah'
1917
+ end
1918
+ assert_raises RuntimeError do
1919
+ e3 << 1.5
1920
+ end
1921
+ assert_raises RuntimeError do
1922
+ e3.clear
1923
+ end
1924
+ end
1925
+
1926
+ def test_relationships
1927
+ assert_kind_of Size3Type, Error3.new([1.1, 2.2, 3.4])
1928
+ assert_kind_of CError3, Error3.new([1.1, 2.2, 7.5])
1929
+ end
1930
+
1931
+ def test_xml
1932
+ e1 = Error3.new([1.1, 2.2, 3.3])
1933
+ assert_equal "<crd:Error3 xmlns:crd='http://www.ivoa.net/xml/STC/STCcoords/v1.10'>1.1 2.2 3.3</crd:Error3>", e1.to_xml.to_s
1934
+
1935
+ e2 = Error3.from_xml("<crd:Error3 xmlns:crd='http://www.ivoa.net/xml/STC/STCcoords/v1.10'>1.1 2.2 3.3</crd:Error3>")
1936
+ assert_equal e1, e2
1937
+ end
1938
+ end
1939
+
1940
+ class Error3MatrixTest < ::Test::Unit::TestCase
1941
+ def test_construction
1942
+ assert_nothing_raised do
1943
+ Error3Matrix.new([3.2, 1.1, 9.2, 5.5, 0.1, 6.6, 4.3, 6.0, 1.1])
1944
+ end
1945
+
1946
+ assert_raises RuntimeError do
1947
+ Error3Matrix.new([3.2])
1948
+ end
1949
+ assert_raises RuntimeError do
1950
+ Error3Matrix.new([3.2, 1.1, 9.2, 5.5, 0.1, 6.6, 4.3, 6.0, 1.1, 5.4])
1951
+ end
1952
+ assert_raises TypeError do
1953
+ Error3Matrix.new([3.2, 1.1, 9.2, 5.5, 'blah', 6.6, 4.3, 6.0, 1.1])
1954
+ end
1955
+ end
1956
+
1957
+ def test_assignment
1958
+ e3m = Error3Matrix.new([3.2, 1.1, 9.2, 5.5, 0.1, 6.6, 4.3, 6.0, 1.1])
1959
+
1960
+ assert_raises TypeError do
1961
+ e3m[1] = 'blah'
1962
+ end
1963
+ assert_raises RuntimeError do
1964
+ e3m << 1.5
1965
+ end
1966
+ assert_raises RuntimeError do
1967
+ e3m.clear
1968
+ end
1969
+ end
1970
+
1971
+ def test_relationships
1972
+ assert_kind_of Double9, Error3Matrix.new([3.2, 1.1, 9.2, 5.5, 0.1, 6.6, 4.3, 6.0, 1.1])
1973
+ assert_kind_of CError3, Error3Matrix.new([3.2, 1.1, 9.2, 5.5, 0.1, 6.6, 4.3, 6.0, 1.1])
1974
+ end
1975
+
1976
+ def test_xml
1977
+ m1 = Error3Matrix.new([1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9])
1978
+ assert_equal(
1979
+ "<crd:Error3Matrix xmlns:crd='http://www.ivoa.net/xml/STC/STCcoords/v1.10'>1.1 2.2 3.3 4.4 5.5 6.6 7.7 8.8 9.9</crd:Error3Matrix>",
1980
+ m1.to_xml.to_s
1981
+ )
1982
+
1983
+ m2 = Error3Matrix.from_xml(
1984
+ "<crd:Error3Matrix xmlns:crd='http://www.ivoa.net/xml/STC/STCcoords/v1.10'>1.1 2.2 3.3 4.4 5.5 6.6 7.7 8.8 9.9</crd:Error3Matrix>"
1985
+ )
1986
+ assert_equal m1, m2
1987
+ end
1988
+ end
1989
+
1990
+ class Error3RefTest < ::Test::Unit::TestCase
1991
+ def test_construction
1992
+ assert_nothing_raised do
1993
+ Error3Ref.new('ref1')
1994
+ end
1995
+
1996
+ assert_raises ArgumentError do
1997
+ Error3Ref.new(' ')
1998
+ end
1999
+ end
2000
+
2001
+ def test_accessors
2002
+ ref = Error3Ref.new('ref1')
2003
+ assert_equal 'ref1', ref.value
2004
+
2005
+ ref.value = 'ref2'
2006
+ assert_equal 'ref2', ref.value
2007
+ end
2008
+
2009
+ def test_relationships
2010
+ assert_kind_of CError3, Error3Ref.new('ref1')
2011
+ end
2012
+
2013
+ def test_xml
2014
+ r1 = Error3Ref.new('ref1')
2015
+ assert_equal "<crd:Error3Ref xmlns:crd='http://www.ivoa.net/xml/STC/STCcoords/v1.10'>ref1</crd:Error3Ref>", r1.to_xml.to_s
2016
+
2017
+ r2 = Error3Ref.from_xml("<crd:Error3Ref xmlns:crd='http://www.ivoa.net/xml/STC/STCcoords/v1.10'>ref1</crd:Error3Ref>")
2018
+ assert_equal r1, r2
2019
+ end
2020
+ end
2021
+
2022
+ class Resolution3Test < ::Test::Unit::TestCase
2023
+ def test_construction
2024
+ assert_nothing_raised do
2025
+ Resolution3.new([3.2, 1.1, 5.6])
2026
+ end
2027
+
2028
+ assert_raises RuntimeError do
2029
+ Resolution3.new([3.2])
2030
+ end
2031
+ assert_raises RuntimeError do
2032
+ Resolution3.new([3.2, 2.5, 5.1, 1.1])
2033
+ end
2034
+ assert_raises TypeError do
2035
+ Resolution3.new([3.2, 4.5, 'blah'])
2036
+ end
2037
+ end
2038
+
2039
+ def test_assignment
2040
+ r3 = Resolution3.new([1.1, 2.2, 0.4])
2041
+
2042
+ assert_raises TypeError do
2043
+ r3[1] = 'blah'
2044
+ end
2045
+ assert_raises RuntimeError do
2046
+ r3 << 1.5
2047
+ end
2048
+ assert_raises RuntimeError do
2049
+ r3.clear
2050
+ end
2051
+ end
2052
+
2053
+ def test_relationships
2054
+ assert_kind_of Size3Type, Resolution3.new([1.1, 2.2, 0.1])
2055
+ assert_kind_of CResolution3, Resolution3.new([1.1, 2.2, 0.1])
2056
+ end
2057
+
2058
+ def test_xml
2059
+ r1 = Resolution3.new([1.1, 2.2, 3.3])
2060
+ assert_equal "<crd:Resolution3 xmlns:crd='http://www.ivoa.net/xml/STC/STCcoords/v1.10'>1.1 2.2 3.3</crd:Resolution3>", r1.to_xml.to_s
2061
+
2062
+ r2 = Resolution3.from_xml("<crd:Resolution3 xmlns:crd='http://www.ivoa.net/xml/STC/STCcoords/v1.10'>1.1 2.2 3.3</crd:Resolution3>")
2063
+ assert_equal r1, r2
2064
+ end
2065
+ end
2066
+
2067
+ class Resolution3RefTest < ::Test::Unit::TestCase
2068
+ def test_construction
2069
+ assert_nothing_raised do
2070
+ Resolution3Ref.new('ref1')
2071
+ end
2072
+
2073
+ assert_raises ArgumentError do
2074
+ Resolution3Ref.new(' ')
2075
+ end
2076
+ end
2077
+
2078
+ def test_accessors
2079
+ ref = Resolution3Ref.new('ref1')
2080
+ assert_equal 'ref1', ref.value
2081
+
2082
+ ref.value = 'ref2'
2083
+ assert_equal 'ref2', ref.value
2084
+ end
2085
+
2086
+ def test_relationships
2087
+ assert_kind_of CResolution3, Resolution3Ref.new('ref1')
2088
+ end
2089
+
2090
+ def test_xml
2091
+ r1 = Resolution3Ref.new('ref1')
2092
+ assert_equal "<crd:Resolution3Ref xmlns:crd='http://www.ivoa.net/xml/STC/STCcoords/v1.10'>ref1</crd:Resolution3Ref>", r1.to_xml.to_s
2093
+
2094
+ r2 = Resolution3Ref.from_xml("<crd:Resolution3Ref xmlns:crd='http://www.ivoa.net/xml/STC/STCcoords/v1.10'>ref1</crd:Resolution3Ref>")
2095
+ assert_equal r1, r2
2096
+ end
2097
+ end
2098
+
2099
+ class Size3Test < ::Test::Unit::TestCase
2100
+ def test_construction
2101
+ assert_nothing_raised do
2102
+ Size3.new([3.2, 1.1, 5.1])
2103
+ end
2104
+
2105
+ assert_raises RuntimeError do
2106
+ Size3.new([3.2])
2107
+ end
2108
+ assert_raises RuntimeError do
2109
+ Size3.new([3.2, 2.5, 5.1, 1.1])
2110
+ end
2111
+ assert_raises TypeError do
2112
+ Size3.new([3.2, 'blah', 0.1])
2113
+ end
2114
+ end
2115
+
2116
+ def test_assignment
2117
+ s3 = Size3.new([1.1, 2.2, 3.3])
2118
+
2119
+ assert_raises TypeError do
2120
+ s3[1] = 'blah'
2121
+ end
2122
+ assert_raises RuntimeError do
2123
+ s3 << 1.5
2124
+ end
2125
+ assert_raises RuntimeError do
2126
+ s3.clear
2127
+ end
2128
+ end
2129
+
2130
+ def test_relationships
2131
+ assert_kind_of Size3Type, Size3.new([1.1, 2.2, 3.3])
2132
+ assert_kind_of CSize3, Size3.new([1.1, 2.2, 3.3])
2133
+ end
2134
+
2135
+ def test_xml
2136
+ s1 = Size3.new([1.1, 2.2, 3.3])
2137
+ assert_equal "<crd:Size3 xmlns:crd='http://www.ivoa.net/xml/STC/STCcoords/v1.10'>1.1 2.2 3.3</crd:Size3>", s1.to_xml.to_s
2138
+
2139
+ s2 = Size3.from_xml("<crd:Size3 xmlns:crd='http://www.ivoa.net/xml/STC/STCcoords/v1.10'>1.1 2.2 3.3</crd:Size3>")
2140
+ assert_equal s1, s2
2141
+ end
2142
+ end
2143
+
2144
+ class Size3MatrixTest < ::Test::Unit::TestCase
2145
+ def test_construction
2146
+ assert_nothing_raised do
2147
+ Size3Matrix.new([3.2, 1.1, 9.2, 5.5, 0.1, 6.6, 4.3, 6.0, 1.1])
2148
+ end
2149
+
2150
+ assert_raises RuntimeError do
2151
+ Size3Matrix.new([3.2])
2152
+ end
2153
+ assert_raises RuntimeError do
2154
+ Size3Matrix.new([3.2, 1.1, 9.2, 5.5, 0.1, 6.6, 4.3, 6.0, 1.1, 5.4])
2155
+ end
2156
+ assert_raises TypeError do
2157
+ Size3Matrix.new([3.2, 1.1, 9.2, 5.5, 'blah', 6.6, 4.3, 6.0, 1.1])
2158
+ end
2159
+ end
2160
+
2161
+ def test_assignment
2162
+ s3m = Size3Matrix.new([3.2, 1.1, 9.2, 5.5, 0.1, 6.6, 4.3, 6.0, 1.1])
2163
+
2164
+ assert_raises TypeError do
2165
+ s3m[1] = 'blah'
2166
+ end
2167
+ assert_raises RuntimeError do
2168
+ s3m << 1.5
2169
+ end
2170
+ assert_raises RuntimeError do
2171
+ s3m.clear
2172
+ end
2173
+ end
2174
+
2175
+ def test_relationships
2176
+ assert_kind_of Double9, Size3Matrix.new([3.2, 1.1, 9.2, 5.5, 0.1, 6.6, 4.3, 6.0, 1.1])
2177
+ assert_kind_of CSize3, Size3Matrix.new([3.2, 1.1, 9.2, 5.5, 0.1, 6.6, 4.3, 6.0, 1.1])
2178
+ end
2179
+
2180
+ def test_xml
2181
+ m1 = Size3Matrix.new([1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9])
2182
+ assert_equal(
2183
+ "<crd:Size3Matrix xmlns:crd='http://www.ivoa.net/xml/STC/STCcoords/v1.10'>1.1 2.2 3.3 4.4 5.5 6.6 7.7 8.8 9.9</crd:Size3Matrix>",
2184
+ m1.to_xml.to_s
2185
+ )
2186
+
2187
+ m2 = Size3Matrix.from_xml(
2188
+ "<crd:Size3Matrix xmlns:crd='http://www.ivoa.net/xml/STC/STCcoords/v1.10'>1.1 2.2 3.3 4.4 5.5 6.6 7.7 8.8 9.9</crd:Size3Matrix>"
2189
+ )
2190
+ assert_equal m1, m2
2191
+ end
2192
+ end
2193
+
2194
+ class Size3RefTest < ::Test::Unit::TestCase
2195
+ def test_construction
2196
+ assert_nothing_raised do
2197
+ Size3Ref.new('ref1')
2198
+ end
2199
+
2200
+ assert_raises ArgumentError do
2201
+ Size3Ref.new(' ')
2202
+ end
2203
+ end
2204
+
2205
+ def test_accessors
2206
+ ref = Size3Ref.new('ref1')
2207
+ assert_equal 'ref1', ref.value
2208
+
2209
+ ref.value = 'ref2'
2210
+ assert_equal 'ref2', ref.value
2211
+ end
2212
+
2213
+ def test_relationships
2214
+ assert_kind_of CSize3, Size3Ref.new('ref1')
2215
+ end
2216
+
2217
+ def test_xml
2218
+ r1 = Size3Ref.new('ref1')
2219
+ assert_equal "<crd:Size3Ref xmlns:crd='http://www.ivoa.net/xml/STC/STCcoords/v1.10'>ref1</crd:Size3Ref>", r1.to_xml.to_s
2220
+
2221
+ r2 = Size3Ref.from_xml("<crd:Size3Ref xmlns:crd='http://www.ivoa.net/xml/STC/STCcoords/v1.10'>ref1</crd:Size3Ref>")
2222
+ assert_equal r1, r2
2223
+ end
2224
+ end
2225
+
2226
+ class PixSize3Test < ::Test::Unit::TestCase
2227
+ def test_construction
2228
+ assert_nothing_raised do
2229
+ PixSize3.new([3.2, 1.1, 5.1])
2230
+ end
2231
+
2232
+ assert_raises RuntimeError do
2233
+ PixSize3.new([3.2])
2234
+ end
2235
+ assert_raises RuntimeError do
2236
+ PixSize3.new([3.2, 2.5, 5.1, 0.1])
2237
+ end
2238
+ assert_raises TypeError do
2239
+ PixSize3.new([3.2, 1.1, 'blah'])
2240
+ end
2241
+ end
2242
+
2243
+ def test_assignment
2244
+ p3 = PixSize3.new([1.1, 2.2, 0.5])
2245
+
2246
+ assert_raises TypeError do
2247
+ p3[1] = 'blah'
2248
+ end
2249
+ assert_raises RuntimeError do
2250
+ p3 << 1.5
2251
+ end
2252
+ assert_raises RuntimeError do
2253
+ p3.clear
2254
+ end
2255
+ end
2256
+
2257
+ def test_relationships
2258
+ assert_kind_of Size3Type, PixSize3.new([1.1, 2.2, 0.1])
2259
+ assert_kind_of CPixSize3, PixSize3.new([1.1, 2.2, 0.1])
2260
+ end
2261
+
2262
+ def test_xml
2263
+ p1 = PixSize3.new([1.1, 2.2, 3.3])
2264
+ assert_equal "<crd:PixSize3 xmlns:crd='http://www.ivoa.net/xml/STC/STCcoords/v1.10'>1.1 2.2 3.3</crd:PixSize3>", p1.to_xml.to_s
2265
+
2266
+ p2 = PixSize3.from_xml("<crd:PixSize3 xmlns:crd='http://www.ivoa.net/xml/STC/STCcoords/v1.10'>1.1 2.2 3.3</crd:PixSize3>")
2267
+ assert_equal p1, p2
2268
+ end
2269
+ end
2270
+
2271
+ class PixSize3MatrixTest < ::Test::Unit::TestCase
2272
+ def test_construction
2273
+ assert_nothing_raised do
2274
+ PixSize3Matrix.new([3.2, 1.1, 9.2, 5.5, 0.1, 6.6, 4.3, 6.0, 1.1])
2275
+ end
2276
+
2277
+ assert_raises RuntimeError do
2278
+ PixSize3Matrix.new([3.2])
2279
+ end
2280
+ assert_raises RuntimeError do
2281
+ PixSize3Matrix.new([3.2, 1.1, 9.2, 5.5, 0.1, 6.6, 4.3, 6.0, 1.1, 5.4])
2282
+ end
2283
+ assert_raises TypeError do
2284
+ PixSize3Matrix.new([3.2, 1.1, 9.2, 5.5, 'blah', 6.6, 4.3, 6.0, 1.1])
2285
+ end
2286
+ end
2287
+
2288
+ def test_assignment
2289
+ p3m = PixSize3Matrix.new([3.2, 1.1, 9.2, 5.5, 0.1, 6.6, 4.3, 6.0, 1.1])
2290
+
2291
+ assert_raises TypeError do
2292
+ p3m[1] = 'blah'
2293
+ end
2294
+ assert_raises RuntimeError do
2295
+ p3m << 1.5
2296
+ end
2297
+ assert_raises RuntimeError do
2298
+ p3m.clear
2299
+ end
2300
+ end
2301
+
2302
+ def test_relationships
2303
+ assert_kind_of Double9, PixSize3Matrix.new([3.2, 1.1, 9.2, 5.5, 0.1, 6.6, 4.3, 6.0, 1.1])
2304
+ assert_kind_of CPixSize3, PixSize3Matrix.new([3.2, 1.1, 9.2, 5.5, 0.1, 6.6, 4.3, 6.0, 1.1])
2305
+ end
2306
+
2307
+ def test_xml
2308
+ m1 = PixSize3Matrix.new([1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9])
2309
+ assert_equal(
2310
+ "<crd:PixSize3Matrix xmlns:crd='http://www.ivoa.net/xml/STC/STCcoords/v1.10'>1.1 2.2 3.3 4.4 5.5 6.6 7.7 8.8 9.9</crd:PixSize3Matrix>",
2311
+ m1.to_xml.to_s
2312
+ )
2313
+
2314
+ m2 = PixSize3Matrix.from_xml(
2315
+ "<crd:PixSize3Matrix xmlns:crd='http://www.ivoa.net/xml/STC/STCcoords/v1.10'>1.1 2.2 3.3 4.4 5.5 6.6 7.7 8.8 9.9</crd:PixSize3Matrix>"
2316
+ )
2317
+ assert_equal m1, m2
2318
+ end
2319
+ end
2320
+
2321
+ class PixSize3RefTest < ::Test::Unit::TestCase
2322
+ def test_construction
2323
+ assert_nothing_raised do
2324
+ PixSize3Ref.new('ref1')
2325
+ end
2326
+
2327
+ assert_raises ArgumentError do
2328
+ PixSize3Ref.new(' ')
2329
+ end
2330
+ end
2331
+
2332
+ def test_accessors
2333
+ ref = PixSize3Ref.new('ref1')
2334
+ assert_equal 'ref1', ref.value
2335
+
2336
+ ref.value = 'ref2'
2337
+ assert_equal 'ref2', ref.value
2338
+ end
2339
+
2340
+ def test_relationships
2341
+ assert_kind_of CPixSize3, PixSize3Ref.new('ref1')
2342
+ end
2343
+
2344
+ def test_xml
2345
+ r1 = PixSize3Ref.new('ref1')
2346
+ assert_equal "<crd:PixSize3Ref xmlns:crd='http://www.ivoa.net/xml/STC/STCcoords/v1.10'>ref1</crd:PixSize3Ref>", r1.to_xml.to_s
2347
+
2348
+ r2 = PixSize3Ref.from_xml("<crd:PixSize3Ref xmlns:crd='http://www.ivoa.net/xml/STC/STCcoords/v1.10'>ref1</crd:PixSize3Ref>")
2349
+ assert_equal r1, r2
2350
+ end
2351
+ end
2352
+
2353
+ class Vector3CoordinateTest < ::Test::Unit::TestCase
2354
+ def test_construction
2355
+ assert_nothing_raised do
2356
+ Vector3Coordinate.new(
2357
+ :name => 'My Coordinate',
2358
+ :value => Value3.new([123.4, 345.6, 567.8]),
2359
+ :error => [Error3.new([1.1, 2.2, 3.3]), Error3.new([2.2, 3.3, 4.4])],
2360
+ :resolution => [Resolution3.new([0.1, 0.2, 0.3]), Resolution3.new([0.5, 0.6, 0.7])],
2361
+ :size => [Size3.new([10.1, 10.2, 10.3]), Size3.new([8.7, 8.8, 8.9])],
2362
+ :pix_size => [PixSize3.new([1.9, 2.0, 2.1]), PixSize3.new([2.2, 3.3, 4.4])]
2363
+ )
2364
+
2365
+ Vector3Coordinate.new(
2366
+ :value => Value3.new([123.4, 345.6, 567.8]),
2367
+ :error => [Error3.new([1.1, 2.2, 3.3]), Error3.new([2.2, 3.3, 4.4])],
2368
+ :resolution => [Resolution3.new([0.1, 0.2, 0.3]), Resolution3.new([0.5, 0.6, 0.7])],
2369
+ :size => [Size3.new([10.1, 10.2, 10.3]), Size3.new([8.7, 8.8, 8.9])],
2370
+ :pix_size => [PixSize3.new([1.9, 2.0, 2.1]), PixSize3.new([2.2, 3.3, 4.4])]
2371
+ )
2372
+
2373
+ Vector3Coordinate.new(
2374
+ :value => Value3.new([123.4, 345.6, 567.8]),
2375
+ :error => [Error3.new([1.1, 2.2, 3.3]), Error3.new([2.2, 3.3, 4.4])]
2376
+ )
2377
+
2378
+ Vector3Coordinate.new()
2379
+ end
2380
+
2381
+ vc = Vector3Coordinate.new
2382
+ assert_raises TypeError do
2383
+ vc.value = Error.new(10.2)
2384
+ end
2385
+
2386
+ assert_raises TypeError do
2387
+ vc.error = Value.new(123.4)
2388
+ end
2389
+ assert_raises ArgumentError do
2390
+ vc.error = [Error3.new([123.4, 5.1, 2.2]), Error3.new([123.4, 5.1, 2.2]), Error3.new([123.4, 5.1, 2.2])]
2391
+ end
2392
+
2393
+ assert_raises TypeError do
2394
+ vc.resolution = Error.new(10.2)
2395
+ end
2396
+ assert_raises ArgumentError do
2397
+ vc.resolution = [Resolution3.new([123.4, 123.5, 1.1]), Resolution3.new([123.4, 123.5, 1.1]), Resolution3.new([123.4, 123.5, 1.1])]
2398
+ end
2399
+
2400
+ assert_raises TypeError do
2401
+ vc.size = Error.new(10.2)
2402
+ end
2403
+ assert_raises ArgumentError do
2404
+ vc.size = [Size3.new([123.4, 123.4, 123.4]), Size3.new([123.4, 123.4, 123.4]), Size3.new([123.4, 123.4, 123.4])]
2405
+ end
2406
+
2407
+ assert_raises TypeError do
2408
+ vc.pix_size = Error.new(10.2)
2409
+ end
2410
+ assert_raises ArgumentError do
2411
+ vc.pix_size = [PixSize3.new([123.4, 123.4, 123.4]), PixSize3.new([123.4, 123.4, 123.4]), PixSize3.new([123.4, 123.4, 123.4])]
2412
+ end
2413
+ end
2414
+
2415
+ def test_accessors
2416
+ vc = Vector3Coordinate.new(
2417
+ :name => 'MyCoordinate',
2418
+ :value => Value3.new([123.4, 345.6, 789.0]),
2419
+ :error => [Error3.new([1.1, 2.2, 3.3]), Error3.new([2.2, 3.3, 2.2])],
2420
+ :resolution => [Resolution3.new([0.1, 0.2, 0.5]), Resolution3.new([0.5, 0.6, 0.5])],
2421
+ :size => [Size3.new([10.1, 10.2, 1.1]), Size3.new([8.7, 8.8, 1.1])],
2422
+ :pix_size => [PixSize3.new([1.9, 2.0, 3.0]), PixSize3.new([2.2, 3.3, 4.1])]
2423
+ )
2424
+
2425
+ assert_equal 'MyCoordinate', vc.name
2426
+ assert_equal Value3.new([123.4, 345.6, 789.0]), vc.value
2427
+ assert_equal [Error3.new([1.1, 2.2, 3.3]), Error3.new([2.2, 3.3, 2.2])], vc.error
2428
+ assert_equal [Resolution3.new([0.1, 0.2, 0.5]), Resolution3.new([0.5, 0.6, 0.5])], vc.resolution
2429
+ assert_equal [Size3.new([10.1, 10.2, 1.1]), Size3.new([8.7, 8.8, 1.1])], vc.size
2430
+ assert_equal [PixSize3.new([1.9, 2.0, 3.0]), PixSize3.new([2.2, 3.3, 4.1])], vc.pix_size
2431
+
2432
+ vc.name = 'MyOtherCoordinate'
2433
+ assert_equal 'MyOtherCoordinate', vc.name
2434
+ vc.error = Error3.new([3.3, 4.4, 5.5])
2435
+ assert_equal [Error3.new([3.3, 4.4, 5.5])], vc.error
2436
+ vc.resolution = Resolution3.new([0.6, 0.7, 0.8])
2437
+ assert_equal [Resolution3.new([0.6, 0.7, 0.8])], vc.resolution
2438
+ vc.size = Size3.new([5.1, 5.2, 5.3])
2439
+ assert_equal [Size3.new([5.1, 5.2, 5.3])], vc.size
2440
+ vc.pix_size = PixSize3.new([3.1, 3.2, 3.3])
2441
+ assert_equal [PixSize3.new([3.1, 3.2, 3.3])], vc.pix_size
2442
+ end
2443
+
2444
+ def test_relationships
2445
+ assert_kind_of CoordinateType, Vector3Coordinate.new
2446
+ end
2447
+ end
2448
+
2449
+ class ScalarCoordinateTest < ::Test::Unit::TestCase
2450
+ def test_unit
2451
+ sc = ScalarCoordinate.new(:unit => 'mm')
2452
+ assert_equal 'mm', sc.unit
2453
+
2454
+ sc.unit = 'cm'
2455
+ assert_equal 'cm', sc.unit
2456
+
2457
+ assert_kind_of Coordinate, sc
2458
+ end
2459
+
2460
+ def test_xml
2461
+ sc1 = ScalarCoordinate.new(
2462
+ :name => 'myScalarCoordinate',
2463
+ :unit => 'm',
2464
+ :value => Value.new(1.1),
2465
+ :error => [ErrorRef.new('error_ref1'), Error.new(0.1)],
2466
+ :resolution => [ResolutionRef.new('pix_size_ref1')],
2467
+ :size => [Size.new(10.0)],
2468
+ :pix_size => [PixSizeRef.new('pix_size_ref1')]
2469
+ )
2470
+
2471
+ sc2 = ScalarCoordinate.from_xml(sc1.to_xml)
2472
+ assert_equal sc1, sc2
2473
+ end
2474
+ end
2475
+
2476
+ class CoordinateTypeTest < ::Test::Unit::TestCase
2477
+ def test_constructor
2478
+ assert_nothing_raised do
2479
+ c = CoordinateType.new('coord1')
2480
+ assert_equal 'coord1', c.name
2481
+ end
2482
+ end
2483
+
2484
+ def test_accessors
2485
+ c = CoordinateType.new('coord1')
2486
+
2487
+ assert_equal 'coord1', c.name
2488
+ c.name = 'coord2'
2489
+ assert_equal 'coord2', c.name
2490
+ end
2491
+ end
2492
+
2493
+ class StringCoordinateTest < ::Test::Unit::TestCase
2494
+ def test_constructors
2495
+ assert_nothing_raised do
2496
+ StringCoordinate.new(:name => 'coord1', :unit => 'mm', :value => 'a bunch of')
2497
+ StringCoordinate.new(:name => 'coord1', :value => 'a bunch of')
2498
+ end
2499
+ end
2500
+
2501
+ def test_accessors
2502
+ sc = StringCoordinate.new(:name => 'coord1', :unit => 'mm', :value => 'a bunch of')
2503
+ assert_equal 'coord1', sc.name
2504
+ assert_equal 'mm', sc.unit
2505
+ assert_equal 'a bunch of', sc.value
2506
+
2507
+ sc.name = 'coord2'
2508
+ assert_equal 'coord2', sc.name
2509
+ sc.unit = 'cm'
2510
+ assert_equal 'cm', sc.unit
2511
+ sc.value = 'some'
2512
+ assert_equal 'some', sc.value
2513
+ end
2514
+
2515
+ def test_relationships
2516
+ sc = StringCoordinate.new(:name => 'coord1', :value => 'a bunch of')
2517
+ assert_kind_of CoordinateType, sc
2518
+ assert_kind_of Coordinate, sc
2519
+ end
2520
+
2521
+ def test_xml
2522
+ sc1 = StringCoordinate.new(
2523
+ :unit => 'm',
2524
+ :name => 'myCoordinate',
2525
+ :value => 'blah'
2526
+ )
2527
+
2528
+ sc2 = StringCoordinate.from_xml(sc1.to_xml)
2529
+ assert_equal sc1, sc2
2530
+ end
2531
+ end
2532
+
2533
+ class PixelCoordinateTest < ::Test::Unit::TestCase
2534
+ def test_constructors
2535
+ assert_nothing_raised do
2536
+ PixelCoordinate.new(:name => 'coord1', :value => 10.1)
2537
+ end
2538
+ end
2539
+
2540
+ def test_accessors
2541
+ pc = PixelCoordinate.new(:name => 'coord1', :value => 10.1)
2542
+ assert_equal 'coord1', pc.name
2543
+ assert_equal 10.1, pc.value
2544
+
2545
+ pc.name = 'coord2'
2546
+ assert_equal 'coord2', pc.name
2547
+ pc.value = 1.1
2548
+ assert_equal 1.1, pc.value
2549
+ end
2550
+
2551
+ def test_relationships
2552
+ pc = PixelCoordinate.new(:name => 'coord1', :value => 10.1)
2553
+ assert_kind_of CoordinateType, pc
2554
+ assert_kind_of Coordinate, pc
2555
+ end
2556
+
2557
+ def test_xml
2558
+ pc1 = PixelCoordinate.new(
2559
+ :name => 'myCoordinate',
2560
+ :value => 100.1
2561
+ )
2562
+
2563
+ pc2 = PixelCoordinate.from_xml(pc1.to_xml)
2564
+ assert_equal pc1, pc2
2565
+ end
2566
+ end
2567
+
2568
+ class Position1DTest < ::Test::Unit::TestCase
2569
+ def test_construction
2570
+ assert_nothing_raised do
2571
+ Position1D.new(
2572
+ :value => Value.new(123.4),
2573
+ :error => [Error.new(1.1), Error.new(2.2)],
2574
+ :resolution => [Resolution.new(0.1), Resolution.new(0.5)],
2575
+ :size => [Size.new(10.1), Size.new(8.7)],
2576
+ :pix_size => [PixSize.new(1.9), PixSize.new(2.2)],
2577
+ :unit => PosUnit.new('m')
2578
+ )
2579
+
2580
+ Position1D.new(
2581
+ :value => Value.new(123.4),
2582
+ :error => Error.new(1.1),
2583
+ :resolution => Resolution.new(0.1),
2584
+ :size => Size.new(10.1),
2585
+ :pix_size => PixSize.new(1.9),
2586
+ :unit => PosUnit.new('m')
2587
+ )
2588
+
2589
+ Position1D.new(
2590
+ :value => Value.new(123.4),
2591
+ :error => Error.new(1.1),
2592
+ :unit => PosUnit.new('m')
2593
+ )
2594
+
2595
+ Position1D.new(:unit => PosUnit.new('m'))
2596
+ end
2597
+
2598
+ assert_raises ArgumentError do
2599
+ Position1D.new
2600
+ end
2601
+
2602
+ p = Position1D.new(:unit => PosUnit.new('lyr'))
2603
+ assert_raises TypeError do
2604
+ p.value = Error.new(10.2)
2605
+ end
2606
+
2607
+ assert_raises TypeError do
2608
+ p.error = Value.new(123.4)
2609
+ end
2610
+ assert_raises ArgumentError do
2611
+ p.error = [Error.new(123.4), Error.new(123.4), Error.new(123.4)]
2612
+ end
2613
+
2614
+ assert_raises TypeError do
2615
+ p.resolution = Error.new(10.2)
2616
+ end
2617
+ assert_raises ArgumentError do
2618
+ p.resolution = [Resolution.new(123.4), Resolution.new(123.4), Resolution.new(123.4)]
2619
+ end
2620
+
2621
+ assert_raises TypeError do
2622
+ p.size = Error.new(10.2)
2623
+ end
2624
+ assert_raises ArgumentError do
2625
+ p.size = [Size.new(123.4), Size.new(123.4), Size.new(123.4)]
2626
+ end
2627
+
2628
+ assert_raises TypeError do
2629
+ p.pix_size = Error.new(10.2)
2630
+ end
2631
+ assert_raises ArgumentError do
2632
+ p.pix_size = [PixSize.new(123.4), PixSize.new(123.4), PixSize.new(123.4)]
2633
+ end
2634
+ end
2635
+
2636
+ def test_accessors
2637
+ p = Position1D.new(
2638
+ :name => 'MyCoordinate',
2639
+ :value => Value.new(123.4),
2640
+ :error => [Error.new(1.1), Error.new(2.2)],
2641
+ :resolution => [Resolution.new(0.1), Resolution.new(0.2)],
2642
+ :size => [Size.new(10.1), Size.new(8.7)],
2643
+ :pix_size => [PixSize.new(1.9), PixSize.new(2.2)],
2644
+ :unit => PosUnit.new('m')
2645
+ )
2646
+
2647
+ assert_equal 'MyCoordinate', p.name
2648
+ assert_equal Value.new(123.4), p.value
2649
+ assert_equal [Error.new(1.1), Error.new(2.2)], p.error
2650
+ assert_equal [Resolution.new(0.1), Resolution.new(0.2)], p.resolution
2651
+ assert_equal [Size.new(10.1), Size.new(8.7)], p.size
2652
+ assert_equal [PixSize.new(1.9), PixSize.new(2.2)], p.pix_size
2653
+ assert_equal PosUnit.new('m'), p.unit
2654
+
2655
+ p.name = 'MyOtherCoordinate'
2656
+ assert_equal 'MyOtherCoordinate', p.name
2657
+ p.error = Error.new(3.3)
2658
+ assert_equal [Error.new(3.3)], p.error
2659
+ p.resolution = Resolution.new(0.6)
2660
+ assert_equal [Resolution.new(0.6)], p.resolution
2661
+ p.size = Size.new(5.1)
2662
+ assert_equal [Size.new(5.1)], p.size
2663
+ p.pix_size = PixSize.new(3.1)
2664
+ assert_equal [PixSize.new(3.1)], p.pix_size
2665
+ p.unit = PosUnit.new('m')
2666
+ assert_equal PosUnit.new('m'), p.unit
2667
+ end
2668
+
2669
+ def test_relationships
2670
+ p = Position1D.new(:unit => PosUnit.new('m'))
2671
+ assert_kind_of ScalarCoordinateType, p
2672
+ assert_kind_of Position, p
2673
+ end
2674
+
2675
+ def test_xml
2676
+ p1 = Position1D.new(
2677
+ :name => 'MyCoordinate',
2678
+ :value => Value.new(123.4),
2679
+ :error => [Error.new(1.1), Error.new(2.2)],
2680
+ :resolution => [Resolution.new(0.1), Resolution.new(0.2)],
2681
+ :size => [Size.new(10.1), Size.new(8.7)],
2682
+ :pix_size => [PixSize.new(1.9), PixSize.new(2.2)],
2683
+ :unit => PosUnit.new('m')
2684
+ )
2685
+
2686
+ p2 = Position1D.from_xml(p1.to_xml)
2687
+ assert_equal p1, p2
2688
+ end
2689
+ end
2690
+
2691
+ class Position2DTest < ::Test::Unit::TestCase
2692
+ def test_construction
2693
+ assert_nothing_raised do
2694
+ Position2D.new(
2695
+ :name => 'My Coordinate',
2696
+ :value => Value2.new([123.4, 345.6]),
2697
+ :error => [Error2.new([1.1, 2.2]), Error2.new([2.2, 3.3])],
2698
+ :resolution => [Resolution2.new([0.1, 0.2]), Resolution2.new([0.5, 0.6])],
2699
+ :size => [Size2.new([10.1, 10.2]), Size2.new([8.7, 8.8])],
2700
+ :pix_size => [PixSize2.new([1.9, 2.0]), PixSize2.new([2.2, 3.3])],
2701
+ :unit => PosUnit.new('m')
2702
+ )
2703
+
2704
+ Position2D.new(
2705
+ :value => Value2.new([123.4, 345.6]),
2706
+ :error => [Error2.new([1.1, 2.2]), Error2.new([2.2, 3.3])],
2707
+ :resolution => [Resolution2.new([0.1, 0.2]), Resolution2.new([0.5, 0.6])],
2708
+ :size => [Size2.new([10.1, 10.2]), Size2.new([8.7, 8.8])],
2709
+ :pix_size => [PixSize2.new([1.9, 2.0]), PixSize2.new([2.2, 3.3])],
2710
+ :unit => PosUnit.new('m')
2711
+ )
2712
+
2713
+ Position2D.new(
2714
+ :value => Value2.new([123.4, 345.6]),
2715
+ :error => [Error2.new([1.1, 2.2]), Error2.new([2.2, 3.3])],
2716
+ :unit => PosUnit.new('m')
2717
+ )
2718
+
2719
+ Position2D.new(:unit => PosUnit.new('m'))
2720
+ end
2721
+
2722
+ assert_raises ArgumentError do
2723
+ Position2D.new
2724
+ end
2725
+
2726
+ p = Position2D.new(:unit => PosUnit.new('m'))
2727
+ assert_raises TypeError do
2728
+ p.value = Error.new(10.2)
2729
+ end
2730
+
2731
+ assert_raises TypeError do
2732
+ p.error = Value.new(123.4)
2733
+ end
2734
+ assert_raises ArgumentError do
2735
+ p.error = [Error2.new([123.4, 5.1]), Error2.new([123.4, 5.1]), Error2.new([123.4, 5.1])]
2736
+ end
2737
+
2738
+ assert_raises TypeError do
2739
+ p.resolution = Error.new(10.2)
2740
+ end
2741
+ assert_raises ArgumentError do
2742
+ p.resolution = [Resolution2.new([123.4, 123.5]), Resolution2.new([123.4, 123.5]), Resolution2.new([123.4, 123.5])]
2743
+ end
2744
+
2745
+ assert_raises TypeError do
2746
+ p.size = Error.new(10.2)
2747
+ end
2748
+ assert_raises ArgumentError do
2749
+ p.size = [Size2.new([123.4, 123.4]), Size2.new([123.4, 123.4]), Size2.new([123.4, 123.4])]
2750
+ end
2751
+
2752
+ assert_raises TypeError do
2753
+ p.pix_size = Error.new(10.2)
2754
+ end
2755
+ assert_raises ArgumentError do
2756
+ p.pix_size = [PixSize2.new([123.4, 123.4]), PixSize2.new([123.4, 123.4]), PixSize2.new([123.4, 123.4])]
2757
+ end
2758
+ end
2759
+
2760
+ def test_accessors
2761
+ p = Position2D.new(
2762
+ :name => 'MyCoordinate',
2763
+ :value => Value2.new([123.4, 345.6]),
2764
+ :error => [Error2.new([1.1, 2.2]), Error2.new([2.2, 3.3])],
2765
+ :resolution => [Resolution2.new([0.1, 0.2]), Resolution2.new([0.5, 0.6])],
2766
+ :size => [Size2.new([10.1, 10.2]), Size2.new([8.7, 8.8])],
2767
+ :pix_size => [PixSize2.new([1.9, 2.0]), PixSize2.new([2.2, 3.3])],
2768
+ :unit => PosUnit.new('m')
2769
+ )
2770
+
2771
+ assert_equal 'MyCoordinate', p.name
2772
+ assert_equal Value2.new([123.4, 345.6]), p.value
2773
+ assert_equal [Error2.new([1.1, 2.2]), Error2.new([2.2, 3.3])], p.error
2774
+ assert_equal [Resolution2.new([0.1, 0.2]), Resolution2.new([0.5, 0.6])], p.resolution
2775
+ assert_equal [Size2.new([10.1, 10.2]), Size2.new([8.7, 8.8])], p.size
2776
+ assert_equal [PixSize2.new([1.9, 2.0]), PixSize2.new([2.2, 3.3])], p.pix_size
2777
+ assert_equal PosUnit.new('m'), p.unit
2778
+
2779
+ p.name = 'MyOtherCoordinate'
2780
+ assert_equal 'MyOtherCoordinate', p.name
2781
+ p.error = Error2.new([3.3, 4.4])
2782
+ assert_equal [Error2.new([3.3, 4.4])], p.error
2783
+ p.resolution = Resolution2.new([0.6, 0.7])
2784
+ assert_equal [Resolution2.new([0.6, 0.7])], p.resolution
2785
+ p.size = Size2.new([5.1, 5.2])
2786
+ assert_equal [Size2.new([5.1, 5.2])], p.size
2787
+ p.pix_size = PixSize2.new([3.1, 3.2])
2788
+ assert_equal [PixSize2.new([3.1, 3.2])], p.pix_size
2789
+ p.unit = PosUnit.new('lyr')
2790
+ assert_equal PosUnit.new('lyr'), p.unit
2791
+ end
2792
+
2793
+ def test_relationships
2794
+ p = Position2D.new(:unit => PosUnit.new('m'))
2795
+ assert_kind_of Vector2Coordinate, p
2796
+ assert_kind_of Position, p
2797
+ end
2798
+
2799
+ def test_xml
2800
+ p1 = Position2D.new(
2801
+ :name => 'My2DCoordinate',
2802
+ :value => Value2.new([123.4, 345.6]),
2803
+ :error => [Error2.new([1.1, 2.2]), Error2.new([2.2, 3.3])],
2804
+ :resolution => [Resolution2.new([0.1, 0.2]), Resolution2.new([0.5, 0.6])],
2805
+ :size => [Size2.new([10.1, 10.2]), Size2.new([8.7, 8.8])],
2806
+ :pix_size => [PixSize2.new([1.9, 2.0]), PixSize2.new([2.2, 3.3])],
2807
+ :unit => PosUnit.new('m')
2808
+ )
2809
+
2810
+ p2 = Position2D.from_xml(p1.to_xml)
2811
+ assert_equal p1, p2
2812
+ end
2813
+ end
2814
+
2815
+ class Position3DTest < ::Test::Unit::TestCase
2816
+ def test_construction
2817
+ assert_nothing_raised do
2818
+ Position3D.new(
2819
+ :name => 'My Coordinate',
2820
+ :value => Value3.new([123.4, 345.6, 456.7]),
2821
+ :error => [Error3.new([1.1, 2.2, 3.3]), Error3.new([2.2, 3.3, 4.4])],
2822
+ :resolution => [Resolution3.new([0.1, 0.2, 0.3]), Resolution3.new([0.5, 0.6, 0.7])],
2823
+ :size => [Size3.new([10.1, 10.2, 10.3]), Size3.new([8.7, 8.8, 8.9])],
2824
+ :pix_size => [PixSize3.new([1.9, 2.0, 2.1]), PixSize3.new([2.2, 3.3, 4.4])],
2825
+ :unit => PosUnit.new('m')
2826
+ )
2827
+
2828
+ Position3D.new(
2829
+ :value => Value3.new([123.4, 345.6, 456.7]),
2830
+ :error => [Error3.new([1.1, 2.2, 3.3]), Error3.new([2.2, 3.3, 4.4])],
2831
+ :resolution => [Resolution3.new([0.1, 0.2, 0.3]), Resolution3.new([0.5, 0.6, 0.7])],
2832
+ :size => [Size3.new([10.1, 10.2, 10.3]), Size3.new([8.7, 8.8, 8.9])],
2833
+ :pix_size => [PixSize3.new([1.9, 2.0, 2.1]), PixSize3.new([2.2, 3.3, 4.4])],
2834
+ :unit => PosUnit.new('m')
2835
+ )
2836
+
2837
+ Position3D.new(
2838
+ :value => Value3.new([123.4, 345.6, 456.7]),
2839
+ :error => [Error3.new([1.1, 2.2, 3.3]), Error3.new([2.2, 3.3, 4.4])],
2840
+ :unit => PosUnit.new('m')
2841
+ )
2842
+
2843
+ Position3D.new(:unit => PosUnit.new('m'))
2844
+ end
2845
+
2846
+ assert_raises ArgumentError do
2847
+ Position3D.new
2848
+ end
2849
+
2850
+ p = Position3D.new(:unit => PosUnit.new('m'))
2851
+ assert_raises TypeError do
2852
+ p.value = Error.new(10.2)
2853
+ end
2854
+
2855
+ assert_raises TypeError do
2856
+ p.error = Value.new(123.4)
2857
+ end
2858
+ assert_raises ArgumentError do
2859
+ p.error = [Error3.new([123.4, 5.1, 1.1]), Error3.new([123.4, 5.1, 1.1]), Error3.new([123.4, 5.1, 1.1])]
2860
+ end
2861
+
2862
+ assert_raises TypeError do
2863
+ p.resolution = Error.new(10.2)
2864
+ end
2865
+ assert_raises ArgumentError do
2866
+ p.resolution = [Resolution3.new([123.4, 123.5, 1.1]), Resolution3.new([123.4, 123.5, 1.1]), Resolution3.new([123.4, 123.5, 1.1])]
2867
+ end
2868
+
2869
+ assert_raises TypeError do
2870
+ p.size = Error.new(10.2)
2871
+ end
2872
+ assert_raises ArgumentError do
2873
+ p.size = [Size3.new([123.4, 123.4, 1.1]), Size3.new([123.4, 123.4, 1.1]), Size3.new([123.4, 123.4, 1.1])]
2874
+ end
2875
+
2876
+ assert_raises TypeError do
2877
+ p.pix_size = Error.new(10.2)
2878
+ end
2879
+ assert_raises ArgumentError do
2880
+ p.pix_size = [PixSize3.new([123.4, 123.4, 1.1]), PixSize3.new([123.4, 123.4, 1.1]), PixSize3.new([123.4, 123.4, 1.1])]
2881
+ end
2882
+ end
2883
+
2884
+ def test_accessors
2885
+ p = Position3D.new(
2886
+ :name => 'MyCoordinate',
2887
+ :value => Value3.new([123.4, 345.6, 456.7]),
2888
+ :error => [Error3.new([1.1, 2.2, 3.3]), Error3.new([2.2, 3.3, 4.4])],
2889
+ :resolution => [Resolution3.new([0.1, 0.2, 0.3]), Resolution3.new([0.5, 0.6, 0.7])],
2890
+ :size => [Size3.new([10.1, 10.2, 10.3]), Size3.new([8.7, 8.8, 8.9])],
2891
+ :pix_size => [PixSize3.new([1.9, 2.0, 2.1]), PixSize3.new([2.2, 3.3, 4.4])],
2892
+ :unit => PosUnit.new('m')
2893
+ )
2894
+
2895
+ assert_equal 'MyCoordinate', p.name
2896
+ assert_equal Value3.new([123.4, 345.6, 456.7]), p.value
2897
+ assert_equal [Error3.new([1.1, 2.2, 3.3]), Error3.new([2.2, 3.3, 4.4])], p.error
2898
+ assert_equal [Resolution3.new([0.1, 0.2, 0.3]), Resolution3.new([0.5, 0.6, 0.7])], p.resolution
2899
+ assert_equal [Size3.new([10.1, 10.2, 10.3]), Size3.new([8.7, 8.8, 8.9])], p.size
2900
+ assert_equal [PixSize3.new([1.9, 2.0, 2.1]), PixSize3.new([2.2, 3.3, 4.4])], p.pix_size
2901
+ assert_equal PosUnit.new('m'), p.unit
2902
+
2903
+ p.name = 'MyOtherCoordinate'
2904
+ assert_equal 'MyOtherCoordinate', p.name
2905
+ p.error = Error3.new([3.3, 4.4, 5.5])
2906
+ assert_equal [Error3.new([3.3, 4.4, 5.5])], p.error
2907
+ p.resolution = Resolution3.new([0.6, 0.7, 0.8])
2908
+ assert_equal [Resolution3.new([0.6, 0.7, 0.8])], p.resolution
2909
+ p.size = Size3.new([5.1, 5.2, 5.3])
2910
+ assert_equal [Size3.new([5.1, 5.2, 5.3])], p.size
2911
+ p.pix_size = PixSize3.new([3.1, 3.2, 3.3])
2912
+ assert_equal [PixSize3.new([3.1, 3.2, 3.3])], p.pix_size
2913
+ p.unit = PosUnit.new('lyr')
2914
+ assert_equal PosUnit.new('lyr'), p.unit
2915
+ end
2916
+
2917
+ def test_relationships
2918
+ p = Position3D.new(:unit => PosUnit.new('m'))
2919
+ assert_kind_of Vector3Coordinate, p
2920
+ assert_kind_of Position, p
2921
+ end
2922
+
2923
+ def test_xml
2924
+ p1 = Position3D.new(
2925
+ :name => 'MyCoordinate',
2926
+ :value => Value3.new([123.4, 345.6, 456.7]),
2927
+ :error => [Error3.new([1.1, 2.2, 3.3]), Error3.new([2.2, 3.3, 4.4])],
2928
+ :resolution => [Resolution3.new([0.1, 0.2, 0.3]), Resolution3.new([0.5, 0.6, 0.7])],
2929
+ :size => [Size3.new([10.1, 10.2, 10.3]), Size3.new([8.7, 8.8, 8.9])],
2930
+ :pix_size => [PixSize3.new([1.9, 2.0, 2.1]), PixSize3.new([2.2, 3.3, 4.4])],
2931
+ :unit => PosUnit.new('m')
2932
+ )
2933
+
2934
+ p2 = Position3D.from_xml(p1.to_xml)
2935
+ assert_equal p1, p2
2936
+ end
2937
+ end
2938
+
2939
+ class Velocity1DTest < ::Test::Unit::TestCase
2940
+ def test_construction
2941
+ assert_nothing_raised do
2942
+ Velocity1D.new(
2943
+ :value => Value.new(123.4),
2944
+ :error => [Error.new(1.1), Error.new(2.2)],
2945
+ :resolution => [Resolution.new(0.1), Resolution.new(0.5)],
2946
+ :size => [Size.new(10.1), Size.new(8.7)],
2947
+ :pix_size => [PixSize.new(1.9), PixSize.new(2.2)],
2948
+ :unit => PosUnit.new('m'),
2949
+ :vel_time_unit => VelTimeUnit.new('s')
2950
+ )
2951
+
2952
+ Velocity1D.new(
2953
+ :value => Value.new(123.4),
2954
+ :error => Error.new(1.1),
2955
+ :resolution => Resolution.new(0.1),
2956
+ :size => Size.new(10.1),
2957
+ :pix_size => PixSize.new(1.9),
2958
+ :unit => PosUnit.new('m'),
2959
+ :vel_time_unit => VelTimeUnit.new('s')
2960
+ )
2961
+
2962
+ Velocity1D.new(
2963
+ :value => Value.new(123.4),
2964
+ :error => Error.new(1.1),
2965
+ :unit => PosUnit.new('m'),
2966
+ :vel_time_unit => VelTimeUnit.new('s')
2967
+ )
2968
+
2969
+ Velocity1D.new(
2970
+ :unit => PosUnit.new('m'),
2971
+ :vel_time_unit => VelTimeUnit.new('s')
2972
+ )
2973
+ end
2974
+
2975
+ assert_raises ArgumentError do
2976
+ Velocity1D.new(:unit => PosUnit.new('m'))
2977
+ end
2978
+ assert_raises ArgumentError do
2979
+ Velocity1D.new(:vel_time_unit => VelTimeUnit.new('s'))
2980
+ end
2981
+
2982
+ sc = Velocity1D.new(
2983
+ :unit => PosUnit.new('m'),
2984
+ :vel_time_unit => VelTimeUnit.new('s')
2985
+ )
2986
+ assert_raises TypeError do
2987
+ sc.value = Error.new(10.2)
2988
+ end
2989
+
2990
+ assert_raises TypeError do
2991
+ sc.error = Value.new(123.4)
2992
+ end
2993
+ assert_raises ArgumentError do
2994
+ sc.error = [Error.new(123.4), Error.new(123.4), Error.new(123.4)]
2995
+ end
2996
+
2997
+ assert_raises TypeError do
2998
+ sc.resolution = Error.new(10.2)
2999
+ end
3000
+ assert_raises ArgumentError do
3001
+ sc.resolution = [Resolution.new(123.4), Resolution.new(123.4), Resolution.new(123.4)]
3002
+ end
3003
+
3004
+ assert_raises TypeError do
3005
+ sc.size = Error.new(10.2)
3006
+ end
3007
+ assert_raises ArgumentError do
3008
+ sc.size = [Size.new(123.4), Size.new(123.4), Size.new(123.4)]
3009
+ end
3010
+
3011
+ assert_raises TypeError do
3012
+ sc.pix_size = Error.new(10.2)
3013
+ end
3014
+ assert_raises ArgumentError do
3015
+ sc.pix_size = [PixSize.new(123.4), PixSize.new(123.4), PixSize.new(123.4)]
3016
+ end
3017
+
3018
+ assert_raises TypeError do
3019
+ sc.unit = VelTimeUnit.new('s')
3020
+ end
3021
+ assert_raises TypeError do
3022
+ sc.vel_time_unit = PosUnit.new('m')
3023
+ end
3024
+ end
3025
+
3026
+ def test_accessors
3027
+ sc = Velocity1D.new(
3028
+ :name => 'MyCoordinate',
3029
+ :value => Value.new(123.4),
3030
+ :error => [Error.new(1.1), Error.new(2.2)],
3031
+ :resolution => [Resolution.new(0.1), Resolution.new(0.2)],
3032
+ :size => [Size.new(10.1), Size.new(8.7)],
3033
+ :pix_size => [PixSize.new(1.9), PixSize.new(2.2)],
3034
+ :unit => PosUnit.new('m'),
3035
+ :vel_time_unit => VelTimeUnit.new('s')
3036
+ )
3037
+
3038
+ assert_equal 'MyCoordinate', sc.name
3039
+ assert_equal Value.new(123.4), sc.value
3040
+ assert_equal [Error.new(1.1), Error.new(2.2)], sc.error
3041
+ assert_equal [Resolution.new(0.1), Resolution.new(0.2)], sc.resolution
3042
+ assert_equal [Size.new(10.1), Size.new(8.7)], sc.size
3043
+ assert_equal [PixSize.new(1.9), PixSize.new(2.2)], sc.pix_size
3044
+ assert_equal PosUnit.new('m'), sc.unit
3045
+ assert_equal VelTimeUnit.new('s'), sc.vel_time_unit
3046
+
3047
+ sc.name = 'MyOtherCoordinate'
3048
+ assert_equal 'MyOtherCoordinate', sc.name
3049
+ sc.error = Error.new(3.3)
3050
+ assert_equal [Error.new(3.3)], sc.error
3051
+ sc.resolution = Resolution.new(0.6)
3052
+ assert_equal [Resolution.new(0.6)], sc.resolution
3053
+ sc.size = Size.new(5.1)
3054
+ assert_equal [Size.new(5.1)], sc.size
3055
+ sc.pix_size = PixSize.new(3.1)
3056
+ assert_equal [PixSize.new(3.1)], sc.pix_size
3057
+ sc.unit = PosUnit.new('lyr')
3058
+ assert_equal PosUnit.new('lyr'), sc.unit
3059
+ sc.vel_time_unit = VelTimeUnit.new('h')
3060
+ assert_equal VelTimeUnit.new('h'), sc.vel_time_unit
3061
+ end
3062
+
3063
+ def test_relationships
3064
+ v = Velocity1D.new(:unit => PosUnit.new('m'), :vel_time_unit => VelTimeUnit.new('s'))
3065
+ assert_kind_of ScalarCoordinateType, v
3066
+ assert_kind_of Velocity, v
3067
+ end
3068
+
3069
+ def test_xml
3070
+ v1 = Velocity1D.new(
3071
+ :name => 'MyCoordinate',
3072
+ :value => Value.new(123.4),
3073
+ :error => [Error.new(1.1), Error.new(2.2)],
3074
+ :resolution => [Resolution.new(0.1), Resolution.new(0.2)],
3075
+ :size => [Size.new(10.1), Size.new(8.7)],
3076
+ :pix_size => [PixSize.new(1.9), PixSize.new(2.2)],
3077
+ :unit => PosUnit.new('m'),
3078
+ :vel_time_unit => VelTimeUnit.new('s')
3079
+ )
3080
+
3081
+ v2 = Velocity1D.from_xml(v1.to_xml)
3082
+ assert_equal v1, v2
3083
+ end
3084
+ end
3085
+
3086
+ class Velocity2DTest < ::Test::Unit::TestCase
3087
+ def test_construction
3088
+ assert_nothing_raised do
3089
+ Velocity2D.new(
3090
+ :name => 'My Coordinate',
3091
+ :value => Value2.new([123.4, 345.6]),
3092
+ :error => [Error2.new([1.1, 2.2]), Error2.new([2.2, 3.3])],
3093
+ :resolution => [Resolution2.new([0.1, 0.2]), Resolution2.new([0.5, 0.6])],
3094
+ :size => [Size2.new([10.1, 10.2]), Size2.new([8.7, 8.8])],
3095
+ :pix_size => [PixSize2.new([1.9, 2.0]), PixSize2.new([2.2, 3.3])],
3096
+ :unit => PosUnit.new('m'),
3097
+ :vel_time_unit => VelTimeUnit.new('s')
3098
+ )
3099
+
3100
+ Velocity2D.new(
3101
+ :value => Value2.new([123.4, 345.6]),
3102
+ :error => [Error2.new([1.1, 2.2]), Error2.new([2.2, 3.3])],
3103
+ :resolution => [Resolution2.new([0.1, 0.2]), Resolution2.new([0.5, 0.6])],
3104
+ :size => [Size2.new([10.1, 10.2]), Size2.new([8.7, 8.8])],
3105
+ :pix_size => [PixSize2.new([1.9, 2.0]), PixSize2.new([2.2, 3.3])],
3106
+ :unit => PosUnit.new('m'),
3107
+ :vel_time_unit => VelTimeUnit.new('s')
3108
+ )
3109
+
3110
+ Velocity2D.new(
3111
+ :value => Value2.new([123.4, 345.6]),
3112
+ :error => [Error2.new([1.1, 2.2]), Error2.new([2.2, 3.3])],
3113
+ :unit => PosUnit.new('m'),
3114
+ :vel_time_unit => VelTimeUnit.new('s')
3115
+ )
3116
+
3117
+ Velocity2D.new(
3118
+ :unit => PosUnit.new('m'),
3119
+ :vel_time_unit => VelTimeUnit.new('s')
3120
+ )
3121
+ end
3122
+
3123
+ assert_raises ArgumentError do
3124
+ Velocity2D.new(:unit => PosUnit.new('m'))
3125
+ end
3126
+ assert_raises ArgumentError do
3127
+ Velocity2D.new(:vel_time_unit => VelTimeUnit.new('s'))
3128
+ end
3129
+
3130
+ vc = Velocity2D.new(:unit => PosUnit.new('m'), :vel_time_unit => VelTimeUnit.new('s'))
3131
+ assert_raises TypeError do
3132
+ vc.value = Error.new(10.2)
3133
+ end
3134
+
3135
+ assert_raises TypeError do
3136
+ vc.error = Value.new(123.4)
3137
+ end
3138
+ assert_raises ArgumentError do
3139
+ vc.error = [Error2.new([123.4, 5.1]), Error2.new([123.4, 5.1]), Error2.new([123.4, 5.1])]
3140
+ end
3141
+
3142
+ assert_raises TypeError do
3143
+ vc.resolution = Error.new(10.2)
3144
+ end
3145
+ assert_raises ArgumentError do
3146
+ vc.resolution = [Resolution2.new([123.4, 123.5]), Resolution2.new([123.4, 123.5]), Resolution2.new([123.4, 123.5])]
3147
+ end
3148
+
3149
+ assert_raises TypeError do
3150
+ vc.size = Error.new(10.2)
3151
+ end
3152
+ assert_raises ArgumentError do
3153
+ vc.size = [Size2.new([123.4, 123.4]), Size2.new([123.4, 123.4]), Size2.new([123.4, 123.4])]
3154
+ end
3155
+
3156
+ assert_raises TypeError do
3157
+ vc.pix_size = Error.new(10.2)
3158
+ end
3159
+ assert_raises ArgumentError do
3160
+ vc.pix_size = [PixSize2.new([123.4, 123.4]), PixSize2.new([123.4, 123.4]), PixSize2.new([123.4, 123.4])]
3161
+ end
3162
+
3163
+ assert_raises TypeError do
3164
+ vc.unit = VelTimeUnit.new('s')
3165
+ end
3166
+ assert_raises TypeError do
3167
+ vc.vel_time_unit = PosUnit.new('m')
3168
+ end
3169
+ end
3170
+
3171
+ def test_accessors
3172
+ vc = Velocity2D.new(
3173
+ :name => 'MyCoordinate',
3174
+ :value => Value2.new([123.4, 345.6]),
3175
+ :error => [Error2.new([1.1, 2.2]), Error2.new([2.2, 3.3])],
3176
+ :resolution => [Resolution2.new([0.1, 0.2]), Resolution2.new([0.5, 0.6])],
3177
+ :size => [Size2.new([10.1, 10.2]), Size2.new([8.7, 8.8])],
3178
+ :pix_size => [PixSize2.new([1.9, 2.0]), PixSize2.new([2.2, 3.3])],
3179
+ :unit => PosUnit.new('m'),
3180
+ :vel_time_unit => VelTimeUnit.new('s')
3181
+ )
3182
+
3183
+ assert_equal 'MyCoordinate', vc.name
3184
+ assert_equal Value2.new([123.4, 345.6]), vc.value
3185
+ assert_equal [Error2.new([1.1, 2.2]), Error2.new([2.2, 3.3])], vc.error
3186
+ assert_equal [Resolution2.new([0.1, 0.2]), Resolution2.new([0.5, 0.6])], vc.resolution
3187
+ assert_equal [Size2.new([10.1, 10.2]), Size2.new([8.7, 8.8])], vc.size
3188
+ assert_equal [PixSize2.new([1.9, 2.0]), PixSize2.new([2.2, 3.3])], vc.pix_size
3189
+ assert_equal PosUnit.new('m'), vc.unit
3190
+ assert_equal VelTimeUnit.new('s'), vc.vel_time_unit
3191
+
3192
+ vc.name = 'MyOtherCoordinate'
3193
+ assert_equal 'MyOtherCoordinate', vc.name
3194
+ vc.error = Error2.new([3.3, 4.4])
3195
+ assert_equal [Error2.new([3.3, 4.4])], vc.error
3196
+ vc.resolution = Resolution2.new([0.6, 0.7])
3197
+ assert_equal [Resolution2.new([0.6, 0.7])], vc.resolution
3198
+ vc.size = Size2.new([5.1, 5.2])
3199
+ assert_equal [Size2.new([5.1, 5.2])], vc.size
3200
+ vc.pix_size = PixSize2.new([3.1, 3.2])
3201
+ assert_equal [PixSize2.new([3.1, 3.2])], vc.pix_size
3202
+ vc.unit = PosUnit.new('lyr')
3203
+ assert_equal PosUnit.new('lyr'), vc.unit
3204
+ vc.vel_time_unit = VelTimeUnit.new('h')
3205
+ assert_equal VelTimeUnit.new('h'), vc.vel_time_unit
3206
+ end
3207
+
3208
+ def test_relationships
3209
+ v = Velocity2D.new(:unit => PosUnit.new('m'), :vel_time_unit => VelTimeUnit.new('s'))
3210
+ assert_kind_of Vector2Coordinate, v
3211
+ assert_kind_of Velocity, v
3212
+ end
3213
+
3214
+ def test_xml
3215
+ v1 = Velocity2D.new(
3216
+ :name => 'MyCoordinate',
3217
+ :value => Value2.new([123.4, 345.6]),
3218
+ :error => [Error2.new([1.1, 2.2]), Error2.new([2.2, 3.3])],
3219
+ :resolution => [Resolution2.new([0.1, 0.2]), Resolution2.new([0.5, 0.6])],
3220
+ :size => [Size2.new([10.1, 10.2]), Size2.new([8.7, 8.8])],
3221
+ :pix_size => [PixSize2.new([1.9, 2.0]), PixSize2.new([2.2, 3.3])],
3222
+ :unit => PosUnit.new('m'),
3223
+ :vel_time_unit => VelTimeUnit.new('s')
3224
+ )
3225
+
3226
+ v2 = Velocity2D.from_xml(v1.to_xml)
3227
+ assert_equal v1, v2
3228
+ end
3229
+ end
3230
+
3231
+ class Velocity3DTest < ::Test::Unit::TestCase
3232
+ def test_construction
3233
+ assert_nothing_raised do
3234
+ Velocity3D.new(
3235
+ :name => 'My Coordinate',
3236
+ :value => Value3.new([123.4, 345.6, 567.8]),
3237
+ :error => [Error3.new([1.1, 2.2, 3.3]), Error3.new([2.2, 3.3, 4.4])],
3238
+ :resolution => [Resolution3.new([0.1, 0.2, 0.3]), Resolution3.new([0.5, 0.6, 0.7])],
3239
+ :size => [Size3.new([10.1, 10.2, 10.3]), Size3.new([8.7, 8.8, 8.9])],
3240
+ :pix_size => [PixSize3.new([1.9, 2.0, 2.1]), PixSize3.new([2.2, 3.3, 4.4])],
3241
+ :unit => PosUnit.new('m'),
3242
+ :vel_time_unit => VelTimeUnit.new('s')
3243
+ )
3244
+
3245
+ Velocity3D.new(
3246
+ :value => Value3.new([123.4, 345.6, 567.8]),
3247
+ :error => [Error3.new([1.1, 2.2, 3.3]), Error3.new([2.2, 3.3, 4.4])],
3248
+ :resolution => [Resolution3.new([0.1, 0.2, 0.3]), Resolution3.new([0.5, 0.6, 0.7])],
3249
+ :size => [Size3.new([10.1, 10.2, 10.3]), Size3.new([8.7, 8.8, 8.9])],
3250
+ :pix_size => [PixSize3.new([1.9, 2.0, 2.1]), PixSize3.new([2.2, 3.3, 4.4])],
3251
+ :unit => PosUnit.new('m'),
3252
+ :vel_time_unit => VelTimeUnit.new('s')
3253
+ )
3254
+
3255
+ Velocity3D.new(
3256
+ :value => Value3.new([123.4, 345.6, 567.8]),
3257
+ :error => [Error3.new([1.1, 2.2, 3.3]), Error3.new([2.2, 3.3, 4.4])],
3258
+ :unit => PosUnit.new('m'),
3259
+ :vel_time_unit => VelTimeUnit.new('s')
3260
+ )
3261
+
3262
+ Velocity3D.new(
3263
+ :unit => PosUnit.new('m'),
3264
+ :vel_time_unit => VelTimeUnit.new('s')
3265
+ )
3266
+ end
3267
+
3268
+ assert_raises ArgumentError do
3269
+ Velocity3D.new(:unit => PosUnit.new('m'))
3270
+ end
3271
+ assert_raises ArgumentError do
3272
+ Velocity3D.new(:vel_time_unit => VelTimeUnit.new('s'))
3273
+ end
3274
+
3275
+ vc = Velocity3D.new(:unit => PosUnit.new('m'), :vel_time_unit => VelTimeUnit.new('s'))
3276
+ assert_raises TypeError do
3277
+ vc.value = Error.new(10.2)
3278
+ end
3279
+
3280
+ assert_raises TypeError do
3281
+ vc.error = Value.new(123.4)
3282
+ end
3283
+ assert_raises ArgumentError do
3284
+ vc.error = [Error3.new([123.4, 5.1, 2.2]), Error3.new([123.4, 5.1, 2.2]), Error3.new([123.4, 5.1, 2.2])]
3285
+ end
3286
+
3287
+ assert_raises TypeError do
3288
+ vc.resolution = Error.new(10.2)
3289
+ end
3290
+ assert_raises ArgumentError do
3291
+ vc.resolution = [Resolution3.new([123.4, 123.5, 1.1]), Resolution3.new([123.4, 123.5, 1.1]), Resolution3.new([123.4, 123.5, 1.1])]
3292
+ end
3293
+
3294
+ assert_raises TypeError do
3295
+ vc.size = Error.new(10.2)
3296
+ end
3297
+ assert_raises ArgumentError do
3298
+ vc.size = [Size3.new([123.4, 123.4, 123.4]), Size3.new([123.4, 123.4, 123.4]), Size3.new([123.4, 123.4, 123.4])]
3299
+ end
3300
+
3301
+ assert_raises TypeError do
3302
+ vc.pix_size = Error.new(10.2)
3303
+ end
3304
+ assert_raises ArgumentError do
3305
+ vc.pix_size = [PixSize3.new([123.4, 123.4, 123.4]), PixSize3.new([123.4, 123.4, 123.4]), PixSize3.new([123.4, 123.4, 123.4])]
3306
+ end
3307
+
3308
+ assert_raises TypeError do
3309
+ vc.unit = VelTimeUnit.new('s')
3310
+ end
3311
+ assert_raises TypeError do
3312
+ vc.vel_time_unit = PosUnit.new('m')
3313
+ end
3314
+ end
3315
+
3316
+ def test_accessors
3317
+ vc = Velocity3D.new(
3318
+ :name => 'MyCoordinate',
3319
+ :value => Value3.new([123.4, 345.6, 789.0]),
3320
+ :error => [Error3.new([1.1, 2.2, 3.3]), Error3.new([2.2, 3.3, 2.2])],
3321
+ :resolution => [Resolution3.new([0.1, 0.2, 0.5]), Resolution3.new([0.5, 0.6, 0.5])],
3322
+ :size => [Size3.new([10.1, 10.2, 1.1]), Size3.new([8.7, 8.8, 1.1])],
3323
+ :pix_size => [PixSize3.new([1.9, 2.0, 3.0]), PixSize3.new([2.2, 3.3, 4.1])],
3324
+ :unit => PosUnit.new('m'),
3325
+ :vel_time_unit => VelTimeUnit.new('s')
3326
+ )
3327
+
3328
+ assert_equal 'MyCoordinate', vc.name
3329
+ assert_equal Value3.new([123.4, 345.6, 789.0]), vc.value
3330
+ assert_equal [Error3.new([1.1, 2.2, 3.3]), Error3.new([2.2, 3.3, 2.2])], vc.error
3331
+ assert_equal [Resolution3.new([0.1, 0.2, 0.5]), Resolution3.new([0.5, 0.6, 0.5])], vc.resolution
3332
+ assert_equal [Size3.new([10.1, 10.2, 1.1]), Size3.new([8.7, 8.8, 1.1])], vc.size
3333
+ assert_equal [PixSize3.new([1.9, 2.0, 3.0]), PixSize3.new([2.2, 3.3, 4.1])], vc.pix_size
3334
+ assert_equal PosUnit.new('m'), vc.unit
3335
+ assert_equal VelTimeUnit.new('s'), vc.vel_time_unit
3336
+
3337
+ vc.name = 'MyOtherCoordinate'
3338
+ assert_equal 'MyOtherCoordinate', vc.name
3339
+ vc.error = Error3.new([3.3, 4.4, 5.5])
3340
+ assert_equal [Error3.new([3.3, 4.4, 5.5])], vc.error
3341
+ vc.resolution = Resolution3.new([0.6, 0.7, 0.8])
3342
+ assert_equal [Resolution3.new([0.6, 0.7, 0.8])], vc.resolution
3343
+ vc.size = Size3.new([5.1, 5.2, 5.3])
3344
+ assert_equal [Size3.new([5.1, 5.2, 5.3])], vc.size
3345
+ vc.pix_size = PixSize3.new([3.1, 3.2, 3.3])
3346
+ assert_equal [PixSize3.new([3.1, 3.2, 3.3])], vc.pix_size
3347
+ vc.unit = PosUnit.new('lyr')
3348
+ assert_equal PosUnit.new('lyr'), vc.unit
3349
+ vc.vel_time_unit = VelTimeUnit.new('h')
3350
+ assert_equal VelTimeUnit.new('h'), vc.vel_time_unit
3351
+ end
3352
+
3353
+ def test_relationships
3354
+ v = Velocity3D.new(:unit => PosUnit.new('m'), :vel_time_unit => VelTimeUnit.new('s'))
3355
+ assert_kind_of Vector3Coordinate, v
3356
+ assert_kind_of Velocity, v
3357
+ end
3358
+
3359
+ def test_xml
3360
+ v1 = Velocity3D.new(
3361
+ :name => 'MyCoordinate',
3362
+ :value => Value3.new([123.4, 345.6, 789.0]),
3363
+ :error => [Error3.new([1.1, 2.2, 3.3]), Error3.new([2.2, 3.3, 2.2])],
3364
+ :resolution => [Resolution3.new([0.1, 0.2, 0.5]), Resolution3.new([0.5, 0.6, 0.5])],
3365
+ :size => [Size3.new([10.1, 10.2, 1.1]), Size3.new([8.7, 8.8, 1.1])],
3366
+ :pix_size => [PixSize3.new([1.9, 2.0, 3.0]), PixSize3.new([2.2, 3.3, 4.1])],
3367
+ :unit => PosUnit.new('m'),
3368
+ :vel_time_unit => VelTimeUnit.new('s')
3369
+ )
3370
+
3371
+ v2 = Velocity3D.from_xml(v1.to_xml)
3372
+ assert_equal v1, v2
3373
+ end
3374
+ end
3375
+
3376
+ class FitsTest < ::Test::Unit::TestCase
3377
+ def test_constructor
3378
+ assert_nothing_raised do
3379
+ Fits.new(:uri => 'http://www.noao.edu/')
3380
+ Fits.new(:uri => 'http://www.noao.edu/', :hdu_num => 1)
3381
+ Fits.new(:uri => 'http://www.noao.edu/', :hdu_name => 'ext1')
3382
+ end
3383
+ end
3384
+
3385
+ def test_accessors
3386
+ f = Fits.new(:uri => 'http://www.noao.edu/', :hdu_num => 1, :hdu_name => 'ext1')
3387
+ assert_equal URI.parse('http://www.noao.edu/'), f.uri
3388
+ assert_equal 1, f.hdu_num
3389
+ assert_equal 'ext1', f.hdu_name
3390
+
3391
+ f.uri = 'http://www.stsci.edu/'
3392
+ assert_equal URI.parse('http://www.stsci.edu/'), f.uri
3393
+ f.hdu_num = 2
3394
+ assert_equal 2, f.hdu_num
3395
+ f.hdu_name = 'ext2'
3396
+ assert_equal 'ext2', f.hdu_name
3397
+ end
3398
+
3399
+ def test_xml
3400
+ f1 = Fits.new(:uri => 'http://www.noao.edu/', :hdu_name => 'ext1', :hdu_num => 1)
3401
+
3402
+ f2 = Fits.from_xml(f1.to_xml)
3403
+ assert_equal f1, f2
3404
+ end
3405
+ end
3406
+
3407
+ class CoordFitsColumnsTest < ::Test::Unit::TestCase
3408
+ def test_constructor
3409
+ assert_nothing_raised do
3410
+ CoordFitsColumns.new(:name => 'column1')
3411
+ CoordFitsColumns.new(
3412
+ :name => 'column1',
3413
+ :value => 'OBJECT1',
3414
+ :error => 'ERROR1',
3415
+ :resolution => 'RESOLUTION1',
3416
+ :size => 'SIZE1',
3417
+ :pix_size => 'PIXSIZE1'
3418
+ )
3419
+ end
3420
+
3421
+ assert_raises ArgumentError do
3422
+ CoordFitsColumns.new
3423
+ end
3424
+ end
3425
+
3426
+ def test_accessors
3427
+ c = CoordFitsColumns.new(
3428
+ :name => 'column1',
3429
+ :value => 'OBJECT1',
3430
+ :error => 'ERROR1',
3431
+ :resolution => 'RESOLUTION1',
3432
+ :size => 'SIZE1',
3433
+ :pix_size => 'PIXSIZE1'
3434
+ )
3435
+ assert_equal 'column1', c.name
3436
+ assert_equal 'OBJECT1', c.value
3437
+ assert_equal 'ERROR1', c.error
3438
+ assert_equal 'RESOLUTION1', c.resolution
3439
+ assert_equal 'SIZE1', c.size
3440
+ assert_equal 'PIXSIZE1', c.pix_size
3441
+
3442
+ c.name = 'column2'
3443
+ assert_equal 'column2', c.name
3444
+ c.value = 'OBJECT2'
3445
+ assert_equal 'OBJECT2', c.value
3446
+ c.error = 'ERROR2'
3447
+ assert_equal 'ERROR2', c.error
3448
+ c.resolution = 'RESOLUTION2'
3449
+ assert_equal 'RESOLUTION2', c.resolution
3450
+ c.size = 'SIZE2'
3451
+ assert_equal 'SIZE2', c.size
3452
+ c.pix_size = 'PIXSIZE2'
3453
+ assert_equal c.pix_size, 'PIXSIZE2'
3454
+ end
3455
+
3456
+ def test_xml
3457
+ c1 = CoordFitsColumns.new(
3458
+ :name => 'column1',
3459
+ :value => 'OBJECT1',
3460
+ :error => 'ERROR1',
3461
+ :resolution => 'RESOLUTION1',
3462
+ :size => 'SIZE1',
3463
+ :pix_size => 'PIXSIZE1'
3464
+ )
3465
+
3466
+ c2 = CoordFitsColumns.from_xml(c1.to_xml('FITSPosition'))
3467
+ assert_equal c1, c2
3468
+ end
3469
+ end
3470
+
3471
+ class AstroCoordsFileTest < ::Test::Unit::TestCase
3472
+ def test_constructor
3473
+ assert_nothing_raised do
3474
+ AstroCoordsFile.new(:file => Fits.new(:uri => 'http://www.noao.edu/'))
3475
+ AstroCoordsFile.new(
3476
+ :file => Fits.new(:uri => 'http://www.noao.edu/'),
3477
+ :time => CoordFitsColumns.new(:name => 'col1'),
3478
+ :position => CoordFitsColumns.new(:name => 'col2'),
3479
+ :velocity => CoordFitsColumns.new(:name => 'col3'),
3480
+ :spectral => CoordFitsColumns.new(:name => 'col4'),
3481
+ :redshift => CoordFitsColumns.new(:name => 'col5')
3482
+ )
3483
+ end
3484
+
3485
+ assert_raises ArgumentError do
3486
+ AstroCoordsFile.new
3487
+ end
3488
+ end
3489
+
3490
+ def test_accessors
3491
+ c = AstroCoordsFile.new(
3492
+ :file => Fits.new(:uri => 'http://www.noao.edu/'),
3493
+ :time => CoordFitsColumns.new(:name => 'col1'),
3494
+ :position => CoordFitsColumns.new(:name => 'col2'),
3495
+ :velocity => CoordFitsColumns.new(:name => 'col3'),
3496
+ :spectral => CoordFitsColumns.new(:name => 'col4'),
3497
+ :redshift => CoordFitsColumns.new(:name => 'col5')
3498
+ )
3499
+
3500
+ assert_equal Fits.new(:uri => 'http://www.noao.edu/'), c.file
3501
+ assert_equal CoordFitsColumns.new(:name => 'col1'), c.time
3502
+ assert_equal CoordFitsColumns.new(:name => 'col2'), c.position
3503
+ assert_equal CoordFitsColumns.new(:name => 'col3'), c.velocity
3504
+ assert_equal CoordFitsColumns.new(:name => 'col4'), c.spectral
3505
+ assert_equal CoordFitsColumns.new(:name => 'col5'), c.redshift
3506
+
3507
+ c.file = Fits.new(:uri => 'http://www.stsci.edu/')
3508
+ assert_equal Fits.new(:uri => 'http://www.stsci.edu/'), c.file
3509
+ c.time = CoordFitsColumns.new(:name => 'col0')
3510
+ assert_equal CoordFitsColumns.new(:name => 'col0'), c.time
3511
+ c.position = CoordFitsColumns.new(:name => 'col1')
3512
+ assert_equal CoordFitsColumns.new(:name => 'col1'), c.position
3513
+ c.velocity = CoordFitsColumns.new(:name => 'col2')
3514
+ assert_equal CoordFitsColumns.new(:name => 'col2'), c.velocity
3515
+ c.spectral = CoordFitsColumns.new(:name => 'col3')
3516
+ assert_equal CoordFitsColumns.new(:name => 'col3'), c.spectral
3517
+ c.redshift = CoordFitsColumns.new(:name => 'col4')
3518
+ assert_equal CoordFitsColumns.new(:name => 'col4'), c.redshift
3519
+ end
3520
+
3521
+ def test_xml
3522
+ c1 = AstroCoordsFile.new(
3523
+ :file => Fits.new(:uri => 'http://www.noao.edu/'),
3524
+ :time => CoordFitsColumns.new(:name => 'col1'),
3525
+ :position => CoordFitsColumns.new(:name => 'col2'),
3526
+ :velocity => CoordFitsColumns.new(:name => 'col3'),
3527
+ :spectral => CoordFitsColumns.new(:name => 'col4'),
3528
+ :redshift => CoordFitsColumns.new(:name => 'col5')
3529
+ )
3530
+
3531
+ c2 = AstroCoordsFile.from_xml(c1.to_xml)
3532
+ assert_equal c1, c2
3533
+ end
3534
+ end
3535
+
3536
+ class CoordsTypeTest < ::Test::Unit::TestCase
3537
+ def test_constructor
3538
+ assert_nothing_raised do
3539
+ CoordsType.new(:coord_system_id => 'coord_ref')
3540
+ CoordsType.new(
3541
+ :coord_system_id => 'coord_ref',
3542
+ :coordinates => [PixelCoordinate.new(:value => 1.2), StringCoordinate.new(:value => 'column')]
3543
+ )
3544
+ end
3545
+
3546
+ assert_raises ArgumentError do
3547
+ ::CoordsType.new
3548
+ end
3549
+ end
3550
+
3551
+ def test_accessor
3552
+ c = CoordsType.new(
3553
+ :coord_system_id => 'coord_ref',
3554
+ :coordinates => [PixelCoordinate.new(:value => 1.2), StringCoordinate.new(:value => 'column')]
3555
+ )
3556
+
3557
+ assert_equal IdRef.new('coord_ref'), c.coord_system_id
3558
+ assert_equal ListOfCoordinates.new([PixelCoordinate.new(:value => 1.2), StringCoordinate.new(:value => 'column')]), c.coordinates
3559
+
3560
+ c.coord_system_id = 'coord_ref2'
3561
+ assert_equal IdRef.new('coord_ref2'), c.coord_system_id
3562
+ c.coordinates = [PixelCoordinate.new(:value => 1.2), StringCoordinate.new(:value => 'column'), PixelCoordinate.new(:value => 5.4)]
3563
+ assert_equal(
3564
+ ListOfCoordinates.new([PixelCoordinate.new(:value => 1.2), StringCoordinate.new(:value => 'column'), PixelCoordinate.new(:value => 5.4)]),
3565
+ c.coordinates
3566
+ )
3567
+ end
3568
+ end
3569
+
3570
+ class AstroCoordsTypeTest < ::Test::Unit::TestCase
3571
+ def test_constructor
3572
+ assert_nothing_raised do
3573
+ AstroCoordsType.new(
3574
+ :coord_system_id => 'FK5-UTC-VEL',
3575
+ :time => TimeCoordinate.new(:name => 'Time'),
3576
+ :position => Position1D.new(:name => 'FK5Cart', :unit => PosUnit.new('m')),
3577
+ :velocity => Velocity1D.new(:name => 'Vel', :unit => PosUnit.new('m'), :vel_time_unit => VelTimeUnit.new('h')),
3578
+ :spectral => Spectral.new(:name => 'Spectrum'),
3579
+ :redshift => Redshift.new(:name => 'Redshift'),
3580
+ :coord_file => AstroCoordsFile.new(:file => Fits.new(:uri => 'http://www.noao.edu/'))
3581
+ )
3582
+ end
3583
+
3584
+ assert_raises ArgumentError do
3585
+ AstroCoordsType.new
3586
+ end
3587
+ end
3588
+
3589
+ def test_accessors
3590
+ c = AstroCoordsType.new(
3591
+ :coord_system_id => 'FK5-UTC-VEL',
3592
+ :time => TimeCoordinate.new(:name => 'Time'),
3593
+ :position => Position1D.new(:name => 'FK5Cart', :unit => PosUnit.new('m')),
3594
+ :velocity => Velocity1D.new(:name => 'Vel', :unit => PosUnit.new('m'), :vel_time_unit => VelTimeUnit.new('h')),
3595
+ :spectral => Spectral.new(:name => 'Spectrum'),
3596
+ :redshift => Redshift.new(:name => 'Redshift'),
3597
+ :coord_file => AstroCoordsFile.new(:file => Fits.new(:uri => 'http://www.noao.edu/'))
3598
+ )
3599
+
3600
+ assert_equal IdRef.new('FK5-UTC-VEL'), c.coord_system_id
3601
+ assert_equal TimeCoordinate.new(:name => 'Time'), c.time
3602
+ assert_equal Position1D.new(:name => 'FK5Cart', :unit => PosUnit.new('m')), c.position
3603
+ assert_equal Velocity1D.new(:name => 'Vel', :unit => PosUnit.new('m'), :vel_time_unit => VelTimeUnit.new('h')), c.velocity
3604
+ assert_equal Spectral.new(:name => 'Spectrum'), c.spectral
3605
+ assert_equal Redshift.new(:name => 'Redshift'), c.redshift
3606
+ assert_equal AstroCoordsFile.new(:file => Fits.new(:uri => 'http://www.noao.edu/')), c.coord_file
3607
+
3608
+ c.coord_system_id = 'FK5-LOCAL-VEL'
3609
+ assert_equal IdRef.new('FK5-LOCAL-VEL'), c.coord_system_id
3610
+ c.time = TimeCoordinate.new(:name => 'Time1')
3611
+ assert_equal TimeCoordinate.new(:name => 'Time1'), c.time
3612
+ c.position = Position1D.new(:name => 'FK5Cart', :unit => PosUnit.new('lyr'))
3613
+ assert_equal Position1D.new(:name => 'FK5Cart', :unit => PosUnit.new('lyr')), c.position
3614
+ c.velocity = Velocity1D.new(:name => 'Vel', :unit => PosUnit.new('lyr'), :vel_time_unit => VelTimeUnit.new('s'))
3615
+ assert_equal Velocity1D.new(:name => 'Vel', :unit => PosUnit.new('lyr'), :vel_time_unit => VelTimeUnit.new('s')), c.velocity
3616
+ c.spectral = Spectral.new(:name => 'Spectrum1')
3617
+ assert_equal Spectral.new(:name => 'Spectrum1'), c.spectral
3618
+ c.redshift = Redshift.new(:name => 'Redshift1')
3619
+ assert_equal Redshift.new(:name => 'Redshift1'), c.redshift
3620
+ c.coord_file = AstroCoordsFile.new(:file => Fits.new(:uri => 'http://www.stsci.edu/'))
3621
+ assert_equal AstroCoordsFile.new(:file => Fits.new(:uri => 'http://www.stsci.edu/')), c.coord_file
3622
+ end
3623
+
3624
+ def test_relationships
3625
+ c = AstroCoordsType.new(:coord_system_id => 'FK5-UTC-VEL')
3626
+ assert_kind_of CoordsType, c
3627
+ end
3628
+ end
3629
+
3630
+ class AstroCoordsTest < ::Test::Unit::TestCase
3631
+ def test_xml
3632
+ c1 = AstroCoords.new(
3633
+ :coord_system_id => 'FK5-UTC-VEL',
3634
+ :time => TimeCoordinate.new(:name => 'Time'),
3635
+ :position => Position1D.new(:name => 'FK5Cart', :unit => PosUnit.new('m')),
3636
+ :velocity => Velocity1D.new(:name => 'Vel', :unit => PosUnit.new('m'), :vel_time_unit => VelTimeUnit.new('h')),
3637
+ :spectral => Spectral.new(:name => 'Spectrum'),
3638
+ :redshift => Redshift.new(:name => 'Redshift'),
3639
+ :coord_file => AstroCoordsFile.new(:file => Fits.new(:uri => 'http://www.noao.edu/'))
3640
+ )
3641
+
3642
+ c2 = AstroCoords.from_xml(c1.to_xml)
3643
+ assert_equal c1, c2
3644
+ end
3645
+ end
3646
+
3647
+ class PixelCoordsTypeTest < ::Test::Unit::TestCase
3648
+ def test_initialize
3649
+ assert_nothing_raised do
3650
+ PixelCoordsType.new(
3651
+ :coordinates => [PixelCoordinate.new(:value => 2.3)],
3652
+ :coord_system_id => IdRef.new('ref')
3653
+ )
3654
+ end
3655
+
3656
+ assert_raises ArgumentError do
3657
+ PixelCoordsType.new
3658
+ end
3659
+
3660
+ assert_raises RuntimeError do
3661
+ PixelCoordsType.new(
3662
+ :coordinates => [],
3663
+ :coord_system_id => IdRef.new('ref')
3664
+ )
3665
+ end
3666
+ end
3667
+
3668
+ def test_accessors
3669
+ c = PixelCoordsType.new(
3670
+ :coordinates => [PixelCoordinate.new(:value => 2.3)],
3671
+ :coord_system_id => IdRef.new('ref')
3672
+ )
3673
+
3674
+ assert_equal ListOfPixelCoordinates.new([PixelCoordinate.new(:value => 2.3)]), c.coordinates
3675
+ assert_equal IdRef.new('ref'), c.coord_system_id
3676
+
3677
+ c.coordinates = [PixelCoordinate.new(:value => 2.3), PixelCoordinate.new(:value => 1.1)]
3678
+ assert_equal ListOfPixelCoordinates.new([PixelCoordinate.new(:value => 2.3), PixelCoordinate.new(:value => 1.1)]), c.coordinates
3679
+ c.coord_system_id = 'ref2'
3680
+ assert_equal IdRef.new('ref2'), c.coord_system_id
3681
+ end
3682
+
3683
+ def test_relationships
3684
+ assert_kind_of CoordsType, PixelCoordsType.new(:coord_system_id => IdRef.new('ref'))
3685
+ end
3686
+ end
3687
+
3688
+ class PixelCoordsTest < ::Test::Unit::TestCase
3689
+ def test_xml
3690
+ c1 = PixelCoords.new(
3691
+ :coordinates => [PixelCoordinate.new(:value => 2.3, :name => 'pixcoord1')],
3692
+ :coord_system_id => IdRef.new('ref')
3693
+ )
3694
+
3695
+ c2 = PixelCoords.from_xml(c1.to_xml)
3696
+ assert_equal c1, c2
3697
+ end
3698
+ end
3699
+
3700
+ end
3701
+ end
3702
+ end
3703
+ end
3704
+ end