Upgrade to 1.46.0
[platform/upstream/nghttp2.git] / third-party / mruby / mrbgems / mruby-time / test / time.rb
1 ##
2 # Time ISO Test
3
4 assert('Time.new', '15.2.3.3.3') do
5   assert_equal(Time, Time.new.class)
6 end
7
8 assert('Time', '15.2.19') do
9   assert_equal(Class, Time.class)
10 end
11
12 assert('Time.at', '15.2.19.6.1') do
13   assert_kind_of(Time, Time.at(1300000000.0))
14
15   assert_raise(FloatDomainError) { Time.at(Float::NAN) }
16   assert_raise(FloatDomainError) { Time.at(Float::INFINITY) }
17   assert_raise(FloatDomainError) { Time.at(-Float::INFINITY) }
18   assert_raise(FloatDomainError) { Time.at(0, Float::NAN) }
19   assert_raise(FloatDomainError) { Time.at(0, Float::INFINITY) }
20   assert_raise(FloatDomainError) { Time.at(0, -Float::INFINITY) }
21 end
22
23 assert('Time.gm', '15.2.19.6.2') do
24   t = Time.gm(2012, 9, 23)
25   assert_operator(2012, :eql?, t.year)
26   assert_operator(   9, :eql?, t.month)
27   assert_operator(  23, :eql?, t.day)
28   assert_operator(   0, :eql?, t.hour)
29   assert_operator(   0, :eql?, t.min)
30   assert_operator(   0, :eql?, t.sec)
31   assert_operator(   0, :eql?, t.usec)
32 end
33
34 assert('Time.local', '15.2.19.6.3') do
35   t = Time.local(2014, 12, 27, 18)
36   assert_operator(2014, :eql?, t.year)
37   assert_operator(  12, :eql?, t.month)
38   assert_operator(  27, :eql?, t.day)
39   assert_operator(  18, :eql?, t.hour)
40   assert_operator(   0, :eql?, t.min)
41   assert_operator(   0, :eql?, t.sec)
42   assert_operator(   0, :eql?, t.usec)
43 end
44
45 assert('Time.mktime', '15.2.19.6.4') do
46   t = Time.mktime(2013, 10, 4, 6, 15, 58, 3485)
47   assert_operator(2013, :eql?, t.year)
48   assert_operator(  10, :eql?, t.month)
49   assert_operator(   4, :eql?, t.day)
50   assert_operator(   6, :eql?, t.hour)
51   assert_operator(  15, :eql?, t.min)
52   assert_operator(  58, :eql?, t.sec)
53   assert_operator(3485, :eql?, t.usec)
54 end
55
56 assert('Time.now', '15.2.19.6.5') do
57   assert_equal(Time, Time.now.class)
58 end
59
60 assert('Time.utc', '15.2.19.6.6') do
61   t = Time.utc(2034)
62   assert_operator(2034, :eql?, t.year)
63   assert_operator(   1, :eql?, t.month)
64   assert_operator(   1, :eql?, t.day)
65   assert_operator(   0, :eql?, t.hour)
66   assert_operator(   0, :eql?, t.min)
67   assert_operator(   0, :eql?, t.sec)
68   assert_operator(   0, :eql?, t.usec)
69 end
70
71 assert('Time#+', '15.2.19.7.1') do
72   t1 = Time.at(1300000000.0)
73   t2 = t1.+(60)
74
75   assert_equal("Sun Mar 13 07:07:40 2011", t2.utc.asctime)
76
77   assert_raise(FloatDomainError) { Time.at(0) + Float::NAN }
78   assert_raise(FloatDomainError) { Time.at(0) + Float::INFINITY }
79   assert_raise(FloatDomainError) { Time.at(0) + -Float::INFINITY }
80 end
81
82 assert('Time#-', '15.2.19.7.2') do
83   t1 = Time.at(1300000000.0)
84   t2 = t1.-(60)
85
86   assert_equal("Sun Mar 13 07:05:40 2011", t2.utc.asctime)
87
88   assert_raise(FloatDomainError) { Time.at(0) - Float::NAN }
89   assert_raise(FloatDomainError) { Time.at(0) - Float::INFINITY }
90   assert_raise(FloatDomainError) { Time.at(0) - -Float::INFINITY }
91 end
92
93 assert('Time#<=>', '15.2.19.7.3') do
94   t1 = Time.at(1300000000.0)
95   t2 = Time.at(1400000000.0)
96   t3 = Time.at(1500000000.0)
97
98   assert_equal(1, t2 <=> t1)
99   assert_equal(0, t2 <=> t2)
100   assert_equal(-1, t2 <=> t3)
101   assert_nil(t2 <=> nil)
102 end
103
104 assert('Time#asctime', '15.2.19.7.4') do
105   assert_equal("Thu Mar  4 05:06:07 1982", Time.gm(1982,3,4,5,6,7).asctime)
106 end
107
108 assert('Time#ctime', '15.2.19.7.5') do
109   assert_equal("Thu Oct 24 15:26:47 2013", Time.gm(2013,10,24,15,26,47).ctime)
110 end
111
112 assert('Time#day', '15.2.19.7.6') do
113   assert_equal(23, Time.gm(2012, 12, 23).day)
114 end
115
116 assert('Time#dst?', '15.2.19.7.7') do
117   assert_not_predicate(Time.gm(2012, 12, 23).utc, :dst?)
118 end
119
120 assert('Time#getgm', '15.2.19.7.8') do
121   assert_equal("Sun Mar 13 07:06:40 2011", Time.at(1300000000.0).getgm.asctime)
122 end
123
124 assert('Time#getlocal', '15.2.19.7.9') do
125   t1 = Time.at(1300000000.0)
126   t2 = Time.at(1300000000.0)
127   t3 = t1.getlocal
128
129   assert_equal(t1, t3)
130   assert_equal(t3, t2.getlocal)
131 end
132
133 assert('Time#getutc', '15.2.19.7.10') do
134   assert_equal("Sun Mar 13 07:06:40 2011", Time.at(1300000000.0).getutc.asctime)
135 end
136
137 assert('Time#gmt?', '15.2.19.7.11') do
138   assert_predicate(Time.at(1300000000.0).utc, :gmt?)
139 end
140
141 # ATM not implemented
142 # assert('Time#gmt_offset', '15.2.19.7.12') do
143
144 assert('Time#gmtime', '15.2.19.7.13') do
145   t = Time.now
146   assert_predicate(t.gmtime, :gmt?)
147   assert_predicate(t, :gmt?)
148 end
149
150 # ATM not implemented
151 # assert('Time#gmtoff', '15.2.19.7.14') do
152
153 assert('Time#hour', '15.2.19.7.15') do
154   assert_equal(7, Time.gm(2012, 12, 23, 7, 6).hour)
155 end
156
157 # ATM doesn't really work
158 # assert('Time#initialize', '15.2.19.7.16') do
159
160 assert('Time#initialize_copy', '15.2.19.7.17') do
161   t = Time.at(7.0e6)
162   assert_equal(t, t.clone)
163 end
164
165 assert('Time#localtime', '15.2.19.7.18') do
166   t1 = Time.utc(2014, 5 ,6)
167   t2 = Time.utc(2014, 5 ,6)
168   t3 = t2.getlocal
169
170   assert_equal(t3, t1.localtime)
171   assert_equal(t3, t1)
172 end
173
174 assert('Time#mday', '15.2.19.7.19') do
175   assert_equal(23, Time.gm(2012, 12, 23).mday)
176 end
177
178 assert('Time#min', '15.2.19.7.20') do
179   assert_equal(6, Time.gm(2012, 12, 23, 7, 6).min)
180 end
181
182 assert('Time#mon', '15.2.19.7.21') do
183   assert_equal(12, Time.gm(2012, 12, 23).mon)
184 end
185
186 assert('Time#month', '15.2.19.7.22') do
187   assert_equal(12, Time.gm(2012, 12, 23).month)
188 end
189
190 assert('Times#sec', '15.2.19.7.23') do
191   assert_equal(40, Time.gm(2012, 12, 23, 7, 6, 40).sec)
192 end
193
194 assert('Time#to_f', '15.2.19.7.24') do
195   assert_operator(2.0, :eql?, Time.at(2).to_f)
196 end
197
198 assert('Time#to_i', '15.2.19.7.25') do
199   assert_operator(2, :eql?, Time.at(2.0).to_i)
200 end
201
202 assert('Time#usec', '15.2.19.7.26') do
203   assert_equal(0, Time.at(1300000000.0).usec)
204 end
205
206 assert('Time#utc', '15.2.19.7.27') do
207   t = Time.now
208   assert_predicate(t.utc, :gmt?)
209   assert_predicate(t, :gmt?)
210 end
211
212 assert('Time#utc?', '15.2.19.7.28') do
213   assert_predicate(Time.at(1300000000.0).utc, :utc?)
214 end
215
216 # ATM not implemented
217 # assert('Time#utc_offset', '15.2.19.7.29') do
218
219 assert('Time#wday', '15.2.19.7.30') do
220   assert_equal(0, Time.gm(2012, 12, 23).wday)
221 end
222
223 assert('Time#yday', '15.2.19.7.31') do
224   assert_equal(358, Time.gm(2012, 12, 23).yday)
225 end
226
227 assert('Time#year', '15.2.19.7.32') do
228   assert_equal(2012, Time.gm(2012, 12, 23).year)
229 end
230
231 assert('Time#zone', '15.2.19.7.33') do
232   assert_equal('UTC', Time.at(1300000000.0).utc.zone)
233 end
234
235 # Not ISO specified
236
237 assert('Time#to_s') do
238   assert_equal("2003-04-05 06:07:08 UTC", Time.gm(2003,4,5,6,7,8,9).to_s)
239 end
240
241 assert('Time#inspect') do
242   assert_match("2013-10-28 16:27:48 [+-][0-9][0-9][0-9][0-9]",
243                Time.local(2013,10,28,16,27,48).inspect)
244 end
245
246 assert('day of week methods') do
247   t = Time.gm(2012, 12, 24)
248   assert_false t.sunday?
249   assert_true t.monday?
250   assert_false t.tuesday?
251   assert_false t.wednesday?
252   assert_false t.thursday?
253   assert_false t.friday?
254   assert_false t.saturday?
255 end
256
257 assert('2000 times 500us make a second') do
258   t = Time.utc 2015
259   2000.times do
260     t += 0.0005
261   end
262   assert_equal(0, t.usec)
263 end
264
265 assert('Time.gm with Dec 31 23:59:59 1969 raise ArgumentError') do
266   assert_raise(ArgumentError) {Time.gm(1969, 12, 31, 23, 59, 59)}
267 end