timecop 0.9.6 → 0.9.10

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,299 +0,0 @@
1
- require 'date'
2
- require_relative "test_helper"
3
- require 'timecop'
4
-
5
- require 'active_support/all'
6
-
7
- class TestTimeStackItem < Minitest::Test
8
- def teardown
9
- Timecop.return
10
- Time.zone = nil
11
- end
12
-
13
- def test_new_with_time
14
- t = Time.now
15
- y, m, d, h, min, s = t.year, t.month, t.day, t.hour, t.min, t.sec
16
- stack_item = Timecop::TimeStackItem.new(:freeze, t)
17
-
18
- assert_equal y, stack_item.year
19
- assert_equal m, stack_item.month
20
- assert_equal d, stack_item.day
21
- assert_equal h, stack_item.hour
22
- assert_equal min, stack_item.min
23
- assert_equal s, stack_item.sec
24
- end
25
-
26
- def test_new_with_time_and_arguments
27
- t = Time.new(2012, 7, 28, 20, 0)
28
- y, m, d, h, min, s = t.year, t.month, t.day, t.hour, t.min, t.sec
29
- stack_item = Timecop::TimeStackItem.new(:freeze, t)
30
-
31
- assert_equal y, stack_item.year
32
- assert_equal m, stack_item.month
33
- assert_equal d, stack_item.day
34
- assert_equal h, stack_item.hour
35
- assert_equal min, stack_item.min
36
- assert_equal s, stack_item.sec
37
- end
38
-
39
- def test_new_with_datetime_now
40
- t = DateTime.now
41
- y, m, d, h, min, s = t.year, t.month, t.day, t.hour, t.min, t.sec
42
- stack_item = Timecop::TimeStackItem.new(:freeze, t)
43
-
44
- assert_equal y, stack_item.year
45
- assert_equal m, stack_item.month
46
- assert_equal d, stack_item.day
47
- assert_equal h, stack_item.hour
48
- assert_equal min, stack_item.min
49
- assert_equal s, stack_item.sec
50
- end
51
-
52
- def test_new_with_datetime_in_different_timezone
53
- each_timezone do
54
- t = DateTime.parse("2009-10-11 00:38:00 +0200")
55
- stack_item = Timecop::TimeStackItem.new(:freeze, t)
56
-
57
- assert_date_times_equal(t, stack_item.datetime)
58
- end
59
- end
60
-
61
- def test_new_with_date
62
- date = Date.today
63
- y, m, d, h, min, s = date.year, date.month, date.day, 0, 0, 0
64
- stack_item = Timecop::TimeStackItem.new(:freeze, date)
65
-
66
- assert_equal y, stack_item.year
67
- assert_equal m, stack_item.month
68
- assert_equal d, stack_item.day
69
- assert_equal h, stack_item.hour
70
- assert_equal min, stack_item.min
71
- assert_equal s, stack_item.sec
72
- end
73
-
74
- # Due to the nature of this test (calling Time.now once in this test and
75
- # once in #new), this test may fail when two subsequent calls
76
- # to Time.now return a different second.
77
- def test_new_with_integer
78
- t = Time.now
79
- y, m, d, h, min, s = t.year, t.month, t.day, t.hour, t.min, t.sec
80
- stack_item = Timecop::TimeStackItem.new(:freeze, 0)
81
-
82
- assert_equal y, stack_item.year
83
- assert_equal m, stack_item.month
84
- assert_equal d, stack_item.day
85
- assert_equal h, stack_item.hour
86
- assert_equal min, stack_item.min
87
- assert_equal s, stack_item.sec
88
- end
89
-
90
- def test_new_with_float
91
- t = Time.now
92
- y, m, d, h, min, s = t.year, t.month, t.day, t.hour, t.min, t.sec
93
- stack_item = Timecop::TimeStackItem.new(:freeze, 0.0)
94
-
95
- assert_equal y, stack_item.year
96
- assert_equal m, stack_item.month
97
- assert_equal d, stack_item.day
98
- assert_equal h, stack_item.hour
99
- assert_equal min, stack_item.min
100
- assert_equal s, stack_item.sec
101
- end
102
-
103
- def test_new_with_individual_arguments
104
- y, m, d, h, min, s = 2008, 10, 10, 10, 10, 10
105
- stack_item = Timecop::TimeStackItem.new(:freeze, y, m, d, h, min, s)
106
-
107
- assert_equal y, stack_item.year
108
- assert_equal m, stack_item.month
109
- assert_equal d, stack_item.day
110
- assert_equal h, stack_item.hour
111
- assert_equal min, stack_item.min
112
- assert_equal s, stack_item.sec
113
- end
114
-
115
- def test_rational_to_utc_offset
116
- assert_equal -14400, a_time_stack_item.send(:rational_to_utc_offset, Rational(-1, 6))
117
- assert_equal -18000, a_time_stack_item.send(:rational_to_utc_offset, Rational(-5, 24))
118
- assert_equal 0, a_time_stack_item.send(:rational_to_utc_offset, Rational(0, 1))
119
- assert_equal 3600, a_time_stack_item.send(:rational_to_utc_offset, Rational(1, 24))
120
- end
121
-
122
- def test_utc_offset_to_rational
123
- assert_equal Rational(-1, 6), a_time_stack_item.send(:utc_offset_to_rational, -14400)
124
- assert_equal Rational(-5, 24), a_time_stack_item.send(:utc_offset_to_rational, -18000)
125
- assert_equal Rational(0, 1), a_time_stack_item.send(:utc_offset_to_rational, 0)
126
- assert_equal Rational(1, 24), a_time_stack_item.send(:utc_offset_to_rational, 3600)
127
- end
128
-
129
- def test_datetime_in_presence_of_activesupport_timezone
130
- skip('requires ActiveSupport') unless Time.respond_to? :zone
131
- backed_up_zone, backed_up_tzvar = Time.zone, ENV['TZ']
132
-
133
- Time.zone = ENV['TZ'] = 'America/Los_Angeles'
134
- t = DateTime.new(2001, 2, 28, 23, 59, 59.5)
135
- tsi = Timecop::TimeStackItem.new(:freeze, t)
136
-
137
- assert_date_times_equal t, tsi.datetime
138
- ensure
139
- Time.zone, ENV['TZ'] = backed_up_zone, backed_up_tzvar
140
- end
141
-
142
- # Ensure DateTimes handle changing DST properly
143
- def test_datetime_for_dst_to_non_dst
144
- Timecop.freeze(DateTime.parse("2009-12-1 00:38:00 -0500"))
145
- t = DateTime.parse("2009-10-11 00:00:00 -0400")
146
- tsi = Timecop::TimeStackItem.new(:freeze, t)
147
-
148
- assert_date_times_equal t, tsi.datetime
149
- end
150
-
151
- # Ensure DateTimes handle changing DST properly when changing from DateTime to Time
152
- def test_datetime_for_dst_to_time_for_non_dst
153
- Timecop.freeze(DateTime.parse("2009-12-1 00:38:00 -0500"))
154
- t = DateTime.parse("2009-10-11 00:00:00 -0400")
155
- tsi = Timecop::TimeStackItem.new(:freeze, t)
156
-
157
- assert_date_times_equal t.to_time, tsi.time
158
- end
159
-
160
- def test_datetime_for_non_dst_to_dst
161
- Timecop.freeze(DateTime.parse("2009-10-11 00:00:00 -0400"))
162
- t = DateTime.parse("2009-11-30 23:38:00 -0500")
163
- tsi = Timecop::TimeStackItem.new(:freeze, t)
164
- return if !tsi.time.dst?
165
-
166
- assert_date_times_equal t, tsi.datetime
167
- assert_equal Date.new(2009, 12, 1), tsi.date
168
- end
169
-
170
- def test_set_travel_offset_for_travel
171
- t_now = Time.now
172
- t = Time.local(2009, 10, 1, 0, 0, 30)
173
- expected_offset = t - t_now
174
- tsi = Timecop::TimeStackItem.new(:travel, t)
175
-
176
- assert_times_effectively_equal expected_offset, tsi.send(:travel_offset), 1, "Offset not calculated correctly"
177
- end
178
-
179
- def test_set_travel_offset_for_freeze
180
- Timecop.freeze(2009, 10, 1, 0, 0, 0)
181
- t = Time.local(2009, 10, 1, 0, 0, 30)
182
- tsi = Timecop::TimeStackItem.new(:freeze, t)
183
-
184
- assert_nil tsi.send(:travel_offset)
185
- end
186
-
187
- def test_timezones
188
- Time.zone = "Europe/Zurich"
189
- time = Time.zone.parse("2012-12-27T12:12:12+08:00")
190
- Timecop.freeze(time) do |frozen_time|
191
- assert_equal time, frozen_time
192
- end
193
- end
194
-
195
- def test_timezones_with_parsed_string
196
- Time.zone = "Europe/Zurich"
197
- time_string = "2012-12-27 12:12"
198
- expected_time = Time.zone.parse(time_string)
199
- Timecop.freeze(time_string) do |frozen_time|
200
- assert_equal expected_time, frozen_time
201
- end
202
- end
203
-
204
- def test_timezones_apply_dates
205
- Time.zone = "Central Time (US & Canada)"
206
- time = Time.zone.local(2013,1,3)
207
-
208
- Timecop.freeze(time) do
209
- assert_equal time.to_date, Time.zone.now.to_date
210
- end
211
- end
212
-
213
- def test_set_scaling_factor_for_scale
214
- t_now = Time.now
215
- t = Time.local(2009, 10, 1, 0, 0, 30)
216
- expected_offset = t - t_now
217
- tsi = Timecop::TimeStackItem.new(:scale, 4, t)
218
-
219
- assert_times_effectively_equal expected_offset, tsi.send(:travel_offset), 1, "Offset not calculated correctly"
220
- assert_equal tsi.send(:scaling_factor), 4, "Scaling factor not set"
221
- end
222
-
223
- def test_parse_only_string_with_active_support
224
- Time.expects(:parse).never
225
- Timecop.freeze(2011, 01, 02, hour=0, minute=0, second=0)
226
- end
227
-
228
- def test_parse_date
229
- Timecop.freeze(Date.new(2012, 6, 9))
230
- end
231
-
232
- def test_time_zone_returns_nil
233
- Time.zone = nil
234
- Timecop.freeze
235
- end
236
-
237
- def test_nsecs_are_set
238
- time = Time.now
239
- Timecop.freeze time
240
- assert_equal time, Time.now
241
- assert_equal time.nsec, Time.now.nsec if (Time.now.respond_to?(:nsec))
242
- end
243
-
244
- def test_time_with_different_timezone_keeps_nsec
245
- Time.zone = "Tokyo"
246
- t = Time.now
247
- Timecop.freeze(t) do
248
- assert_equal t, Time.now
249
- assert_equal t.nsec, Time.now.nsec if (Time.now.respond_to?(:nsec))
250
- end
251
- end
252
-
253
- def test_time_now_always_returns_local_time
254
- Time.zone = "Tokyo"
255
- t = Time.utc(2000, 1, 1)
256
- Timecop.freeze(t) do
257
- assert_equal t.getlocal.zone, Time.now.zone
258
- end
259
- end
260
-
261
- def test_time_zone_now_returns_time_in_that_zone
262
- Time.zone = "Hawaii"
263
- t = Time.utc(2000, 1, 1)
264
- Timecop.freeze(t) do
265
- assert_equal t, Time.zone.now
266
- assert_equal 'HST', Time.zone.now.zone
267
- end
268
- end
269
-
270
- def test_freezing_a_time_leaves_timezone_intact
271
- Time.zone = "Tokyo"
272
- t = Time.now
273
- t_dup = t.dup
274
- Timecop.freeze(t) {}
275
- assert_equal t_dup.zone, t.zone
276
- end
277
-
278
- def test_freezing_a_time_with_zone_returns_proper_zones
279
- Time.zone = "Hawaii"
280
- t = ActiveSupport::TimeWithZone.new(Time.utc(2000, 1, 1), ActiveSupport::TimeZone['Tokyo'])
281
- Timecop.freeze(t) do
282
- local_now = Time.now
283
- assert_equal t, local_now
284
- assert_equal t.getlocal.zone, local_now.zone
285
-
286
- zoned_now = Time.zone.now
287
- assert_equal t, zoned_now
288
- assert_equal 'HST', zoned_now.zone
289
- end
290
- end
291
-
292
- def test_datetime_timezones
293
- dt = DateTime.new(2011,1,3,15,25,0,"-6")
294
- Timecop.freeze(dt) do
295
- now = DateTime.now
296
- assert_equal dt, now, "#{dt.to_f}, #{now.to_f}"
297
- end
298
- end
299
- end