rubysl-date 0.0.1 → 1.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +0 -1
- data/.travis.yml +7 -0
- data/README.md +2 -2
- data/Rakefile +0 -1
- data/lib/date.rb +1 -0
- data/lib/date/format.rb +1207 -0
- data/lib/rubysl/date.rb +2 -0
- data/lib/rubysl/date/date.rb +1765 -0
- data/lib/{rubysl-date → rubysl/date}/version.rb +1 -1
- data/rubysl-date.gemspec +18 -18
- data/spec/date/accessor_spec.rb +90 -0
- data/spec/date/add_month_spec.rb +29 -0
- data/spec/date/add_spec.rb +29 -0
- data/spec/date/ajd_spec.rb +5 -0
- data/spec/date/ajd_to_amjd_spec.rb +5 -0
- data/spec/date/ajd_to_jd_spec.rb +5 -0
- data/spec/date/amjd_spec.rb +5 -0
- data/spec/date/amjd_to_ajd_spec.rb +5 -0
- data/spec/date/append_spec.rb +5 -0
- data/spec/date/asctime_spec.rb +5 -0
- data/spec/date/boat_spec.rb +23 -0
- data/spec/date/case_compare_spec.rb +5 -0
- data/spec/date/civil_spec.rb +11 -0
- data/spec/date/civil_to_jd_spec.rb +16 -0
- data/spec/date/commercial_spec.rb +17 -0
- data/spec/date/commercial_to_jd_spec.rb +5 -0
- data/spec/date/comparison_spec.rb +5 -0
- data/spec/date/constants_spec.rb +110 -0
- data/spec/date/conversions_spec.rb +154 -0
- data/spec/date/ctime_spec.rb +5 -0
- data/spec/date/cwday_spec.rb +5 -0
- data/spec/date/cweek_spec.rb +5 -0
- data/spec/date/cwyear_spec.rb +5 -0
- data/spec/date/day_fraction_spec.rb +5 -0
- data/spec/date/day_fraction_to_time_spec.rb +5 -0
- data/spec/date/day_spec.rb +5 -0
- data/spec/date/downto_spec.rb +17 -0
- data/spec/date/england_spec.rb +5 -0
- data/spec/date/eql_spec.rb +11 -0
- data/spec/date/exist1_spec.rb +8 -0
- data/spec/date/exist2_spec.rb +8 -0
- data/spec/date/exist3_spec.rb +8 -0
- data/spec/date/exist_spec.rb +8 -0
- data/spec/date/existw_spec.rb +8 -0
- data/spec/date/format/bag/method_missing_spec.rb +5 -0
- data/spec/date/format/bag/to_hash_spec.rb +5 -0
- data/spec/date/gregorian_leap_spec.rb +15 -0
- data/spec/date/gregorian_spec.rb +46 -0
- data/spec/date/hash_spec.rb +7 -0
- data/spec/date/infinity/abs_spec.rb +5 -0
- data/spec/date/infinity/coerce_spec.rb +5 -0
- data/spec/date/infinity/comparison_spec.rb +5 -0
- data/spec/date/infinity/d_spec.rb +5 -0
- data/spec/date/infinity/finite_spec.rb +5 -0
- data/spec/date/infinity/infinite_spec.rb +5 -0
- data/spec/date/infinity/nan_spec.rb +5 -0
- data/spec/date/infinity/uminus_spec.rb +5 -0
- data/spec/date/infinity/uplus_spec.rb +5 -0
- data/spec/date/infinity/zero_spec.rb +5 -0
- data/spec/date/infinity_spec.rb +76 -0
- data/spec/date/inspect_spec.rb +5 -0
- data/spec/date/italy_spec.rb +5 -0
- data/spec/date/jd_spec.rb +14 -0
- data/spec/date/jd_to_ajd_spec.rb +5 -0
- data/spec/date/jd_to_civil_spec.rb +5 -0
- data/spec/date/jd_to_commercial_spec.rb +5 -0
- data/spec/date/jd_to_ld_spec.rb +5 -0
- data/spec/date/jd_to_mjd_spec.rb +5 -0
- data/spec/date/jd_to_ordinal_spec.rb +5 -0
- data/spec/date/jd_to_wday_spec.rb +5 -0
- data/spec/date/julian_leap_spec.rb +14 -0
- data/spec/date/julian_spec.rb +47 -0
- data/spec/date/ld_spec.rb +5 -0
- data/spec/date/ld_to_jd_spec.rb +5 -0
- data/spec/date/leap_spec.rb +9 -0
- data/spec/date/mday_spec.rb +5 -0
- data/spec/date/minus_month_spec.rb +22 -0
- data/spec/date/minus_spec.rb +29 -0
- data/spec/date/mjd_spec.rb +5 -0
- data/spec/date/mjd_to_jd_spec.rb +5 -0
- data/spec/date/mon_spec.rb +5 -0
- data/spec/date/month_spec.rb +5 -0
- data/spec/date/new0_spec.rb +8 -0
- data/spec/date/new1_spec.rb +8 -0
- data/spec/date/new2_spec.rb +8 -0
- data/spec/date/new3_spec.rb +8 -0
- data/spec/date/new_spec.rb +13 -0
- data/spec/date/new_start_spec.rb +5 -0
- data/spec/date/newsg_spec.rb +7 -0
- data/spec/date/neww_spec.rb +7 -0
- data/spec/date/next_spec.rb +5 -0
- data/spec/date/ns_spec.rb +11 -0
- data/spec/date/ordinal_spec.rb +7 -0
- data/spec/date/ordinal_to_jd_spec.rb +5 -0
- data/spec/date/os_spec.rb +11 -0
- data/spec/date/parse_spec.rb +173 -0
- data/spec/date/plus_spec.rb +19 -0
- data/spec/date/relationship_spec.rb +19 -0
- data/spec/date/right_shift_spec.rb +5 -0
- data/spec/date/sg_spec.rb +7 -0
- data/spec/date/shared/civil.rb +69 -0
- data/spec/date/shared/commercial.rb +62 -0
- data/spec/date/shared/jd.rb +14 -0
- data/spec/date/shared/new_bang.rb +14 -0
- data/spec/date/shared/ordinal.rb +42 -0
- data/spec/date/shared/parse.rb +54 -0
- data/spec/date/shared/parse_eu.rb +48 -0
- data/spec/date/shared/parse_us.rb +61 -0
- data/spec/date/shared/valid_civil.rb +69 -0
- data/spec/date/shared/valid_commercial.rb +66 -0
- data/spec/date/shared/valid_jd.rb +36 -0
- data/spec/date/shared/valid_ordinal.rb +60 -0
- data/spec/date/start_spec.rb +5 -0
- data/spec/date/step_spec.rb +55 -0
- data/spec/date/strftime_spec.rb +204 -0
- data/spec/date/strptime_spec.rb +161 -0
- data/spec/date/succ_spec.rb +5 -0
- data/spec/date/time_to_day_fraction_spec.rb +5 -0
- data/spec/date/to_s_spec.rb +5 -0
- data/spec/date/today_spec.rb +5 -0
- data/spec/date/upto_spec.rb +15 -0
- data/spec/date/valid_civil_spec.rb +9 -0
- data/spec/date/valid_commercial_spec.rb +9 -0
- data/spec/date/valid_date_spec.rb +6 -0
- data/spec/date/valid_jd_spec.rb +9 -0
- data/spec/date/valid_ordinal_spec.rb +9 -0
- data/spec/date/valid_time_spec.rb +5 -0
- data/spec/date/wday_spec.rb +5 -0
- data/spec/date/yday_spec.rb +5 -0
- data/spec/date/year_spec.rb +5 -0
- data/spec/date/zone_to_diff_spec.rb +5 -0
- data/spec/datetime/_strptime_spec.rb +5 -0
- data/spec/datetime/civil_spec.rb +5 -0
- data/spec/datetime/commercial_spec.rb +5 -0
- data/spec/datetime/hour_spec.rb +77 -0
- data/spec/datetime/httpdate_spec.rb +5 -0
- data/spec/datetime/iso8601_spec.rb +9 -0
- data/spec/datetime/jd_spec.rb +5 -0
- data/spec/datetime/jisx0301_spec.rb +9 -0
- data/spec/datetime/min_spec.rb +5 -0
- data/spec/datetime/minute_spec.rb +7 -0
- data/spec/datetime/new_offset_spec.rb +5 -0
- data/spec/datetime/new_spec.rb +52 -0
- data/spec/datetime/now_spec.rb +7 -0
- data/spec/datetime/offset_spec.rb +5 -0
- data/spec/datetime/ordinal_spec.rb +5 -0
- data/spec/datetime/parse_spec.rb +166 -0
- data/spec/datetime/rfc2822_spec.rb +5 -0
- data/spec/datetime/rfc3339_spec.rb +9 -0
- data/spec/datetime/rfc822_spec.rb +5 -0
- data/spec/datetime/sec_fraction_spec.rb +5 -0
- data/spec/datetime/sec_spec.rb +5 -0
- data/spec/datetime/second_fraction_spec.rb +5 -0
- data/spec/datetime/second_spec.rb +7 -0
- data/spec/datetime/shared/min.rb +77 -0
- data/spec/datetime/shared/sec.rb +65 -0
- data/spec/datetime/strftime_spec.rb +25 -0
- data/spec/datetime/strptime_spec.rb +5 -0
- data/spec/datetime/to_date_spec.rb +5 -0
- data/spec/datetime/to_datetime_spec.rb +5 -0
- data/spec/datetime/to_s_spec.rb +5 -0
- data/spec/datetime/to_time_spec.rb +5 -0
- data/spec/datetime/xmlschema_spec.rb +9 -0
- data/spec/datetime/zone_spec.rb +5 -0
- metadata +376 -88
- data/lib/rubysl-date.rb +0 -7
@@ -0,0 +1,76 @@
|
|
1
|
+
require 'date'
|
2
|
+
|
3
|
+
describe "Date::Infinity" do
|
4
|
+
|
5
|
+
it "should be able to check whether Infinity is zero" do
|
6
|
+
i = Date::Infinity.new
|
7
|
+
i.zero?.should == false
|
8
|
+
end
|
9
|
+
|
10
|
+
it "should be able to check whether Infinity is finite" do
|
11
|
+
i1 = Date::Infinity.new
|
12
|
+
i1.finite?.should == false
|
13
|
+
i2 = Date::Infinity.new(-1)
|
14
|
+
i2.finite?.should == false
|
15
|
+
i3 = Date::Infinity.new(0)
|
16
|
+
i3.finite?.should == false
|
17
|
+
end
|
18
|
+
|
19
|
+
it "should be able to check whether Infinity is infinite" do
|
20
|
+
i1 = Date::Infinity.new
|
21
|
+
i1.infinite?.should == 1
|
22
|
+
i2 = Date::Infinity.new(-1)
|
23
|
+
i2.infinite?.should == -1
|
24
|
+
i3 = Date::Infinity.new(0)
|
25
|
+
i3.infinite?.should == nil
|
26
|
+
end
|
27
|
+
|
28
|
+
it "should be able to check whether Infinity is not a number" do
|
29
|
+
i1 = Date::Infinity.new
|
30
|
+
i1.nan?.should == false
|
31
|
+
i2 = Date::Infinity.new(-1)
|
32
|
+
i2.nan?.should == false
|
33
|
+
i3 = Date::Infinity.new(0)
|
34
|
+
i3.nan?.should == true
|
35
|
+
end
|
36
|
+
|
37
|
+
# These checks fail on MRI because of a bug in Date::Infinity#<=>
|
38
|
+
# Fixed in 1.8.7
|
39
|
+
ruby_bug "#", "1.8.6" do
|
40
|
+
it "should be able to compare Infinity objects" do
|
41
|
+
i1 = Date::Infinity.new
|
42
|
+
i2 = Date::Infinity.new(-1)
|
43
|
+
i3 = Date::Infinity.new(0)
|
44
|
+
i4 = Date::Infinity.new
|
45
|
+
(i4 <=> i1).should == 0
|
46
|
+
(i3 <=> i1).should == -1
|
47
|
+
(i2 <=> i1).should == -1
|
48
|
+
(i3 <=> i2).should == 1
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
# Also fails because of the same bug as the previous spec
|
53
|
+
# Fixed in 1.8.7
|
54
|
+
ruby_bug "#", "1.8.6" do
|
55
|
+
it "should be able to return plus Infinity for abs" do
|
56
|
+
i1 = Date::Infinity.new
|
57
|
+
i2 = Date::Infinity.new(-1)
|
58
|
+
i3 = Date::Infinity.new(0)
|
59
|
+
(i2.abs <=> i1).should == 0
|
60
|
+
(i3.abs <=> i1).should == 0
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
ruby_bug "#222", "1.8.6" do
|
65
|
+
it "should be able to use -@ and +@ for Date::Infinity" do
|
66
|
+
(Date::Infinity.new <=> +Date::Infinity.new).should == 0
|
67
|
+
(Date::Infinity.new(-1) <=> -Date::Infinity.new).should == 0
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
71
|
+
it "should be able to coerce a Date::Infinity object" do
|
72
|
+
Date::Infinity.new.coerce(1).should == [-1, 1]
|
73
|
+
Date::Infinity.new(0).coerce(2).should == [0, 0]
|
74
|
+
Date::Infinity.new(-1).coerce(1.5).should == [1, -1]
|
75
|
+
end
|
76
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
require File.expand_path('../shared/jd', __FILE__)
|
2
|
+
require 'date'
|
3
|
+
|
4
|
+
describe "Date#jd" do
|
5
|
+
|
6
|
+
it "determines the Julian day for a Date object" do
|
7
|
+
Date.civil(2008, 1, 16).jd.should == 2454482
|
8
|
+
end
|
9
|
+
|
10
|
+
end
|
11
|
+
|
12
|
+
describe "Date.jd" do
|
13
|
+
it_behaves_like :date_jd, :jd
|
14
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
require 'date'
|
2
|
+
|
3
|
+
describe "Date.julian_leap?" do
|
4
|
+
it "determines whether a year is a leap year in the Julian calendar" do
|
5
|
+
Date.julian_leap?(1900).should be_true
|
6
|
+
Date.julian_leap?(2000).should be_true
|
7
|
+
Date.julian_leap?(2004).should be_true
|
8
|
+
end
|
9
|
+
|
10
|
+
it "determines whether a year is not a leap year in the Julian calendar" do
|
11
|
+
Date.julian_leap?(1999).should be_false
|
12
|
+
Date.julian_leap?(2002).should be_false
|
13
|
+
end
|
14
|
+
end
|
@@ -0,0 +1,47 @@
|
|
1
|
+
require 'date'
|
2
|
+
|
3
|
+
describe "Date#julian?" do
|
4
|
+
|
5
|
+
it "marks a day before the calendar reform as Julian" do
|
6
|
+
Date.civil(1007, 2, 27).julian?.should == true
|
7
|
+
Date.civil(1907, 2, 27, Date.civil(1930, 1, 1).jd).julian?.should be_true
|
8
|
+
end
|
9
|
+
|
10
|
+
it "marks a day after the calendar reform as Julian" do
|
11
|
+
Date.civil(2007, 2, 27).julian?.should == false
|
12
|
+
Date.civil(1607, 2, 27, Date.civil(1582, 1, 1).jd).julian?.should be_false
|
13
|
+
end
|
14
|
+
|
15
|
+
end
|
16
|
+
|
17
|
+
ruby_version_is "" ... "1.9" do
|
18
|
+
describe "Date.julian?" do
|
19
|
+
|
20
|
+
it "marks the date as not Julian if using the Gregorian calendar" do
|
21
|
+
Date.julian?(Date.civil(1007, 2, 27).jd, Date::GREGORIAN).should be_false
|
22
|
+
end
|
23
|
+
|
24
|
+
it "marks the date as Julian if using the Julian calendar" do
|
25
|
+
Date.julian?(Date.civil(1007, 2, 27).jd, Date::JULIAN).should be_true
|
26
|
+
end
|
27
|
+
|
28
|
+
it "marks the date before the English Day of Calendar Reform as Julian" do
|
29
|
+
Date.julian?(Date.civil(1752, 9, 13).jd, Date::ENGLAND).should be_true
|
30
|
+
end
|
31
|
+
|
32
|
+
it "marks the date after the English Day of Calendar Reform as not Julian" do
|
33
|
+
Date.julian?(Date.civil(1752, 9, 14).jd, Date::ENGLAND).should be_false
|
34
|
+
end
|
35
|
+
|
36
|
+
it "marks the date before the Italian Day of Calendar Reform as Julian" do
|
37
|
+
Date.julian?(Date.civil(1582, 10, 4).jd, Date::ITALY).should be_true
|
38
|
+
end
|
39
|
+
|
40
|
+
it "marks the date after the Italian Day of Calendar Reform as not Julian" do
|
41
|
+
Date.julian?(Date.civil(1582, 10, 15).jd, Date::ITALY).should be_false
|
42
|
+
end
|
43
|
+
|
44
|
+
end
|
45
|
+
|
46
|
+
end
|
47
|
+
|
@@ -0,0 +1,22 @@
|
|
1
|
+
require 'date'
|
2
|
+
|
3
|
+
describe "Date#<<" do
|
4
|
+
|
5
|
+
it "substracts a number of months from a date" do
|
6
|
+
d = Date.civil(2007,2,27) << 10
|
7
|
+
d.should == Date.civil(2006, 4, 27)
|
8
|
+
end
|
9
|
+
|
10
|
+
it "returns the last day of a month if the day doesn't exist" do
|
11
|
+
d = Date.civil(2008,3,31) << 1
|
12
|
+
d.should == Date.civil(2008, 2, 29)
|
13
|
+
end
|
14
|
+
|
15
|
+
it "raises an error on non numeric parameters" do
|
16
|
+
lambda { Date.civil(2007,2,27) << :hello }.should raise_error(NoMethodError)
|
17
|
+
lambda { Date.civil(2007,2,27) << "hello" }.should raise_error(NoMethodError)
|
18
|
+
lambda { Date.civil(2007,2,27) << Date.new }.should raise_error(NoMethodError)
|
19
|
+
lambda { Date.civil(2007,2,27) << Object.new }.should raise_error(NoMethodError)
|
20
|
+
end
|
21
|
+
|
22
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
require 'date'
|
2
|
+
|
3
|
+
describe "Date#-" do
|
4
|
+
|
5
|
+
it "substracts a number of days from a Date" do
|
6
|
+
d = Date.civil(2007, 5 ,2) - 13
|
7
|
+
d.should == Date.civil(2007, 4, 19)
|
8
|
+
end
|
9
|
+
|
10
|
+
it "substracts a negative number of days from a Date" do
|
11
|
+
d = Date.civil(2007, 4, 19).-(-13)
|
12
|
+
d.should == Date.civil(2007, 5 ,2)
|
13
|
+
end
|
14
|
+
|
15
|
+
it "computes the difference between two dates" do
|
16
|
+
(Date.civil(2007,2,27) - Date.civil(2007,2,27)).should == 0
|
17
|
+
(Date.civil(2007,2,27) - Date.civil(2007,2,26)).should == 1
|
18
|
+
(Date.civil(2006,2,27) - Date.civil(2007,2,27)).should == -365
|
19
|
+
(Date.civil(2008,2,27) - Date.civil(2007,2,27)).should == 365
|
20
|
+
|
21
|
+
end
|
22
|
+
|
23
|
+
it "raises an error for non Numeric arguments" do
|
24
|
+
lambda { Date.civil(2007,2,27) - :hello }.should raise_error(TypeError)
|
25
|
+
lambda { Date.civil(2007,2,27) - "hello" }.should raise_error(TypeError)
|
26
|
+
lambda { Date.civil(2007,2,27) - Object.new }.should raise_error(TypeError)
|
27
|
+
end
|
28
|
+
|
29
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
require 'date'
|
2
|
+
require File.expand_path('../shared/civil', __FILE__)
|
3
|
+
require File.expand_path('../shared/new_bang', __FILE__)
|
4
|
+
|
5
|
+
describe "Date.new" do
|
6
|
+
it_behaves_like(:date_civil, :new)
|
7
|
+
end
|
8
|
+
|
9
|
+
ruby_version_is "" ... "1.9.3" do
|
10
|
+
describe "Date.new!" do
|
11
|
+
it_behaves_like(:date_new_bang, :new!)
|
12
|
+
end
|
13
|
+
end
|