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.
- data/.document +5 -0
- data/.rspec +2 -0
- data/.travis.yml +3 -0
- data/Gemfile +23 -0
- data/Guardfile +12 -0
- data/History.txt +36 -0
- data/PostInstall.txt +9 -0
- data/README.rdoc +82 -0
- data/Rakefile +44 -0
- data/VERSION +1 -0
- data/doc/openehr_terminology.xml +2700 -0
- data/lib/openehr.rb +11 -0
- data/lib/openehr/am.rb +8 -0
- data/lib/openehr/am/archetype.rb +133 -0
- data/lib/openehr/am/archetype/assertion.rb +190 -0
- data/lib/openehr/am/archetype/constraint_model.rb +328 -0
- data/lib/openehr/am/archetype/constraint_model/primitive.rb +327 -0
- data/lib/openehr/am/archetype/ontology.rb +126 -0
- data/lib/openehr/am/openehr_profile.rb +9 -0
- data/lib/openehr/am/openehr_profile/data_types.rb +13 -0
- data/lib/openehr/am/openehr_profile/data_types/basic.rb +114 -0
- data/lib/openehr/am/openehr_profile/data_types/quantity.rb +67 -0
- data/lib/openehr/am/openehr_profile/data_types/text.rb +22 -0
- data/lib/openehr/assumed_library_types.rb +691 -0
- data/lib/openehr/parser.rb +23 -0
- data/lib/openehr/parser/adl.rb +57 -0
- data/lib/openehr/parser/adl_grammar.tt +245 -0
- data/lib/openehr/parser/adl_parser.rb +52 -0
- data/lib/openehr/parser/cadl_grammar.tt +1527 -0
- data/lib/openehr/parser/cadl_node.rb +44 -0
- data/lib/openehr/parser/dadl.rb +13 -0
- data/lib/openehr/parser/dadl_grammar.tt +358 -0
- data/lib/openehr/parser/exception.rb +68 -0
- data/lib/openehr/parser/shared_token_grammar.tt +1229 -0
- data/lib/openehr/parser/validator.rb +19 -0
- data/lib/openehr/parser/xml_perser.rb +13 -0
- data/lib/openehr/rm.rb +15 -0
- data/lib/openehr/rm/common.rb +14 -0
- data/lib/openehr/rm/common/archetyped.rb +182 -0
- data/lib/openehr/rm/common/change_control.rb +332 -0
- data/lib/openehr/rm/common/directory.rb +29 -0
- data/lib/openehr/rm/common/generic.rb +216 -0
- data/lib/openehr/rm/common/resource.rb +154 -0
- data/lib/openehr/rm/composition.rb +103 -0
- data/lib/openehr/rm/composition/content.rb +22 -0
- data/lib/openehr/rm/composition/content/entry.rb +253 -0
- data/lib/openehr/rm/composition/content/navigation.rb +31 -0
- data/lib/openehr/rm/data_structures.rb +25 -0
- data/lib/openehr/rm/data_structures/history.rb +117 -0
- data/lib/openehr/rm/data_structures/item_structure.rb +218 -0
- data/lib/openehr/rm/data_structures/item_structure/representation.rb +63 -0
- data/lib/openehr/rm/data_types.rb +14 -0
- data/lib/openehr/rm/data_types/basic.rb +108 -0
- data/lib/openehr/rm/data_types/charset.lst +818 -0
- data/lib/openehr/rm/data_types/charset_extract.rb +24 -0
- data/lib/openehr/rm/data_types/encapsulated.rb +98 -0
- data/lib/openehr/rm/data_types/quantity.rb +402 -0
- data/lib/openehr/rm/data_types/quantity/date_time.rb +256 -0
- data/lib/openehr/rm/data_types/text.rb +169 -0
- data/lib/openehr/rm/data_types/time_specification.rb +75 -0
- data/lib/openehr/rm/data_types/uri.rb +83 -0
- data/lib/openehr/rm/demographic.rb +269 -0
- data/lib/openehr/rm/ehr.rb +162 -0
- data/lib/openehr/rm/integration.rb +27 -0
- data/lib/openehr/rm/security.rb +12 -0
- data/lib/openehr/rm/support.rb +14 -0
- data/lib/openehr/rm/support/definition.rb +15 -0
- data/lib/openehr/rm/support/identification.rb +412 -0
- data/lib/openehr/rm/support/measurement.rb +17 -0
- data/lib/openehr/rm/support/terminology.rb +135 -0
- data/lib/openehr/serializer.rb +272 -0
- data/lib/openehr/terminology.rb +7 -0
- data/lib/openehr/terminology/open_ehr_terminology.rb +41 -0
- data/lib/openehr/writer.rb +12 -0
- data/openehr.gemspec +472 -0
- data/spec/lib/openehr/am/archetype/archetype_spec.rb +103 -0
- data/spec/lib/openehr/am/archetype/assertion/assertion_spec.rb +60 -0
- data/spec/lib/openehr/am/archetype/assertion/assertion_variable_spec.rb +30 -0
- data/spec/lib/openehr/am/archetype/assertion/expr_binary_operator.rb +40 -0
- data/spec/lib/openehr/am/archetype/assertion/expr_item_spec.rb +28 -0
- data/spec/lib/openehr/am/archetype/assertion/expr_leaf_spec.rb +34 -0
- data/spec/lib/openehr/am/archetype/assertion/expr_operator_spec.rb +25 -0
- data/spec/lib/openehr/am/archetype/assertion/expr_unary_operator_spec.rb +26 -0
- data/spec/lib/openehr/am/archetype/assertion/operator_kind_spec.rb +114 -0
- data/spec/lib/openehr/am/archetype/constraint_model/archetype_constraint_spec.rb +56 -0
- data/spec/lib/openehr/am/archetype/constraint_model/archetype_internal_ref_spec.rb +36 -0
- data/spec/lib/openehr/am/archetype/constraint_model/archetype_slot_spec.rb +61 -0
- data/spec/lib/openehr/am/archetype/constraint_model/c_attribute_spec.rb +59 -0
- data/spec/lib/openehr/am/archetype/constraint_model/c_complex_object_spec.rb +39 -0
- data/spec/lib/openehr/am/archetype/constraint_model/c_defined_object_spec.rb +53 -0
- data/spec/lib/openehr/am/archetype/constraint_model/c_domain_type_spec.rb +25 -0
- data/spec/lib/openehr/am/archetype/constraint_model/c_multiple_attribute_spec.rb +23 -0
- data/spec/lib/openehr/am/archetype/constraint_model/c_object_spec.rb +61 -0
- data/spec/lib/openehr/am/archetype/constraint_model/c_primitive_object_spec.rb +33 -0
- data/spec/lib/openehr/am/archetype/constraint_model/c_reference_object_spec.rb +17 -0
- data/spec/lib/openehr/am/archetype/constraint_model/c_single_attribute_spec.rb +22 -0
- data/spec/lib/openehr/am/archetype/constraint_model/cardinality_spec.rb +68 -0
- data/spec/lib/openehr/am/archetype/constraint_model/constraint_ref_spec.rb +29 -0
- data/spec/lib/openehr/am/archetype/constraint_model/primitive/c_boolean_spec.rb +57 -0
- data/spec/lib/openehr/am/archetype/constraint_model/primitive/c_date_spec.rb +52 -0
- data/spec/lib/openehr/am/archetype/constraint_model/primitive/c_date_time_spec.rb +136 -0
- data/spec/lib/openehr/am/archetype/constraint_model/primitive/c_duration_spec.rb +41 -0
- data/spec/lib/openehr/am/archetype/constraint_model/primitive/c_integer_spec.rb +67 -0
- data/spec/lib/openehr/am/archetype/constraint_model/primitive/c_primitive_spec.rb +41 -0
- data/spec/lib/openehr/am/archetype/constraint_model/primitive/c_real_spec.rb +19 -0
- data/spec/lib/openehr/am/archetype/constraint_model/primitive/c_string_spec.rb +73 -0
- data/spec/lib/openehr/am/archetype/constraint_model/primitive/c_time_spec.rb +104 -0
- data/spec/lib/openehr/am/archetype/ontology/archetype_ontology_spec.rb +97 -0
- data/spec/lib/openehr/am/archetype/ontology/archetype_term_spec.rb +43 -0
- data/spec/lib/openehr/am/archetype/validity_kind_spec.rb +42 -0
- data/spec/lib/openehr/am/openehr_profile/data_types/basic/c_dv_state_spec.rb +34 -0
- data/spec/lib/openehr/am/openehr_profile/data_types/basic/non_terminal_state_spec.rb +36 -0
- data/spec/lib/openehr/am/openehr_profile/data_types/basic/state_machine_spec.rb +34 -0
- data/spec/lib/openehr/am/openehr_profile/data_types/basic/state_spec.rb +26 -0
- data/spec/lib/openehr/am/openehr_profile/data_types/basic/terminal_state_spec.rb +18 -0
- data/spec/lib/openehr/am/openehr_profile/data_types/basic/transition_spec.rb +62 -0
- data/spec/lib/openehr/am/openehr_profile/data_types/quantity/c_dv_ordinal_spec.rb +41 -0
- data/spec/lib/openehr/am/openehr_profile/data_types/quantity/c_dv_quantity_spec.rb +50 -0
- data/spec/lib/openehr/am/openehr_profile/data_types/quantity/c_quantity_item_spec.rb +46 -0
- data/spec/lib/openehr/am/openehr_profile/data_types/text/c_code_phrase_spec.rb +34 -0
- data/spec/lib/openehr/assumed_library_types/interval_spec.rb +145 -0
- data/spec/lib/openehr/assumed_library_types/iso8601_date_spec.rb +236 -0
- data/spec/lib/openehr/assumed_library_types/iso8601_date_time_spec.rb +47 -0
- data/spec/lib/openehr/assumed_library_types/iso8601_duration_spec.rb +150 -0
- data/spec/lib/openehr/assumed_library_types/iso8601_time_spec.rb +234 -0
- data/spec/lib/openehr/assumed_library_types/iso8601_timezone_spec.rb +57 -0
- data/spec/lib/openehr/assumed_library_types/time_definitions_spec.rb +136 -0
- data/spec/lib/openehr/assumed_library_types/timezone_spec.rb +42 -0
- data/spec/lib/openehr/parser/adl14/adl-test-ENTRY.assumed_types.v1.adl +88 -0
- data/spec/lib/openehr/parser/adl14/adl-test-ENTRY.basic_types.v1.adl +143 -0
- data/spec/lib/openehr/parser/adl14/adl-test-ENTRY.basic_types_fail.v1.adl +50 -0
- data/spec/lib/openehr/parser/adl14/adl-test-ENTRY.most_minimal.v1.adl +27 -0
- data/spec/lib/openehr/parser/adl14/adl-test-ENTRY.structure_test1.v1.adl +46 -0
- data/spec/lib/openehr/parser/adl14/adl-test-SOME_TYPE.generic_type_basic.draft.adl +56 -0
- data/spec/lib/openehr/parser/adl14/adl-test-SOME_TYPE.generic_type_use_node.draft.adl +63 -0
- data/spec/lib/openehr/parser/adl14/adl-test-car.paths.test.adl +80 -0
- data/spec/lib/openehr/parser/adl14/adl-test-car.use_node.test.adl +87 -0
- data/spec/lib/openehr/parser/adl14/adl-test-composition.dv_coded_text.test.adl +29 -0
- data/spec/lib/openehr/parser/adl14/adl-test-entry.archetype_bindings.test.adl +47 -0
- data/spec/lib/openehr/parser/adl14/adl-test-entry.archetype_desc_missing_purpose.test.adl +45 -0
- data/spec/lib/openehr/parser/adl14/adl-test-entry.archetype_description.test.adl +61 -0
- data/spec/lib/openehr/parser/adl14/adl-test-entry.archetype_description2.test.adl +45 -0
- data/spec/lib/openehr/parser/adl14/adl-test-entry.archetype_identification.test.adl +26 -0
- data/spec/lib/openehr/parser/adl14/adl-test-entry.archetype_internal_ref.test.adl +36 -0
- data/spec/lib/openehr/parser/adl14/adl-test-entry.archetype_internal_ref2.test.adl +36 -0
- data/spec/lib/openehr/parser/adl14/adl-test-entry.archetype_language.test.adl +47 -0
- data/spec/lib/openehr/parser/adl14/adl-test-entry.archetype_language_no_accreditation.test.adl +38 -0
- data/spec/lib/openehr/parser/adl14/adl-test-entry.archetype_language_order_of_translation_details.test.adl +40 -0
- data/spec/lib/openehr/parser/adl14/adl-test-entry.archetype_ontology.test.adl +25 -0
- data/spec/lib/openehr/parser/adl14/adl-test-entry.archetype_slot.test.adl +40 -0
- data/spec/lib/openehr/parser/adl14/adl-test-entry.archetype_slot.test2.adl +37 -0
- data/spec/lib/openehr/parser/adl14/adl-test-entry.archetype_uncommonkeys.test.adl +29 -0
- data/spec/lib/openehr/parser/adl14/adl-test-entry.basic_types.test.adl +272 -0
- data/spec/lib/openehr/parser/adl14/adl-test-entry.c_code_phrase.test.adl +77 -0
- data/spec/lib/openehr/parser/adl14/adl-test-entry.c_dv_ordinal.test.adl +66 -0
- data/spec/lib/openehr/parser/adl14/adl-test-entry.c_dv_quantity_empty.test.adl +46 -0
- data/spec/lib/openehr/parser/adl14/adl-test-entry.c_dv_quantity_full.test.adl +64 -0
- data/spec/lib/openehr/parser/adl14/adl-test-entry.c_dv_quantity_full2.test.adl +64 -0
- data/spec/lib/openehr/parser/adl14/adl-test-entry.c_dv_quantity_full3.test.adl +64 -0
- data/spec/lib/openehr/parser/adl14/adl-test-entry.c_dv_quantity_item_units_only.test.adl +55 -0
- data/spec/lib/openehr/parser/adl14/adl-test-entry.c_dv_quantity_list.test.adl +58 -0
- data/spec/lib/openehr/parser/adl14/adl-test-entry.c_dv_quantity_property.test.adl +47 -0
- data/spec/lib/openehr/parser/adl14/adl-test-entry.c_dv_quantity_reversed.test.adl +59 -0
- data/spec/lib/openehr/parser/adl14/adl-test-entry.constraint_binding.test.adl +37 -0
- data/spec/lib/openehr/parser/adl14/adl-test-entry.constraint_ref.test.adl +43 -0
- data/spec/lib/openehr/parser/adl14/adl-test-entry.datetime.test.adl +183 -0
- data/spec/lib/openehr/parser/adl14/adl-test-entry.domain_types.test.adl +97 -0
- data/spec/lib/openehr/parser/adl14/adl-test-entry.durations.test.adl +109 -0
- data/spec/lib/openehr/parser/adl14/adl-test-entry.empty_other_contributors.test.adl +42 -0
- data/spec/lib/openehr/parser/adl14/adl-test-entry.missing_language.test.adl +23 -0
- data/spec/lib/openehr/parser/adl14/adl-test-entry.mixed_node_types.draft.adl +61 -0
- data/spec/lib/openehr/parser/adl14/adl-test-entry.most_minimal.test.adl +23 -0
- data/spec/lib/openehr/parser/adl14/adl-test-entry.multi_language.test.adl +52 -0
- data/spec/lib/openehr/parser/adl14/adl-test-entry.special_string.test.adl +88 -0
- data/spec/lib/openehr/parser/adl14/adl-test-entry.structure_test1.test.adl +45 -0
- data/spec/lib/openehr/parser/adl14/adl-test-entry.structure_test2.test.adl +45 -0
- data/spec/lib/openehr/parser/adl14/adl-test-entry.term_binding.test.adl +37 -0
- data/spec/lib/openehr/parser/adl14/adl-test-entry.term_binding2.test.adl +32 -0
- data/spec/lib/openehr/parser/adl14/adl-test-entry.testtranslations.test.adl +83 -0
- data/spec/lib/openehr/parser/adl14/adl-test-entry.translations_author_language.test.adl +34 -0
- data/spec/lib/openehr/parser/adl14/adl-test-entry.translations_language_author.test.adl +34 -0
- data/spec/lib/openehr/parser/adl14/adl-test-entry.unicode_BOM_support.test.adl +41 -0
- data/spec/lib/openehr/parser/adl14/adl-test-entry.unicode_support.test.adl +41 -0
- data/spec/lib/openehr/parser/adl14/openEHR-EHR-ACTION.imaging.v1.adl +275 -0
- data/spec/lib/openehr/parser/adl14/openEHR-EHR-ACTION.referral.v1.adl +351 -0
- data/spec/lib/openehr/parser/adl14/openEHR-EHR-CLUSTER.auscultation-chest.v1.adl +765 -0
- data/spec/lib/openehr/parser/adl14/openEHR-EHR-CLUSTER.auscultation.v1.adl +48 -0
- data/spec/lib/openehr/parser/adl14/openEHR-EHR-CLUSTER.dimensions-circumference.v1.adl +134 -0
- data/spec/lib/openehr/parser/adl14/openEHR-EHR-CLUSTER.dimensions.v1.adl +241 -0
- data/spec/lib/openehr/parser/adl14/openEHR-EHR-CLUSTER.exam-abdomen.v1.adl +321 -0
- data/spec/lib/openehr/parser/adl14/openEHR-EHR-CLUSTER.exam-chest.v1.adl +379 -0
- data/spec/lib/openehr/parser/adl14/openEHR-EHR-CLUSTER.exam-fetus.v1.adl +577 -0
- data/spec/lib/openehr/parser/adl14/openEHR-EHR-CLUSTER.exam-generic-joint.v1.adl +146 -0
- data/spec/lib/openehr/parser/adl14/openEHR-EHR-CLUSTER.exam-generic-lymphnode.v1.adl +176 -0
- data/spec/lib/openehr/parser/adl14/openEHR-EHR-CLUSTER.exam-generic-mass.v1.adl +221 -0
- data/spec/lib/openehr/parser/adl14/openEHR-EHR-CLUSTER.exam-generic.v1.adl +139 -0
- data/spec/lib/openehr/parser/adl14/openEHR-EHR-CLUSTER.exam-nervous_system.v1.adl +116 -0
- data/spec/lib/openehr/parser/adl14/openEHR-EHR-CLUSTER.exam-uterine_cervix.v1.adl +420 -0
- data/spec/lib/openehr/parser/adl14/openEHR-EHR-CLUSTER.exam-uterus.v1.adl +293 -0
- data/spec/lib/openehr/parser/adl14/openEHR-EHR-COMPOSITION.discharge.v1draft.adl +53 -0
- data/spec/lib/openehr/parser/adl14/openEHR-EHR-COMPOSITION.encounter.v1draft.adl +45 -0
- data/spec/lib/openehr/parser/adl14/openEHR-EHR-EVALUATION.adverse.v1.adl +411 -0
- data/spec/lib/openehr/parser/adl14/openEHR-EHR-EVALUATION.columna_vertebral.v1.adl +85 -0
- data/spec/lib/openehr/parser/adl14/openEHR-EHR-INSTRUCTION.medication.v1.adl +88 -0
- data/spec/lib/openehr/parser/adl14/openEHR-EHR-INSTRUCTION.referral.v1.adl +84 -0
- data/spec/lib/openehr/parser/adl14/openEHR-EHR-ITEM_TREE.Laboratory_request.v1.adl +492 -0
- data/spec/lib/openehr/parser/adl14/openEHR-EHR-ITEM_TREE.follow_up.v1draft.adl +94 -0
- data/spec/lib/openehr/parser/adl14/openEHR-EHR-ITEM_TREE.imaging.v1.adl +127 -0
- data/spec/lib/openehr/parser/adl14/openEHR-EHR-ITEM_TREE.medication-formulation.v1.adl +457 -0
- data/spec/lib/openehr/parser/adl14/openEHR-EHR-ITEM_TREE.medication.v1.adl +869 -0
- data/spec/lib/openehr/parser/adl14/openEHR-EHR-ITEM_TREE.referral.v1.adl +494 -0
- data/spec/lib/openehr/parser/adl14/openEHR-EHR-OBSERVATION.apgar.v1.adl +545 -0
- data/spec/lib/openehr/parser/adl14/openEHR-EHR-OBSERVATION.blood_pressure.v1.adl +673 -0
- data/spec/lib/openehr/parser/adl14/openEHR-EHR-OBSERVATION.body_mass_index.v1.adl +166 -0
- data/spec/lib/openehr/parser/adl14/openEHR-EHR-OBSERVATION.lab_test.v1.adl +376 -0
- data/spec/lib/openehr/parser/adl14/openEHR-EHR-OBSERVATION.testassumedvalue.v1.adl +99 -0
- data/spec/lib/openehr/parser/adl14/openEHR-EHR-SECTION.findings.v1.adl +47 -0
- data/spec/lib/openehr/parser/adl14/openEHR-EHR-SECTION.reason_for_encounter.v1.adl +51 -0
- data/spec/lib/openehr/parser/adl14/openEHR-EHR-SECTION.summary.v1.adl +52 -0
- data/spec/lib/openehr/parser/adl14/openEHR-EHR-SECTION.vital_signs.v1.adl +54 -0
- data/spec/lib/openehr/parser/adl_archetype_internal_ref2_spec.rb +42 -0
- data/spec/lib/openehr/parser/adl_archetype_internal_ref_spec.rb +125 -0
- data/spec/lib/openehr/parser/adl_archetype_internal_ref_with_generics_spec.rb +258 -0
- data/spec/lib/openehr/parser/adl_archetype_ontology_binding_spec.rb +98 -0
- data/spec/lib/openehr/parser/adl_archetype_ontology_spec.rb +42 -0
- data/spec/lib/openehr/parser/adl_archetype_slot_cluster_spec.rb +101 -0
- data/spec/lib/openehr/parser/adl_archetype_slot_spec.rb +193 -0
- data/spec/lib/openehr/parser/adl_archetype_uncommon_term_keys_spec.rb +25 -0
- data/spec/lib/openehr/parser/adl_description_spec.rb +164 -0
- data/spec/lib/openehr/parser/adl_identification_spec.rb +18 -0
- data/spec/lib/openehr/parser/adl_language_no_accreditation_spec.rb +66 -0
- data/spec/lib/openehr/parser/adl_language_order_spec.rb +68 -0
- data/spec/lib/openehr/parser/adl_language_spec.rb +119 -0
- data/spec/lib/openehr/parser/adl_language_translation_author_language_spec.rb +50 -0
- data/spec/lib/openehr/parser/adl_language_translation_language_author_spec.rb +46 -0
- data/spec/lib/openehr/parser/adl_parser_spec.rb +347 -0
- data/spec/lib/openehr/parser/adl_path_spec.rb +176 -0
- data/spec/lib/openehr/parser/base_spec.rb +19 -0
- data/spec/lib/openehr/parser/basic_generic_type_spec.rb +18 -0
- data/spec/lib/openehr/parser/basic_type_spec.rb +2922 -0
- data/spec/lib/openehr/parser/c_dv_quantity_any_allowed_spec.rb +34 -0
- data/spec/lib/openehr/parser/c_dv_quantity_shared_example_for_lacked_items_spec.rb +36 -0
- data/spec/lib/openehr/parser/c_dv_quantity_shared_example_spec.rb +146 -0
- data/spec/lib/openehr/parser/cdv_ordinal_parse_spec.rb +231 -0
- data/spec/lib/openehr/parser/code_phrase_spec.rb +96 -0
- data/spec/lib/openehr/parser/constraint_binding_spec.rb +26 -0
- data/spec/lib/openehr/parser/constraint_ref_spec.rb +32 -0
- data/spec/lib/openehr/parser/date_time_spec.rb +1953 -0
- data/spec/lib/openehr/parser/duration_spec.rb +475 -0
- data/spec/lib/openehr/parser/dv_coded_text_parse_spec.rb +27 -0
- data/spec/lib/openehr/parser/empty_other_contributors_spec.rb +19 -0
- data/spec/lib/openehr/parser/lab_test_parser_spec.rb +14 -0
- data/spec/lib/openehr/parser/missing_language_spec.rb +20 -0
- data/spec/lib/openehr/parser/missing_purpose_spec.rb +23 -0
- data/spec/lib/openehr/parser/mixed_node_types_spec.rb +16 -0
- data/spec/lib/openehr/parser/most_minimal_adl_spec.rb +19 -0
- data/spec/lib/openehr/parser/multi_language_spec.rb +58 -0
- data/spec/lib/openehr/parser/parser_spec_helper.rb +7 -0
- data/spec/lib/openehr/parser/path_based_terminology_binding_spec.rb +30 -0
- data/spec/lib/openehr/parser/special_string_spec.rb +20 -0
- data/spec/lib/openehr/parser/structure_comment_spec.rb +21 -0
- data/spec/lib/openehr/parser/structure_nested_comments_spec.rb +22 -0
- data/spec/lib/openehr/parser/structure_spec.rb +202 -0
- data/spec/lib/openehr/parser/term_binding_spec.rb +54 -0
- data/spec/lib/openehr/parser/unicode_bom_spec.rb +17 -0
- data/spec/lib/openehr/parser/unicode_support_spec.rb +46 -0
- data/spec/lib/openehr/rm/common/archetyped/archetyped_spec.rb +50 -0
- data/spec/lib/openehr/rm/common/archetyped/feeder_audit_details_spec.rb +60 -0
- data/spec/lib/openehr/rm/common/archetyped/feeder_audit_spec.rb +51 -0
- data/spec/lib/openehr/rm/common/archetyped/link_spec.rb +42 -0
- data/spec/lib/openehr/rm/common/archetyped/locatable_spec.rb +89 -0
- data/spec/lib/openehr/rm/common/archetyped/pathable_spec.rb +42 -0
- data/spec/lib/openehr/rm/common/change_control/contribution_spec.rb +56 -0
- data/spec/lib/openehr/rm/common/change_control/imported_version_spec.rb +62 -0
- data/spec/lib/openehr/rm/common/change_control/original_version_spec.rb +71 -0
- data/spec/lib/openehr/rm/common/change_control/version_spec.rb +91 -0
- data/spec/lib/openehr/rm/common/change_control/versioned_object_spec.rb +284 -0
- data/spec/lib/openehr/rm/common/directory/folder_spec.rb +26 -0
- data/spec/lib/openehr/rm/common/generic/attestation_spec.rb +62 -0
- data/spec/lib/openehr/rm/common/generic/audit_details_spec.rb +51 -0
- data/spec/lib/openehr/rm/common/generic/participation_spec.rb +36 -0
- data/spec/lib/openehr/rm/common/generic/party_identified_spec.rb +64 -0
- data/spec/lib/openehr/rm/common/generic/party_proxy_spec.rb +18 -0
- data/spec/lib/openehr/rm/common/generic/party_related_spec.rb +24 -0
- data/spec/lib/openehr/rm/common/generic/revision_history_item_spec.rb +43 -0
- data/spec/lib/openehr/rm/common/generic/revision_history_spec.rb +45 -0
- data/spec/lib/openehr/rm/common/resource/authored_resource_spec.rb +68 -0
- data/spec/lib/openehr/rm/common/resource/resource_description_item_spec.rb +105 -0
- data/spec/lib/openehr/rm/common/resource/resource_description_spec.rb +74 -0
- data/spec/lib/openehr/rm/common/resource/translation_details_spec.rb +35 -0
- data/spec/lib/openehr/rm/composition/composition_spec.rb +92 -0
- data/spec/lib/openehr/rm/composition/content/content_item_spec.rb +14 -0
- data/spec/lib/openehr/rm/composition/content/entry/action_spec.rb +69 -0
- data/spec/lib/openehr/rm/composition/content/entry/activity_spec.rb +61 -0
- data/spec/lib/openehr/rm/composition/content/entry/admin_entry_spec.rb +38 -0
- data/spec/lib/openehr/rm/composition/content/entry/care_entry_spec.rb +37 -0
- data/spec/lib/openehr/rm/composition/content/entry/entry_spec.rb +98 -0
- data/spec/lib/openehr/rm/composition/content/entry/evaluation_spec.rb +37 -0
- data/spec/lib/openehr/rm/composition/content/entry/instruction_details_spec.rb +51 -0
- data/spec/lib/openehr/rm/composition/content/entry/instruction_spec.rb +62 -0
- data/spec/lib/openehr/rm/composition/content/entry/ism_transition_spec.rb +46 -0
- data/spec/lib/openehr/rm/composition/content/entry/observation_spec.rb +45 -0
- data/spec/lib/openehr/rm/composition/content/navigation/section_spec.rb +32 -0
- data/spec/lib/openehr/rm/composition/event_context_spec.rb +88 -0
- data/spec/lib/openehr/rm/data_structures/data_structure_spec.rb +21 -0
- data/spec/lib/openehr/rm/data_structures/history/event_spec.rb +44 -0
- data/spec/lib/openehr/rm/data_structures/history/history_spec.rb +67 -0
- data/spec/lib/openehr/rm/data_structures/history/interval_event_spec.rb +43 -0
- data/spec/lib/openehr/rm/data_structures/item_structure/item_list_spec.rb +53 -0
- data/spec/lib/openehr/rm/data_structures/item_structure/item_single_spec.rb +29 -0
- data/spec/lib/openehr/rm/data_structures/item_structure/item_table_spec.rb +147 -0
- data/spec/lib/openehr/rm/data_structures/item_structure/item_tree_spec.rb +48 -0
- data/spec/lib/openehr/rm/data_structures/item_structure/representation/cluster_spec.rb +26 -0
- data/spec/lib/openehr/rm/data_structures/item_structure/representation/element_spec.rb +22 -0
- data/spec/lib/openehr/rm/data_types/basic/data_value_spec.rb +17 -0
- data/spec/lib/openehr/rm/data_types/basic/dv_boolean_spec.rb +29 -0
- data/spec/lib/openehr/rm/data_types/basic/dv_identifier_spec.rb +108 -0
- data/spec/lib/openehr/rm/data_types/basic/dv_state_spec.rb +44 -0
- data/spec/lib/openehr/rm/data_types/encapsulated/dv_encapsulated_spec.rb +42 -0
- data/spec/lib/openehr/rm/data_types/encapsulated/dv_multimedia_spec.rb +79 -0
- data/spec/lib/openehr/rm/data_types/encapsulated/dv_parsable_spec.rb +34 -0
- data/spec/lib/openehr/rm/data_types/quantity/date_time/dv_date_spec.rb +64 -0
- data/spec/lib/openehr/rm/data_types/quantity/date_time/dv_date_time_spec.rb +26 -0
- data/spec/lib/openehr/rm/data_types/quantity/date_time/dv_duration_spec.rb +44 -0
- data/spec/lib/openehr/rm/data_types/quantity/date_time/dv_temporal_spec.rb +25 -0
- data/spec/lib/openehr/rm/data_types/quantity/date_time/dv_time_spec.rb +41 -0
- data/spec/lib/openehr/rm/data_types/quantity/dv_absolute_quantity_spec.rb +35 -0
- data/spec/lib/openehr/rm/data_types/quantity/dv_amount_spec.rb +105 -0
- data/spec/lib/openehr/rm/data_types/quantity/dv_count_spec.rb +12 -0
- data/spec/lib/openehr/rm/data_types/quantity/dv_interval_spec.rb +17 -0
- data/spec/lib/openehr/rm/data_types/quantity/dv_ordered_spec.rb +60 -0
- data/spec/lib/openehr/rm/data_types/quantity/dv_ordinal_spec.rb +74 -0
- data/spec/lib/openehr/rm/data_types/quantity/dv_proportion_spec.rb +162 -0
- data/spec/lib/openehr/rm/data_types/quantity/dv_quantified_spec.rb +36 -0
- data/spec/lib/openehr/rm/data_types/quantity/dv_quantity_spec.rb +78 -0
- data/spec/lib/openehr/rm/data_types/quantity/proportion_kind_spec.rb +24 -0
- data/spec/lib/openehr/rm/data_types/quantity/reference_range_spec.rb +43 -0
- data/spec/lib/openehr/rm/data_types/text/code_phrase_spec.rb +23 -0
- data/spec/lib/openehr/rm/data_types/text/dv_paragraph_spec.rb +13 -0
- data/spec/lib/openehr/rm/data_types/text/dv_text_spec.rb +79 -0
- data/spec/lib/openehr/rm/data_types/text/term_mapping_spec.rb +59 -0
- data/spec/lib/openehr/rm/data_types/uri/dv_ehr_uri_spec.rb +21 -0
- data/spec/lib/openehr/rm/data_types/uri/dv_uri_spec.rb +36 -0
- data/spec/lib/openehr/rm/demographic/actor_spec.rb +79 -0
- data/spec/lib/openehr/rm/demographic/address_spec.rb +33 -0
- data/spec/lib/openehr/rm/demographic/capability_spec.rb +37 -0
- data/spec/lib/openehr/rm/demographic/contact_spec.rb +45 -0
- data/spec/lib/openehr/rm/demographic/party_identity_spec.rb +32 -0
- data/spec/lib/openehr/rm/demographic/party_relationship_spec.rb +84 -0
- data/spec/lib/openehr/rm/demographic/party_spec.rb +131 -0
- data/spec/lib/openehr/rm/demographic/role_spec.rb +58 -0
- data/spec/lib/openehr/rm/ehr/ehr_access_spec.rb +33 -0
- data/spec/lib/openehr/rm/ehr/ehr_spec.rb +139 -0
- data/spec/lib/openehr/rm/ehr/ehr_status_spec.rb +52 -0
- data/spec/lib/openehr/rm/ehr/versioned_composition_spec.rb +33 -0
- data/spec/lib/openehr/rm/integration/generic_entry_spec.rb +31 -0
- data/spec/lib/openehr/rm/support/identification/access_group_ref_spec.rb +19 -0
- data/spec/lib/openehr/rm/support/identification/archetype_id_spec.rb +152 -0
- data/spec/lib/openehr/rm/support/identification/generic_id_spec.rb +33 -0
- data/spec/lib/openehr/rm/support/identification/hier_object_id_spec.rb +12 -0
- data/spec/lib/openehr/rm/support/identification/internet_id_spec.rb +12 -0
- data/spec/lib/openehr/rm/support/identification/iso_oid_spec.rb +12 -0
- data/spec/lib/openehr/rm/support/identification/locatable_ref_spec.rb +34 -0
- data/spec/lib/openehr/rm/support/identification/object_id_spec.rb +24 -0
- data/spec/lib/openehr/rm/support/identification/object_ref_spec.rb +33 -0
- data/spec/lib/openehr/rm/support/identification/object_version_id_spec.rb +59 -0
- data/spec/lib/openehr/rm/support/identification/party_ref_spec.rb +29 -0
- data/spec/lib/openehr/rm/support/identification/template_id_spec.rb +12 -0
- data/spec/lib/openehr/rm/support/identification/terminology_id_spec.rb +33 -0
- data/spec/lib/openehr/rm/support/identification/uid_based_id_spec.rb +50 -0
- data/spec/lib/openehr/rm/support/identification/uid_spec.rb +29 -0
- data/spec/lib/openehr/rm/support/identification/version_tree_id_spec.rb +104 -0
- data/spec/lib/openehr/rm/support/measurement_service_spec.rb +7 -0
- data/spec/lib/openehr/rm/support/terminology_service_spec.rb +24 -0
- data/spec/lib/openehr/serializer/adl-test-entry.most_minimal.test.adl +20 -0
- data/spec/lib/openehr/serializer/adl_serializer_spec.rb +47 -0
- data/spec/lib/openehr/serializer/openEHR-EHR-SECTION.test.v1.adl +38 -0
- data/spec/lib/openehr/serializer/openEHR-EHR-SECTION.test.v1.xml +58 -0
- data/spec/lib/openehr/serializer/sample_archetype_spec.rb +44 -0
- data/spec/lib/openehr/serializer/xml_serializer_spec.rb +49 -0
- data/spec/lib/openehr/terminology/open_ehr_terminology_spec.rb +40 -0
- data/spec/spec.opts +6 -0
- data/spec/spec_helper.rb +58 -0
- 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
|