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 | |
| parent | 3b4e52e4a702c00728fff51f4497ebf8c85d8738 (diff) | |
| download | ayk-104e6299c6989d8042b4ce20866344fc7800456b.zip ayk-104e6299c6989d8042b4ce20866344fc7800456b.tar.gz  | |
fix age and spec
Diffstat (limited to 'spec')
| -rw-r--r-- | spec/age.rb | 97 | ||||
| -rw-r--r-- | spec/age_spec.rb | 82 | 
2 files changed, 82 insertions, 97 deletions
diff --git a/spec/age.rb b/spec/age.rb deleted file mode 100644 index 1e4c9a8..0000000 --- a/spec/age.rb +++ /dev/null @@ -1,97 +0,0 @@ -#! /usr/bin/env ruby -# -*- coding: UTF-8 -*- - -require 'ayk/age' -# -def age_spec(birth,dy,dm,dd) -    at = ((birth>>(12*dy))>>dm)+dd -#    puts at.strftime "%d.%m.%Y" -    y,m,d,h,i,s = birth.age(at) -#    puts "#{y} #{m} #{d}" -    y.should eql dy -    m.should eql dm -    d.should eql dd -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 time checks" do -        y,m,d,h,i,s = @b.age( DateTime.civil(2009,7,27,4,40,0) ) -        h.should eql 0 -        i.should eql 0 -        s.should eql 0 -        y,m,d,h,i,s = @b.age( DateTime.civil(2009,7,27,7,2,2) ) -        h.should eql 2 -        i.should eql 22 -        s.should eql 2 -    end -    it "simple 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 day computations" do -        at = ((@b>>(12*0))>>15)+3 -        y,m,d,h,i,s = @b.age(at) -        y.should eql 1 -        m.should eql 3 -        d.should eql 3 -        at = ((@b>>(12*0))>>1)+366 -        y,m,d,h,i,s = @b.age(at) -        y.should eql 1 -        m.should eql 1 -        d.should eql 1 -        at = ((@b>>(12*5))>>10)+15 -        y,m,d,h,i,s = @b.age(at) -        y.should eql 5 -        m.should eql 10 -        d.should eql 15 -        at = ((@b>>(12*0))>>0)+750 -        y,m,d,h,i,s = @b.age(at) -        y.should eql 2 -        m.should eql 0 -        d.should eql 20 -    end -    it "should pass more complicated one" do -        at = DateTime.civil 2010,7,13,4,40,0 # Corina Mannion -        y,m,d,h,i,s = @b.age(at) -        y.should eql 0 -        m.should eql 11 -        d.should eql 16 -        h.should eql 0 -        i.should eql 0 -        s.should eql 0 -        at = DateTime.civil 2010,7,13,0,0,0 # Corina Mannion -        y,m,d,h,i,s = @b.age(at) -        y.should eql 0 -        m.should eql 11 -        d.should eql 15 -        h.should eql 19 -        i.should eql 20 -        s.should eql 0 -    end -    it "should correctly handle 1 year -1 day " -        y,m,d,h,i,s = @b.age( DateTime.civil(2009,7,26,4,40,0) ) -        y.should eql 0 -        m.should eql 11 -        d.should eql 15 -        h.should eql 19 -        i.should eql 20 -        s.should eql 0 -    end -end - - -#(1..365).each do |n| -#    dt = birth.age( birth+n) -#    puts "#{n} => #{dt[1]} #{dt[2]}" -#end - 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  | 
