home_run 0.9.0-x86-mswin32-60
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/CHANGELOG +3 -0
- data/LICENSE +19 -0
- data/README.rdoc +314 -0
- data/Rakefile +136 -0
- data/bench/cpu_bench.rb +279 -0
- data/bench/dt_garbage_bench.rb +11 -0
- data/bench/dt_mem_bench.rb +14 -0
- data/bench/garbage_bench.rb +11 -0
- data/bench/mem_bench.rb +14 -0
- data/bin/home_run +91 -0
- data/default.mspec +12 -0
- data/ext/1.8/date_ext.so +0 -0
- data/ext/1.9/date_ext.so +0 -0
- data/ext/date/format.rb +842 -0
- data/ext/date.rb +7 -0
- data/ext/date_ext.c +4548 -0
- data/ext/date_parser.c +367 -0
- data/ext/date_parser.rl +134 -0
- data/ext/datetime.c +2804 -0
- data/ext/extconf.rb +6 -0
- data/spec/date/accessor_spec.rb +176 -0
- data/spec/date/add_month_spec.rb +26 -0
- data/spec/date/add_spec.rb +23 -0
- data/spec/date/boat_spec.rb +38 -0
- data/spec/date/civil_spec.rb +147 -0
- data/spec/date/commercial_spec.rb +153 -0
- data/spec/date/constants_spec.rb +44 -0
- data/spec/date/conversions_spec.rb +246 -0
- data/spec/date/day_spec.rb +73 -0
- data/spec/date/downto_spec.rb +17 -0
- data/spec/date/eql_spec.rb +16 -0
- data/spec/date/format_spec.rb +52 -0
- data/spec/date/gregorian_spec.rb +52 -0
- data/spec/date/hash_spec.rb +11 -0
- data/spec/date/julian_spec.rb +129 -0
- data/spec/date/leap_spec.rb +19 -0
- data/spec/date/minus_month_spec.rb +25 -0
- data/spec/date/minus_spec.rb +51 -0
- data/spec/date/next_prev_spec.rb +108 -0
- data/spec/date/ordinal_spec.rb +83 -0
- data/spec/date/parse_spec.rb +442 -0
- data/spec/date/parsing_spec.rb +77 -0
- data/spec/date/relationship_spec.rb +28 -0
- data/spec/date/step_spec.rb +109 -0
- data/spec/date/strftime_spec.rb +223 -0
- data/spec/date/strptime_spec.rb +201 -0
- data/spec/date/succ_spec.rb +20 -0
- data/spec/date/today_spec.rb +15 -0
- data/spec/date/upto_spec.rb +17 -0
- data/spec/datetime/accessor_spec.rb +218 -0
- data/spec/datetime/add_month_spec.rb +26 -0
- data/spec/datetime/add_spec.rb +36 -0
- data/spec/datetime/boat_spec.rb +43 -0
- data/spec/datetime/constructor_spec.rb +142 -0
- data/spec/datetime/conversions_spec.rb +54 -0
- data/spec/datetime/day_spec.rb +73 -0
- data/spec/datetime/downto_spec.rb +39 -0
- data/spec/datetime/eql_spec.rb +17 -0
- data/spec/datetime/format_spec.rb +59 -0
- data/spec/datetime/hash_spec.rb +11 -0
- data/spec/datetime/leap_spec.rb +19 -0
- data/spec/datetime/minus_month_spec.rb +25 -0
- data/spec/datetime/minus_spec.rb +77 -0
- data/spec/datetime/next_prev_spec.rb +138 -0
- data/spec/datetime/now_spec.rb +18 -0
- data/spec/datetime/parse_spec.rb +390 -0
- data/spec/datetime/parsing_spec.rb +77 -0
- data/spec/datetime/relationship_spec.rb +28 -0
- data/spec/datetime/step_spec.rb +155 -0
- data/spec/datetime/strftime_spec.rb +118 -0
- data/spec/datetime/strptime_spec.rb +117 -0
- data/spec/datetime/succ_spec.rb +24 -0
- data/spec/datetime/upto_spec.rb +39 -0
- data/spec/spec_helper.rb +59 -0
- metadata +154 -0
@@ -0,0 +1,59 @@
|
|
1
|
+
require File.expand_path('../../spec_helper', __FILE__)
|
2
|
+
|
3
|
+
describe "DateTime formatting methods" do
|
4
|
+
it "#asctime and #ctime should use a format similar to Time" do
|
5
|
+
DateTime.new(2008, 1, 2, 10, 20, 30).asctime.should == 'Wed Jan 2 10:20:30 2008'
|
6
|
+
DateTime.new(2008, 1, 2, 10, 20, 30).ctime.should == 'Wed Jan 2 10:20:30 2008'
|
7
|
+
end
|
8
|
+
|
9
|
+
it "#to_s should use an ISO8601 format" do
|
10
|
+
DateTime.new(2008, 1, 2, 10, 20, 30, 8/24.0).to_s.should == '2008-01-02T10:20:30+08:00'
|
11
|
+
end
|
12
|
+
|
13
|
+
it "#inspect should use an ISO8601 format" do
|
14
|
+
DateTime.new(2008, 1, 2, 10, 20, 30, 8/24.0).inspect.should == '#<DateTime 2008-01-02T10:20:30+08:00>'
|
15
|
+
end
|
16
|
+
|
17
|
+
ruby_version_is "1.9" do
|
18
|
+
it "#httpdate should use an HTTP format" do
|
19
|
+
DateTime.new(2009, 1, 2, 3, 4, 5).httpdate.should == "Fri, 02 Jan 2009 03:04:05 GMT"
|
20
|
+
end
|
21
|
+
|
22
|
+
it "#iso8601 should use an ISO8601 format" do
|
23
|
+
DateTime.new(2009, 1, 2, 3, 4, 5, 0.5).iso8601.should == "2009-01-02T03:04:05+12:00"
|
24
|
+
end
|
25
|
+
|
26
|
+
it "#jisx03010 should use an JIS X 0301 format" do
|
27
|
+
DateTime.new(2009, 1, 2, 3, 4, 5, 0.5).jisx0301.should == "H21.01.02T03:04:05+12:00"
|
28
|
+
DateTime.new(1988, 1, 2, 3, 4, 5, 0.5).jisx0301.should == "S63.01.02T03:04:05+12:00"
|
29
|
+
DateTime.new(1925, 1, 2, 3, 4, 5, 0.5).jisx0301.should == "T14.01.02T03:04:05+12:00"
|
30
|
+
DateTime.new(1911, 1, 2, 3, 4, 5, 0.5).jisx0301.should == "M44.01.02T03:04:05+12:00"
|
31
|
+
DateTime.new(1873, 1, 2, 3, 4, 5, 0.5).jisx0301.should == "M06.01.02T03:04:05+12:00"
|
32
|
+
DateTime.new(1872, 1, 2, 3, 4, 5, 0.5).jisx0301.should == "1872-01-02T03:04:05+12:00"
|
33
|
+
DateTime.new(1867, 1, 2, 3, 4, 5, 0.5).jisx0301.should == "1867-01-02T03:04:05+12:00"
|
34
|
+
end
|
35
|
+
|
36
|
+
it "#rfc2822 should use an RFC2822 format" do
|
37
|
+
DateTime.new(2009, 1, 2, 3, 4, 5, 0.5).rfc2822.should == "Fri, 2 Jan 2009 03:04:05 +1200"
|
38
|
+
end
|
39
|
+
|
40
|
+
it "#rfc822 should use an RFC822 format" do
|
41
|
+
DateTime.new(2009, 1, 2, 3, 4, 5, 0.5).rfc822.should == "Fri, 2 Jan 2009 03:04:05 +1200"
|
42
|
+
end
|
43
|
+
|
44
|
+
it "#rfc3339 should use an RFC3339 format" do
|
45
|
+
DateTime.new(2009, 1, 2, 3, 4, 5, 0.5).rfc3339.should == "2009-01-02T03:04:05+12:00"
|
46
|
+
end
|
47
|
+
|
48
|
+
it "#xmlschema should use an ISO8601 format" do
|
49
|
+
DateTime.new(2009, 1, 2, 3, 4, 5, 0.5).xmlschema.should == "2009-01-02T03:04:05+12:00"
|
50
|
+
end
|
51
|
+
|
52
|
+
it "should handle fractional seconds if given an argument for iso8601, jisx0301, rfc3339, and xmlschema" do
|
53
|
+
DateTime.new(2009, 1, 2, 3, 4, 5, 0.5).iso8601(4).should == "2009-01-02T03:04:05.0000+12:00"
|
54
|
+
DateTime.new(2009, 1, 2, 3, 4, 5, 0.5).jisx0301(4).should == "H21.01.02T03:04:05.0000+12:00"
|
55
|
+
DateTime.new(2009, 1, 2, 3, 4, 5, 0.5).rfc3339(4).should == "2009-01-02T03:04:05.0000+12:00"
|
56
|
+
DateTime.new(2009, 1, 2, 3, 4, 5, 0.5).xmlschema(4).should == "2009-01-02T03:04:05.0000+12:00"
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
@@ -0,0 +1,11 @@
|
|
1
|
+
require File.expand_path('../../spec_helper', __FILE__)
|
2
|
+
|
3
|
+
describe "DateTime#hash" do
|
4
|
+
it "should use the same hash value for equal datetimes" do
|
5
|
+
DateTime.civil(2004, 7, 12, 13, 14, 15).hash.should == DateTime.civil(2004, 7, 12, 13, 14, 15).hash
|
6
|
+
end
|
7
|
+
|
8
|
+
it "should use a different hash value for different dates" do
|
9
|
+
DateTime.civil(2004, 7, 12, 13, 14, 15).hash.should_not == DateTime.civil(2004, 7, 12, 13, 14, 16).hash
|
10
|
+
end
|
11
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
require File.expand_path('../../spec_helper', __FILE__)
|
2
|
+
|
3
|
+
describe "DateTime#leap?" do
|
4
|
+
it "should be true if the current date is a leap year and no argument is given" do
|
5
|
+
DateTime.civil(2000, 10, 11).leap?.should == true
|
6
|
+
DateTime.civil(2004, 10, 11).leap?.should == true
|
7
|
+
DateTime.civil(2008, 10, 11).leap?.should == true
|
8
|
+
DateTime.civil(1996, 10, 11).leap?.should == true
|
9
|
+
DateTime.civil(1600, 10, 11).leap?.should == true
|
10
|
+
end
|
11
|
+
|
12
|
+
it "should be false if the current date is not a leap year and no argument is given" do
|
13
|
+
DateTime.civil(1700, 10, 11).leap?.should == false
|
14
|
+
DateTime.civil(1800, 10, 11).leap?.should == false
|
15
|
+
DateTime.civil(1900, 10, 11).leap?.should == false
|
16
|
+
DateTime.civil(1999, 10, 11).leap?.should == false
|
17
|
+
DateTime.civil(2001, 10, 11).leap?.should == false
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
require File.expand_path('../../spec_helper', __FILE__)
|
2
|
+
|
3
|
+
describe "DateTime#<<" do
|
4
|
+
|
5
|
+
it "should substract a number of months from a date" do
|
6
|
+
(DateTime.civil(2007, 12, 27) << 10).should == DateTime.civil(2007,2,27)
|
7
|
+
(DateTime.commercial(2007, 45, 5) << 10).should == DateTime.commercial(2007,2,2)
|
8
|
+
(DateTime.jd(2455086) << 10).should == DateTime.jd(2454782)
|
9
|
+
(DateTime.ordinal(2008, 315) << 10).should == DateTime.ordinal(2008, 10)
|
10
|
+
(DateTime.civil(2007, 12, 27) << 12).should == DateTime.civil(2006,12,27)
|
11
|
+
(DateTime.civil(2007, 12, 27) << -12).should == DateTime.civil(2008,12,27)
|
12
|
+
end
|
13
|
+
|
14
|
+
it "should result in the last day of a month if the day doesn't exist" do
|
15
|
+
d = DateTime.civil(2008,3,31) << 1
|
16
|
+
d.should == DateTime.civil(2008, 2, 29)
|
17
|
+
end
|
18
|
+
|
19
|
+
it "should raise an error on non numeric parameters" do
|
20
|
+
lambda { DateTime.civil(2007,2,27) << "hello" }.should raise_error(TypeError)
|
21
|
+
lambda { DateTime.civil(2007,2,27) << DateTime.new }.should raise_error(TypeError)
|
22
|
+
lambda { DateTime.civil(2007,2,27) << Object.new }.should raise_error(TypeError)
|
23
|
+
end
|
24
|
+
|
25
|
+
end
|
@@ -0,0 +1,77 @@
|
|
1
|
+
require File.expand_path('../../spec_helper', __FILE__)
|
2
|
+
|
3
|
+
describe "DateTime#-" do
|
4
|
+
|
5
|
+
it "should substract a number of days from a DateTime" do
|
6
|
+
(DateTime.civil(2008, 1, 8) - 315).should == DateTime.civil(2007,2,27)
|
7
|
+
(DateTime.commercial(2007, 47, 2) - 315).should == DateTime.commercial(2007,2,2)
|
8
|
+
(DateTime.jd(2455097) - 315).should == DateTime.jd(2454782)
|
9
|
+
(DateTime.ordinal(2008, 325) - 315).should == DateTime.ordinal(2008, 10)
|
10
|
+
end
|
11
|
+
|
12
|
+
it "should subtract a fractional number of days to a Date" do
|
13
|
+
(DateTime.civil(2008, 1, 8, 12) - 315.5).should == DateTime.civil(2007,2,27)
|
14
|
+
(DateTime.commercial(2007, 47, 2, 18) - 315.75).should == DateTime.commercial(2007,2,2)
|
15
|
+
(DateTime.jd(2455097, 6) - 315.25).should == DateTime.jd(2454782)
|
16
|
+
(DateTime.ordinal(2008, 325, 6) - 315.25).should == DateTime.ordinal(2008, 10)
|
17
|
+
end
|
18
|
+
|
19
|
+
it "should substract a negative number of days from a DateTime" do
|
20
|
+
d = DateTime.civil(2007, 4, 19).-(-13)
|
21
|
+
d.should == DateTime.civil(2007, 5 ,2)
|
22
|
+
end
|
23
|
+
|
24
|
+
it "should subtract a fractional negative number of days to a Date" do
|
25
|
+
d = DateTime.civil(2007, 2, 16, 12).-(-10.5)
|
26
|
+
d.should == DateTime.civil(2007,2,27)
|
27
|
+
end
|
28
|
+
|
29
|
+
it "should be able to compute the different between two DateTimes" do
|
30
|
+
(DateTime.civil(2007,2,27) - DateTime.civil(2007,2,27)).should be_close(0.0, 0.00000001)
|
31
|
+
(DateTime.civil(2007,2,27) - DateTime.civil(2007,2,26)).should be_close(1.0, 0.00000001)
|
32
|
+
(DateTime.civil(2006,2,27) - DateTime.civil(2007,2,27)).should be_close(-365.0, 0.00000001)
|
33
|
+
(DateTime.civil(2008,2,27) - DateTime.civil(2007,2,27)).should be_close(365.0, 0.00000001)
|
34
|
+
(DateTime.civil(2009,2,27) - DateTime.civil(2008,2,27)).should be_close(366.0, 0.00000001)
|
35
|
+
|
36
|
+
(DateTime.civil(2009,2,27) - DateTime.commercial(2008,2,1)).should be_close(417.0, 0.00000001)
|
37
|
+
(DateTime.civil(2009,2,27) - DateTime.jd(2454782)).should be_close(108.0, 0.00000001)
|
38
|
+
(DateTime.civil(2009,2,27) - DateTime.ordinal(2008, 10)).should be_close(414.0, 0.00000001)
|
39
|
+
|
40
|
+
(DateTime.commercial(2008,2,1) - DateTime.civil(2008,2,27)).should be_close(-51.0, 0.00000001)
|
41
|
+
(DateTime.commercial(2008,2,1) - DateTime.jd(2454782)).should be_close(-309.0, 0.00000001)
|
42
|
+
(DateTime.commercial(2008,2,1) - DateTime.ordinal(2008, 10)).should be_close(-3.0, 0.00000001)
|
43
|
+
|
44
|
+
(DateTime.jd(2454782) - DateTime.commercial(2008,2,1)).should be_close(309.0, 0.00000001)
|
45
|
+
(DateTime.jd(2454782) - DateTime.civil(2009,2,27)).should be_close(-108.0, 0.00000001)
|
46
|
+
(DateTime.jd(2454782) - DateTime.ordinal(2008, 10)).should be_close(306.0, 0.00000001)
|
47
|
+
|
48
|
+
(DateTime.ordinal(2008, 10) - DateTime.commercial(2008,2,1)).should be_close(3.0, 0.00000001)
|
49
|
+
(DateTime.ordinal(2008, 10) - DateTime.jd(2454782)).should be_close(-306.0, 0.00000001)
|
50
|
+
(DateTime.ordinal(2008, 10) - DateTime.civil(2009,2,27)).should be_close(-414.0, 0.00000001)
|
51
|
+
end
|
52
|
+
|
53
|
+
it "should consider the offset when computing the different between two DateTimes" do
|
54
|
+
(DateTime.civil(2007,2,27, 0, 0, 0, 0.5) - DateTime.civil(2007,2,27,0,0,0)).should be_close(-0.5, 0.00000001)
|
55
|
+
(DateTime.civil(2007,2,27, 0, 0, 0, -0.5) - DateTime.civil(2007,2,27,12,0,0)).should be_close(0.0, 0.00000001)
|
56
|
+
(DateTime.civil(2007,2,27,0,0,0,-0.5) - DateTime.civil(2007,2,27,0,0,0,0.5)).should be_close(1.0, 0.00000001)
|
57
|
+
end
|
58
|
+
|
59
|
+
it "should be able to subtract a Date from a DateTime" do
|
60
|
+
(DateTime.ordinal(2008, 10) - Date.commercial(2008,2,1)).should be_close(3.0, 0.00000001)
|
61
|
+
(DateTime.ordinal(2008, 10) - Date.jd(2454782)).should be_close(-306.0, 0.00000001)
|
62
|
+
(DateTime.ordinal(2008, 10) - Date.civil(2009,2,27)).should be_close(-414.0, 0.00000001)
|
63
|
+
end
|
64
|
+
|
65
|
+
it "should assume a Date is in the same offset as the receiver" do
|
66
|
+
(DateTime.ordinal(2008, 10, 0, 0, 0, 0.5) - Date.commercial(2008,2,1)).should be_close(3.0, 0.00000001)
|
67
|
+
(DateTime.ordinal(2008, 10, 0, 0, 0, 0.1) - Date.jd(2454782)).should be_close(-306.0, 0.00000001)
|
68
|
+
(DateTime.ordinal(2008, 10, 0, 0, 0, -0.5) - Date.civil(2009,2,27)).should be_close(-414.0, 0.00000001)
|
69
|
+
end
|
70
|
+
|
71
|
+
it "should raise an error on non numeric parameters" do
|
72
|
+
lambda { DateTime.civil(2007,2,27) - :hello }.should raise_error(TypeError)
|
73
|
+
lambda { DateTime.civil(2007,2,27) - "hello" }.should raise_error(TypeError)
|
74
|
+
lambda { DateTime.civil(2007,2,27) - Object.new }.should raise_error(TypeError)
|
75
|
+
end
|
76
|
+
|
77
|
+
end
|
@@ -0,0 +1,138 @@
|
|
1
|
+
require File.expand_path('../../spec_helper', __FILE__)
|
2
|
+
|
3
|
+
ruby_version_is "1.9" do
|
4
|
+
describe "DateTime#next_day" do
|
5
|
+
it "should add a single day to a DateTime if no arguments" do
|
6
|
+
(DateTime.civil(2007,2,27).next_day).should == DateTime.civil(2007, 2, 28)
|
7
|
+
end
|
8
|
+
|
9
|
+
it "should add the given number of days to a DateTime if an argument" do
|
10
|
+
(DateTime.civil(2007,2,27).next_day(2)).should == DateTime.civil(2007, 3, 1)
|
11
|
+
end
|
12
|
+
|
13
|
+
it "should handle a negative argument by subtracting days" do
|
14
|
+
(DateTime.civil(2007,2,27).next_day(-2)).should == DateTime.civil(2007, 2, 25)
|
15
|
+
end
|
16
|
+
|
17
|
+
it "should keep the same fractional part and offset" do
|
18
|
+
(DateTime.civil(2007,2,27, 12, 0, 0, 0.5).next_day).day_fraction.should == 0.5
|
19
|
+
(DateTime.civil(2007,2,27, 12, 0, 0, 0.5).next_day).offset.should == 0.5
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
describe "DateTime#prev_day" do
|
24
|
+
it "should subtract a single day to a DateTime if no arguments" do
|
25
|
+
(DateTime.civil(2007,2,27).prev_day).should == DateTime.civil(2007, 2, 26)
|
26
|
+
end
|
27
|
+
|
28
|
+
it "should subtract the given number of days to a DateTime if an argument" do
|
29
|
+
(DateTime.civil(2007,2,27).prev_day(2)).should == DateTime.civil(2007, 2, 25)
|
30
|
+
end
|
31
|
+
|
32
|
+
it "should handle a negative argument by adding days" do
|
33
|
+
(DateTime.civil(2007,2,27).prev_day(-2)).should == DateTime.civil(2007, 3, 1)
|
34
|
+
end
|
35
|
+
|
36
|
+
it "should keep the same fractional part and offset" do
|
37
|
+
(DateTime.civil(2007,2,27, 12, 0, 0, 0.5).prev_day).day_fraction.should == 0.5
|
38
|
+
(DateTime.civil(2007,2,27, 12, 0, 0, 0.5).prev_day).offset.should == 0.5
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
describe "DateTime#next_month" do
|
43
|
+
it "should add a single month to a DateTime if no arguments" do
|
44
|
+
(DateTime.civil(2007,2,27).next_month).should == DateTime.civil(2007, 3, 27)
|
45
|
+
end
|
46
|
+
|
47
|
+
it "should add the given number of months to a DateTime if an argument" do
|
48
|
+
(DateTime.civil(2007,2,27).next_month(2)).should == DateTime.civil(2007, 4, 27)
|
49
|
+
end
|
50
|
+
|
51
|
+
it "should handle a negative argument by subtracting months" do
|
52
|
+
(DateTime.civil(2007,2,27).next_month(-2)).should == DateTime.civil(2006, 12, 27)
|
53
|
+
end
|
54
|
+
|
55
|
+
it "should handle adding a month where the new date is not a valid date" do
|
56
|
+
(DateTime.civil(2007,1,31).next_month).should == DateTime.civil(2007, 2, 28)
|
57
|
+
(DateTime.civil(2008,1,31).next_month).should == DateTime.civil(2008, 2, 29)
|
58
|
+
(DateTime.civil(2007,1,31).next_month(3)).should == DateTime.civil(2007, 4, 30)
|
59
|
+
end
|
60
|
+
|
61
|
+
it "should keep the same fractional part and offset" do
|
62
|
+
(DateTime.civil(2007,2,27, 12, 0, 0, 0.5).next_month).day_fraction.should == 0.5
|
63
|
+
(DateTime.civil(2007,2,27, 12, 0, 0, 0.5).next_month).offset.should == 0.5
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
67
|
+
describe "DateTime#prev_month" do
|
68
|
+
it "should subtract a single month to a DateTime if no arguments" do
|
69
|
+
(DateTime.civil(2007,2,27).prev_month).should == DateTime.civil(2007, 1, 27)
|
70
|
+
end
|
71
|
+
|
72
|
+
it "should subtract the given number of months to a DateTime if an argument" do
|
73
|
+
(DateTime.civil(2007,2,27).prev_month(2)).should == DateTime.civil(2006, 12, 27)
|
74
|
+
end
|
75
|
+
|
76
|
+
it "should handle a negative argument by adding months" do
|
77
|
+
(DateTime.civil(2007,2,27).prev_month(-2)).should == DateTime.civil(2007, 4, 27)
|
78
|
+
end
|
79
|
+
|
80
|
+
it "should handle subtracting a month where the new date is not a valid date" do
|
81
|
+
(DateTime.civil(2007,3,31).prev_month).should == DateTime.civil(2007, 2, 28)
|
82
|
+
(DateTime.civil(2008,3,31).prev_month).should == DateTime.civil(2008, 2, 29)
|
83
|
+
(DateTime.civil(2007,3,31).prev_month(4)).should == DateTime.civil(2006, 11, 30)
|
84
|
+
end
|
85
|
+
|
86
|
+
it "should keep the same fractional part and offset" do
|
87
|
+
(DateTime.civil(2007,2,27, 12, 0, 0, 0.5).prev_month).day_fraction.should == 0.5
|
88
|
+
(DateTime.civil(2007,2,27, 12, 0, 0, 0.5).prev_month).offset.should == 0.5
|
89
|
+
end
|
90
|
+
end
|
91
|
+
|
92
|
+
describe "DateTime#next_year" do
|
93
|
+
it "should add a single year to a DateTime if no arguments" do
|
94
|
+
(DateTime.civil(2007,2,27).next_year).should == DateTime.civil(2008, 2, 27)
|
95
|
+
end
|
96
|
+
|
97
|
+
it "should add the given number of years to a DateTime if an argument" do
|
98
|
+
(DateTime.civil(2007,2,27).next_year(2)).should == DateTime.civil(2009, 2, 27)
|
99
|
+
end
|
100
|
+
|
101
|
+
it "should handle a negative argument by subtracting years" do
|
102
|
+
(DateTime.civil(2007,2,27).next_year(-2)).should == DateTime.civil(2005, 2, 27)
|
103
|
+
end
|
104
|
+
|
105
|
+
it "should handle adding a year where the new date is not a valid date" do
|
106
|
+
(DateTime.civil(2008,2,29).next_year).should == DateTime.civil(2009, 2, 28)
|
107
|
+
end
|
108
|
+
|
109
|
+
it "should keep the same fractional part and offset" do
|
110
|
+
(DateTime.civil(2007,2,27, 12, 0, 0, 0.5).next_year).day_fraction.should == 0.5
|
111
|
+
(DateTime.civil(2007,2,27, 12, 0, 0, 0.5).next_year).offset.should == 0.5
|
112
|
+
end
|
113
|
+
end
|
114
|
+
|
115
|
+
describe "DateTime#prev_year" do
|
116
|
+
it "should add a single year to a DateTime if no arguments" do
|
117
|
+
(DateTime.civil(2007,2,27).prev_year).should == DateTime.civil(2006, 2, 27)
|
118
|
+
end
|
119
|
+
|
120
|
+
it "should add the given number of years to a DateTime if an argument" do
|
121
|
+
(DateTime.civil(2007,2,27).prev_year(2)).should == DateTime.civil(2005, 2, 27)
|
122
|
+
end
|
123
|
+
|
124
|
+
it "should handle a negative argument by subtracting years" do
|
125
|
+
(DateTime.civil(2007,2,27).prev_year(-2)).should == DateTime.civil(2009, 2, 27)
|
126
|
+
end
|
127
|
+
|
128
|
+
it "should handle adding a year where the new date is not a valid date" do
|
129
|
+
(DateTime.civil(2008,2,29).prev_year).should == DateTime.civil(2007, 2, 28)
|
130
|
+
end
|
131
|
+
|
132
|
+
it "should keep the same fractional part and offset" do
|
133
|
+
(DateTime.civil(2007,2,27, 12, 0, 0, 0.5).prev_year).day_fraction.should == 0.5
|
134
|
+
(DateTime.civil(2007,2,27, 12, 0, 0, 0.5).prev_year).offset.should == 0.5
|
135
|
+
end
|
136
|
+
end
|
137
|
+
|
138
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
require File.expand_path('../../spec_helper', __FILE__)
|
2
|
+
|
3
|
+
describe "DateTime.now" do
|
4
|
+
it "should be right now as a DateTime" do
|
5
|
+
t = Time.now
|
6
|
+
d = DateTime.now
|
7
|
+
d.year.should == t.year
|
8
|
+
d.mon.should == t.mon
|
9
|
+
d.day.should == t.day
|
10
|
+
d.hour.should == t.hour
|
11
|
+
d.min.should == t.min
|
12
|
+
d.sec.should == t.sec
|
13
|
+
end
|
14
|
+
|
15
|
+
it "should accept an optional sg value" do
|
16
|
+
DateTime.now(1).to_s.should == DateTime.now.to_s
|
17
|
+
end
|
18
|
+
end
|