openehr 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (384) hide show
  1. data/.document +5 -0
  2. data/.rspec +2 -0
  3. data/.travis.yml +3 -0
  4. data/Gemfile +23 -0
  5. data/Guardfile +12 -0
  6. data/History.txt +36 -0
  7. data/PostInstall.txt +9 -0
  8. data/README.rdoc +82 -0
  9. data/Rakefile +44 -0
  10. data/VERSION +1 -0
  11. data/doc/openehr_terminology.xml +2700 -0
  12. data/lib/openehr.rb +11 -0
  13. data/lib/openehr/am.rb +8 -0
  14. data/lib/openehr/am/archetype.rb +133 -0
  15. data/lib/openehr/am/archetype/assertion.rb +190 -0
  16. data/lib/openehr/am/archetype/constraint_model.rb +328 -0
  17. data/lib/openehr/am/archetype/constraint_model/primitive.rb +327 -0
  18. data/lib/openehr/am/archetype/ontology.rb +126 -0
  19. data/lib/openehr/am/openehr_profile.rb +9 -0
  20. data/lib/openehr/am/openehr_profile/data_types.rb +13 -0
  21. data/lib/openehr/am/openehr_profile/data_types/basic.rb +114 -0
  22. data/lib/openehr/am/openehr_profile/data_types/quantity.rb +67 -0
  23. data/lib/openehr/am/openehr_profile/data_types/text.rb +22 -0
  24. data/lib/openehr/assumed_library_types.rb +691 -0
  25. data/lib/openehr/parser.rb +23 -0
  26. data/lib/openehr/parser/adl.rb +57 -0
  27. data/lib/openehr/parser/adl_grammar.tt +245 -0
  28. data/lib/openehr/parser/adl_parser.rb +52 -0
  29. data/lib/openehr/parser/cadl_grammar.tt +1527 -0
  30. data/lib/openehr/parser/cadl_node.rb +44 -0
  31. data/lib/openehr/parser/dadl.rb +13 -0
  32. data/lib/openehr/parser/dadl_grammar.tt +358 -0
  33. data/lib/openehr/parser/exception.rb +68 -0
  34. data/lib/openehr/parser/shared_token_grammar.tt +1229 -0
  35. data/lib/openehr/parser/validator.rb +19 -0
  36. data/lib/openehr/parser/xml_perser.rb +13 -0
  37. data/lib/openehr/rm.rb +15 -0
  38. data/lib/openehr/rm/common.rb +14 -0
  39. data/lib/openehr/rm/common/archetyped.rb +182 -0
  40. data/lib/openehr/rm/common/change_control.rb +332 -0
  41. data/lib/openehr/rm/common/directory.rb +29 -0
  42. data/lib/openehr/rm/common/generic.rb +216 -0
  43. data/lib/openehr/rm/common/resource.rb +154 -0
  44. data/lib/openehr/rm/composition.rb +103 -0
  45. data/lib/openehr/rm/composition/content.rb +22 -0
  46. data/lib/openehr/rm/composition/content/entry.rb +253 -0
  47. data/lib/openehr/rm/composition/content/navigation.rb +31 -0
  48. data/lib/openehr/rm/data_structures.rb +25 -0
  49. data/lib/openehr/rm/data_structures/history.rb +117 -0
  50. data/lib/openehr/rm/data_structures/item_structure.rb +218 -0
  51. data/lib/openehr/rm/data_structures/item_structure/representation.rb +63 -0
  52. data/lib/openehr/rm/data_types.rb +14 -0
  53. data/lib/openehr/rm/data_types/basic.rb +108 -0
  54. data/lib/openehr/rm/data_types/charset.lst +818 -0
  55. data/lib/openehr/rm/data_types/charset_extract.rb +24 -0
  56. data/lib/openehr/rm/data_types/encapsulated.rb +98 -0
  57. data/lib/openehr/rm/data_types/quantity.rb +402 -0
  58. data/lib/openehr/rm/data_types/quantity/date_time.rb +256 -0
  59. data/lib/openehr/rm/data_types/text.rb +169 -0
  60. data/lib/openehr/rm/data_types/time_specification.rb +75 -0
  61. data/lib/openehr/rm/data_types/uri.rb +83 -0
  62. data/lib/openehr/rm/demographic.rb +269 -0
  63. data/lib/openehr/rm/ehr.rb +162 -0
  64. data/lib/openehr/rm/integration.rb +27 -0
  65. data/lib/openehr/rm/security.rb +12 -0
  66. data/lib/openehr/rm/support.rb +14 -0
  67. data/lib/openehr/rm/support/definition.rb +15 -0
  68. data/lib/openehr/rm/support/identification.rb +412 -0
  69. data/lib/openehr/rm/support/measurement.rb +17 -0
  70. data/lib/openehr/rm/support/terminology.rb +135 -0
  71. data/lib/openehr/serializer.rb +272 -0
  72. data/lib/openehr/terminology.rb +7 -0
  73. data/lib/openehr/terminology/open_ehr_terminology.rb +41 -0
  74. data/lib/openehr/writer.rb +12 -0
  75. data/openehr.gemspec +472 -0
  76. data/spec/lib/openehr/am/archetype/archetype_spec.rb +103 -0
  77. data/spec/lib/openehr/am/archetype/assertion/assertion_spec.rb +60 -0
  78. data/spec/lib/openehr/am/archetype/assertion/assertion_variable_spec.rb +30 -0
  79. data/spec/lib/openehr/am/archetype/assertion/expr_binary_operator.rb +40 -0
  80. data/spec/lib/openehr/am/archetype/assertion/expr_item_spec.rb +28 -0
  81. data/spec/lib/openehr/am/archetype/assertion/expr_leaf_spec.rb +34 -0
  82. data/spec/lib/openehr/am/archetype/assertion/expr_operator_spec.rb +25 -0
  83. data/spec/lib/openehr/am/archetype/assertion/expr_unary_operator_spec.rb +26 -0
  84. data/spec/lib/openehr/am/archetype/assertion/operator_kind_spec.rb +114 -0
  85. data/spec/lib/openehr/am/archetype/constraint_model/archetype_constraint_spec.rb +56 -0
  86. data/spec/lib/openehr/am/archetype/constraint_model/archetype_internal_ref_spec.rb +36 -0
  87. data/spec/lib/openehr/am/archetype/constraint_model/archetype_slot_spec.rb +61 -0
  88. data/spec/lib/openehr/am/archetype/constraint_model/c_attribute_spec.rb +59 -0
  89. data/spec/lib/openehr/am/archetype/constraint_model/c_complex_object_spec.rb +39 -0
  90. data/spec/lib/openehr/am/archetype/constraint_model/c_defined_object_spec.rb +53 -0
  91. data/spec/lib/openehr/am/archetype/constraint_model/c_domain_type_spec.rb +25 -0
  92. data/spec/lib/openehr/am/archetype/constraint_model/c_multiple_attribute_spec.rb +23 -0
  93. data/spec/lib/openehr/am/archetype/constraint_model/c_object_spec.rb +61 -0
  94. data/spec/lib/openehr/am/archetype/constraint_model/c_primitive_object_spec.rb +33 -0
  95. data/spec/lib/openehr/am/archetype/constraint_model/c_reference_object_spec.rb +17 -0
  96. data/spec/lib/openehr/am/archetype/constraint_model/c_single_attribute_spec.rb +22 -0
  97. data/spec/lib/openehr/am/archetype/constraint_model/cardinality_spec.rb +68 -0
  98. data/spec/lib/openehr/am/archetype/constraint_model/constraint_ref_spec.rb +29 -0
  99. data/spec/lib/openehr/am/archetype/constraint_model/primitive/c_boolean_spec.rb +57 -0
  100. data/spec/lib/openehr/am/archetype/constraint_model/primitive/c_date_spec.rb +52 -0
  101. data/spec/lib/openehr/am/archetype/constraint_model/primitive/c_date_time_spec.rb +136 -0
  102. data/spec/lib/openehr/am/archetype/constraint_model/primitive/c_duration_spec.rb +41 -0
  103. data/spec/lib/openehr/am/archetype/constraint_model/primitive/c_integer_spec.rb +67 -0
  104. data/spec/lib/openehr/am/archetype/constraint_model/primitive/c_primitive_spec.rb +41 -0
  105. data/spec/lib/openehr/am/archetype/constraint_model/primitive/c_real_spec.rb +19 -0
  106. data/spec/lib/openehr/am/archetype/constraint_model/primitive/c_string_spec.rb +73 -0
  107. data/spec/lib/openehr/am/archetype/constraint_model/primitive/c_time_spec.rb +104 -0
  108. data/spec/lib/openehr/am/archetype/ontology/archetype_ontology_spec.rb +97 -0
  109. data/spec/lib/openehr/am/archetype/ontology/archetype_term_spec.rb +43 -0
  110. data/spec/lib/openehr/am/archetype/validity_kind_spec.rb +42 -0
  111. data/spec/lib/openehr/am/openehr_profile/data_types/basic/c_dv_state_spec.rb +34 -0
  112. data/spec/lib/openehr/am/openehr_profile/data_types/basic/non_terminal_state_spec.rb +36 -0
  113. data/spec/lib/openehr/am/openehr_profile/data_types/basic/state_machine_spec.rb +34 -0
  114. data/spec/lib/openehr/am/openehr_profile/data_types/basic/state_spec.rb +26 -0
  115. data/spec/lib/openehr/am/openehr_profile/data_types/basic/terminal_state_spec.rb +18 -0
  116. data/spec/lib/openehr/am/openehr_profile/data_types/basic/transition_spec.rb +62 -0
  117. data/spec/lib/openehr/am/openehr_profile/data_types/quantity/c_dv_ordinal_spec.rb +41 -0
  118. data/spec/lib/openehr/am/openehr_profile/data_types/quantity/c_dv_quantity_spec.rb +50 -0
  119. data/spec/lib/openehr/am/openehr_profile/data_types/quantity/c_quantity_item_spec.rb +46 -0
  120. data/spec/lib/openehr/am/openehr_profile/data_types/text/c_code_phrase_spec.rb +34 -0
  121. data/spec/lib/openehr/assumed_library_types/interval_spec.rb +145 -0
  122. data/spec/lib/openehr/assumed_library_types/iso8601_date_spec.rb +236 -0
  123. data/spec/lib/openehr/assumed_library_types/iso8601_date_time_spec.rb +47 -0
  124. data/spec/lib/openehr/assumed_library_types/iso8601_duration_spec.rb +150 -0
  125. data/spec/lib/openehr/assumed_library_types/iso8601_time_spec.rb +234 -0
  126. data/spec/lib/openehr/assumed_library_types/iso8601_timezone_spec.rb +57 -0
  127. data/spec/lib/openehr/assumed_library_types/time_definitions_spec.rb +136 -0
  128. data/spec/lib/openehr/assumed_library_types/timezone_spec.rb +42 -0
  129. data/spec/lib/openehr/parser/adl14/adl-test-ENTRY.assumed_types.v1.adl +88 -0
  130. data/spec/lib/openehr/parser/adl14/adl-test-ENTRY.basic_types.v1.adl +143 -0
  131. data/spec/lib/openehr/parser/adl14/adl-test-ENTRY.basic_types_fail.v1.adl +50 -0
  132. data/spec/lib/openehr/parser/adl14/adl-test-ENTRY.most_minimal.v1.adl +27 -0
  133. data/spec/lib/openehr/parser/adl14/adl-test-ENTRY.structure_test1.v1.adl +46 -0
  134. data/spec/lib/openehr/parser/adl14/adl-test-SOME_TYPE.generic_type_basic.draft.adl +56 -0
  135. data/spec/lib/openehr/parser/adl14/adl-test-SOME_TYPE.generic_type_use_node.draft.adl +63 -0
  136. data/spec/lib/openehr/parser/adl14/adl-test-car.paths.test.adl +80 -0
  137. data/spec/lib/openehr/parser/adl14/adl-test-car.use_node.test.adl +87 -0
  138. data/spec/lib/openehr/parser/adl14/adl-test-composition.dv_coded_text.test.adl +29 -0
  139. data/spec/lib/openehr/parser/adl14/adl-test-entry.archetype_bindings.test.adl +47 -0
  140. data/spec/lib/openehr/parser/adl14/adl-test-entry.archetype_desc_missing_purpose.test.adl +45 -0
  141. data/spec/lib/openehr/parser/adl14/adl-test-entry.archetype_description.test.adl +61 -0
  142. data/spec/lib/openehr/parser/adl14/adl-test-entry.archetype_description2.test.adl +45 -0
  143. data/spec/lib/openehr/parser/adl14/adl-test-entry.archetype_identification.test.adl +26 -0
  144. data/spec/lib/openehr/parser/adl14/adl-test-entry.archetype_internal_ref.test.adl +36 -0
  145. data/spec/lib/openehr/parser/adl14/adl-test-entry.archetype_internal_ref2.test.adl +36 -0
  146. data/spec/lib/openehr/parser/adl14/adl-test-entry.archetype_language.test.adl +47 -0
  147. data/spec/lib/openehr/parser/adl14/adl-test-entry.archetype_language_no_accreditation.test.adl +38 -0
  148. data/spec/lib/openehr/parser/adl14/adl-test-entry.archetype_language_order_of_translation_details.test.adl +40 -0
  149. data/spec/lib/openehr/parser/adl14/adl-test-entry.archetype_ontology.test.adl +25 -0
  150. data/spec/lib/openehr/parser/adl14/adl-test-entry.archetype_slot.test.adl +40 -0
  151. data/spec/lib/openehr/parser/adl14/adl-test-entry.archetype_slot.test2.adl +37 -0
  152. data/spec/lib/openehr/parser/adl14/adl-test-entry.archetype_uncommonkeys.test.adl +29 -0
  153. data/spec/lib/openehr/parser/adl14/adl-test-entry.basic_types.test.adl +272 -0
  154. data/spec/lib/openehr/parser/adl14/adl-test-entry.c_code_phrase.test.adl +77 -0
  155. data/spec/lib/openehr/parser/adl14/adl-test-entry.c_dv_ordinal.test.adl +66 -0
  156. data/spec/lib/openehr/parser/adl14/adl-test-entry.c_dv_quantity_empty.test.adl +46 -0
  157. data/spec/lib/openehr/parser/adl14/adl-test-entry.c_dv_quantity_full.test.adl +64 -0
  158. data/spec/lib/openehr/parser/adl14/adl-test-entry.c_dv_quantity_full2.test.adl +64 -0
  159. data/spec/lib/openehr/parser/adl14/adl-test-entry.c_dv_quantity_full3.test.adl +64 -0
  160. data/spec/lib/openehr/parser/adl14/adl-test-entry.c_dv_quantity_item_units_only.test.adl +55 -0
  161. data/spec/lib/openehr/parser/adl14/adl-test-entry.c_dv_quantity_list.test.adl +58 -0
  162. data/spec/lib/openehr/parser/adl14/adl-test-entry.c_dv_quantity_property.test.adl +47 -0
  163. data/spec/lib/openehr/parser/adl14/adl-test-entry.c_dv_quantity_reversed.test.adl +59 -0
  164. data/spec/lib/openehr/parser/adl14/adl-test-entry.constraint_binding.test.adl +37 -0
  165. data/spec/lib/openehr/parser/adl14/adl-test-entry.constraint_ref.test.adl +43 -0
  166. data/spec/lib/openehr/parser/adl14/adl-test-entry.datetime.test.adl +183 -0
  167. data/spec/lib/openehr/parser/adl14/adl-test-entry.domain_types.test.adl +97 -0
  168. data/spec/lib/openehr/parser/adl14/adl-test-entry.durations.test.adl +109 -0
  169. data/spec/lib/openehr/parser/adl14/adl-test-entry.empty_other_contributors.test.adl +42 -0
  170. data/spec/lib/openehr/parser/adl14/adl-test-entry.missing_language.test.adl +23 -0
  171. data/spec/lib/openehr/parser/adl14/adl-test-entry.mixed_node_types.draft.adl +61 -0
  172. data/spec/lib/openehr/parser/adl14/adl-test-entry.most_minimal.test.adl +23 -0
  173. data/spec/lib/openehr/parser/adl14/adl-test-entry.multi_language.test.adl +52 -0
  174. data/spec/lib/openehr/parser/adl14/adl-test-entry.special_string.test.adl +88 -0
  175. data/spec/lib/openehr/parser/adl14/adl-test-entry.structure_test1.test.adl +45 -0
  176. data/spec/lib/openehr/parser/adl14/adl-test-entry.structure_test2.test.adl +45 -0
  177. data/spec/lib/openehr/parser/adl14/adl-test-entry.term_binding.test.adl +37 -0
  178. data/spec/lib/openehr/parser/adl14/adl-test-entry.term_binding2.test.adl +32 -0
  179. data/spec/lib/openehr/parser/adl14/adl-test-entry.testtranslations.test.adl +83 -0
  180. data/spec/lib/openehr/parser/adl14/adl-test-entry.translations_author_language.test.adl +34 -0
  181. data/spec/lib/openehr/parser/adl14/adl-test-entry.translations_language_author.test.adl +34 -0
  182. data/spec/lib/openehr/parser/adl14/adl-test-entry.unicode_BOM_support.test.adl +41 -0
  183. data/spec/lib/openehr/parser/adl14/adl-test-entry.unicode_support.test.adl +41 -0
  184. data/spec/lib/openehr/parser/adl14/openEHR-EHR-ACTION.imaging.v1.adl +275 -0
  185. data/spec/lib/openehr/parser/adl14/openEHR-EHR-ACTION.referral.v1.adl +351 -0
  186. data/spec/lib/openehr/parser/adl14/openEHR-EHR-CLUSTER.auscultation-chest.v1.adl +765 -0
  187. data/spec/lib/openehr/parser/adl14/openEHR-EHR-CLUSTER.auscultation.v1.adl +48 -0
  188. data/spec/lib/openehr/parser/adl14/openEHR-EHR-CLUSTER.dimensions-circumference.v1.adl +134 -0
  189. data/spec/lib/openehr/parser/adl14/openEHR-EHR-CLUSTER.dimensions.v1.adl +241 -0
  190. data/spec/lib/openehr/parser/adl14/openEHR-EHR-CLUSTER.exam-abdomen.v1.adl +321 -0
  191. data/spec/lib/openehr/parser/adl14/openEHR-EHR-CLUSTER.exam-chest.v1.adl +379 -0
  192. data/spec/lib/openehr/parser/adl14/openEHR-EHR-CLUSTER.exam-fetus.v1.adl +577 -0
  193. data/spec/lib/openehr/parser/adl14/openEHR-EHR-CLUSTER.exam-generic-joint.v1.adl +146 -0
  194. data/spec/lib/openehr/parser/adl14/openEHR-EHR-CLUSTER.exam-generic-lymphnode.v1.adl +176 -0
  195. data/spec/lib/openehr/parser/adl14/openEHR-EHR-CLUSTER.exam-generic-mass.v1.adl +221 -0
  196. data/spec/lib/openehr/parser/adl14/openEHR-EHR-CLUSTER.exam-generic.v1.adl +139 -0
  197. data/spec/lib/openehr/parser/adl14/openEHR-EHR-CLUSTER.exam-nervous_system.v1.adl +116 -0
  198. data/spec/lib/openehr/parser/adl14/openEHR-EHR-CLUSTER.exam-uterine_cervix.v1.adl +420 -0
  199. data/spec/lib/openehr/parser/adl14/openEHR-EHR-CLUSTER.exam-uterus.v1.adl +293 -0
  200. data/spec/lib/openehr/parser/adl14/openEHR-EHR-COMPOSITION.discharge.v1draft.adl +53 -0
  201. data/spec/lib/openehr/parser/adl14/openEHR-EHR-COMPOSITION.encounter.v1draft.adl +45 -0
  202. data/spec/lib/openehr/parser/adl14/openEHR-EHR-EVALUATION.adverse.v1.adl +411 -0
  203. data/spec/lib/openehr/parser/adl14/openEHR-EHR-EVALUATION.columna_vertebral.v1.adl +85 -0
  204. data/spec/lib/openehr/parser/adl14/openEHR-EHR-INSTRUCTION.medication.v1.adl +88 -0
  205. data/spec/lib/openehr/parser/adl14/openEHR-EHR-INSTRUCTION.referral.v1.adl +84 -0
  206. data/spec/lib/openehr/parser/adl14/openEHR-EHR-ITEM_TREE.Laboratory_request.v1.adl +492 -0
  207. data/spec/lib/openehr/parser/adl14/openEHR-EHR-ITEM_TREE.follow_up.v1draft.adl +94 -0
  208. data/spec/lib/openehr/parser/adl14/openEHR-EHR-ITEM_TREE.imaging.v1.adl +127 -0
  209. data/spec/lib/openehr/parser/adl14/openEHR-EHR-ITEM_TREE.medication-formulation.v1.adl +457 -0
  210. data/spec/lib/openehr/parser/adl14/openEHR-EHR-ITEM_TREE.medication.v1.adl +869 -0
  211. data/spec/lib/openehr/parser/adl14/openEHR-EHR-ITEM_TREE.referral.v1.adl +494 -0
  212. data/spec/lib/openehr/parser/adl14/openEHR-EHR-OBSERVATION.apgar.v1.adl +545 -0
  213. data/spec/lib/openehr/parser/adl14/openEHR-EHR-OBSERVATION.blood_pressure.v1.adl +673 -0
  214. data/spec/lib/openehr/parser/adl14/openEHR-EHR-OBSERVATION.body_mass_index.v1.adl +166 -0
  215. data/spec/lib/openehr/parser/adl14/openEHR-EHR-OBSERVATION.lab_test.v1.adl +376 -0
  216. data/spec/lib/openehr/parser/adl14/openEHR-EHR-OBSERVATION.testassumedvalue.v1.adl +99 -0
  217. data/spec/lib/openehr/parser/adl14/openEHR-EHR-SECTION.findings.v1.adl +47 -0
  218. data/spec/lib/openehr/parser/adl14/openEHR-EHR-SECTION.reason_for_encounter.v1.adl +51 -0
  219. data/spec/lib/openehr/parser/adl14/openEHR-EHR-SECTION.summary.v1.adl +52 -0
  220. data/spec/lib/openehr/parser/adl14/openEHR-EHR-SECTION.vital_signs.v1.adl +54 -0
  221. data/spec/lib/openehr/parser/adl_archetype_internal_ref2_spec.rb +42 -0
  222. data/spec/lib/openehr/parser/adl_archetype_internal_ref_spec.rb +125 -0
  223. data/spec/lib/openehr/parser/adl_archetype_internal_ref_with_generics_spec.rb +258 -0
  224. data/spec/lib/openehr/parser/adl_archetype_ontology_binding_spec.rb +98 -0
  225. data/spec/lib/openehr/parser/adl_archetype_ontology_spec.rb +42 -0
  226. data/spec/lib/openehr/parser/adl_archetype_slot_cluster_spec.rb +101 -0
  227. data/spec/lib/openehr/parser/adl_archetype_slot_spec.rb +193 -0
  228. data/spec/lib/openehr/parser/adl_archetype_uncommon_term_keys_spec.rb +25 -0
  229. data/spec/lib/openehr/parser/adl_description_spec.rb +164 -0
  230. data/spec/lib/openehr/parser/adl_identification_spec.rb +18 -0
  231. data/spec/lib/openehr/parser/adl_language_no_accreditation_spec.rb +66 -0
  232. data/spec/lib/openehr/parser/adl_language_order_spec.rb +68 -0
  233. data/spec/lib/openehr/parser/adl_language_spec.rb +119 -0
  234. data/spec/lib/openehr/parser/adl_language_translation_author_language_spec.rb +50 -0
  235. data/spec/lib/openehr/parser/adl_language_translation_language_author_spec.rb +46 -0
  236. data/spec/lib/openehr/parser/adl_parser_spec.rb +347 -0
  237. data/spec/lib/openehr/parser/adl_path_spec.rb +176 -0
  238. data/spec/lib/openehr/parser/base_spec.rb +19 -0
  239. data/spec/lib/openehr/parser/basic_generic_type_spec.rb +18 -0
  240. data/spec/lib/openehr/parser/basic_type_spec.rb +2922 -0
  241. data/spec/lib/openehr/parser/c_dv_quantity_any_allowed_spec.rb +34 -0
  242. data/spec/lib/openehr/parser/c_dv_quantity_shared_example_for_lacked_items_spec.rb +36 -0
  243. data/spec/lib/openehr/parser/c_dv_quantity_shared_example_spec.rb +146 -0
  244. data/spec/lib/openehr/parser/cdv_ordinal_parse_spec.rb +231 -0
  245. data/spec/lib/openehr/parser/code_phrase_spec.rb +96 -0
  246. data/spec/lib/openehr/parser/constraint_binding_spec.rb +26 -0
  247. data/spec/lib/openehr/parser/constraint_ref_spec.rb +32 -0
  248. data/spec/lib/openehr/parser/date_time_spec.rb +1953 -0
  249. data/spec/lib/openehr/parser/duration_spec.rb +475 -0
  250. data/spec/lib/openehr/parser/dv_coded_text_parse_spec.rb +27 -0
  251. data/spec/lib/openehr/parser/empty_other_contributors_spec.rb +19 -0
  252. data/spec/lib/openehr/parser/lab_test_parser_spec.rb +14 -0
  253. data/spec/lib/openehr/parser/missing_language_spec.rb +20 -0
  254. data/spec/lib/openehr/parser/missing_purpose_spec.rb +23 -0
  255. data/spec/lib/openehr/parser/mixed_node_types_spec.rb +16 -0
  256. data/spec/lib/openehr/parser/most_minimal_adl_spec.rb +19 -0
  257. data/spec/lib/openehr/parser/multi_language_spec.rb +58 -0
  258. data/spec/lib/openehr/parser/parser_spec_helper.rb +7 -0
  259. data/spec/lib/openehr/parser/path_based_terminology_binding_spec.rb +30 -0
  260. data/spec/lib/openehr/parser/special_string_spec.rb +20 -0
  261. data/spec/lib/openehr/parser/structure_comment_spec.rb +21 -0
  262. data/spec/lib/openehr/parser/structure_nested_comments_spec.rb +22 -0
  263. data/spec/lib/openehr/parser/structure_spec.rb +202 -0
  264. data/spec/lib/openehr/parser/term_binding_spec.rb +54 -0
  265. data/spec/lib/openehr/parser/unicode_bom_spec.rb +17 -0
  266. data/spec/lib/openehr/parser/unicode_support_spec.rb +46 -0
  267. data/spec/lib/openehr/rm/common/archetyped/archetyped_spec.rb +50 -0
  268. data/spec/lib/openehr/rm/common/archetyped/feeder_audit_details_spec.rb +60 -0
  269. data/spec/lib/openehr/rm/common/archetyped/feeder_audit_spec.rb +51 -0
  270. data/spec/lib/openehr/rm/common/archetyped/link_spec.rb +42 -0
  271. data/spec/lib/openehr/rm/common/archetyped/locatable_spec.rb +89 -0
  272. data/spec/lib/openehr/rm/common/archetyped/pathable_spec.rb +42 -0
  273. data/spec/lib/openehr/rm/common/change_control/contribution_spec.rb +56 -0
  274. data/spec/lib/openehr/rm/common/change_control/imported_version_spec.rb +62 -0
  275. data/spec/lib/openehr/rm/common/change_control/original_version_spec.rb +71 -0
  276. data/spec/lib/openehr/rm/common/change_control/version_spec.rb +91 -0
  277. data/spec/lib/openehr/rm/common/change_control/versioned_object_spec.rb +284 -0
  278. data/spec/lib/openehr/rm/common/directory/folder_spec.rb +26 -0
  279. data/spec/lib/openehr/rm/common/generic/attestation_spec.rb +62 -0
  280. data/spec/lib/openehr/rm/common/generic/audit_details_spec.rb +51 -0
  281. data/spec/lib/openehr/rm/common/generic/participation_spec.rb +36 -0
  282. data/spec/lib/openehr/rm/common/generic/party_identified_spec.rb +64 -0
  283. data/spec/lib/openehr/rm/common/generic/party_proxy_spec.rb +18 -0
  284. data/spec/lib/openehr/rm/common/generic/party_related_spec.rb +24 -0
  285. data/spec/lib/openehr/rm/common/generic/revision_history_item_spec.rb +43 -0
  286. data/spec/lib/openehr/rm/common/generic/revision_history_spec.rb +45 -0
  287. data/spec/lib/openehr/rm/common/resource/authored_resource_spec.rb +68 -0
  288. data/spec/lib/openehr/rm/common/resource/resource_description_item_spec.rb +105 -0
  289. data/spec/lib/openehr/rm/common/resource/resource_description_spec.rb +74 -0
  290. data/spec/lib/openehr/rm/common/resource/translation_details_spec.rb +35 -0
  291. data/spec/lib/openehr/rm/composition/composition_spec.rb +92 -0
  292. data/spec/lib/openehr/rm/composition/content/content_item_spec.rb +14 -0
  293. data/spec/lib/openehr/rm/composition/content/entry/action_spec.rb +69 -0
  294. data/spec/lib/openehr/rm/composition/content/entry/activity_spec.rb +61 -0
  295. data/spec/lib/openehr/rm/composition/content/entry/admin_entry_spec.rb +38 -0
  296. data/spec/lib/openehr/rm/composition/content/entry/care_entry_spec.rb +37 -0
  297. data/spec/lib/openehr/rm/composition/content/entry/entry_spec.rb +98 -0
  298. data/spec/lib/openehr/rm/composition/content/entry/evaluation_spec.rb +37 -0
  299. data/spec/lib/openehr/rm/composition/content/entry/instruction_details_spec.rb +51 -0
  300. data/spec/lib/openehr/rm/composition/content/entry/instruction_spec.rb +62 -0
  301. data/spec/lib/openehr/rm/composition/content/entry/ism_transition_spec.rb +46 -0
  302. data/spec/lib/openehr/rm/composition/content/entry/observation_spec.rb +45 -0
  303. data/spec/lib/openehr/rm/composition/content/navigation/section_spec.rb +32 -0
  304. data/spec/lib/openehr/rm/composition/event_context_spec.rb +88 -0
  305. data/spec/lib/openehr/rm/data_structures/data_structure_spec.rb +21 -0
  306. data/spec/lib/openehr/rm/data_structures/history/event_spec.rb +44 -0
  307. data/spec/lib/openehr/rm/data_structures/history/history_spec.rb +67 -0
  308. data/spec/lib/openehr/rm/data_structures/history/interval_event_spec.rb +43 -0
  309. data/spec/lib/openehr/rm/data_structures/item_structure/item_list_spec.rb +53 -0
  310. data/spec/lib/openehr/rm/data_structures/item_structure/item_single_spec.rb +29 -0
  311. data/spec/lib/openehr/rm/data_structures/item_structure/item_table_spec.rb +147 -0
  312. data/spec/lib/openehr/rm/data_structures/item_structure/item_tree_spec.rb +48 -0
  313. data/spec/lib/openehr/rm/data_structures/item_structure/representation/cluster_spec.rb +26 -0
  314. data/spec/lib/openehr/rm/data_structures/item_structure/representation/element_spec.rb +22 -0
  315. data/spec/lib/openehr/rm/data_types/basic/data_value_spec.rb +17 -0
  316. data/spec/lib/openehr/rm/data_types/basic/dv_boolean_spec.rb +29 -0
  317. data/spec/lib/openehr/rm/data_types/basic/dv_identifier_spec.rb +108 -0
  318. data/spec/lib/openehr/rm/data_types/basic/dv_state_spec.rb +44 -0
  319. data/spec/lib/openehr/rm/data_types/encapsulated/dv_encapsulated_spec.rb +42 -0
  320. data/spec/lib/openehr/rm/data_types/encapsulated/dv_multimedia_spec.rb +79 -0
  321. data/spec/lib/openehr/rm/data_types/encapsulated/dv_parsable_spec.rb +34 -0
  322. data/spec/lib/openehr/rm/data_types/quantity/date_time/dv_date_spec.rb +64 -0
  323. data/spec/lib/openehr/rm/data_types/quantity/date_time/dv_date_time_spec.rb +26 -0
  324. data/spec/lib/openehr/rm/data_types/quantity/date_time/dv_duration_spec.rb +44 -0
  325. data/spec/lib/openehr/rm/data_types/quantity/date_time/dv_temporal_spec.rb +25 -0
  326. data/spec/lib/openehr/rm/data_types/quantity/date_time/dv_time_spec.rb +41 -0
  327. data/spec/lib/openehr/rm/data_types/quantity/dv_absolute_quantity_spec.rb +35 -0
  328. data/spec/lib/openehr/rm/data_types/quantity/dv_amount_spec.rb +105 -0
  329. data/spec/lib/openehr/rm/data_types/quantity/dv_count_spec.rb +12 -0
  330. data/spec/lib/openehr/rm/data_types/quantity/dv_interval_spec.rb +17 -0
  331. data/spec/lib/openehr/rm/data_types/quantity/dv_ordered_spec.rb +60 -0
  332. data/spec/lib/openehr/rm/data_types/quantity/dv_ordinal_spec.rb +74 -0
  333. data/spec/lib/openehr/rm/data_types/quantity/dv_proportion_spec.rb +162 -0
  334. data/spec/lib/openehr/rm/data_types/quantity/dv_quantified_spec.rb +36 -0
  335. data/spec/lib/openehr/rm/data_types/quantity/dv_quantity_spec.rb +78 -0
  336. data/spec/lib/openehr/rm/data_types/quantity/proportion_kind_spec.rb +24 -0
  337. data/spec/lib/openehr/rm/data_types/quantity/reference_range_spec.rb +43 -0
  338. data/spec/lib/openehr/rm/data_types/text/code_phrase_spec.rb +23 -0
  339. data/spec/lib/openehr/rm/data_types/text/dv_paragraph_spec.rb +13 -0
  340. data/spec/lib/openehr/rm/data_types/text/dv_text_spec.rb +79 -0
  341. data/spec/lib/openehr/rm/data_types/text/term_mapping_spec.rb +59 -0
  342. data/spec/lib/openehr/rm/data_types/uri/dv_ehr_uri_spec.rb +21 -0
  343. data/spec/lib/openehr/rm/data_types/uri/dv_uri_spec.rb +36 -0
  344. data/spec/lib/openehr/rm/demographic/actor_spec.rb +79 -0
  345. data/spec/lib/openehr/rm/demographic/address_spec.rb +33 -0
  346. data/spec/lib/openehr/rm/demographic/capability_spec.rb +37 -0
  347. data/spec/lib/openehr/rm/demographic/contact_spec.rb +45 -0
  348. data/spec/lib/openehr/rm/demographic/party_identity_spec.rb +32 -0
  349. data/spec/lib/openehr/rm/demographic/party_relationship_spec.rb +84 -0
  350. data/spec/lib/openehr/rm/demographic/party_spec.rb +131 -0
  351. data/spec/lib/openehr/rm/demographic/role_spec.rb +58 -0
  352. data/spec/lib/openehr/rm/ehr/ehr_access_spec.rb +33 -0
  353. data/spec/lib/openehr/rm/ehr/ehr_spec.rb +139 -0
  354. data/spec/lib/openehr/rm/ehr/ehr_status_spec.rb +52 -0
  355. data/spec/lib/openehr/rm/ehr/versioned_composition_spec.rb +33 -0
  356. data/spec/lib/openehr/rm/integration/generic_entry_spec.rb +31 -0
  357. data/spec/lib/openehr/rm/support/identification/access_group_ref_spec.rb +19 -0
  358. data/spec/lib/openehr/rm/support/identification/archetype_id_spec.rb +152 -0
  359. data/spec/lib/openehr/rm/support/identification/generic_id_spec.rb +33 -0
  360. data/spec/lib/openehr/rm/support/identification/hier_object_id_spec.rb +12 -0
  361. data/spec/lib/openehr/rm/support/identification/internet_id_spec.rb +12 -0
  362. data/spec/lib/openehr/rm/support/identification/iso_oid_spec.rb +12 -0
  363. data/spec/lib/openehr/rm/support/identification/locatable_ref_spec.rb +34 -0
  364. data/spec/lib/openehr/rm/support/identification/object_id_spec.rb +24 -0
  365. data/spec/lib/openehr/rm/support/identification/object_ref_spec.rb +33 -0
  366. data/spec/lib/openehr/rm/support/identification/object_version_id_spec.rb +59 -0
  367. data/spec/lib/openehr/rm/support/identification/party_ref_spec.rb +29 -0
  368. data/spec/lib/openehr/rm/support/identification/template_id_spec.rb +12 -0
  369. data/spec/lib/openehr/rm/support/identification/terminology_id_spec.rb +33 -0
  370. data/spec/lib/openehr/rm/support/identification/uid_based_id_spec.rb +50 -0
  371. data/spec/lib/openehr/rm/support/identification/uid_spec.rb +29 -0
  372. data/spec/lib/openehr/rm/support/identification/version_tree_id_spec.rb +104 -0
  373. data/spec/lib/openehr/rm/support/measurement_service_spec.rb +7 -0
  374. data/spec/lib/openehr/rm/support/terminology_service_spec.rb +24 -0
  375. data/spec/lib/openehr/serializer/adl-test-entry.most_minimal.test.adl +20 -0
  376. data/spec/lib/openehr/serializer/adl_serializer_spec.rb +47 -0
  377. data/spec/lib/openehr/serializer/openEHR-EHR-SECTION.test.v1.adl +38 -0
  378. data/spec/lib/openehr/serializer/openEHR-EHR-SECTION.test.v1.xml +58 -0
  379. data/spec/lib/openehr/serializer/sample_archetype_spec.rb +44 -0
  380. data/spec/lib/openehr/serializer/xml_serializer_spec.rb +49 -0
  381. data/spec/lib/openehr/terminology/open_ehr_terminology_spec.rb +40 -0
  382. data/spec/spec.opts +6 -0
  383. data/spec/spec_helper.rb +58 -0
  384. metadata +631 -0
