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,154 @@
|
|
1
|
+
require 'date'
|
2
|
+
|
3
|
+
|
4
|
+
describe "Date#new_start" do
|
5
|
+
it "converts a date object into another with a new calendar reform" do
|
6
|
+
Date.civil(1582, 10, 14, Date::ENGLAND).new_start.should == Date.civil(1582, 10, 24)
|
7
|
+
Date.civil(1582, 10, 4, Date::ENGLAND).new_start.should == Date.civil(1582, 10, 4)
|
8
|
+
Date.civil(1582, 10, 15).new_start(Date::ENGLAND).should == Date.civil(1582, 10, 5, Date::ENGLAND)
|
9
|
+
Date.civil(1752, 9, 14).new_start(Date::ENGLAND).should == Date.civil(1752, 9, 14, Date::ENGLAND)
|
10
|
+
Date.civil(1752, 9, 13).new_start(Date::ENGLAND).should == Date.civil(1752, 9, 2, Date::ENGLAND)
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
describe "Date#italy" do
|
15
|
+
it "converts a date object into another with the Italian calendar reform" do
|
16
|
+
Date.civil(1582, 10, 14, Date::ENGLAND).italy.should == Date.civil(1582, 10, 24)
|
17
|
+
Date.civil(1582, 10, 4, Date::ENGLAND).italy.should == Date.civil(1582, 10, 4)
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
describe "Date#england" do
|
22
|
+
it "converts a date object into another with the English calendar reform" do
|
23
|
+
Date.civil(1582, 10, 15).england.should == Date.civil(1582, 10, 5, Date::ENGLAND)
|
24
|
+
Date.civil(1752, 9, 14).england.should == Date.civil(1752, 9, 14, Date::ENGLAND)
|
25
|
+
Date.civil(1752, 9, 13).england.should == Date.civil(1752, 9, 2, Date::ENGLAND)
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
describe "Date#julian" do
|
30
|
+
it "converts a date object into another with the Julian calendar" do
|
31
|
+
Date.civil(1582, 10, 15).julian.should == Date.civil(1582, 10, 5, Date::JULIAN)
|
32
|
+
Date.civil(1752, 9, 14).julian.should == Date.civil(1752, 9, 3, Date::JULIAN)
|
33
|
+
Date.civil(1752, 9, 13).julian.should == Date.civil(1752, 9, 2, Date::JULIAN)
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
describe "Date#gregorian" do
|
38
|
+
it "converts a date object into another with the Gregorian calendar" do
|
39
|
+
Date.civil(1582, 10, 4).gregorian.should == Date.civil(1582, 10, 14, Date::GREGORIAN)
|
40
|
+
Date.civil(1752, 9, 14).gregorian.should == Date.civil(1752, 9, 14, Date::GREGORIAN)
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
ruby_version_is "" ... "1.9" do
|
45
|
+
describe "Date#ordinal_to_jd" do
|
46
|
+
it "converts an ordinal date (year-day) to a Julian day number" do
|
47
|
+
Date.ordinal_to_jd(2007, 55).should == 2454156
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
describe "Date#jd_to_ordinal" do
|
52
|
+
it "converts a Julian day number into an ordinal date" do
|
53
|
+
Date.jd_to_ordinal(2454156).should == [2007, 55]
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
describe "Date#civil_to_jd" do
|
58
|
+
it "converts a civil date into a Julian day number" do
|
59
|
+
Date.civil_to_jd(2007, 2, 24).should == 2454156
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
describe "Date#jd_to_civil" do
|
64
|
+
it "converts a Julian day into a civil date" do
|
65
|
+
Date.jd_to_civil(2454156).should == [2007, 2, 24]
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
69
|
+
describe "Date#commercial_to_jd" do
|
70
|
+
it "converts a commercial date (year - week - day of week) into a Julian day number" do
|
71
|
+
Date.commercial_to_jd(2007, 45, 1).should == 2454410
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
75
|
+
describe "Date#jd_to_commercial" do
|
76
|
+
it "converts a Julian day number into a commercial date" do
|
77
|
+
Date.jd_to_commercial(2454410).should == [2007, 45, 1]
|
78
|
+
end
|
79
|
+
end
|
80
|
+
|
81
|
+
describe "Date#ajd_to_jd" do
|
82
|
+
it "converts a Astronomical Julian day number into a Julian day number" do
|
83
|
+
Date.ajd_to_jd(2454410).should == [2454410, Rational(1,2)]
|
84
|
+
Date.ajd_to_jd(2454410, 1.to_r / 2).should == [2454411, 0]
|
85
|
+
end
|
86
|
+
end
|
87
|
+
|
88
|
+
describe "Date#jd_to_ajd" do
|
89
|
+
it "converts a Julian day number into a Astronomical Julian day number" do
|
90
|
+
Date.jd_to_ajd(2454410, 0).should == 2454410 - Rational(1, 2)
|
91
|
+
Date.jd_to_ajd(2454410, 1.to_r / 2).should == 2454410
|
92
|
+
end
|
93
|
+
end
|
94
|
+
|
95
|
+
describe "Date#day_fraction_to_time" do
|
96
|
+
it "converts a day fraction into time" do
|
97
|
+
Date.day_fraction_to_time(2).should == [48, 0, 0, 0]
|
98
|
+
Date.day_fraction_to_time(1).should == [24, 0, 0, 0]
|
99
|
+
Date.day_fraction_to_time(1.to_r / 2).should == [12, 0, 0, 0]
|
100
|
+
Date.day_fraction_to_time(1.to_r / 7).should == [3, 25, 42, 1.to_r / 100800]
|
101
|
+
end
|
102
|
+
end
|
103
|
+
|
104
|
+
describe "Date#time_to_day_fraction" do
|
105
|
+
it "converts a time into a day fraction" do
|
106
|
+
Date.time_to_day_fraction(48, 0, 0).should == 2
|
107
|
+
Date.time_to_day_fraction(24, 0, 0).should == 1
|
108
|
+
Date.time_to_day_fraction(12, 0, 0).should == 1.to_r / 2
|
109
|
+
Date.time_to_day_fraction(10, 20, 10).should == 10.to_r / 24 + 20.to_r / (24 * 60) + 10.to_r / (24 * 60 * 60)
|
110
|
+
end
|
111
|
+
end
|
112
|
+
|
113
|
+
describe "Date#amjd_to_ajd" do
|
114
|
+
it "converts Astronomical Modified Julian day numbers into Astronomical Julian day numbers" do
|
115
|
+
Date.amjd_to_ajd(10).should == 10 + 2400000 + 1.to_r / 2
|
116
|
+
end
|
117
|
+
end
|
118
|
+
|
119
|
+
describe "Date#ajd_to_amjd" do
|
120
|
+
it "converts Astronomical Julian day numbers into Astronomical Modified Julian day numbers" do
|
121
|
+
Date.ajd_to_amjd(10000010).should == 10000010 - 2400000 - 1.to_r / 2
|
122
|
+
end
|
123
|
+
end
|
124
|
+
|
125
|
+
describe "Date#mjd_to_jd" do
|
126
|
+
it "converts Modified Julian day numbers into Julian day numbers" do
|
127
|
+
Date.mjd_to_jd(2000).should == 2000 + 2400001
|
128
|
+
end
|
129
|
+
end
|
130
|
+
|
131
|
+
describe "Date#jd_to_mjd" do
|
132
|
+
it "converts Julian day numbers into Modified Julian day numbers" do
|
133
|
+
Date.jd_to_mjd(2500000).should == 2500000 - 2400001
|
134
|
+
end
|
135
|
+
end
|
136
|
+
|
137
|
+
describe "Date#ld_to_jd" do
|
138
|
+
it "converts the number of days since the Gregorian calendar in Italy into Julian day numbers" do
|
139
|
+
Date.ld_to_jd(450000).should == 450000 + 2299160
|
140
|
+
end
|
141
|
+
end
|
142
|
+
|
143
|
+
describe "Date#jd_to_ld" do
|
144
|
+
it "converts Julian day numbers into the number of days since the Gregorian calendar in Italy" do
|
145
|
+
Date.jd_to_ld(2450000).should == 2450000 - 2299160
|
146
|
+
end
|
147
|
+
end
|
148
|
+
|
149
|
+
describe "Date#jd_to_wday" do
|
150
|
+
it "converts a Julian day number into a week day number" do
|
151
|
+
Date.jd_to_wday(2454482).should == 3
|
152
|
+
end
|
153
|
+
end
|
154
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
require 'date'
|
2
|
+
|
3
|
+
describe "Date#downto" do
|
4
|
+
|
5
|
+
it "creates earlier dates when passed a negative step" do
|
6
|
+
ds = Date.civil(2000, 4, 14)
|
7
|
+
de = Date.civil(2000, 3, 29)
|
8
|
+
count = 0
|
9
|
+
ds.step(de, -1) do |d|
|
10
|
+
d.should <= ds
|
11
|
+
d.should >= de
|
12
|
+
count += 1
|
13
|
+
end
|
14
|
+
count.should == 17
|
15
|
+
end
|
16
|
+
|
17
|
+
end
|
@@ -0,0 +1,11 @@
|
|
1
|
+
require 'date'
|
2
|
+
|
3
|
+
describe "Date#eql?" do
|
4
|
+
it "returns true if self is equal to another date" do
|
5
|
+
Date.civil(2007, 10, 11).eql?(Date.civil(2007, 10, 11)).should be_true
|
6
|
+
end
|
7
|
+
|
8
|
+
it "returns false if self is not equal to another date" do
|
9
|
+
Date.civil(2007, 10, 11).eql?(Date.civil(2007, 10, 12)).should be_false
|
10
|
+
end
|
11
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
require 'date'
|
2
|
+
|
3
|
+
describe "Date#gregorian_leap?" do
|
4
|
+
it "returns true if a year is a leap year in the Gregorian calendar" do
|
5
|
+
Date.gregorian_leap?(2000).should be_true
|
6
|
+
Date.gregorian_leap?(2004).should be_true
|
7
|
+
end
|
8
|
+
|
9
|
+
it "returns false if a year is not a leap year in the Gregorian calendar" do
|
10
|
+
Date.gregorian_leap?(1900).should be_false
|
11
|
+
Date.gregorian_leap?(1999).should be_false
|
12
|
+
Date.gregorian_leap?(2002).should be_false
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
@@ -0,0 +1,46 @@
|
|
1
|
+
require 'date'
|
2
|
+
|
3
|
+
describe "Date#gregorian?" do
|
4
|
+
|
5
|
+
it "marks a day before the calendar reform as Julian" do
|
6
|
+
Date.civil(1007, 2, 27).gregorian?.should be_false
|
7
|
+
Date.civil(1907, 2, 27, Date.civil(1930, 1, 1).jd).gregorian?.should be_false
|
8
|
+
end
|
9
|
+
|
10
|
+
it "marks a day after the calendar reform as Julian" do
|
11
|
+
Date.civil(2007, 2, 27).gregorian?.should == true
|
12
|
+
Date.civil(1607, 2, 27, Date.civil(1582, 1, 1).jd).gregorian?.should be_true
|
13
|
+
end
|
14
|
+
|
15
|
+
end
|
16
|
+
|
17
|
+
ruby_version_is "" ... "1.9" do
|
18
|
+
describe "Date.gregorian?" do
|
19
|
+
|
20
|
+
it "marks the date as Gregorian if using the Gregorian calendar" do
|
21
|
+
Date.gregorian?(Date.civil(1007, 2, 27).jd, Date::GREGORIAN).should be_true
|
22
|
+
end
|
23
|
+
|
24
|
+
it "marks the date as not Gregorian if using the Julian calendar" do
|
25
|
+
Date.gregorian?(Date.civil(1007, 2, 27).jd, Date::JULIAN).should be_false
|
26
|
+
end
|
27
|
+
|
28
|
+
it "marks the date before the English Day of Calendar Reform as not Gregorian" do
|
29
|
+
Date.gregorian?(Date.civil(1752, 9, 13).jd, Date::ENGLAND).should be_false
|
30
|
+
end
|
31
|
+
|
32
|
+
it "marks the date after the English Day of Calendar Reform as Gregorian" do
|
33
|
+
Date.gregorian?(Date.civil(1752, 9, 14).jd, Date::ENGLAND).should be_true
|
34
|
+
end
|
35
|
+
|
36
|
+
it "marks the date before the Italian Day of Calendar Reform as not Gregorian" do
|
37
|
+
Date.gregorian?(Date.civil(1582, 10, 4).jd, Date::ITALY).should be_false
|
38
|
+
end
|
39
|
+
|
40
|
+
it "marks the date after the Italian Day of Calendar Reform as Gregorian" do
|
41
|
+
Date.gregorian?(Date.civil(1582, 10, 15).jd, Date::ITALY).should be_true
|
42
|
+
end
|
43
|
+
|
44
|
+
end
|
45
|
+
|
46
|
+
end
|