voruby 1.1.1 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
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