Changeset 399 for ruby


Ignore:
Timestamp:
Jan 25, 2010, 12:03:38 PM (14 years ago)
Author:
KOBAYASHI, Shinji
Message:

refs #71

Location:
ruby/trunk
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • ruby/trunk/lib/open_ehr/am/archetype/constraint_model/primitive.rb

    r398 r399  
    175175
    176176          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
    178216          end
    179217        end # of Primitive
  • ruby/trunk/spec/lib/open_ehr/am/archetype/constraint_model/primitive/c_date_spec.rb

    r397 r399  
    88    default_value = ISO8601Date.new('2010-01-18')
    99    assumed_value = ISO8601Date.new('2007-02-19')
    10    
    1110    range = Interval.new(:lower => ISO8601Date.new('2001-01-01'),
    1211                         :upper => ISO8601Date.new('2010-12-31'))
  • ruby/trunk/spec/lib/open_ehr/am/archetype/constraint_model/primitive/c_time_spec.rb

    r398 r399  
    11require File.dirname(__FILE__) + '/../../../../../../spec_helper'
     2include OpenEHR::AssumedLibraryTypes
     3include OpenEHR::AM::Archetype
    24include OpenEHR::AM::Archetype::ConstraintModel::Primitive
    3 include OpenEHR::AssumedLibraryTypes
     5
    46
    57describe CTime do
    68  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'))
    1113    @c_time = CTime.new(:default_value => default_value,
    1214                        :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)
    1419  end
    1520
     
    1722    @c_time.should be_an_instance_of CTime
    1823  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
    1980end
Note: See TracChangeset for help on using the changeset viewer.