Changeset 399
- Timestamp:
- Jan 25, 2010, 12:03:38 PM (14 years ago)
- Location:
- ruby/trunk
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
ruby/trunk/lib/open_ehr/am/archetype/constraint_model/primitive.rb
r398 r399 175 175 176 176 class CTime < CPrimitive 177 177 attr_accessor :range 178 attr_reader :minute_validity, :second_validity, 179 :millisecond_validity 180 181 def initialize(args = { }) 182 super 183 self.range = args[:range] 184 self.millisecond_validity = args[:millisecond_validity] 185 self.second_validity = args[:second_validity] 186 self.minute_validity = args[:minute_validity] 187 end 188 189 def minute_validity=(minute_validity) 190 if (minute_validity == ValidityKind::OPTIONAL && 191 @second_validity == ValidityKind::MANDATORY) || 192 (minute_validity == ValidityKind::DISALLOWED && 193 @second_validity != ValidityKind::DISALLOWED) 194 raise ArgumentError, 'minute_validity is invalid' 195 end 196 @minute_validity = minute_validity 197 end 198 199 def second_validity=(second_validity) 200 if (second_validity == ValidityKind::OPTIONAL && 201 @millisecond_validity == ValidityKind::MANDATORY) || 202 (second_validity == ValidityKind::DISALLOWED && 203 @millisecond_validity != ValidityKind::DISALLOWED) 204 raise ArgumentError, 'second_validity is invalid' 205 end 206 @second_validity = second_validity 207 end 208 209 def millisecond_validity=(millisecond_validity) 210 @millisecond_validity = millisecond_validity 211 end 212 213 def validity_is_range? 214 return !@range.nil? 215 end 178 216 end 179 217 end # of Primitive -
ruby/trunk/spec/lib/open_ehr/am/archetype/constraint_model/primitive/c_date_spec.rb
r397 r399 8 8 default_value = ISO8601Date.new('2010-01-18') 9 9 assumed_value = ISO8601Date.new('2007-02-19') 10 11 10 range = Interval.new(:lower => ISO8601Date.new('2001-01-01'), 12 11 :upper => ISO8601Date.new('2010-12-31')) -
ruby/trunk/spec/lib/open_ehr/am/archetype/constraint_model/primitive/c_time_spec.rb
r398 r399 1 1 require File.dirname(__FILE__) + '/../../../../../../spec_helper' 2 include OpenEHR::AssumedLibraryTypes 3 include OpenEHR::AM::Archetype 2 4 include OpenEHR::AM::Archetype::ConstraintModel::Primitive 3 include OpenEHR::AssumedLibraryTypes 5 4 6 5 7 describe CTime do 6 8 before(:each) do 7 default_value = ISO8601Time.new('01:23:45 .1')8 assumed_value = ISO8601Time.new('22:02:33 .2')9 range = Interval.new(:lower => ISO8601Time.new('01:01:22 .3'),10 :upper => ISO8601Time.new('23:55:59 .4'))9 default_value = ISO8601Time.new('01:23:45') 10 assumed_value = ISO8601Time.new('22:02:33') 11 range = Interval.new(:lower => ISO8601Time.new('01:01:22'), 12 :upper => ISO8601Time.new('23:55:59')) 11 13 @c_time = CTime.new(:default_value => default_value, 12 14 :assumed_value => assumed_value, 13 :range => range) 15 :range => range, 16 :minute_validity => ValidityKind::MANDATORY, 17 :second_validity => ValidityKind::OPTIONAL, 18 :millisecond_validity => ValidityKind::DISALLOWED) 14 19 end 15 20 … … 17 22 @c_time.should be_an_instance_of CTime 18 23 end 24 25 it 'minute_validity should be assigned' do 26 @c_time.minute_validity.should be_equal ValidityKind::MANDATORY 27 end 28 29 it 'seconds_validity should be assigned properly' do 30 @c_time.second_validity.should be_equal ValidityKind::OPTIONAL 31 end 32 33 it 'millisecond_validity should be assigned properly' do 34 @c_time.millisecond_validity.should be_equal ValidityKind::DISALLOWED 35 end 36 37 it 'should be true if range is not nil' do 38 @c_time.should be_validity_is_range 39 end 40 41 it 'second_validity should not be MANDATORY if minute_validity is optional' do 42 @c_time.second_validity = ValidityKind::MANDATORY 43 lambda { 44 @c_time.minute_validity = ValidityKind::OPTIONAL 45 }.should raise_error ArgumentError 46 end 47 48 it 'second_validity should be DISALLOWED if minute_validity is DISALLOWED' do 49 lambda { 50 @c_time.minute_validity = ValidityKind::DISALLOWED 51 }.should raise_error ArgumentError 52 end 53 54 it 'should not raise ArgumentError if minute_validity and second_validity are DISALLOWED' do 55 @c_time.second_validity = ValidityKind::DISALLOWED 56 lambda { 57 @c_time.minute_validity = ValidityKind::DISALLOWED 58 }.should_not raise_error ArgumentError 59 end 60 61 it 'millisecond_validity should not be MANDATORY if second_validity is optional' do 62 @c_time.millisecond_validity = ValidityKind::MANDATORY 63 lambda { 64 @c_time.second_validity = ValidityKind::OPTIONAL 65 }.should raise_error ArgumentError 66 end 67 68 it 'millisecond_validity should be DISALLOWED if second_validity is DISALLOWED' do 69 lambda { 70 @c_time.second_validity = ValidityKind::DISALLOWED 71 }.should_not raise_error ArgumentError 72 end 73 74 it 'should raise ArgumentError if second_validity is DISALLOWED and millisecond_validity is OPTIONAL' do 75 @c_time.millisecond_validity = ValidityKind::OPTIONAL 76 lambda { 77 @c_time.second_validity = ValidityKind::DISALLOWED 78 }.should raise_error ArgumentError 79 end 19 80 end
Note:
See TracChangeset
for help on using the changeset viewer.