Changeset 70
- Timestamp:
- Jun 29, 2008, 10:52:16 PM (16 years ago)
- Location:
- ruby/trunk/lib/models
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
ruby/trunk/lib/models/assumed_library_types.rb
r69 r70 1 require 'date' 2 1 3 module OpenEHR 2 4 module Assumed_Library_Types … … 76 78 NOMINAL_DAYS_IN_YEAR = 365.24 77 79 SECONDS_IN_MINUTE = 60 80 81 def self.valid_year?(year) 82 year >= 0 83 end 84 85 def self.valid_day?(y, m, d) 86 Date.valid_date?(y,m,d) and valid_year? y 87 end 88 89 def self.valid_hour?(h,m,s) 90 valid_minute?(m) and valid_second?(s) and ((h >= 0 and h < HOURS_IN_DAY) or (h == HOURS_IN_DAY and m == 0 and s == 0)) 91 end 92 def self.valid_minute?(m) 93 m >= 0 and m < MINUTES_IN_HOUR 94 end 95 def self.valid_second?(s) 96 s >= 0 and s < SECONDS_IN_MINUTE 97 end 98 def self.valid_month?(m) 99 m >= 1 and m <= MONTH_IN_YEAR 100 end 78 101 end # end of TIME_DEFINITIONS 79 102 80 class ISO_8601_DATE < TIME_DEFINITIONS 81 103 class ISO8601_DATE < TIME_DEFINITIONS 104 attr_reader :year, :month, :day 105 def initialize(year = nil, month = nil, day = nil) 106 @year = @month = @day = nil 107 if !year.nil? 108 self.year = year 109 end 110 if !month.nil? 111 self.month = month 112 end 113 if !day.nil? 114 self.day = day 115 end 116 end 117 def year=(year) 118 raise ArgumentError, "Year is not valid" if !ISO8601_DATE.valid_year?(year) 119 @year = year 120 end 121 def month=(month) 122 raise ArgumentError, "Month is not valid" if !ISO8601_DATE.valid_month?(month) 123 @month = month 124 end 125 def day=(day) 126 raise ArgumentError, "Day is not valid" if !ISO8601_DATE.valid_day?(@year, @month, day) 127 @day = day 128 end 129 def as_string 130 if (!@year.nil? and !@month.nil? and !@day.nil?) 131 Date.new(@year, @month, @day).to_s 132 elsif (!@year.nil? and !@month.nil? and @day.nil?) 133 Date.new(@year, @month).to_s[0,7] 134 elsif (!@year.nil? and @month.nil? and @day.nil?) 135 Date.new(@year).to_s[0,4] 136 end 137 end 138 def month_unknown? 139 @month.nil? 140 end 141 def day_unknown? 142 @day.nil? 143 end 144 def is_extended? 145 true 146 end 147 def is_partial? 148 month_unknown? or day_unknown? 149 end 150 def valid_iso8601_date(string) 151 begin 152 date = Date.parse(string) 153 rescue 154 return false 155 end 156 true 157 end 82 158 end # end of ISO_8601_DATE 83 159 end # end of Assumed_Types -
ruby/trunk/lib/models/tests/test_assumed_library_types.rb
r69 r70 6 6 @interval = OpenEHR::Assumed_Library_Types::Interval.new(1,2) 7 7 @time_definition = OpenEHR::Assumed_Library_Types::TIME_DEFINITIONS.new 8 @iso8601_date = OpenEHR::Assumed_Library_Types::ISO8601_DATE.new 9 @iso8601_time = OpenEHR::Assumed_Library_Types::ISO8601_TIME.new 8 10 end 9 11 def test_initialize 10 12 assert_instance_of OpenEHR::Assumed_Library_Types::Interval, @interval 11 13 assert_instance_of OpenEHR::Assumed_Library_Types::TIME_DEFINITIONS, @time_definition 14 assert_instance_of OpenEHR::Assumed_Library_Types::ISO8601_DATE, @iso8601_date 15 assert_instance_of OpenEHR::Assumed_Library_Types::ISO8601_TIME, @iso8601_time 12 16 end 13 17 def test_limits_comparable … … 41 45 assert !@interval.upper_included 42 46 end 43 def test_definitions 47 48 def test_time_definitions 44 49 assert_equal OpenEHR::Assumed_Library_Types::TIME_DEFINITIONS::DAYS_IN_LEAP_YEAR, 366 45 50 assert_equal OpenEHR::Assumed_Library_Types::TIME_DEFINITIONS::DAYS_IN_WEEK, 7 … … 54 59 assert_equal OpenEHR::Assumed_Library_Types::TIME_DEFINITIONS::SECONDS_IN_MINUTE, 60 55 60 end 61 62 def test_date_time_valid 63 assert OpenEHR::Assumed_Library_Types::TIME_DEFINITIONS.valid_year?(2008) 64 assert !OpenEHR::Assumed_Library_Types::TIME_DEFINITIONS.valid_year?(-20) 65 assert OpenEHR::Assumed_Library_Types::TIME_DEFINITIONS.valid_year?(0) 66 # today 67 assert OpenEHR::Assumed_Library_Types::TIME_DEFINITIONS.valid_day?(2008,6,19) 68 # test valid_day lower limit 69 assert !OpenEHR::Assumed_Library_Types::TIME_DEFINITIONS.valid_day?(0,0,0) 70 assert OpenEHR::Assumed_Library_Types::TIME_DEFINITIONS.valid_day?(0,1,1) 71 assert !OpenEHR::Assumed_Library_Types::TIME_DEFINITIONS.valid_day?(-1,1,1) 72 assert !OpenEHR::Assumed_Library_Types::TIME_DEFINITIONS.valid_day?(0,1,0) 73 # test valid_day upper and lowerlimit of each month 74 assert !OpenEHR::Assumed_Library_Types::TIME_DEFINITIONS.valid_day?(0,0,1) 75 assert OpenEHR::Assumed_Library_Types::TIME_DEFINITIONS.valid_day?(2008,1,1) 76 assert !OpenEHR::Assumed_Library_Types::TIME_DEFINITIONS.valid_day?(2008,1,0) 77 assert !OpenEHR::Assumed_Library_Types::TIME_DEFINITIONS.valid_day?(2008,0,1) 78 assert OpenEHR::Assumed_Library_Types::TIME_DEFINITIONS.valid_day?(2008,1,31) 79 assert !OpenEHR::Assumed_Library_Types::TIME_DEFINITIONS.valid_day?(2008,1,32) 80 assert OpenEHR::Assumed_Library_Types::TIME_DEFINITIONS.valid_day?(2008,2,1) 81 assert !OpenEHR::Assumed_Library_Types::TIME_DEFINITIONS.valid_day?(2008,2,0) 82 assert !OpenEHR::Assumed_Library_Types::TIME_DEFINITIONS.valid_day?(2008,2,31) 83 assert OpenEHR::Assumed_Library_Types::TIME_DEFINITIONS.valid_day?(2008,3,1) 84 assert !OpenEHR::Assumed_Library_Types::TIME_DEFINITIONS.valid_day?(2008,3,0) 85 assert OpenEHR::Assumed_Library_Types::TIME_DEFINITIONS.valid_day?(2008,3,31) 86 assert !OpenEHR::Assumed_Library_Types::TIME_DEFINITIONS.valid_day?(2008,3,32) 87 assert OpenEHR::Assumed_Library_Types::TIME_DEFINITIONS.valid_day?(2008,4,1) 88 assert !OpenEHR::Assumed_Library_Types::TIME_DEFINITIONS.valid_day?(2008,4,0) 89 assert OpenEHR::Assumed_Library_Types::TIME_DEFINITIONS.valid_day?(2008,4,30) 90 assert !OpenEHR::Assumed_Library_Types::TIME_DEFINITIONS.valid_day?(2008,4,31) 91 assert OpenEHR::Assumed_Library_Types::TIME_DEFINITIONS.valid_day?(2008,5,1) 92 assert !OpenEHR::Assumed_Library_Types::TIME_DEFINITIONS.valid_day?(2008,5,0) 93 assert OpenEHR::Assumed_Library_Types::TIME_DEFINITIONS.valid_day?(2008,5,31) 94 assert !OpenEHR::Assumed_Library_Types::TIME_DEFINITIONS.valid_day?(2008,5,32) 95 assert OpenEHR::Assumed_Library_Types::TIME_DEFINITIONS.valid_day?(2008,6,1) 96 assert !OpenEHR::Assumed_Library_Types::TIME_DEFINITIONS.valid_day?(2008,6,0) 97 assert OpenEHR::Assumed_Library_Types::TIME_DEFINITIONS.valid_day?(2008,6,30) 98 assert !OpenEHR::Assumed_Library_Types::TIME_DEFINITIONS.valid_day?(2008,6,31) 99 assert OpenEHR::Assumed_Library_Types::TIME_DEFINITIONS.valid_day?(2008,7,1) 100 assert !OpenEHR::Assumed_Library_Types::TIME_DEFINITIONS.valid_day?(2008,7,0) 101 assert OpenEHR::Assumed_Library_Types::TIME_DEFINITIONS.valid_day?(2008,7,31) 102 assert !OpenEHR::Assumed_Library_Types::TIME_DEFINITIONS.valid_day?(2008,7,32) 103 assert OpenEHR::Assumed_Library_Types::TIME_DEFINITIONS.valid_day?(2008,8,1) 104 assert !OpenEHR::Assumed_Library_Types::TIME_DEFINITIONS.valid_day?(2008,8,0) 105 assert OpenEHR::Assumed_Library_Types::TIME_DEFINITIONS.valid_day?(2008,8,31) 106 assert !OpenEHR::Assumed_Library_Types::TIME_DEFINITIONS.valid_day?(2008,8,32) 107 assert OpenEHR::Assumed_Library_Types::TIME_DEFINITIONS.valid_day?(2008,9,1) 108 assert !OpenEHR::Assumed_Library_Types::TIME_DEFINITIONS.valid_day?(2008,9,0) 109 assert OpenEHR::Assumed_Library_Types::TIME_DEFINITIONS.valid_day?(2008,9,30) 110 assert !OpenEHR::Assumed_Library_Types::TIME_DEFINITIONS.valid_day?(2008,9,31) 111 assert OpenEHR::Assumed_Library_Types::TIME_DEFINITIONS.valid_day?(2008,10,1) 112 assert !OpenEHR::Assumed_Library_Types::TIME_DEFINITIONS.valid_day?(2008,10,0) 113 assert OpenEHR::Assumed_Library_Types::TIME_DEFINITIONS.valid_day?(2008,10,31) 114 assert !OpenEHR::Assumed_Library_Types::TIME_DEFINITIONS.valid_day?(2008,10,32) 115 assert OpenEHR::Assumed_Library_Types::TIME_DEFINITIONS.valid_day?(2008,11,1) 116 assert !OpenEHR::Assumed_Library_Types::TIME_DEFINITIONS.valid_day?(2008,11,0) 117 assert OpenEHR::Assumed_Library_Types::TIME_DEFINITIONS.valid_day?(2008,11,30) 118 assert !OpenEHR::Assumed_Library_Types::TIME_DEFINITIONS.valid_day?(2008,11,31) 119 assert OpenEHR::Assumed_Library_Types::TIME_DEFINITIONS.valid_day?(2008,12,1) 120 assert !OpenEHR::Assumed_Library_Types::TIME_DEFINITIONS.valid_day?(2008,12,0) 121 assert OpenEHR::Assumed_Library_Types::TIME_DEFINITIONS.valid_day?(2008,12,31) 122 assert !OpenEHR::Assumed_Library_Types::TIME_DEFINITIONS.valid_day?(2008,12,32) 123 # test valid_day leap year 124 assert OpenEHR::Assumed_Library_Types::TIME_DEFINITIONS.valid_day?(1900,2,28) 125 assert !OpenEHR::Assumed_Library_Types::TIME_DEFINITIONS.valid_day?(1900,2,29) 126 assert OpenEHR::Assumed_Library_Types::TIME_DEFINITIONS.valid_day?(2000,2,29) 127 assert OpenEHR::Assumed_Library_Types::TIME_DEFINITIONS.valid_day?(2008,2,29) 128 # test valid_hour lower limit 129 assert OpenEHR::Assumed_Library_Types::TIME_DEFINITIONS.valid_hour?(0,0,0) 130 assert !OpenEHR::Assumed_Library_Types::TIME_DEFINITIONS.valid_hour?(-1,0,0) 131 assert !OpenEHR::Assumed_Library_Types::TIME_DEFINITIONS.valid_hour?(0,-1,0) 132 assert !OpenEHR::Assumed_Library_Types::TIME_DEFINITIONS.valid_hour?(0,0,-1) 133 # test valid_hour upper limit 134 assert OpenEHR::Assumed_Library_Types::TIME_DEFINITIONS.valid_hour?(0,59,0) 135 assert !OpenEHR::Assumed_Library_Types::TIME_DEFINITIONS.valid_hour?(0,60,0) 136 assert OpenEHR::Assumed_Library_Types::TIME_DEFINITIONS.valid_hour?(0,0,59) 137 assert !OpenEHR::Assumed_Library_Types::TIME_DEFINITIONS.valid_hour?(0,0,60) 138 assert OpenEHR::Assumed_Library_Types::TIME_DEFINITIONS.valid_hour?(24,0,0) 139 assert !OpenEHR::Assumed_Library_Types::TIME_DEFINITIONS.valid_hour?(24,0,1) 140 assert !OpenEHR::Assumed_Library_Types::TIME_DEFINITIONS.valid_hour?(24,1,0) 141 # test valid_minute method lower limit 142 assert OpenEHR::Assumed_Library_Types::TIME_DEFINITIONS.valid_minute?(0) 143 assert !OpenEHR::Assumed_Library_Types::TIME_DEFINITIONS.valid_minute?(-1) 144 # test valid_minute method upper limit 145 assert OpenEHR::Assumed_Library_Types::TIME_DEFINITIONS.valid_minute?(59) 146 assert !OpenEHR::Assumed_Library_Types::TIME_DEFINITIONS.valid_minute?(60) 147 # test valid_second method lower limit 148 assert OpenEHR::Assumed_Library_Types::TIME_DEFINITIONS.valid_second?(0) 149 assert !OpenEHR::Assumed_Library_Types::TIME_DEFINITIONS.valid_second?(-1) 150 # test valid_second method upper limit 151 assert OpenEHR::Assumed_Library_Types::TIME_DEFINITIONS.valid_second?(59) 152 assert !OpenEHR::Assumed_Library_Types::TIME_DEFINITIONS.valid_second?(60) 153 # test valid_month method lower limit 154 assert OpenEHR::Assumed_Library_Types::TIME_DEFINITIONS.valid_month?(1) 155 assert !OpenEHR::Assumed_Library_Types::TIME_DEFINITIONS.valid_month?(0) 156 # test valid_month method upper limit 157 assert OpenEHR::Assumed_Library_Types::TIME_DEFINITIONS.valid_month?(12) 158 assert !OpenEHR::Assumed_Library_Types::TIME_DEFINITIONS.valid_month?(13) 159 end 160 def test_iso8601_date 161 assert @iso8601_date.day_unknown? 162 assert @iso8601_date.month_unknown? 163 assert @iso8601_date.is_partial? 164 assert @iso8601_date.is_extended? 165 @iso8601_date.year = 2008 166 assert_equal 2008, @iso8601_date.year 167 assert_raise(ArgumentError){@iso8601_date.year = -1} 168 assert_equal "2008", @iso8601_date.as_string 169 @iso8601_date.month = 6 170 assert_equal 6, @iso8601_date.month 171 assert_raise(ArgumentError){@iso8601_date.month = 13} 172 assert_raise(ArgumentError){@iso8601_date.month = 0} 173 assert !@iso8601_date.month_unknown? 174 assert_equal "2008-06", @iso8601_date.as_string 175 @iso8601_date.day = 14 176 assert_equal 14, @iso8601_date.day 177 assert_raise(ArgumentError){@iso8601_date.day = 0} 178 assert_raise(ArgumentError){@iso8601_date.day = 31} 179 assert !@iso8601_date.day_unknown? 180 assert !@iso8601_date.is_partial? 181 assert_equal "2008-06-14", @iso8601_date.as_string 182 assert @iso8601_date.valid_iso8601_date("2006-06-14") 183 assert !@iso8601_date.valid_iso8601_date("ABCDEFG") 184 end 185 186 def test_iso8601_time 187 assert @iso8601_time. 188 end 56 189 end
Note:
See TracChangeset
for help on using the changeset viewer.