summaryrefslogtreecommitdiffstats
path: root/spec/age_spec.rb
diff options
context:
space:
mode:
authorJérémy Zurcher <jeremy@asynk.ch>2011-08-04 01:48:27 +0200
committerJérémy Zurcher <jeremy@asynk.ch>2011-08-04 01:48:27 +0200
commit104e6299c6989d8042b4ce20866344fc7800456b (patch)
tree7a8c137fe0f9f43e5d50932b06b6ecdb38244cef /spec/age_spec.rb
parent3b4e52e4a702c00728fff51f4497ebf8c85d8738 (diff)
downloadayk-104e6299c6989d8042b4ce20866344fc7800456b.zip
ayk-104e6299c6989d8042b4ce20866344fc7800456b.tar.gz
fix age and spec
Diffstat (limited to 'spec/age_spec.rb')
-rw-r--r--spec/age_spec.rb82
1 files changed, 82 insertions, 0 deletions
diff --git a/spec/age_spec.rb b/spec/age_spec.rb
new file mode 100644
index 0000000..7c447e0
--- /dev/null
+++ b/spec/age_spec.rb
@@ -0,0 +1,82 @@
+#! /usr/bin/env ruby
+# -*- coding: UTF-8 -*-
+
+require 'ayk/age'
+#
+def age_spec birth, dy, dm, dd
+ at = (birth>>(12*dy+dm))+dd
+ y,m,d,hh,mm,ss = birth.age(at)
+ y.should eql dy
+ m.should eql dm
+ d.should eql dd
+ hh.should eql 0
+ mm.should eql 0
+ ss.should eql 0
+end
+def full_check birth, at, y, m, d, hh, mm, ss
+ r = birth.age at
+ r[0].should eql y
+ r[1].should eql m
+ r[2].should eql d
+ r[3].should eql hh
+ r[4].should eql mm
+ r[5].should eql ss
+ x = ((birth>>(12*y+m))+d+(hh/24.0)+(mm/1440.0)+(ss/86400.0))
+ x.year.should eql at.year
+ x.month.should eql at.month
+ x.day.should eql at.day
+ x.hour.should eql at.hour
+# x.minute.should eql at.minute
+# x.second.should eql at.second
+end
+#
+describe DateTime do
+ #
+ before(:all) do
+ @b = DateTime.civil 2009,7,27,4,40,0 # Róisín Mannion-Zurcher [IRL|CH] )
+ end
+ it "should pass basic futur checks" do
+ age_spec(@b,0,0,0)
+ age_spec(@b,0,0,1)
+ age_spec(@b,0,1,0)
+ age_spec(@b,0,1,1)
+ age_spec(@b,1,0,0)
+ age_spec(@b,1,0,1)
+ age_spec(@b,1,1,0)
+ age_spec(@b,1,1,1)
+ end
+ it "should pass 10000 days computation" do
+ (0..10000).each do |n|
+ at = @b+n
+ r = @b.age at
+ x = (@b>>(12*r[0]+r[1]))+r[2]
+ x.year.should eql at.year
+ x.month.should eql at.month
+ x.day.should eql at.day
+ end
+ end
+ it "should pass time computation" do
+ full_check @b, DateTime.civil( 2010, 9, 25, 3, 40, 0), 1, 1, 28, 23, 0, 0
+ full_check @b, DateTime.civil( 2010, 9, 25, 4, 39, 0), 1, 1, 28, 23, 59, 0
+ full_check @b, DateTime.civil( 2010, 9, 25, 4, 39, 59), 1, 1, 28, 23, 59, 59
+ full_check @b, DateTime.civil( 2010, 9, 25, 4, 40, 0), 1, 1, 29, 0, 0, 0
+ full_check @b, DateTime.civil( 2010, 9, 26, 3, 40, 0), 1, 1, 29, 23, 0, 0
+ full_check @b, DateTime.civil( 2010, 9, 26, 4, 39, 0), 1, 1, 29, 23, 59, 0
+ full_check @b, DateTime.civil( 2010, 9, 26, 4, 39, 59), 1, 1, 29, 23, 59, 59
+ full_check @b, DateTime.civil( 2010, 9, 26, 4, 40, 0), 1, 1, 30, 0, 0, 0
+ full_check @b, DateTime.civil( 2010, 9, 27, 3, 40, 0), 1, 1, 30, 23, 0, 0
+ full_check @b, DateTime.civil( 2010, 9, 27, 4, 39, 0), 1, 1, 30, 23, 59, 0
+ full_check @b, DateTime.civil( 2010, 9, 27, 4, 39, 59), 1, 1, 30, 23, 59, 59
+ full_check @b, DateTime.civil( 2010, 9, 27, 4, 40, 0), 1, 2, 0, 0, 0, 0
+ full_check @b, DateTime.civil( 2010, 9, 28, 3, 40, 0), 1, 2, 0, 23, 0, 0
+ full_check @b, DateTime.civil( 2010, 9, 28, 4, 39, 0), 1, 2, 0, 23, 59, 0
+ full_check @b, DateTime.civil( 2010, 9, 28, 4, 39, 59), 1, 2, 0, 23, 59, 59
+ full_check @b, DateTime.civil( 2010, 9, 28, 4, 40, 0), 1, 2, 1, 0, 0, 0
+ full_check @b, DateTime.civil( 2010, 9, 29, 3, 40, 0), 1, 2, 1, 23, 0, 0
+ # change years
+ full_check @b, DateTime.civil( 2010, 7, 27, 4, 40, 0), 1, 0, 0, 0, 0, 0
+ full_check @b, DateTime.civil( 2010, 7, 27, 3, 40, 0), 0, 11, 29, 23, 0, 0
+ full_check @b, DateTime.civil( 2010, 7, 27, 4, 39, 0), 0, 11, 29, 23, 59, 0
+ full_check @b, DateTime.civil( 2010, 7, 27, 4, 39, 59), 0, 11, 29, 23, 59, 59
+ end
+end