@@ -0,0 +1,236 @@
1
+ require File.dirname(__FILE__) + '/../../../spec_helper'
2
+ include OpenEHR::AssumedLibraryTypes
3
+
4
+ describe ISO8601Date do
5
+ before do
6
+ @iso8601date = ISO8601Date.new('2009-09-10')
7
+ end
8
+
9
+ it 'should be an instance of ISO8601Date' do
10
+ @iso8601date.should be_an_instance_of ISO8601Date
11
+ end
12
+
13
+ it 'year should be equal 2009' do
14
+ @iso8601date.year.should be_equal 2009
15
+ end
16
+
17
+ it 'month should be equal 9' do
18
+ @iso8601date.month.should be_equal 9
19
+ end
20
+
21
+ it 'day should be equal 10' do
22
+ @iso8601date.day.should be_equal 10
23
+ end
24
+
25
+ it 'should be 2009-09-10 as_string' do
26
+ @iso8601date.as_string.should == '2009-09-10'
27
+ end
28
+
29
+ it 'should be extended ' do
30
+ @iso8601date.is_extended?.should be_true
31
+ end
32
+
33
+ it 'should parse vaild date form' do
34
+
35
+ end
36
+
37
+ it 'should parse valid adte form' do
38
+ ISO8601Date.should be_valid_iso8601_date '2009-09-22'
39
+ end
40
+
41
+ it 'should not parse invalid date form' do
42
+ ISO8601Date.should_not be_valid_iso8601_date '2009-13-54'
43
+ end
44
+
45
+ describe 'year behavior' do
46
+ it 'should raise ArgumentError with nil year string' do
47
+ lambda{ISO8601Date.new('-09-02')}.should raise_error ArgumentError
48
+ end
49
+
50
+ it 'should raise ArgumentError with nil year' do
51
+ lambda{@iso8601date.year = nil}.should raise_error ArgumentError
52
+ end
53
+
54
+ it 'should not raise ArgumentError more than 0 year' do
55
+ lambda{@iso8601date.year = 0}.should_not raise_error ArgumentError
56
+ end
57
+ end
58
+
59
+ describe 'month behavior' do
60
+ it '1 month should not raise ArgumentError' do
61
+ lambda{@iso8601date.month = 1}.should_not raise_error ArgumentError
62
+ end
63
+
64
+ it '12 month should not raise ArgumentError' do
65
+ lambda{@iso8601date.month = 12}.should_not raise_error ArgumentError
66
+ end
67
+
68
+ it '13 month should raise ArgumentError' do
69
+ lambda{@iso8601date.month = 13}.should raise_error ArgumentError
70
+ end
71
+
72
+ it '0 month should raise ArgumentError' do
73
+ lambda{@iso8601date.month = 0}.should raise_error ArgumentError
74
+ end
75
+ end
76
+
77
+ describe 'day behavior' do
78
+ it '0 day should raise ArgumentError' do
79
+ lambda{@iso8601date.day = 0}.should raise_error ArgumentError
80
+ end
81
+ end
82
+
83
+ [1,3,5,7,8,10,12].each do |m|
84
+ describe '#{m}th month behavior' do
85
+ before do
86
+ @iso8601date.month = m
87
+ end
88
+
89
+ it 'should have 31 days' do
90
+ lambda{
91
+ @iso8601date.day = 31
92
+ }.should_not raise_error ArgumentError
93
+ end
94
+
95
+ it 'should not have 32 days' do
96
+ lambda{
97
+ @iso8601date.day = 32
98
+ }.should raise_error ArgumentError
99
+ end
100
+ end
101
+ end
102
+
103
+ describe 'February and leap year behavior' do
104
+ before do
105
+ @iso8601date.month = 2
106
+ end
107
+
108
+ describe '2009(not leap year) behavior' do
109
+ before do
110
+ @iso8601date.year = 2009
111
+ end
112
+
113
+ it '2009 should not be leap year' do
114
+ @iso8601date.should_not be_leapyear 2009
115
+ end
116
+
117
+ it '2009-02-28 should not raise ArgumentError' do
118
+ lambda{@iso8601date.day = 28}.should_not raise_error ArgumentError
119
+ end
120
+
121
+ it '2009-02-29 should raise ArgumentError' do
122
+ lambda{@iso8601date.day = 29}.should raise_error ArgumentError
123
+ end
124
+ end
125
+
126
+ describe '2008(leap year) behavior' do
127
+ before do
128
+ @iso8601date.year = 2008
129
+ end
130
+
131
+ it '2008 should be leap year' do
132
+ @iso8601date.should be_leapyear 2008
133
+ end
134
+
135
+ it '2008-02-29 should not raise ArgumentError' do
136
+ lambda{@iso8601date.day = 29}.should_not raise_error ArgumentError
137
+ end
138
+
139
+ it '2008-02-30 should raise ArgumentError' do
140
+ lambda{@iso8601date.day = 30}.should raise_error ArgumentError
141
+ end
142
+ end
143
+
144
+ describe '2000(irregular leap year' do
145
+ before do
146
+ @iso8601date.year = 2000
147
+ end
148
+
149
+ it 'should not leapyear' do
150
+ @iso8601date.should be_leapyear 2000
151
+ end
152
+
153
+ it '2000-02-29 should not raise ArgumentError' do
154
+ lambda{@iso8601date.day = 29}.should_not raise_error ArgumentError
155
+ end
156
+
157
+ it '2000-02-30 should raise ArgumentError' do
158
+ lambda{@iso8601date.day = 30}.should raise_error ArgumentError
159
+ end
160
+ end
161
+ end
162
+
163
+ [4,6,9,11].each do |month|
164
+ describe "#{month}th month behavior" do
165
+ before do
166
+ @iso8601date.month = month
167
+ end
168
+
169
+ it '30 day should not raise ArgumentError' do
170
+ lambda{
171
+ @iso8601date.day = 30
172
+ }.should_not raise_error ArgumentError
173
+ end
174
+
175
+ it '31 day should raise ArgumentError' do
176
+ lambda{
177
+ @iso8601date.day = 31
178
+ }.should raise_error ArgumentError
179
+ end
180
+ end
181
+ end
182
+
183
+ describe 'partial date data' do
184
+ describe 'day unknown' do
185
+ before do
186
+ @iso8601date.day = nil
187
+ end
188
+
189
+ it 'day should be unknown' do
190
+ @iso8601date.should be_day_unknown
191
+ end
192
+
193
+ it 'should be 2009-09 as string' do
194
+ @iso8601date.as_string.should == '2009-09'
195
+ end
196
+
197
+ it 'should be partial' do
198
+ @iso8601date.is_partial?.should be_true
199
+ end
200
+
201
+ it 'constructor pass partial date' do
202
+ lambda {
203
+ ISO8601Date.new('2009-09')
204
+ }.should_not raise_error ArgumentError
205
+ end
206
+
207
+ after do
208
+ @iso8601date.day = 10
209
+ end
210
+ end
211
+
212
+ describe 'month unknown' do
213
+ before do
214
+ @iso8601date.day = nil
215
+ @iso8601date.month = nil
216
+ end
217
+
218
+ it 'should raise ArgumentError with nil month and not nil day' do
219
+ lambda {
220
+ @iso8601date.day = 11
221
+ }.should raise_error ArgumentError
222
+ end
223
+
224
+ it 's as_string should be 2009' do
225
+ @iso8601date.as_string.should == '2009'
226
+ end
227
+
228
+ it 'constructor pass only year data' do
229
+ lambda {
230
+ ISO8601Date.new('2009')
231
+ }.should_not raise_error ArgumentError
232
+ end
233
+ end
234
+ end
235
+
236
+ end
@@ -0,0 +1,47 @@
1
+ require File.dirname(__FILE__) + '/../../../spec_helper'
2
+ include OpenEHR::AssumedLibraryTypes
3
+
4
+ describe ISO8601DateTime do
5
+ before(:each) do
6
+ @iso8601date_time = ISO8601DateTime.new('2009-06-29T12:34:56.78+0900')
7
+ end
8
+
9
+ it 'should be an instance of ISO8601DateTime' do
10
+ @iso8601date_time.should be_an_instance_of ISO8601DateTime
11
+ end
12
+
13
+ it 'should be 2009-06-29T12:34:56.78T+09:00 as string' do
14
+ @iso8601date_time.as_string.should == '2009-06-29T12:34:56.78+0900'
15
+ end
16
+
17
+ it 'should raise ArgumentError with invalid date format' do
18
+ lambda {
19
+ ISO8601DateTime.new('2009:06:29Z12-34-56')
20
+ }.should raise_error ArgumentError
21
+ end
22
+
23
+ it 'should raise ArgumentErrow with empty argument' do
24
+ lambda {
25
+ ISO8601DateTime.new('')
26
+ }.should raise_error ArgumentError
27
+ end
28
+
29
+ it 'allows without fractional second' do
30
+ lambda {
31
+ ISO8601DateTime.new('2009-06-29T12:34:56')
32
+ }.should_not raise_error ArgumentError
33
+ end
34
+
35
+ describe 'partial date' do
36
+ it 'should recognize 2009-06' do
37
+ @iso8601date_time.day = nil
38
+ @iso8601date_time.as_string.should == '2009-06'
39
+ end
40
+
41
+ it 'should recognize 2009' do
42
+ @iso8601date_time.day = nil
43
+ @iso8601date_time.month = nil
44
+ @iso8601date_time.as_string.should == '2009'
45
+ end
46
+ end
47
+ end
@@ -0,0 +1,150 @@
1
+ require File.dirname(__FILE__) + '/../../../spec_helper'
2
+ include OpenEHR::AssumedLibraryTypes
3
+
4
+ describe ISO8601Duration do
5
+ before(:each) do
6
+ @iso8601duration = ISO8601Duration.new('P1Y2M3W4DT5H6M7.8S')
7
+ end
8
+
9
+ it 'should be an instance of ISO8601Duration' do
10
+ @iso8601duration.should be_an_instance_of ISO8601Duration
11
+ end
12
+
13
+ it 'years should be 1' do
14
+ @iso8601duration.years.should be_equal 1
15
+ end
16
+
17
+ it 'months should be 2' do
18
+ @iso8601duration.months.should be_equal 2
19
+ end
20
+
21
+ it 'weeks should be 3' do
22
+ @iso8601duration.weeks.should be_equal 3
23
+ end
24
+
25
+ it 'days should be 4' do
26
+ @iso8601duration.days.should be_equal 4
27
+ end
28
+
29
+ it 'hours should be 5' do
30
+ @iso8601duration.hours.should be_equal 5
31
+ end
32
+
33
+ it 'minutes should be 6' do
34
+ @iso8601duration.minutes.should be_equal 6
35
+ end
36
+
37
+ it 'seconds should be 7' do
38
+ @iso8601duration.seconds.should be_equal 7
39
+ end
40
+
41
+ it 'fractional_seconds should be .8' do
42
+ @iso8601duration.fractional_second.should == 0.8
43
+ end
44
+
45
+ it 'should be equal P1Y2M3W4DT5H6M7.8S as string' do
46
+ @iso8601duration.as_string.should == 'P1Y2M3W4DT5H6M7.8S'
47
+ end
48
+
49
+ it 'should not raise ArgumentError with 0 yaers' do
50
+ lambda {
51
+ @iso8601duration.years = 0
52
+ }.should_not raise_error ArgumentError
53
+ end
54
+
55
+ it 'should raise ArgumentError with -1 yaers' do
56
+ lambda {
57
+ @iso8601duration.years = -1
58
+ }.should raise_error ArgumentError
59
+ end
60
+
61
+ it 'should not raise ArgumentError with 0 months' do
62
+ lambda {
63
+ @iso8601duration.months = 0
64
+ }.should_not raise_error ArgumentError
65
+ end
66
+
67
+ it 'should raise ArgumentError with -1 months' do
68
+ lambda {
69
+ @iso8601duration.months = -1
70
+ }.should raise_error ArgumentError
71
+ end
72
+
73
+ it 'should not raise ArgumentError with 0 weeks' do
74
+ lambda {
75
+ @iso8601duration.weeks = 0
76
+ }.should_not raise_error ArgumentError
77
+ end
78
+
79
+ it 'should raise ArgumentError with -1 weeks' do
80
+ lambda {
81
+ @iso8601duration.weeks = -1
82
+ }.should raise_error ArgumentError
83
+ end
84
+
85
+ it 'should not raise ArgumentError with 0 days' do
86
+ lambda {
87
+ @iso8601duration.days = 0
88
+ }.should_not raise_error ArgumentError
89
+ end
90
+
91
+ it 'should raise ArgumentError with -1 days' do
92
+ lambda {
93
+ @iso8601duration.days = -1
94
+ }.should raise_error ArgumentError
95
+ end
96
+
97
+ it 'should not raise ArgumentError with 0 hours' do
98
+ lambda {
99
+ @iso8601duration.hours = 0
100
+ }.should_not raise_error ArgumentError
101
+ end
102
+
103
+ it 'should raise ArgumentError with -1 hours' do
104
+ lambda {
105
+ @iso8601duration.hours = -1
106
+ }.should raise_error ArgumentError
107
+ end
108
+
109
+ it 'should not raise ArgumentError with 0 minutes' do
110
+ lambda {
111
+ @iso8601duration.minutes = 0
112
+ }.should_not raise_error ArgumentError
113
+ end
114
+
115
+ it 'should raise ArgumentError with -1 minutes' do
116
+ lambda {
117
+ @iso8601duration.minutes = -1
118
+ }.should raise_error ArgumentError
119
+ end
120
+
121
+ it 'should not raise ArgumentError with 0 seconds' do
122
+ lambda {
123
+ @iso8601duration.seconds = 0
124
+ }.should_not raise_error ArgumentError
125
+ end
126
+
127
+ it 'should raise ArgumentError with -1 seconds' do
128
+ lambda {
129
+ @iso8601duration.seconds = -1
130
+ }.should raise_error ArgumentError
131
+ end
132
+
133
+ it 'should not raise ArgumentError with 0 fractional_second' do
134
+ lambda {
135
+ @iso8601duration.fractional_second = 0
136
+ }.should_not raise_error ArgumentError
137
+ end
138
+
139
+ it 'should raise ArgumentError with -1 fractional_second' do
140
+ lambda {
141
+ @iso8601duration.fractional_second = -1
142
+ }.should raise_error ArgumentError
143
+ end
144
+
145
+ it 'should raise ArgumentError with 1.0 fractional_second' do
146
+ lambda {
147
+ @iso8601duration.fractional_second = 1.0
148
+ }.should raise_error ArgumentError
149
+ end
150
+ end
@@ -0,0 +1,234 @@
1
+ require File.dirname(__FILE__) + '/../../../spec_helper'
2
+ include OpenEHR::AssumedLibraryTypes
3
+
4
+ describe ISO8601Time do
5
+ before(:each) do
6
+ @iso8601time = ISO8601Time.new('15:55:37.32+0900')
7
+ end
8
+
9
+ it 'should be an instance of ISO8601Time' do
10
+ @iso8601time.should be_an_instance_of ISO8601Time
11
+ end
12
+
13
+ it 's hour should be 15' do
14
+ @iso8601time.hour.should == 15
15
+ end
16
+
17
+ it 's minute should be 55' do
18
+ @iso8601time.minute.should == 55
19
+ end
20
+
21
+ it 's second should be 37'do
22
+ @iso8601time.second.should == 37
23
+ end
24
+
25
+ it 's fractional second should be 0.32' do
26
+ @iso8601time.fractional_second == 0.32
27
+ end
28
+
29
+ it 'have fractional_second' do
30
+ @iso8601time.should have_fractional_second
31
+ end
32
+
33
+ it 's time zone should +0900' do
34
+ @iso8601time.timezone == '+0900'
35
+ end
36
+
37
+ it 'should be 15:55:37.32+0900 as_string' do
38
+ @iso8601time.as_string.should == '15:55:37.32+0900'
39
+ end
40
+
41
+ it 'decimal sign should not be comma' do
42
+ @iso8601time.is_decimal_sign_comma?.should_not be_true
43
+ end
44
+
45
+ it 'should be extended' do
46
+ @iso8601time.is_extended?.should be_true
47
+ end
48
+
49
+ it 'should not be partial' do
50
+ @iso8601time.is_partial?.should_not be true
51
+ end
52
+
53
+ describe 'hour behavior' do
54
+ it 'should raise ArgumentError with nil hour' do
55
+ lambda {
56
+ @iso8601time.hour = nil
57
+ }.should raise_error ArgumentError
58
+ end
59
+
60
+ it 'should not raise ArgumentError with -1 hour' do
61
+ lambda {
62
+ @iso8601time.hour = -1
63
+ }.should raise_error ArgumentError
64
+ end
65
+
66
+ it 'should not raise ArgumentError with 0 hour' do
67
+ lambda {
68
+ @iso8601time.hour = 0
69
+ }.should_not raise_error ArgumentError
70
+ end
71
+
72
+ it 'should not raise ArgumentError with 23 hour' do
73
+ lambda {
74
+ @iso8601time.hour = 23
75
+ }.should_not raise_error ArgumentError
76
+ end
77
+
78
+ it 'should not raise ArgumentError with 24 hour' do
79
+ lambda {
80
+ @iso8601time.hour = 24
81
+ }.should raise_error ArgumentError
82
+ end
83
+ end
84
+
85
+ describe 'minute behavior' do
86
+ it 'should raise ArgumentError with -1 miniute' do
87
+ lambda {
88
+ @iso8601time.minute = -1
89
+ }.should raise_error ArgumentError
90
+ end
91
+
92
+ it 'should not raise ArgumentError with 0 minute' do
93
+ lambda {
94
+ @iso8601time.minute = 0
95
+ }.should_not raise_error ArgumentError
96
+ end
97
+
98
+ it 'should not raise ArgumentError with 59 minute' do
99
+ lambda {
100
+ @iso8601time.minute = 59
101
+ }.should_not raise_error ArgumentError
102
+ end
103
+
104
+ it 'should raise ArgumentError with 60 minute' do
105
+ lambda {
106
+ @iso8601time.minute = 60
107
+ }.should raise_error ArgumentError
108
+ end
109
+ end
110
+
111
+ describe 'second behavior' do
112
+ it 'should raise ArgumentError with -1 miniute' do
113
+ lambda {
114
+ @iso8601time.second = -1
115
+ }.should raise_error ArgumentError
116
+ end
117
+
118
+ it 'should not raise ArgumentError with 0 second' do
119
+ lambda {
120
+ @iso8601time.second = 0
121
+ }.should_not raise_error ArgumentError
122
+ end
123
+
124
+ it 'should not raise ArgumentError with 59 second' do
125
+ lambda {
126
+ @iso8601time.second = 59
127
+ }.should_not raise_error ArgumentError
128
+ end
129
+
130
+ it 'should raise ArgumentError with 60 second' do
131
+ lambda {
132
+ @iso8601time.second = 60
133
+ }.should raise_error ArgumentError
134
+ end
135
+ end
136
+
137
+ describe 'fractional second behavior' do
138
+ it 'should raise ArgumentError less than -0.0' do
139
+ lambda {
140
+ @iso8601time.fractional_second = -0.1
141
+ }.should raise_error ArgumentError
142
+ end
143
+
144
+ it 'should raise ArgumentError more than 1.0' do
145
+ lambda {
146
+ @iso8601time.fractional_second = 1.0
147
+ }.should raise_error ArgumentError
148
+ end
149
+ end
150
+
151
+ describe 'timezone behavior' do
152
+ it 'should raise ArgumentError with invalid timezone' do
153
+ lambda {
154
+ @iso8601time.timezone = '+AbD:111'
155
+ }.should raise_error ArgumentError
156
+ end
157
+
158
+ it 'should allow ArgumentError with nil timezone' do
159
+ lambda {
160
+ @iso8601time.timezone = nil
161
+ }.should_not raise_error ArgumentError
162
+ end
163
+ end
164
+
165
+ describe 'constructor behavior' do
166
+ it 'should_not raise ArgumentError with 21:18:09.01' do
167
+ lambda {
168
+ ISO8601Time.new('21:18:09.01')
169
+ }.should_not raise_error ArgumentError
170
+ end
171
+
172
+ it 'should_not raise ArgumentError with 21:18:09' do
173
+ lambda {
174
+ ISO8601Time.new('21:18:09')
175
+ }.should_not raise_error ArgumentError
176
+ end
177
+
178
+ it 'should_not raise ArgumentError with 21:18' do
179
+ lambda {
180
+ ISO8601Time.new('21:18')
181
+ }.should_not raise_error ArgumentError
182
+ end
183
+
184
+ it 'should_not raise ArgumentError with 21' do
185
+ lambda {
186
+ ISO8601Time.new('21')
187
+ }.should_not raise_error ArgumentError
188
+ end
189
+
190
+ it 'should raise ArgumentError with malformation' do
191
+ lambda {
192
+ ISO8601Time.new('ABDCD')
193
+ }.should raise_error ArgumentError
194
+ end
195
+ end
196
+
197
+ describe 'ISO8601 time validation' do
198
+ it 'should be valid iso8601 Time' do
199
+ ISO8601Time.should be_valid_iso8601_time '21:24:30.05+09:00'
200
+ end
201
+
202
+ it 'should not be valid with over 24 hour' do
203
+ ISO8601Time.should_not be_valid_iso8601_time '24:24:30.05+09:00'
204
+ end
205
+
206
+ it 'should be valid with over 24:00:00' do
207
+ ISO8601Time.should be_valid_iso8601_time '24:00:00.00'
208
+ end
209
+
210
+ it 'should not vaild with under 0 hour' do
211
+ ISO8601Time.should_not be_valid_iso8601_time '-1:24:30.05+09:00'
212
+ end
213
+
214
+ it 'should not valid with more than 60 minutes' do
215
+ ISO8601Time.should_not be_valid_iso8601_time '21:60:30'
216
+ end
217
+
218
+ it 'should not valid with more than 60 seconds' do
219
+ ISO8601Time.should_not be_valid_iso8601_time '21:34:60'
220
+ end
221
+
222
+ it 'should not valid with invalid hour in timezone' do
223
+ ISO8601Time.should_not be_valid_iso8601_time '21:24:30.05+24:00'
224
+ end
225
+
226
+ it 'should not valid with invalid minute in timezone' do
227
+ ISO8601Time.should_not be_valid_iso8601_time '21:24:30.05+22:60'
228
+ end
229
+
230
+ it 'should not valid with invalid minute in timezone' do
231
+ ISO8601Time.should_not be_valid_iso8601_time '21:24:30.05TAABZ'
232
+ end
233
+ end
234
+ end