timecop 0.9.6 → 0.9.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -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