 
 This page contains automated test results for code from O'Reilly's Ruby Cookbook. If this code looks interesting or useful, you might want to buy the whole book.
| Waiting a Certain Amount of Time | ||
|---|---|---|
| Code | Expected | Actual | 
| 3.downto(1) { |i| puts "#{i}..."; sleep(1) }; puts "Go!" | 3... 2... 1... Go! | 3... 2... 1... Go! | 
| Time.new | Sat Mar 18 21:17:58 EST 2006 | Mon Mar 27 16:43:36 EST 2006 | 
| sleep(10) Time.new | Sat Mar 18 21:18:08 EST 2006 | Mon Mar 27 16:43:46 EST 2006 | 
| sleep(1) Time.new | Sat Mar 18 21:18:09 EST 2006 | Mon Mar 27 16:43:47 EST 2006 | 
| Time.new.usec | 377185 | 108809 | 
| sleep(0.1) Time.new.usec | 479230 | 210267 | 
| interval = 1.0
10.times do |x|
  t1 = Time.new
  sleep(interval)
  actual = Time.new - t1
  difference = (actual-interval).abs
  percent_difference = difference / interval * 100
  printf("Expected: %.9f Actual: %.6f Difference: %.6f (%.2f%%)\n",
         interval, actual, difference, percent_difference)
  interval /= 10
end | Expected: 1.000000000 Actual: 0.999420 Difference: 0.000580 (0.06%) Expected: 0.100000000 Actual: 0.099824 Difference: 0.000176 (0.18%) Expected: 0.010000000 Actual: 0.009912 Difference: 0.000088 (0.88%) Expected: 0.001000000 Actual: 0.001026 Difference: 0.000026 (2.60%) Expected: 0.000100000 Actual: 0.000913 Difference: 0.000813 (813.00%) Expected: 0.000010000 Actual: 0.000971 Difference: 0.000961 (9610.00%) Expected: 0.000001000 Actual: 0.000975 Difference: 0.000974 (97400.00%) Expected: 0.000000100 Actual: 0.000015 Difference: 0.000015 (14900.00%) Expected: 0.000000010 Actual: 0.000024 Difference: 0.000024 (239900.00%) Expected: 0.000000001 Actual: 0.000016 Difference: 0.000016 (1599900.00%) | Expected: 1.000000000 Actual: 1.012253 Difference: 0.012253 (1.23%) Expected: 0.100000000 Actual: 0.100122 Difference: 0.000122 (0.12%) Expected: 0.010000000 Actual: 0.010054 Difference: 0.000054 (0.54%) Expected: 0.001000000 Actual: 0.000832 Difference: 0.000168 (16.80%) Expected: 0.000100000 Actual: 0.001280 Difference: 0.001180 (1180.00%) Expected: 0.000010000 Actual: 0.000670 Difference: 0.000660 (6600.00%) Expected: 0.000001000 Actual: 0.000980 Difference: 0.000979 (97900.00%) Expected: 0.000000100 Actual: 0.000019 Difference: 0.000019 (18900.00%) Expected: 0.000000010 Actual: 0.000016 Difference: 0.000016 (159900.00%) Expected: 0.000000001 Actual: 0.000015 Difference: 0.000015 (1499900.00%) | 
| alarm = Thread.new(self) { sleep(5); Thread.main.wakeup }
puts "Going to sleep for 1000 seconds at #{Time.new}..."
sleep(10000); puts "Woke up at #{Time.new}!" | Going to sleep for 1000 seconds at Thu Oct 27 14:45:14 PDT 2005... Woke up at Thu Oct 27 14:45:19 PDT 2005! | Going to sleep for 1000 seconds at Mon Mar 27 16:43:48 EST 2006... Woke up at Mon Mar 27 16:43:53 EST 2006! | 
| alarm = Thread.new(self) { sleep(5); Thread.main.wakeup }
puts "Goodbye, cruel world!"; 
Thread.stop; 
puts "I'm back; how'd that happen?" | Goodbye, cruel world! I'm back; how'd that happen? | Goodbye, cruel world! I'm back; how'd that happen? |