From: Gavin K.
Following are the results I obtained from running my test
script against everyone’s submissions.
Oops. I found a small bug in my test script’s counting of offsets.
(Large update intervals would cause it to think that the class was
transitioning outside of a +/- 5 minute range.)
Here are updated results and test script. Sorry for the bandwidth.
C:\Ruby\Quiz\FuzzyTime>testall.bat
C:\Ruby\Quiz\FuzzyTime>ruby -rtest_fuzzytime.rb BenGiddings_1.rb
Loaded suite BenGiddings_1
Started
F
Finished in 0.016 seconds.
- Failure:
test_running(FuzzyTimeTester)
[./test_fuzzytime.rb:33:intest_running' ./test_fuzzytime.rb:27:in
times’
./test_fuzzytime.rb:27:intest_running' ./test_fuzzytime.rb:23:in
each’
./test_fuzzytime.rb:23:in `test_running’]:
<Mon Nov 06 23:04:15 -0700 2006> expected but was
<Mon Nov 06 23:04:13 -0700 2006>.
1 tests, 3 assertions, 1 failures, 0 errors
C:\Ruby\Quiz\FuzzyTime>ruby -rtest_fuzzytime.rb CameronPope_1.rb
Loaded suite CameronPope_1
Started
2 second advance: 0.0% behind, 38.1% ahead
-5 -4 -3 -2 -1 0 +1 +2 +3 +4 +5
0.7% 0% 0% 0% 0% 0% 0.7% 0% 12% 41% 46%
6 second advance: 0.0% behind, 31.8% ahead
-5 -4 -3 -2 -1 0 +1 +2 +3 +4 +5
0.7% 0% 0% 0% 0% 0.7% 4.8% 9.6% 25% 38% 22%
17 second advance: 1.8% behind, 19.5% ahead
-5 -4 -3 -2 -1 0 +1 +2 +3 +4 +5
0.7% 0.7% 0.7% 2.7% 6.2% 11% 14% 19% 21% 18% 6.2%
30 second advance: 3.2% behind, 16.1% ahead
-5 -4 -3 -2 -1 0 +1 +2 +3 +4 +5
1.4% 2.1% 1.4% 3.4% 6.2% 19% 14% 18% 23% 9.0% 3.4%
47 second advance: 6.8% behind, 14.2% ahead
-5 -4 -3 -2 -1 0 +1 +2 +3 +4 +5
5.6% 3.5% 5.6% 5.6% 11% 13% 16% 15% 16% 5.6% 3.5%
60 second advance: 11.5% behind, 9.9% ahead
-5 -4 -3 -2 -1 0 +1 +2 +3 +4 +5
10% 7.6% 6.3% 11% 13% 15% 15% 12% 6.3% 4.2% 0.7%
65 second advance: 9.8% behind, 10.2% ahead
-5 -4 -3 -2 -1 0 +1 +2 +3 +4 +5
11% 4.8% 8.3% 10% 9.0% 18% 14% 14% 6.2% 3.4% 0%
120 second advance: 22.5% behind, 9.3% ahead
-5 -4 -3 -2 -1 0 +1 +2 +3 +4 +5
26% 20% 0% 17% 0% 17% 0% 15% 0% 4.9% 0%
290 second advance: 27.2% behind, 9.4% ahead
-5 -4 -3 -2 -1 0 +1 +2 +3 +4 +5
64% 10% 2.9% 5.0% 2.9% 6.5% 3.6% 2.2% 1.4% 1.4% 0%
.
Finished in 16.937 seconds.
1 tests, 142380 assertions, 0 failures, 0 errors
C:\Ruby\Quiz\FuzzyTime>ruby -rtest_fuzzytime.rb DamienPetrelli_1.rb
Loaded suite DamienPetrelli_1
Started
F
Finished in 0.016 seconds.
- Failure:
test_running(FuzzyTimeTester)
[./test_fuzzytime.rb:33:intest_running' ./test_fuzzytime.rb:27:in
times’
./test_fuzzytime.rb:27:intest_running' ./test_fuzzytime.rb:23:in
each’
./test_fuzzytime.rb:23:in `test_running’]:
<Mon Nov 13 12:19:40 -0700 2006> expected but was
<Sun Oct 22 09:22:42 -0600 2006>.
1 tests, 1 assertions, 1 failures, 0 errors
C:\Ruby\Quiz\FuzzyTime>ruby -rtest_fuzzytime.rb DanielLucraft_1.rb
Loaded suite DanielLucraft_1
Started
2 second advance: 7.8% behind, 17.6% ahead
-5 -4 -3 -2 -1 0 +1 +2 +3 +4 +5
0% 9.0% 7.6% 10% 11% 10% 12% 7.6% 4.2% 16% 12%
6 second advance: 7.3% behind, 16.0% ahead
-5 -4 -3 -2 -1 0 +1 +2 +3 +4 +5
0.7% 11% 5.5% 15% 9.0% 12% 12% 9.7% 5.5% 13% 6.2%
17 second advance: 9.9% behind, 17.6% ahead
-5 -4 -3 -2 -1 0 +1 +2 +3 +4 +5
0.7% 13% 16% 6.9% 7.6% 8.3% 6.2% 9.0% 14% 9.0% 9.7%
30 second advance: 9.9% behind, 15.0% ahead
-5 -4 -3 -2 -1 0 +1 +2 +3 +4 +5
0% 12% 6.9% 15% 13% 8.3% 7.6% 10% 7.6% 10% 9.0%
47 second advance: 10.3% behind, 13.1% ahead
-5 -4 -3 -2 -1 0 +1 +2 +3 +4 +5
0.7% 11% 14% 10% 12% 12% 10% 10% 5.5% 5.5% 8.3%
60 second advance: 8.1% behind, 15.3% ahead
-5 -4 -3 -2 -1 0 +1 +2 +3 +4 +5
0% 12% 9.0% 10% 13% 12% 11% 8.3% 9.7% 6.2% 8.3%
65 second advance: 8.8% behind, 16.5% ahead
-5 -4 -3 -2 -1 0 +1 +2 +3 +4 +5
0.7% 10% 14% 9.0% 10% 9.0% 10% 9.0% 9.0% 8.3% 10%
120 second advance: 6.1% behind, 20.4% ahead
-5 -4 -3 -2 -1 0 +1 +2 +3 +4 +5
8.4% 0% 17% 0% 22% 0% 19% 0% 20% 0% 13%
290 second advance: 7.4% behind, 18.5% ahead
-5 -4 -3 -2 -1 0 +1 +2 +3 +4 +5
14% 12% 6.5% 12% 11% 11% 7.9% 12% 6.5% 3.6% 4.3%
.
Finished in 28.344 seconds.
1 tests, 142380 assertions, 0 failures, 0 errors
C:\Ruby\Quiz\FuzzyTime>ruby -rtest_fuzzytime.rb GavinKistner_1.rb
Loaded suite GavinKistner_1
Started
2 second advance: 0.3% behind, 20.1% ahead
-5 -4 -3 -2 -1 0 +1 +2 +3 +4 +5
0% 0% 0% 0% 0% 10% 20% 27% 19% 8.3% 15%
6 second advance: 0.9% behind, 24.1% ahead
-5 -4 -3 -2 -1 0 +1 +2 +3 +4 +5
0.7% 0% 0% 0% 5.5% 6.8% 11% 25% 18% 12% 21%
17 second advance: 13.1% behind, 12.0% ahead
-5 -4 -3 -2 -1 0 +1 +2 +3 +4 +5
3.4% 12% 14% 7.6% 12% 12% 9.0% 9.0% 5.5% 9.0% 6.2%
30 second advance: 9.2% behind, 14.6% ahead
-5 -4 -3 -2 -1 0 +1 +2 +3 +4 +5
2.8% 6.3% 7.6% 15% 6.3% 9.0% 12% 15% 11% 8.3% 6.3%
47 second advance: 6.1% behind, 22.6% ahead
-5 -4 -3 -2 -1 0 +1 +2 +3 +4 +5
4.1% 6.9% 2.8% 5.5% 5.5% 9.0% 6.9% 9.7% 18% 19% 12%
60 second advance: 7.0% behind, 18.5% ahead
-5 -4 -3 -2 -1 0 +1 +2 +3 +4 +5
3.4% 9.0% 6.2% 4.8% 12% 9.7% 14% 9.7% 8.3% 12% 12%
65 second advance: 12.2% behind, 15.9% ahead
-5 -4 -3 -2 -1 0 +1 +2 +3 +4 +5
7.6% 11% 13% 6.9% 9.0% 8.3% 5.5% 12% 9.0% 11% 6.2%
120 second advance: 6.8% behind, 23.6% ahead
-5 -4 -3 -2 -1 0 +1 +2 +3 +4 +5
12% 0% 17% 0% 19% 0% 12% 0% 21% 0% 19%
290 second advance: 14.1% behind, 18.5% ahead
-5 -4 -3 -2 -1 0 +1 +2 +3 +4 +5
34% 5.5% 8.3% 5.5% 5.5% 9.0% 8.3% 6.2% 6.2% 4.8% 6.2%
.
Finished in 17.828 seconds.
1 tests, 142380 assertions, 0 failures, 0 errors
C:\Ruby\Quiz\FuzzyTime>ruby -rtest_fuzzytime.rb JeremyHinegardner_1.rb
Loaded suite JeremyHinegardner_1
Started
2 second advance: 0.0% behind, 43.0% ahead
-5 -4 -3 -2 -1 0 +1 +2 +3 +4 +5
0% 0% 0.7% 0% 0% 0% 0% 0% 1.4% 22% 76%
6 second advance: 0.0% behind, 38.7% ahead
-5 -4 -3 -2 -1 0 +1 +2 +3 +4 +5
0.7% 0% 0% 0.7% 0% 0% 0% 0% 9.6% 46% 43%
17 second advance: 0.0% behind, 31.1% ahead
-5 -4 -3 -2 -1 0 +1 +2 +3 +4 +5
0.7% 0.7% 0% 0% 0% 0.7% 2.1% 12% 36% 34% 15%
30 second advance: 0.4% behind, 25.0% ahead
-5 -4 -3 -2 -1 0 +1 +2 +3 +4 +5
0.7% 0% 0% 0% 2.1% 6.2% 9.7% 22% 29% 23% 7.6%
47 second advance: 0.8% behind, 23.3% ahead
-5 -4 -3 -2 -1 0 +1 +2 +3 +4 +5
0.7% 0% 0% 2.1% 4.1% 8.2% 15% 21% 21% 18% 8.9%
60 second advance: 0.5% behind, 21.9% ahead
-5 -4 -3 -2 -1 0 +1 +2 +3 +4 +5
0% 0% 0% 1.4% 2.8% 17% 18% 15% 20% 19% 6.9%
65 second advance: 1.2% behind, 18.5% ahead
-5 -4 -3 -2 -1 0 +1 +2 +3 +4 +5
0% 0% 0.7% 4.1% 8.3% 15% 18% 21% 19% 12% 2.1%
120 second advance: 6.1% behind, 11.5% ahead
-5 -4 -3 -2 -1 0 +1 +2 +3 +4 +5
0.7% 5.6% 0% 20% 0% 30% 0% 33% 0% 11% 0%
290 second advance: 11.1% behind, 14.8% ahead
-5 -4 -3 -2 -1 0 +1 +2 +3 +4 +5
23% 11% 12% 11% 11% 5.0% 9.9% 7.1% 4.3% 3.5% 1.4%
.
Finished in 19.016 seconds.
1 tests, 142380 assertions, 0 failures, 0 errors
C:\Ruby\Quiz\FuzzyTime>ruby -rtest_fuzzytime.rb MarcelWard_1.rb
Loaded suite MarcelWard_1
Started
2 second advance: 5.9% behind, 15.1% ahead
-5 -4 -3 -2 -1 0 +1 +2 +3 +4 +5
0.7% 2.8% 4.1% 9.7% 11% 12% 15% 12% 11% 10% 10%
6 second advance: 6.7% behind, 15.1% ahead
-5 -4 -3 -2 -1 0 +1 +2 +3 +4 +5
0.7% 3.4% 4.1% 10% 12% 8.2% 13% 17% 12% 10% 8.9%
17 second advance: 7.1% behind, 15.3% ahead
-5 -4 -3 -2 -1 0 +1 +2 +3 +4 +5
0% 2.8% 6.9% 13% 13% 12% 7.6% 11% 13% 13% 7.6%
30 second advance: 8.1% behind, 15.9% ahead
-5 -4 -3 -2 -1 0 +1 +2 +3 +4 +5
0% 7.6% 6.2% 13% 4.1% 14% 10% 12% 12% 9.0% 11%
47 second advance: 6.8% behind, 17.1% ahead
-5 -4 -3 -2 -1 0 +1 +2 +3 +4 +5
2.7% 4.1% 4.8% 12% 12% 11% 6.2% 14% 10% 14% 8.9%
60 second advance: 9.7% behind, 13.1% ahead
-5 -4 -3 -2 -1 0 +1 +2 +3 +4 +5
3.4% 9.7% 9.7% 9.7% 6.9% 12% 13% 12% 12% 7.6% 2.8%
65 second advance: 6.4% behind, 16.2% ahead
-5 -4 -3 -2 -1 0 +1 +2 +3 +4 +5
1.4% 5.5% 6.9% 9.7% 8.3% 15% 12% 10% 12% 12% 6.9%
120 second advance: 6.0% behind, 17.6% ahead
-5 -4 -3 -2 -1 0 +1 +2 +3 +4 +5
9.0% 0% 17% 0% 24% 0% 22% 0% 24% 0% 4.2%
290 second advance: 8.4% behind, 14.8% ahead
-5 -4 -3 -2 -1 0 +1 +2 +3 +4 +5
19% 12% 9.3% 14% 10% 11% 9.3% 7.1% 4.3% 3.6% 1.4%
.
Finished in 22.282 seconds.
1 tests, 142380 assertions, 0 failures, 0 errors
C:\Ruby\Quiz\FuzzyTime>ruby -rtest_fuzzytime.rb PaoloNegri_1.rb
Loaded suite PaoloNegri_1
Started
2 second advance: 8.3% behind, 10.3% ahead
-5 -4 -3 -2 -1 0 +1 +2 +3 +4 +5
0.7% 2.7% 9.6% 14% 10% 14% 16% 14% 12% 4.8% 2.1%
6 second advance: 8.0% behind, 11.5% ahead
-5 -4 -3 -2 -1 0 +1 +2 +3 +4 +5
0% 2.1% 8.3% 9.0% 16% 16% 12% 12% 12% 8.3% 4.9%
17 second advance: 7.4% behind, 11.4% ahead
-5 -4 -3 -2 -1 0 +1 +2 +3 +4 +5
0% 5.5% 4.8% 9.0% 17% 10% 21% 9.0% 12% 9.7% 1.4%
30 second advance: 7.5% behind, 11.3% ahead
-5 -4 -3 -2 -1 0 +1 +2 +3 +4 +5
0.7% 4.8% 8.3% 9.0% 19% 16% 14% 9.0% 5.5% 11% 2.1%
47 second advance: 8.3% behind, 10.6% ahead
-5 -4 -3 -2 -1 0 +1 +2 +3 +4 +5
0.7% 6.9% 8.3% 12% 18% 11% 15% 12% 9.0% 4.1% 2.1%
60 second advance: 7.2% behind, 11.2% ahead
-5 -4 -3 -2 -1 0 +1 +2 +3 +4 +5
0.7% 3.4% 12% 9.7% 17% 14% 14% 13% 10% 4.8% 1.4%
65 second advance: 6.8% behind, 13.2% ahead
-5 -4 -3 -2 -1 0 +1 +2 +3 +4 +5
2.1% 5.6% 7.6% 12% 15% 12% 16% 13% 10% 5.6% 2.1%
120 second advance: 9.4% behind, 11.1% ahead
-5 -4 -3 -2 -1 0 +1 +2 +3 +4 +5
13% 0% 28% 0% 22% 0% 25% 0% 12% 0% 0%
290 second advance: 9.1% behind, 12.8% ahead
-5 -4 -3 -2 -1 0 +1 +2 +3 +4 +5
22% 12% 11% 12% 9.7% 12% 7.6% 6.2% 2.8% 3.4% 1.4%
.
Finished in 18.89 seconds.
1 tests, 142380 assertions, 0 failures, 0 errors
C:\Ruby\Quiz\FuzzyTime>ruby -rtest_fuzzytime.rb RobertConn_1.rb
Loaded suite RobertConn_1
Started
2 second advance: 0.0% behind, 49.6% ahead
-5 -4 -3 -2 -1 0 +1 +2 +3 +4 +5
0% 0.7% 0% 0% 0% 0% 0% 0% 0% 0% 99%
6 second advance: 0.0% behind, 48.9% ahead
-5 -4 -3 -2 -1 0 +1 +2 +3 +4 +5
0% 0% 0.7% 0% 0% 0% 0% 0% 0% 0% 99%
17 second advance: 0.0% behind, 46.5% ahead
-5 -4 -3 -2 -1 0 +1 +2 +3 +4 +5
0% 0% 0% 0% 0% 0% 0.7% 0% 1.4% 9.0% 89%
30 second advance: 0.0% behind, 44.9% ahead
-5 -4 -3 -2 -1 0 +1 +2 +3 +4 +5
0% 0% 0% 0% 0% 0% 0.7% 0% 5.6% 19% 74%
47 second advance: 0.0% behind, 41.8% ahead
-5 -4 -3 -2 -1 0 +1 +2 +3 +4 +5
0.7% 0% 0% 0% 0% 0.7% 2.1% 2.1% 13% 31% 50%
60 second advance: 0.2% behind, 38.7% ahead
-5 -4 -3 -2 -1 0 +1 +2 +3 +4 +5
0% 0% 0% 0.7% 0.7% 4.1% 2.8% 10% 13% 20% 48%
65 second advance: 0.3% behind, 40.7% ahead
-5 -4 -3 -2 -1 0 +1 +2 +3 +4 +5
0% 0% 0% 1.4% 1.4% 1.4% 2.1% 5.6% 14% 28% 47%
120 second advance: 1.9% behind, 25.3% ahead
-5 -4 -3 -2 -1 0 +1 +2 +3 +4 +5
2.1% 2.8% 0% 2.8% 0% 16% 0% 30% 0% 46% 0%
290 second advance: 10.1% behind, 27.5% ahead
-5 -4 -3 -2 -1 0 +1 +2 +3 +4 +5
13% 5.5% 2.4% 3.1% 8.7% 7.9% 13% 15% 10% 11% 10%
.
Finished in 17.453 seconds.
1 tests, 142380 assertions, 0 failures, 0 errors
C:\Ruby\Quiz\FuzzyTime>ruby -rtest_fuzzytime.rb ThomasMueller_1.rb
Loaded suite ThomasMueller_1
Started
2 second advance: 0.0% behind, 43.3% ahead
-5 -4 -3 -2 -1 0 +1 +2 +3 +4 +5
0% 0% 0% 0% 0% 0% 0% 0% 0% 15% 85%
6 second advance: 0.0% behind, 37.5% ahead
-5 -4 -3 -2 -1 0 +1 +2 +3 +4 +5
0% 0.7% 0% 0% 0% 0% 0% 0.7% 14% 48% 36%
17 second advance: 0.0% behind, 32.1% ahead
-5 -4 -3 -2 -1 0 +1 +2 +3 +4 +5
0% 0% 0% 0% 0% 0.7% 2.1% 14% 26% 41% 17%
30 second advance: 0.4% behind, 26.8% ahead
-5 -4 -3 -2 -1 0 +1 +2 +3 +4 +5
0% 0% 0% 1.4% 2.1% 2.8% 12% 18% 28% 22% 13%
47 second advance: 0.8% behind, 23.3% ahead
-5 -4 -3 -2 -1 0 +1 +2 +3 +4 +5
0% 0% 0.7% 1.4% 3.5% 9.0% 17% 21% 17% 21% 9.7%
60 second advance: 2.1% behind, 17.7% ahead
-5 -4 -3 -2 -1 0 +1 +2 +3 +4 +5
0% 0.7% 1.4% 4.8% 10% 15% 16% 13% 27% 9.0% 2.8%
65 second advance: 1.2% behind, 19.5% ahead
-5 -4 -3 -2 -1 0 +1 +2 +3 +4 +5
0% 0.7% 0% 2.1% 11% 12% 21% 17% 19% 16% 2.1%
120 second advance: 3.9% behind, 14.2% ahead
-5 -4 -3 -2 -1 0 +1 +2 +3 +4 +5
0% 3.4% 0% 16% 0% 30% 0% 34% 0% 17% 0%
290 second advance: 5.7% behind, 14.1% ahead
-5 -4 -3 -2 -1 0 +1 +2 +3 +4 +5
11% 11% 11% 14% 13% 12% 9.2% 8.5% 3.5% 2.1% 3.5%
.
Finished in 17.234 seconds.
1 tests, 142380 assertions, 0 failures, 0 errors
C:\Ruby\Quiz\FuzzyTime>ruby -rtest_fuzzytime.rb TomPollard_1.rb
Loaded suite TomPollard_1
Started
2 second advance: 0.0% behind, 46.8% ahead
-5 -4 -3 -2 -1 0 +1 +2 +3 +4 +5
0.7% 0% 0% 0% 0% 0% 0% 0% 0.7% 4.8% 94%
6 second advance: 0.0% behind, 42.8% ahead
-5 -4 -3 -2 -1 0 +1 +2 +3 +4 +5
0% 0.7% 0% 0% 0% 0% 0% 0% 5.5% 32% 62%
17 second advance: 0.0% behind, 33.9% ahead
-5 -4 -3 -2 -1 0 +1 +2 +3 +4 +5
0% 0% 0% 0% 0.7% 0.7% 3.4% 8.3% 26% 33% 28%
30 second advance: 0.1% behind, 31.7% ahead
-5 -4 -3 -2 -1 0 +1 +2 +3 +4 +5
0.7% 0% 0% 0% 0.7% 0% 5.5% 16% 29% 28% 21%
47 second advance: 0.8% behind, 23.9% ahead
-5 -4 -3 -2 -1 0 +1 +2 +3 +4 +5
0% 0% 0% 2.1% 2.1% 9.7% 14% 21% 25% 14% 12%
60 second advance: 1.3% behind, 23.6% ahead
-5 -4 -3 -2 -1 0 +1 +2 +3 +4 +5
0.7% 0.7% 0.7% 3.4% 4.8% 7.6% 19% 17% 14% 23% 8.3%
65 second advance: 1.1% behind, 22.6% ahead
-5 -4 -3 -2 -1 0 +1 +2 +3 +4 +5
0% 0% 0.7% 2.1% 9.0% 9.0% 17% 20% 17% 18% 7.6%
120 second advance: 5.7% behind, 13.6% ahead
-5 -4 -3 -2 -1 0 +1 +2 +3 +4 +5
0.7% 8.3% 0% 18% 0% 28% 0% 30% 0% 15% 0%
290 second advance: 8.7% behind, 15.1% ahead
-5 -4 -3 -2 -1 0 +1 +2 +3 +4 +5
17% 12% 13% 9.5% 10% 9.5% 8.0% 8.0% 6.6% 5.8% 0.7%
.
Finished in 17.859 seconds.
1 tests, 142380 assertions, 0 failures, 0 errors
C:\Ruby\Quiz\FuzzyTime>ruby -rtest_fuzzytime.rb TomPollard_2.rb
Loaded suite TomPollard_2
Started
2 second advance: 0.0% behind, 49.7% ahead
-5 -4 -3 -2 -1 0 +1 +2 +3 +4 +5
0% 0% 0% 0.7% 0% 0% 0% 0% 0% 0% 99%
6 second advance: 0.0% behind, 48.9% ahead
-5 -4 -3 -2 -1 0 +1 +2 +3 +4 +5
0% 0% 0% 0% 0.7% 0% 0% 0% 0% 2.1% 97%
17 second advance: 0.0% behind, 45.5% ahead
-5 -4 -3 -2 -1 0 +1 +2 +3 +4 +5
0% 0.7% 0% 0% 0% 0% 0% 0.7% 5.5% 17% 77%
30 second advance: 0.8% behind, 38.7% ahead
-5 -4 -3 -2 -1 0 +1 +2 +3 +4 +5
0.7% 0.7% 2.1% 0% 0.7% 1.4% 3.4% 3.4% 16% 26% 46%
47 second advance: 5.9% behind, 23.2% ahead
-5 -4 -3 -2 -1 0 +1 +2 +3 +4 +5
2.8% 3.4% 6.9% 4.8% 9.7% 12% 5.5% 7.6% 12% 15% 21%
60 second advance: 12.9% behind, 13.3% ahead
-5 -4 -3 -2 -1 0 +1 +2 +3 +4 +5
10% 11% 11% 9.0% 9.0% 9.0% 10% 9.0% 9.7% 7.6% 4.1%
65 second advance: 16.8% behind, 14.7% ahead
-5 -4 -3 -2 -1 0 +1 +2 +3 +4 +5
23% 10% 7.5% 9.6% 9.6% 4.8% 4.8% 8.2% 7.5% 8.2% 6.8%
120 second advance: 9.2% behind, 18.6% ahead
-5 -4 -3 -2 -1 0 +1 +2 +3 +4 +5
4.9% 13% 0% 13% 0% 10% 0% 32% 0% 27% 0%
290 second advance: 29.9% behind, 8.7% ahead
-5 -4 -3 -2 -1 0 +1 +2 +3 +4 +5
72% 9.0% 3.5% 4.9% 3.5% 2.1% 4.2% 1.4% 0% 0% 0%
.
Finished in 19.25 seconds.
1 tests, 142380 assertions, 0 failures, 0 errors
====
Updated test script
require ‘test/unit’
$DEBUG = false
class Time
def to_fuzzy
s = strftime("%H:%M")
s[4] = “~”
s
end
def short
strftime("%H:%M")
end
def round_to( seconds )
seconds = seconds.round
Time.at( self.to_i / seconds * seconds )
end
end
RUNS_PER_SET = 1
class FuzzyTimeTester < Test::Unit::TestCase
def test_running
[ 2, 6, 17, 30, 47, 60, 65, 120, 290 ].each{ |advance_seconds|
runs, num_ahead, num_behind = 0, 0, 0
offsets = Hash.new(0)
RUNS_PER_SET.times{
t = Time.at( Time.new + rand( 3600 * 300 ) )
end_time = t + 60 * 60 * 24 # Run for 24 hours
ft = FuzzyTime.new( t )
last_value = nil
while( t < end_time )
assert_equal t, ft.actual
t0 = Time.at( t - 60 * 5 )
t2 = Time.at( t + 60 * 5 )
legal_values = [ t0, t, t2 ].map{ |x| x.to_fuzzy }.uniq
fuzzy_fuzz = ft.to_s
if last_value
y,mon,day = t.year, t.mon, t.day
h,m = last_value.scan(/\d+/).map{ |s| s.to_i }
m *= 10
if (m -= 10) < 0
m %= 60
if (h -= 1) < 0
h %= 24
end
end
illegal_old_value = Time.local( y,mon,day,h,m ).to_fuzzy
legal_values -= [ illegal_old_value ]
if $DEBUG
puts "Now: %s=>%s; legal: %s (was %s, can't be %s)" % [
t.short, fuzzy_fuzz,
legal_values.inspect, last_value,
illegal_old_value
]
end
end
assert_block( ( "It is %s, the clock displayed %s,\n" +
"but it should only display one of %s.\n" +
"(Last time I asked, it said it was %s.)" ) % [
t.short, fuzzy_fuzz.inspect,
legal_values.inspect,
last_value
] ){
legal_values.include?( fuzzy_fuzz )
}
actual_fuzz = t.to_fuzzy
ahour, amin = actual_fuzz.scan( /\d+/ ).map{ |x| x.to_i }
fhour, fmin = fuzzy_fuzz.scan( /\d+/ ).map{ |x| x.to_i }
if fuzzy_fuzz != actual_fuzz
if fmin>amin || fhour>ahour || ( fhour==0 && ahour==23 )
num_ahead += 1
else
num_behind +=1
end
end
if fuzzy_fuzz != last_value
ahour2, amin2 = t.short.scan( /\d+/ ).map{ |x| x.to_i }
if fmin>amin || fhour>ahour || ( fhour==0 && ahour==23 )
offset = ( fmin*10 - amin2 ) % 60
else
offset = ( fmin*10 - amin2 )
end
offset = [-5, [ 5, offset ].min ].max
offsets[ offset ] += 1
if $DEBUG
puts ( "It is %s, I just switched from %s to %s, " +
"and I think that's an offset of %+d" ) % [
t.short, last_value, fuzzy_fuzz, offset
]
end
end
runs += 1
last_value = fuzzy_fuzz
ft.advance( advance_seconds )
t += advance_seconds
end
}
puts "%d second advance: %.1f%% behind, %.1f%% ahead" % [
advance_seconds,
100.0 * num_behind / runs,
100.0 * num_ahead / runs
]
total_offsets = offsets.inject(0){ |sum,kv| sum+kv[1] }
-5.upto(5){ |o|
print "#{o>0?'+':''}#{o}".center( 5 )
}; print "\n"
-5.upto(5){ |o|
pct = 100.0 * offsets[o] / total_offsets
print( ( "%.#{(pct<10&&pct>0)?1:0}f%" % pct ).center( 5 ) )
}; puts "\n "
}
end
end