acts_as_flux_capacitor 0.6.0 → 0.6.1
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/History.txt +5 -0
- data/lib/acts_as_flux_capacitor/acts_as_flux_capacitor.rb +1 -4
- data/lib/acts_as_flux_capacitor/core_class_extensions.rb +2 -19
- data/lib/acts_as_flux_capacitor/version.rb +1 -1
- data/spec/acts_as_flux_capacitor_spec.rb +28 -4
- data/spec/report.html +49 -40
- data/spec/schema.rb +2 -0
- metadata +2 -2
data/History.txt
CHANGED
@@ -280,7 +280,6 @@ private
|
|
280
280
|
|
281
281
|
module CompareEvents
|
282
282
|
def overlaps_with?(other_event)
|
283
|
-
#this method possesses the associative property.
|
284
283
|
self.to_range.overlaps?(other_event.to_range)
|
285
284
|
end
|
286
285
|
|
@@ -289,10 +288,8 @@ private
|
|
289
288
|
end
|
290
289
|
alias overlap overlap_with
|
291
290
|
|
292
|
-
def back_to_back_with?(other_event,tolerance =
|
291
|
+
def back_to_back_with?(other_event,tolerance = 2.seconds)
|
293
292
|
# tolerance is in seconds.
|
294
|
-
# first_event,second_event = self.class.send(:ordered_tuple,self,other_event)
|
295
|
-
# first_event.ends_at.approx_eql?(second_event.begins_at,tolerance)
|
296
293
|
self.start_time.before?(other_event.start_time) ? first_to_start = self : first_to_start = other_event
|
297
294
|
first_to_start.ends_at.approx_eql?(other_event.begins_at,tolerance)
|
298
295
|
end
|
@@ -10,26 +10,9 @@ class Time
|
|
10
10
|
@@approx_eql_tolerance_in_seconds = seconds
|
11
11
|
end
|
12
12
|
|
13
|
-
def approx_eql?
|
13
|
+
def approx_eql? other_time,tolerance = @@approx_eql_tolerance_in_seconds
|
14
14
|
times_to_i = [self,other_time].collect { |time| time.to_i }
|
15
|
-
|
16
|
-
end
|
17
|
-
end
|
18
|
-
|
19
|
-
class Array
|
20
|
-
def within? tolerance
|
21
|
-
|
22
|
-
# thanks, nick ang!
|
23
|
-
unless self.size == 2
|
24
|
-
raise ArgumentError <<ERROR_STRING
|
25
|
-
within? only works with arrays of two numbers. do something like
|
26
|
-
([a,b,c].max,[a,b,c].min).within?(tolerance) as an implementation
|
27
|
-
for an array with more than two values
|
28
|
-
ERROR_STRING
|
29
|
-
end
|
30
|
-
|
31
|
-
difference = self.first - self.last
|
32
|
-
difference.abs <= tolerance
|
15
|
+
(self - other_time).abs < tolerance
|
33
16
|
end
|
34
17
|
end
|
35
18
|
|
@@ -109,8 +109,6 @@ describe "The class TimePeriod < ActiveRecord::Base" do
|
|
109
109
|
end
|
110
110
|
|
111
111
|
describe "The TimePeriod.find extensions" do
|
112
|
-
|
113
|
-
include TimePeriodFixtures
|
114
112
|
|
115
113
|
it "should find time_periods in the present" do
|
116
114
|
TimePeriod.find(:first,:present=>true ,:current_time => present_time).
|
@@ -171,8 +169,6 @@ describe "The TimePeriod.find extensions" do
|
|
171
169
|
end
|
172
170
|
|
173
171
|
describe "The TimePeriod comparison helpers" do
|
174
|
-
|
175
|
-
include TimePeriodFixtures
|
176
172
|
|
177
173
|
it "should determine if one time period is before another" do
|
178
174
|
present_period.before_or_at?(future_period).should be_true
|
@@ -201,6 +197,11 @@ describe "The TimePeriod comparison helpers" do
|
|
201
197
|
it "should determine if two time_periods are back-to-back" do
|
202
198
|
long_period.back_to_back_with?(future_period).should be_false
|
203
199
|
past_period.back_to_back_with?(present_period).should be_true
|
200
|
+
|
201
|
+
long_period.back_to_back_with?(future_period,1.minute).should be_false
|
202
|
+
past_period.back_to_back_with?(present_period,1.minute).should be_true
|
203
|
+
|
204
|
+
long_period.back_to_back_with?(future_period,50.years).should be_true
|
204
205
|
end
|
205
206
|
|
206
207
|
it "should determine if a time_period is between two other time_periods" do
|
@@ -355,3 +356,26 @@ describe "The Range overlap helpers" do
|
|
355
356
|
end
|
356
357
|
|
357
358
|
end
|
359
|
+
|
360
|
+
describe "The extensions to" do
|
361
|
+
|
362
|
+
describe "the Time class" do
|
363
|
+
|
364
|
+
it "should determine if two times are approximately equal (tolerance @ 1 second)" do
|
365
|
+
Time.freeze do
|
366
|
+
Time.now.approx_eql?(Time.now+(0.5).seconds,1.second).should be_true
|
367
|
+
Time.now.approx_eql?(Time.now+10.seconds,1.second).should be_false
|
368
|
+
(Time.now+(0.5).seconds).approx_eql?(Time.now,1.second).should be_true
|
369
|
+
(Time.now+10.seconds).approx_eql?(Time.now,1.second).should be_false
|
370
|
+
end
|
371
|
+
end
|
372
|
+
|
373
|
+
it "should determine if two times are approximately equal (tolerance @ 0.1 seconds)" do
|
374
|
+
Time.freeze do
|
375
|
+
Time.now.approx_eql?(Time.now+(0.01).seconds,(0.1).seconds).should be_true
|
376
|
+
Time.now.approx_eql?(Time.now+10.seconds,(0.1).seconds).should be_false
|
377
|
+
end
|
378
|
+
end
|
379
|
+
end
|
380
|
+
end
|
381
|
+
|
data/spec/report.html
CHANGED
@@ -179,116 +179,125 @@ a {
|
|
179
179
|
<div class="example_group">
|
180
180
|
<dl>
|
181
181
|
<dt id="example_group_1">The Temporal mixin</dt>
|
182
|
-
<script type="text/javascript">moveProgressBar('2.
|
182
|
+
<script type="text/javascript">moveProgressBar('2.5');</script>
|
183
183
|
<dd class="spec passed"><span class="passed_spec_name">should make Time, Date and DateTime into Temporal objects</span></dd>
|
184
|
-
<script type="text/javascript">moveProgressBar('5.
|
184
|
+
<script type="text/javascript">moveProgressBar('5.0');</script>
|
185
185
|
<dd class="spec passed"><span class="passed_spec_name">should determine the length of time between two Temporal objects</span></dd>
|
186
|
-
<script type="text/javascript">moveProgressBar('7.
|
186
|
+
<script type="text/javascript">moveProgressBar('7.5');</script>
|
187
187
|
<dd class="spec passed"><span class="passed_spec_name">should determine the length of time until a Temporal object</span></dd>
|
188
|
-
<script type="text/javascript">moveProgressBar('10.
|
188
|
+
<script type="text/javascript">moveProgressBar('10.0');</script>
|
189
189
|
<dd class="spec passed"><span class="passed_spec_name">should determine if a temporal object is in the future</span></dd>
|
190
|
-
<script type="text/javascript">moveProgressBar('
|
190
|
+
<script type="text/javascript">moveProgressBar('12.5');</script>
|
191
191
|
<dd class="spec passed"><span class="passed_spec_name">should determine the length of time since a Temporal object</span></dd>
|
192
|
-
<script type="text/javascript">moveProgressBar('15.
|
192
|
+
<script type="text/javascript">moveProgressBar('15.0');</script>
|
193
193
|
<dd class="spec passed"><span class="passed_spec_name">should determine if a temporal object is in the past</span></dd>
|
194
|
-
<script type="text/javascript">moveProgressBar('
|
194
|
+
<script type="text/javascript">moveProgressBar('17.5');</script>
|
195
195
|
<dd class="spec passed"><span class="passed_spec_name">should determine if one Temporal object is before another</span></dd>
|
196
|
-
<script type="text/javascript">moveProgressBar('
|
196
|
+
<script type="text/javascript">moveProgressBar('20.0');</script>
|
197
197
|
<dd class="spec passed"><span class="passed_spec_name">should determine if one Temporal object is after another</span></dd>
|
198
198
|
</dl>
|
199
199
|
</div>
|
200
200
|
<div class="example_group">
|
201
201
|
<dl>
|
202
202
|
<dt id="example_group_2">The class TimePeriod < ActiveRecord::Base</dt>
|
203
|
-
<script type="text/javascript">moveProgressBar('
|
203
|
+
<script type="text/javascript">moveProgressBar('22.5');</script>
|
204
204
|
<dd class="spec passed"><span class="passed_spec_name">should be a flux capacitor</span></dd>
|
205
|
-
<script type="text/javascript">moveProgressBar('
|
205
|
+
<script type="text/javascript">moveProgressBar('25.0');</script>
|
206
206
|
<dd class="spec passed"><span class="passed_spec_name">should be a Temporal object</span></dd>
|
207
|
-
<script type="text/javascript">moveProgressBar('
|
207
|
+
<script type="text/javascript">moveProgressBar('27.5');</script>
|
208
208
|
<dd class="spec passed"><span class="passed_spec_name">should possess all four bitemporal database attributes</span></dd>
|
209
|
-
<script type="text/javascript">moveProgressBar('
|
209
|
+
<script type="text/javascript">moveProgressBar('30.0');</script>
|
210
210
|
<dd class="spec passed"><span class="passed_spec_name">should not be valid if either of the two time spans are 0 or less</span></dd>
|
211
211
|
</dl>
|
212
212
|
</div>
|
213
213
|
<div class="example_group">
|
214
214
|
<dl>
|
215
215
|
<dt id="example_group_3">The TimePeriod.find extensions</dt>
|
216
|
-
<script type="text/javascript">moveProgressBar('
|
216
|
+
<script type="text/javascript">moveProgressBar('32.5');</script>
|
217
217
|
<dd class="spec passed"><span class="passed_spec_name">should find time_periods in the present</span></dd>
|
218
|
-
<script type="text/javascript">moveProgressBar('
|
218
|
+
<script type="text/javascript">moveProgressBar('35.0');</script>
|
219
219
|
<dd class="spec passed"><span class="passed_spec_name">should find time_periods in the past</span></dd>
|
220
|
-
<script type="text/javascript">moveProgressBar('
|
220
|
+
<script type="text/javascript">moveProgressBar('37.5');</script>
|
221
221
|
<dd class="spec passed"><span class="passed_spec_name">should find time_periods in the future</span></dd>
|
222
|
-
<script type="text/javascript">moveProgressBar('
|
222
|
+
<script type="text/javascript">moveProgressBar('40.0');</script>
|
223
223
|
<dd class="spec passed"><span class="passed_spec_name">should find time_periods occuring at a specific time</span></dd>
|
224
|
-
<script type="text/javascript">moveProgressBar('
|
224
|
+
<script type="text/javascript">moveProgressBar('42.5');</script>
|
225
225
|
<dd class="spec passed"><span class="passed_spec_name">should find time_periods occuring within a specific range of time</span></dd>
|
226
226
|
</dl>
|
227
227
|
</div>
|
228
228
|
<div class="example_group">
|
229
229
|
<dl>
|
230
230
|
<dt id="example_group_4">The TimePeriod comparison helpers</dt>
|
231
|
-
<script type="text/javascript">moveProgressBar('
|
231
|
+
<script type="text/javascript">moveProgressBar('45.0');</script>
|
232
232
|
<dd class="spec passed"><span class="passed_spec_name">should determine if one time period is before another</span></dd>
|
233
|
-
<script type="text/javascript">moveProgressBar('
|
233
|
+
<script type="text/javascript">moveProgressBar('47.5');</script>
|
234
234
|
<dd class="spec passed"><span class="passed_spec_name">should determine if one time period is after another</span></dd>
|
235
|
-
<script type="text/javascript">moveProgressBar('
|
235
|
+
<script type="text/javascript">moveProgressBar('50.0');</script>
|
236
236
|
<dd class="spec passed"><span class="passed_spec_name">should calculate the time between time_periods</span></dd>
|
237
|
-
<script type="text/javascript">moveProgressBar('
|
237
|
+
<script type="text/javascript">moveProgressBar('52.5');</script>
|
238
238
|
<dd class="spec passed"><span class="passed_spec_name">should determine whether two time_periods overlap</span></dd>
|
239
|
-
<script type="text/javascript">moveProgressBar('
|
239
|
+
<script type="text/javascript">moveProgressBar('55.0');</script>
|
240
240
|
<dd class="spec passed"><span class="passed_spec_name">should determine the length of time by which two time_periods overlap</span></dd>
|
241
|
-
<script type="text/javascript">moveProgressBar('
|
241
|
+
<script type="text/javascript">moveProgressBar('57.5');</script>
|
242
242
|
<dd class="spec passed"><span class="passed_spec_name">should determine if two time_periods are back-to-back</span></dd>
|
243
|
-
<script type="text/javascript">moveProgressBar('
|
243
|
+
<script type="text/javascript">moveProgressBar('60.0');</script>
|
244
244
|
<dd class="spec passed"><span class="passed_spec_name">should determine if a time_period is between two other time_periods</span></dd>
|
245
245
|
</dl>
|
246
246
|
</div>
|
247
247
|
<div class="example_group">
|
248
248
|
<dl>
|
249
249
|
<dt id="example_group_5">The TimePeriod status helpers</dt>
|
250
|
-
<script type="text/javascript">moveProgressBar('
|
250
|
+
<script type="text/javascript">moveProgressBar('62.5');</script>
|
251
251
|
<dd class="spec passed"><span class="passed_spec_name">should determine the length of time until a time_period</span></dd>
|
252
|
-
<script type="text/javascript">moveProgressBar('
|
252
|
+
<script type="text/javascript">moveProgressBar('65.0');</script>
|
253
253
|
<dd class="spec passed"><span class="passed_spec_name">should determine if a time_period is in the future</span></dd>
|
254
|
-
<script type="text/javascript">moveProgressBar('
|
254
|
+
<script type="text/javascript">moveProgressBar('67.5');</script>
|
255
255
|
<dd class="spec passed"><span class="passed_spec_name">should determine the length of time since a time_period ended</span></dd>
|
256
|
-
<script type="text/javascript">moveProgressBar('
|
256
|
+
<script type="text/javascript">moveProgressBar('70.0');</script>
|
257
257
|
<dd class="spec passed"><span class="passed_spec_name">should determine if a time_period is in the past</span></dd>
|
258
|
-
<script type="text/javascript">moveProgressBar('
|
258
|
+
<script type="text/javascript">moveProgressBar('72.5');</script>
|
259
259
|
<dd class="spec passed"><span class="passed_spec_name">should determine if a time_period has started</span></dd>
|
260
|
-
<script type="text/javascript">moveProgressBar('
|
260
|
+
<script type="text/javascript">moveProgressBar('75.0');</script>
|
261
261
|
<dd class="spec passed"><span class="passed_spec_name">should determine how much time has elapsed since an event started</span></dd>
|
262
|
-
<script type="text/javascript">moveProgressBar('
|
262
|
+
<script type="text/javascript">moveProgressBar('77.5');</script>
|
263
263
|
<dd class="spec passed"><span class="passed_spec_name">should determine what percentage of time has elapsed since an event started</span></dd>
|
264
|
-
<script type="text/javascript">moveProgressBar('
|
264
|
+
<script type="text/javascript">moveProgressBar('80.0');</script>
|
265
265
|
<dd class="spec passed"><span class="passed_spec_name">should determine how much time is remaining until an event ends</span></dd>
|
266
|
-
<script type="text/javascript">moveProgressBar('
|
266
|
+
<script type="text/javascript">moveProgressBar('82.5');</script>
|
267
267
|
<dd class="spec passed"><span class="passed_spec_name">should determine what percentage of time is remaining until an event ends</span></dd>
|
268
|
-
<script type="text/javascript">moveProgressBar('
|
268
|
+
<script type="text/javascript">moveProgressBar('85.0');</script>
|
269
269
|
<dd class="spec passed"><span class="passed_spec_name">should determine if a time_period has ended</span></dd>
|
270
|
-
<script type="text/javascript">moveProgressBar('
|
270
|
+
<script type="text/javascript">moveProgressBar('87.5');</script>
|
271
271
|
<dd class="spec passed"><span class="passed_spec_name">should determine the duration of a time_period</span></dd>
|
272
272
|
</dl>
|
273
273
|
</div>
|
274
274
|
<div class="example_group">
|
275
275
|
<dl>
|
276
276
|
<dt id="example_group_6">The TimePeriod modification helpers</dt>
|
277
|
-
<script type="text/javascript">moveProgressBar('
|
277
|
+
<script type="text/javascript">moveProgressBar('90.0');</script>
|
278
278
|
<dd class="spec passed"><span class="passed_spec_name">should shift a time_period into the past or future</span></dd>
|
279
279
|
</dl>
|
280
280
|
</div>
|
281
281
|
<div class="example_group">
|
282
282
|
<dl>
|
283
283
|
<dt id="example_group_7">The Range overlap helpers</dt>
|
284
|
-
<script type="text/javascript">moveProgressBar('
|
284
|
+
<script type="text/javascript">moveProgressBar('92.5');</script>
|
285
285
|
<dd class="spec passed"><span class="passed_spec_name">should determine if two ranges do not overlap</span></dd>
|
286
|
-
<script type="text/javascript">moveProgressBar('
|
286
|
+
<script type="text/javascript">moveProgressBar('95.0');</script>
|
287
287
|
<dd class="spec passed"><span class="passed_spec_name">should determine if two ranges do overlap</span></dd>
|
288
288
|
</dl>
|
289
289
|
</div>
|
290
|
-
<
|
291
|
-
<
|
290
|
+
<div class="example_group">
|
291
|
+
<dl>
|
292
|
+
<dt id="example_group_8">The extensions to the Time class</dt>
|
293
|
+
<script type="text/javascript">moveProgressBar('97.5');</script>
|
294
|
+
<dd class="spec passed"><span class="passed_spec_name">should determine if two times are approximately equal (tolerance @ 1 second)</span></dd>
|
295
|
+
<script type="text/javascript">moveProgressBar('100.0');</script>
|
296
|
+
<dd class="spec passed"><span class="passed_spec_name">should determine if two times are approximately equal (tolerance @ 0.1 seconds)</span></dd>
|
297
|
+
</dl>
|
298
|
+
</div>
|
299
|
+
<script type="text/javascript">document.getElementById('duration').innerHTML = "Finished in <strong>0.476378 seconds</strong>";</script>
|
300
|
+
<script type="text/javascript">document.getElementById('totals').innerHTML = "40 examples, 0 failures";</script>
|
292
301
|
</div>
|
293
302
|
</div>
|
294
303
|
</body>
|
data/spec/schema.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: acts_as_flux_capacitor
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.6.
|
4
|
+
version: 0.6.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jim Cropcho
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2008-05-
|
12
|
+
date: 2008-05-24 00:00:00 -04:00
|
13
13
|
default_executable:
|
14
14
|
dependencies: []
|
15
15
|
|