diff options
author | Jérémy Zurcher <jeremy@asynk.ch> | 2011-08-04 01:48:27 +0200 |
---|---|---|
committer | Jérémy Zurcher <jeremy@asynk.ch> | 2011-08-04 01:48:27 +0200 |
commit | 104e6299c6989d8042b4ce20866344fc7800456b (patch) | |
tree | 7a8c137fe0f9f43e5d50932b06b6ecdb38244cef /spec/age_spec.rb | |
parent | 3b4e52e4a702c00728fff51f4497ebf8c85d8738 (diff) | |
download | ayk-104e6299c6989d8042b4ce20866344fc7800456b.zip ayk-104e6299c6989d8042b4ce20866344fc7800456b.tar.gz |
fix age and spec
Diffstat (limited to 'spec/age_spec.rb')
-rw-r--r-- | spec/age_spec.rb | 82 |
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 |