source: ruby/trunk/spec/lib/open_ehr/am/archetype/constraint_model/primitive/c_date_time_spec.rb@ 400

Last change on this file since 400 was 400, checked in by KOBAYASHI, Shinji, 14 years ago

refs #71

File size: 4.3 KB
Line 
1require File.dirname(__FILE__) + '/../../../../../../spec_helper'
2include OpenEHR::AssumedLibraryTypes
3include OpenEHR::AM::Archetype
4include OpenEHR::AM::Archetype::ConstraintModel::Primitive
5
6describe CDateTime do
7 before(:each) do
8 default_value = ISO8601DateTime.new('2010-01-25T01:23:45.1')
9 assumed_value = ISO8601DateTime.new('2001-12-23T22:02:33.2')
10 range = Interval.new(:lower => ISO8601DateTime.new('1995-04-19T01:01:22'),
11 :upper => ISO8601DateTime.new('2022-12-31T23:55:59'))
12 @c_date_time =
13 CDateTime.new(:default_value => default_value,
14 :assumed_value => assumed_value,
15 :range => range,
16 :month_validity => ValidityKind::MANDATORY,
17 :day_validity => ValidityKind::MANDATORY,
18 :hour_vaildity => ValidityKind::MANDATORY,
19 :minute_validity => ValidityKind::MANDATORY,
20 :second_validity => ValidityKind::OPTIONAL,
21 :millisecond_validity => ValidityKind::DISALLOWED,
22 :timezone_validity => ValidityKind::OPTIONAL)
23 end
24
25 it 'should be an instance of CDateTime' do
26 @c_date_time.should be_an_instance_of CDateTime
27 end
28
29 it 'hour_validity should be assigned properly' do
30 @c_date_time.hour_validity.should be_equal ValidityKind::MANDATORY
31 end
32
33 it 'should raise ArgumentError if hour_validity is DISALLOWED and minute_validity is not DISALLOWED' do
34 lambda {
35 @c_date_time.hour_validity = ValidityKind::DISALLOWED
36 }.should raise_error ArgumentError
37 end
38
39 it 'should not raise ArgumentError if hour_validity is DISALLOWED and minute_validity is DISALLOWED' do
40 @c_date_time.second_validity = ValidityKind::DISALLOWED
41 @c_date_time.minute_validity = ValidityKind::DISALLOWED
42 lambda {
43 @c_date_time.hour_validity = ValidityKind::DISALLOWED
44 }.should_not raise_error ArgumentError
45 end
46
47 it 'should raise ArgumentError if hour_validity is OPTIONAL and minute_validity is MANDATORY' do
48 lambda {
49 @c_date_time.hour_validity = ValidityKind::OPTIONAL
50 }.should raise_error ArgumentError
51 end
52
53 it 'should not raise ArgumentError if hour_validity is OPTIONAL and minute_validity is OPTIONAL' do
54 @c_date_time.minute_validity = ValidityKind::OPTIONAL
55 lambda {
56 @c_date_time.hour_validity = ValidityKind::OPTIONAL
57 }.should_not raise_error ArgumentError
58 end
59
60 it 'should not raise Argument Error if hour_validity is OPTIONAL and minute_validity is DISALLOWED' do
61 @c_date_time.second_validity = ValidityKind::DISALLOWED
62 @c_date_time.minute_validity = ValidityKind::DISALLOWED
63 lambda {
64 @c_date_time.hour_validity = ValidityKind::OPTIONAL
65 }.should_not raise_error ArgumentError
66 end
67
68 it 'should raise ArgumentError if day_validity is DISALLOWED and hour_validity is not DISALLOWED' do
69 lambda {
70 @c_date_time.day_validity = ValidityKind::DISALLOWED
71 }.should raise_error ArgumentError
72 end
73
74 it 'should not raise ArgumentError if day_validity is DISALLOWED and hour_validity is DISALLOWED' do
75 @c_date_time.second_validity = ValidityKind::DISALLOWED
76 @c_date_time.minute_validity = ValidityKind::DISALLOWED
77 @c_date_time.hour_validity = ValidityKind::DISALLOWED
78 lambda {
79 @c_date_time.day_validity = ValidityKind::DISALLOWED
80 }.should_not raise_error ArgumentError
81 end
82
83 it 'should raise ArgumentError if day_validity is OPTIONAL and hour_validity is MANDATORY' do
84 lambda {
85 @c_date_time.day_validity = ValidityKind::OPTIONAL
86 }.should raise_error ArgumentError
87 end
88
89 it 'should not raise ArgumentError if day_validity OPTIONAL and hour_validity is OPTIONAL' do
90 @c_date_time.second_validity = ValidityKind::DISALLOWED
91 @c_date_time.minute_validity = ValidityKind::DISALLOWED
92 @c_date_time.hour_validity = ValidityKind::OPTIONAL
93 lambda {
94 @c_date_time.day_validity = ValidityKind::OPTIONAL
95 }.should_not raise_error ArgumentError
96 end
97
98 it 'should not raise ArgumentError if day_validity OPTIONAL and hour_validity is DISALLOWED' do
99 @c_date_time.second_validity = ValidityKind::DISALLOWED
100 @c_date_time.minute_validity = ValidityKind::DISALLOWED
101 @c_date_time.hour_validity = ValidityKind::DISALLOWED
102 lambda {
103 @c_date_time.day_validity = ValidityKind::OPTIONAL
104 }.should_not raise_error ArgumentError
105 end
106end
Note: See TracBrowser for help on using the repository browser.