workpattern 0.5.0 → 0.7.0

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.
data/test/test_week.rb DELETED
@@ -1,532 +0,0 @@
1
- require File.dirname(__FILE__) + '/test_helper.rb'
2
-
3
- class TestWeek < MiniTest::Test #:nodoc:
4
- include Workpattern::Base
5
- def setup
6
- start = Time.gm(2000, 1, 3)
7
- finish = Time.gm(2000, 1, 9)
8
-
9
- @w_week = Workpattern::Week.new(start, finish, 1)
10
-
11
- @r_week = Workpattern::Week.new(start, finish, 0)
12
-
13
- @p_week = Workpattern::Week.new(start, finish, 1)
14
- @p_week.workpattern(:weekend, Workpattern.clock(0, 0),
15
- Workpattern.clock(23, 59), 0)
16
- @p_week.workpattern(:weekday, Workpattern.clock(0, 0),
17
- Workpattern.clock(8, 59), 0)
18
- @p_week.workpattern(:weekday, Workpattern.clock(12, 30),
19
- Workpattern.clock(13, 0), 0)
20
- @p_week.workpattern(:weekday, Workpattern.clock(17, 0),
21
- Workpattern.clock(23, 59), 0)
22
- end
23
-
24
- def test_must_create_a_w_week
25
- start = Time.gm(2000, 1, 1, 11, 3)
26
- finish = Time.gm(2005, 12, 31, 16, 41)
27
- w_week = week(start, finish, 1)
28
- assert_equal Time.gm(start.year, start.month, start.day),
29
- w_week.start
30
- assert_equal Time.gm(finish.year, finish.month, finish.day),
31
- w_week.finish
32
- assert_equal 3_156_480, w_week.total # 2192 days
33
- end
34
-
35
- def test_create_w_week_of_3_concecutive_days
36
- start = Time.gm(2000, 1, 2, 11, 3) # Sunday
37
- finish = Time.gm(2000, 1, 4, 16, 41) # Tuesday
38
- w_week = week(start, finish, 1)
39
- assert_equal Time.gm(start.year, start.month,
40
- start.day), w_week.start
41
- assert_equal Time.gm(finish.year, finish.month, finish.day),
42
- w_week.finish
43
- assert_equal 1_440 * 3, w_week.total # 3 days
44
- end
45
-
46
- def test_create_working_week_friday_to_sunday
47
- start = Time.gm(2000, 1, 7, 11, 3) # Friday
48
- finish = Time.gm(2000, 1, 9, 16, 41) # Sunday
49
- w_week = week(start, finish, 1)
50
- assert_equal Time.gm(start.year, start.month, start.day),
51
- w_week.start
52
- assert_equal Time.gm(finish.year, finish.month, finish.day),
53
- w_week.finish
54
- assert_equal 1_440 * 3, w_week.total # 3 days
55
- end
56
-
57
- def test_create_working_week_thursday_to_sunday
58
- start = Time.gm(2000, 1, 6, 11, 3) # Thursday
59
- finish = Time.gm(2000, 1, 8, 16, 41) # Sunday
60
- w_week = week(start, finish, 1)
61
- assert_equal Time.gm(start.year, start.month, start.day),
62
- w_week.start
63
- assert_equal Time.gm(finish.year, finish.month, finish.day),
64
- w_week.finish
65
- assert_equal 1_440 * 3, w_week.total # 3 days
66
- end
67
-
68
- def test_must_create_a_resting_week
69
- start = Time.gm(2000, 1, 1, 11, 3)
70
- finish = Time.gm(2005, 12, 31, 16, 41)
71
- resting_week = week(start, finish, 0)
72
- assert_equal Time.gm(start.year, start.month, start.day),
73
- resting_week.start
74
- assert_equal Time.gm(finish.year, finish.month, finish.day),
75
- resting_week.finish
76
- assert_equal 0, resting_week.total # 2192
77
- assert_equal 0, resting_week.week_total
78
- end
79
-
80
- def test_must_duplicate_all_of_a_week
81
- start = Time.gm(2000, 1, 1, 11, 3)
82
- finish = Time.gm(2005, 12, 31, 16, 41)
83
- week = week(start, finish, 1)
84
- new_week = week.duplicate
85
- assert_equal Time.gm(start.year, start.month, start.day),
86
- new_week.start
87
- assert_equal Time.gm(finish.year, finish.month, finish.day),
88
- new_week.finish
89
- assert_equal 3_156_480, new_week.total # 2192
90
- week.workpattern(:weekend, Workpattern.clock(0, 0),
91
- Workpattern.clock(23, 59), 0)
92
- assert_equal 3_156_480, new_week.total # 2192
93
- end
94
-
95
- def test_must_set_week_pattern_correctly
96
- start = Time.gm(2000, 1, 3)
97
- finish = Time.gm(2000, 1, 9)
98
-
99
- pattern_week = Workpattern::Week.new(start, finish, 1)
100
- assert_equal start, pattern_week.start
101
- assert_equal finish, pattern_week.finish
102
- assert_equal 10_080, pattern_week.week_total
103
- pattern_week.workpattern(:weekend, Workpattern.clock(0, 0),
104
- Workpattern.clock(23, 59), 0)
105
- assert_equal 7_200, pattern_week.week_total
106
- pattern_week.workpattern(:weekday, Workpattern.clock(0, 0),
107
- Workpattern.clock(8, 59), 0)
108
- assert_equal 4_500, pattern_week.week_total
109
- pattern_week.workpattern(:weekday, Workpattern.clock(12, 30),
110
- Workpattern.clock(13, 0), 0)
111
- assert_equal 4_345, pattern_week.week_total
112
- pattern_week.workpattern(:weekday, Workpattern.clock(17, 0),
113
- Workpattern.clock(23, 59), 0)
114
- assert_equal 2_245, pattern_week.week_total
115
- end
116
-
117
- def test_must_set_patterns_correctly
118
- start = Time.gm(2000, 1, 1, 0, 0)
119
- finish = Time.gm(2005, 12, 31, 8, 59)
120
- w_week = week(start, finish, 1)
121
- assert_equal 10_080, w_week.week_total
122
- w_week.workpattern(:all, start, finish, 0)
123
- assert_equal 6_300, w_week.week_total
124
- w_week.workpattern(:sun, start, finish, 1)
125
- assert_equal 6_840, w_week.week_total
126
- w_week.workpattern(:mon, start, finish, 1)
127
- assert_equal 7_380, w_week.week_total
128
- w_week.workpattern(:all, clock(18, 0), clock(18, 19), 0)
129
- assert_equal 7_240, w_week.week_total
130
- w_week.workpattern(:all, clock(0, 0), clock(23, 59), 0)
131
- assert_equal 0, w_week.week_total
132
- w_week.workpattern(:all, clock(0, 0), clock(0, 0), 1)
133
- assert_equal 7, w_week.week_total
134
- w_week.workpattern(:all, clock(23, 59), clock(23, 59), 1)
135
- assert_equal 14, w_week.week_total
136
- w_week.workpattern(:all, clock(0, 0), clock(23, 59), 1)
137
- assert_equal 10_080, w_week.week_total
138
- w_week.workpattern(:weekend, clock(0, 0), clock(23, 59), 0)
139
- assert_equal 7_200, w_week.week_total
140
- end
141
-
142
- def test_must_add_minutes_in_a_w_week_result_in_same_day
143
- r_date, r_duration, m_flag = @w_week.calc(Time.gm(2000, 1, 3, 7, 31),
144
- 29)
145
- assert_equal Time.gm(2000, 1, 3, 8, 0), r_date
146
- refute m_flag
147
- assert_equal 0, r_duration
148
- end
149
-
150
- def test_must_add_minutes_in_a_w_week_result_in_next_day
151
- r_date, r_dur, m_flag = @w_week.calc(Time.gm(2000, 1, 3, 7, 31), 990)
152
- assert_equal Time.gm(2000, 1, 4, 0, 1), r_date
153
- refute m_flag
154
- assert_equal 0, r_dur
155
- end
156
-
157
- def test_must_add_minutes_in_a_w_week_result_in_later_day
158
- r_date, r_dur, m_flag = @w_week.calc(Time.gm(2000, 1, 3, 7, 31), 2430)
159
- assert_equal Time.gm(2000, 1, 5, 0, 1), r_date
160
- refute m_flag
161
- assert_equal 0, r_dur
162
- end
163
-
164
- def test_must_add_minutes_in_a_w_week_result_in_start_next_day
165
- r_date, r_dur, m_flag = @w_week.calc(Time.gm(2000, 1, 3, 7, 31), 989)
166
- assert_equal Time.gm(2000, 1, 4, 0, 0), r_date
167
- refute m_flag
168
- assert_equal 0, r_dur
169
- end
170
-
171
- def test_must_add_0_minutes_in_a_w_week
172
- r_date, r_dur, m_flag = @w_week.calc(Time.gm(2000, 1, 3, 7, 31), 0)
173
- assert_equal Time.gm(2000, 1, 3, 7, 31), r_date
174
- refute m_flag
175
- assert_equal 0, r_dur
176
- end
177
-
178
- def test_must_add_too_many_minutes_in_a_w_week
179
- r_date, r_dur, m_flag = @w_week.calc(Time.gm(2000, 1, 3, 7, 31), 9630)
180
- assert_equal Time.gm(2000, 1, 10, 0, 0), r_date
181
- refute m_flag
182
- assert_equal 1, r_dur
183
- end
184
-
185
- def test_must_add_minutes_in_a_resting_week
186
- r_date, r_dur, m_flag = @r_week.calc(Time.gm(2000, 1, 3, 7, 31), 29)
187
- assert_equal Time.gm(2000, 1, 10, 0, 0), r_date
188
- refute m_flag
189
- assert_equal 29, r_dur
190
- end
191
-
192
- def test_must_add_minutes_from_start_of_resting_week
193
- r_date, r_dur, m_flag = @r_week.calc(Time.gm(2000, 1, 3, 0, 0), 990)
194
- assert_equal Time.gm(2000, 1, 10, 0, 0), r_date
195
- refute m_flag
196
- assert_equal 990, r_dur
197
- end
198
-
199
- def test_must_add_minutes_to_last_minute_of_a_resting_week
200
- r_date, r_dur, m_flag = @r_week.calc(Time.gm(2000, 1, 9, 23, 59), 2430)
201
- assert_equal Time.gm(2000, 1, 10, 0, 0), r_date
202
- refute m_flag
203
- assert_equal 2_430, r_dur
204
- end
205
-
206
- def test_must_add_zero_minutes_in_a_resting_week
207
- r_date, r_dur, m_flag = @r_week.calc(Time.gm(2000, 1, 3, 7, 31), 0)
208
- assert_equal Time.gm(2000, 1, 3, 7, 31), r_date
209
- refute m_flag
210
- assert_equal 0, r_dur
211
- end
212
-
213
- def test_must_add_minutes_from_working_in_a_pattern_week_result_in_same_day
214
- r_date, r_dur, m_flag = @p_week.calc(Time.gm(2000, 1, 3, 10, 11), 110)
215
- assert_equal Time.gm(2000, 1, 3, 12, 1), r_date
216
- refute m_flag
217
- assert_equal 0, r_dur
218
- end
219
-
220
- def test_must_add_minutes_from_resting_in_a_pattern_week_result_in_same_day
221
- r_date, r_dur, m_flag = @p_week.calc(Time.gm(2000, 1, 3, 12, 45), 126)
222
- assert_equal Time.gm(2000, 1, 3, 15, 7), r_date
223
- refute m_flag
224
- assert_equal 0, r_dur
225
- end
226
-
227
- def test_must_add_minutes_from_working_in_a_pattern_week_result_in_next_day
228
- r_date, r_dur, m_flag = @p_week.calc(Time.gm(2000, 1, 3, 10, 11), 379)
229
- assert_equal Time.gm(2000, 1, 4, 9, 1), r_date
230
- refute m_flag
231
- assert_equal 0, r_dur
232
- end
233
-
234
- def test_must_add_minutes_from_resting_in_a_pattern_week_result_in_next_day
235
- r_date, r_dur, m_flag = @p_week.calc(Time.gm(2000, 1, 3, 12, 45), 240)
236
- assert_equal Time.gm(2000, 1, 4, 9, 1), r_date
237
- refute m_flag
238
- assert_equal 0, r_dur
239
- end
240
-
241
- def test_must_add_minutes_from_working_in_a_pattern_week_result_in_later_day
242
- r_date, r_dur, m_flag = @p_week.calc(Time.gm(2000, 1, 3, 10, 11), 828)
243
- assert_equal Time.gm(2000, 1, 5, 9, 1), r_date
244
- refute m_flag
245
- assert_equal 0, r_dur
246
- end
247
-
248
- def test_must_add_minutes_from_resting_in_a_w_week_result_in_later_day
249
- r_date, r_dur, m_flag = @p_week.calc(Time.gm(2000, 1, 3, 12, 45), 689)
250
- assert_equal Time.gm(2000, 1, 5, 9, 1), r_date
251
- refute m_flag
252
- assert_equal 0, r_dur
253
- end
254
-
255
- def test_must_add_0_minutes_from_working_in_a_resting_week
256
- r_date, r_dur, m_flag = @p_week.calc(Time.gm(2000, 1, 3, 10, 11), 0)
257
- assert_equal Time.gm(2000, 1, 3, 10, 11), r_date
258
- refute m_flag
259
- assert_equal 0, r_dur
260
- end
261
-
262
- def test_must_add_0_minutes_from_resting_in_a_resting_week
263
- r_date, r_dur, m_flag = @p_week.calc(Time.gm(2000, 1, 3, 12, 45), 0)
264
- assert_equal Time.gm(2000, 1, 3, 12, 45), r_date
265
- refute m_flag
266
- assert_equal 0, r_dur
267
- end
268
-
269
- def test_must_add_too_many_minutes_in_a_pattern__week
270
- r_date, r_dur, m_flag = @p_week.calc(Time.gm(2000, 1, 3, 10, 11), 2175)
271
- assert_equal Time.gm(2000, 1, 10, 0, 0), r_date
272
- refute m_flag
273
- assert_equal 1, r_dur
274
- end
275
-
276
- def test_must_subtract_minutes_in_a_w_week_result_in_same_day
277
- r_date, r_dur, m_flag = @w_week.calc(Time.gm(2000, 1, 8, 7, 31), -29)
278
- assert_equal Time.gm(2000, 1, 8, 7, 2), r_date
279
- refute m_flag
280
- assert_equal 0, r_dur
281
- end
282
-
283
- def test_must_subtract_minutes_in_a_w_week_result_in_previous_day
284
- r_date, r_dur, m_flag = @w_week.calc(Time.gm(2000, 1, 8, 7, 31), -452)
285
- assert_equal Time.gm(2000, 1, 7, 23, 59), r_date
286
- refute m_flag
287
- assert_equal 0, r_dur
288
- end
289
-
290
- def test_must_subtract_minutes_in_a_w_week_result_in_earlier_day
291
- r_date, r_dur, m_flag = @w_week.calc(Time.gm(2000, 1, 8, 7, 31), -1892)
292
- assert_equal Time.gm(2000, 1, 6, 23, 59), r_date
293
- refute m_flag
294
- assert_equal 0, r_dur
295
- end
296
-
297
- def test_must_subtract_minutes_in_a_w_week_result_at_start_of_day
298
- r_date, r_dur, m_flag = @w_week.calc(Time.gm(2000, 1, 8, 7, 31), -451)
299
- assert_equal Time.gm(2000, 1, 8, 0, 0), r_date
300
- refute m_flag
301
- assert_equal 0, r_dur
302
- end
303
-
304
- def test_must_subtract_minutes_in_a_w_week_result_at_start_of_previous_day
305
- r_date, r_dur, m_flag = @w_week.calc(Time.gm(2000, 1, 8, 7, 31), -1891)
306
- assert_equal Time.gm(2000, 1, 7, 0, 0), r_date
307
- refute m_flag
308
- assert_equal 0, r_dur
309
- end
310
-
311
- def test_must_subtract_too_many_minutes_from_a_w_week
312
- r_date, r_dur, m_flag = @w_week.calc(Time.gm(2000, 1, 8, 7, 31), -7652)
313
- assert_equal Time.gm(2000, 1, 2, 0, 0), r_date
314
- assert m_flag
315
- assert_equal -1, r_dur
316
- end
317
-
318
- def test_must_subtract_1_minute_from_start_of_next_day_after_w_week
319
- r_date, r_dur, m_flag = @w_week.calc(Time.gm(2000, 1, 9, 0, 0), -1, true)
320
- assert_equal Time.gm(2000, 1, 9, 23, 59), r_date
321
- refute m_flag
322
- assert_equal 0, r_dur
323
- end
324
-
325
- def test_must_subtract_2_minutes_from_start_of_next_day_after_w_week
326
- r_date, r_dur, m_flag = @w_week.calc(Time.gm(2000, 1, 9, 0, 0), -2, true)
327
- assert_equal Time.gm(2000, 1, 9, 23, 58), r_date
328
- refute m_flag
329
- assert_equal 0, r_dur
330
- end
331
-
332
- def test_must_subtract_minutes_from_last_day_in_a_resting_week
333
- r_date, r_dur, m_flag = @r_week.calc(Time.gm(2000, 1, 10, 7, 31), -29)
334
- assert_equal Time.gm(2000, 1, 2, 0, 0), r_date
335
- assert m_flag
336
- assert_equal -29, r_dur
337
- end
338
-
339
- def test_must_subtract_minutes_from_middle_day_in_a_resting_week
340
- r_date, r_dur, m_flag = @r_week.calc(Time.gm(2000, 1, 8, 7, 31), -452)
341
- assert_equal Time.gm(2000, 1, 2, 0, 0), r_date
342
- assert m_flag
343
- assert_equal -452, r_dur
344
- end
345
-
346
- def test_must_subtract_minutes_from_start_of_resting_week
347
- r_date, r_dur, m_flag = @r_week.calc(Time.gm(2000, 1, 3, 0, 0), -1892)
348
- assert_equal Time.gm(2000, 1, 2, 0, 0), r_date
349
- assert m_flag
350
- assert_equal -1_892, r_dur
351
- end
352
-
353
- def test_must_subtract_minutes_from_start_of_next_day_after_resting_week
354
- r_date, r_dur, m_flag = @r_week.calc(Time.gm(2000, 1, 9, 0, 0), -1, true)
355
- assert_equal Time.gm(2000, 1, 2, 0, 0), r_date
356
- assert m_flag
357
- assert_equal -1, r_dur
358
- end
359
-
360
- def test_must_subtract_minutes_from_resting_day_in_a_pattern_week
361
- r_date, r_dur, m_flag = @p_week.calc(Time.gm(2000, 1, 8, 13, 29), -29)
362
- assert_equal Time.gm(2000, 1, 7, 16, 31), r_date
363
- refute m_flag
364
- assert_equal 0, r_dur
365
- end
366
-
367
- def test_must_subtract_minutes_from_working_day_in_a_pattern_week
368
- r_date, r_dur, m_flag = @p_week.calc(Time.gm(2000, 1, 7, 13, 29), -29)
369
- assert_equal Time.gm(2000, 1, 7, 12, 29), r_date
370
- refute m_flag
371
- assert_equal 0, r_dur
372
- end
373
-
374
- def test_must_subtract_minutes_in_a_pattern_week_result_in_previous_day
375
- r_date, r_dur, m_flag = @p_week.calc(Time.gm(2000, 1, 7, 9, 1), -2)
376
- assert_equal Time.gm(2000, 1, 6, 16, 59), r_date
377
- refute m_flag
378
- assert_equal 0, r_dur
379
- end
380
-
381
- def test_must_subtract_minutes_in_a_pattern_week_result_in_earlier_day
382
- r_date, r_dur, m_flag = @p_week.calc(Time.gm(2000, 1, 7, 13, 29), -240)
383
- assert_equal Time.gm(2000, 1, 6, 16, 58), r_date
384
- refute m_flag
385
- assert_equal 0, r_dur
386
- end
387
-
388
- def test_must_subtract_minutes_in_a_pattern_week_result_at_start_of_day
389
- r_date, r_dur, m_flag = @p_week.calc(Time.gm(2000, 1, 7, 13, 29), -238)
390
- assert_equal Time.gm(2000, 1, 7, 9, 0), r_date
391
- refute m_flag
392
- assert_equal 0, r_dur
393
- end
394
-
395
- def test_must_subtract_minutes_in_a_pattern_week_result_at_start_of_prev_day
396
- r_date, r_dur, m_flag = @p_week.calc(Time.gm(2000, 1, 7, 13, 29), -687)
397
- assert_equal Time.gm(2000, 1, 6, 9, 0), r_date
398
- refute m_flag
399
- assert_equal 0, r_dur
400
- end
401
-
402
- def test_must_subtract_too_many_minutes_from_a_pattern_week
403
- r_date, r_dur, m_flag = @p_week.calc(Time.gm(2000, 1, 7, 9, 0), -1797)
404
- assert_equal Time.gm(2000, 1, 2, 0, 0), r_date
405
- assert m_flag
406
- assert_equal -1, r_dur
407
- end
408
-
409
- def test_must_subtract_1_minute_from_start_of_next_day_after_pattern_week
410
- r_date, r_dur, m_flag = @p_week.calc(Time.gm(2000, 1, 9, 0, 0), -1, true)
411
- assert_equal Time.gm(2000, 1, 7, 16, 59), r_date
412
- refute m_flag
413
- assert_equal 0, r_dur
414
- end
415
-
416
- def test_must_subtract_2_minutes_from_start_of_next_day_after_pattern_week
417
- r_date, r_dur, m_flag = @p_week.calc(Time.gm(2000, 1, 9, 0, 0), -2, true)
418
- assert_equal Time.gm(2000, 1, 7, 16, 58), r_date
419
- refute m_flag
420
- assert_equal 0, r_dur
421
- end
422
-
423
- def must_diff_day_week_day_in_patterned_week
424
- start = Time.gm(2013, 9, 23, 0, 0)
425
- finish = Time.gm(2013, 10, 20, 23, 59)
426
- w_week = week(start, finish, 1)
427
- w_week.workpattern :all, Workpattern.clock(0, 0),
428
- Workpattern.clock(8, 59), 0
429
- w_week.workpattern :all, Workpattern.clock(12, 0),
430
- Workpattern.clock(12, 59), 0
431
- w_week.workpattern :all, Workpattern.clock(18, 0),
432
- Workpattern.clock(23, 59), 0
433
- s_date = Time.gm(2013, 10, 3, 16, 0)
434
- f_date = Time.gm(2013, 10, 15, 12, 30)
435
- duration, start = w_week.diff(s_date, f_date)
436
-
437
- assert_equal 5_640, duration
438
- assert_equal Time.gm(2013, 10, 15, 12, 30), start
439
- end
440
-
441
- def test_must_calculate_difference_between_dates_in_w_week
442
- late_date = Time.gm(2000, 1, 6, 9, 32)
443
- early_date = Time.gm(2000, 1, 6, 8, 20)
444
- result_dur, r_date = @w_week.diff(early_date, late_date)
445
- assert_equal 72, result_dur
446
- assert_equal late_date, r_date
447
- end
448
-
449
- def test_must_calculate_difference_between_dates_in_resting_week
450
- late_date = Time.gm(2000, 1, 6, 9, 32)
451
- early_date = Time.gm(2000, 1, 6, 8, 20)
452
- result_dur, r_date = @r_week.diff(early_date, late_date)
453
- assert_equal 0, result_dur
454
- assert_equal late_date, r_date
455
- end
456
-
457
- def test_must_calculate_difference_between_dates_in_pattern_week
458
- late_date = Time.gm(2000, 1, 6, 13, 1)
459
- early_date = Time.gm(2000, 1, 6, 12, 29)
460
- result_dur, r_date = @p_week.diff(early_date, late_date)
461
- assert_equal 1, result_dur
462
- assert_equal late_date, r_date
463
- end
464
-
465
- def test_must_diff_from_last_day_of_patterned_week
466
- # #issue 15
467
- start = Time.gm(2013, 9, 23, 0, 0)
468
- finish = Time.gm(2013, 9, 26, 23, 59)
469
- w_week = week(start, finish, 1)
470
- w_week.workpattern :all, Workpattern.clock(0, 0),
471
- Workpattern.clock(8, 59), 0
472
- w_week.workpattern :all, Workpattern.clock(12, 0),
473
- Workpattern.clock(12, 59), 0
474
- w_week.workpattern :all, Workpattern.clock(18, 0),
475
- Workpattern.clock(23, 59), 0
476
-
477
- s_date = Time.gm(2013, 9, 26, 17, 0)
478
- f_date = Time.gm(2013, 9, 27, 10, 0)
479
- duration, start = w_week.diff(s_date, f_date)
480
-
481
- assert_equal 60, duration
482
- assert_equal Time.gm(2013, 9, 27, 0, 0), start
483
- end
484
-
485
- def test_must_diff_long_distances_beyond_end_of_patterned_week
486
- start = Time.gm(2013, 9, 23, 0, 0)
487
- finish = Time.gm(2013, 10, 20, 23, 59)
488
- w_week = week(start, finish, 1)
489
- w_week.workpattern :all, Workpattern.clock(0, 0),
490
- Workpattern.clock(8, 59), 0
491
- w_week.workpattern :all, Workpattern.clock(12, 0),
492
- Workpattern.clock(12, 59), 0
493
- w_week.workpattern :all, Workpattern.clock(18, 0),
494
- Workpattern.clock(23, 59), 0
495
-
496
- s_date = Time.gm(2013, 9, 26, 17, 0)
497
- f_date = Time.gm(2018, 9, 27, 10, 0)
498
- duration, start = w_week.diff(s_date, f_date)
499
-
500
- assert_equal 11_580, duration
501
- assert_equal Time.gm(2013, 10, 21, 0, 0), start
502
- end
503
-
504
- def test_must_diff_long_distances_within_patterned_week
505
- start = Time.gm(2013, 9, 23, 0, 0)
506
- finish = Time.gm(2013, 10, 20, 23, 59)
507
- w_week = week(start, finish, 1)
508
- w_week.workpattern :all, Workpattern.clock(0, 0),
509
- Workpattern.clock(8, 59), 0
510
- w_week.workpattern :all, Workpattern.clock(12, 0),
511
- Workpattern.clock(12, 59), 0
512
- w_week.workpattern :all, Workpattern.clock(18, 0),
513
- Workpattern.clock(23, 59), 0
514
-
515
- s_date = Time.gm(2013, 9, 26, 17, 0)
516
- f_date = Time.gm(2013, 10, 15, 10, 0)
517
- duration, start = w_week.diff(s_date, f_date)
518
-
519
- assert_equal 8_760, duration
520
- assert_equal Time.gm(2013, 10, 15, 10, 0), start
521
- end
522
-
523
- private
524
-
525
- def week(start, finish, type)
526
- Workpattern::Week.new(start, finish, type)
527
- end
528
-
529
- def clock(hour, min)
530
- Workpattern.clock(hour, min)
531
- end
532
- end