source: ruby/branches/0.5/spec/lib/open_ehr/assumed_library_types/iso8601_time_spec.rb@ 285

Last change on this file since 285 was 285, checked in by KOBAYASHI, Shinji, 15 years ago

ISO8601Date ISO8601Time completed

File size: 6.0 KB
Line 
1require File.dirname(__FILE__) + '/../../../spec_helper'
2include OpenEHR::AssumedLibraryTypes
3
4describe 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
234end
Note: See TracBrowser for help on using the repository browser.