spec updated to test everything

This commit is contained in:
2010-07-27 19:18:30 +03:00
parent d0a2534f34
commit 12b14a27de

View File

@@ -3,166 +3,281 @@ require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
describe "TimeExt" do
before(:each) do
@now = Time.now
@time = Time.local(2010, 8, 28, 15, 57, 17, 78430)
end
it "should have extra Time calculation methods" do
@now.prev_second.should == @now - 1.second
@now.prev_sec.should == @now - 1.second
@now.next_second.should == @now + 1.second
@now.next_sec.should == @now + 1.second
@time.prev_second.should == @time - 1.second
@time.prev_sec.should == @time - 1.second
@time.next_second.should == @time + 1.second
@time.next_sec.should == @time + 1.second
@now.prev_minute.should == @now - 1.minute
@now.prev_min.should == @now - 1.minute
@now.next_minute.should == @now + 1.minute
@now.next_min.should == @now + 1.minute
@time.prev_minute.should == @time - 1.minute
@time.prev_min.should == @time - 1.minute
@time.next_minute.should == @time + 1.minute
@time.next_min.should == @time + 1.minute
@now.prev_hour.should == @now - 1.hour
@now.next_hour.should == @now + 1.hour
@time.prev_hour.should == @time - 1.hour
@time.next_hour.should == @time + 1.hour
@now.prev_day.should == @now - 1.day
@now.next_day.should == @now + 1.day
@now.days_ago(1).should == @now - 1.day
@now.days_since(1).should == @now + 1.day
@time.prev_day.should == @time - 1.day
@time.next_day.should == @time + 1.day
@time.days_ago(1).should == @time - 1.day
@time.days_since(1).should == @time + 1.day
@now.respond_to?(:floor).should be_true
@now.respond_to?(:beginning_of).should be_true
@now.respond_to?(:ceil).should be_true
@now.respond_to?(:beginning_of_next).should be_true
@time.prev_week.day.should == 16
@time.prev_quarter.day.should == 1
@time.prev_quarter.month.should == 4
@time.next_quarter.day.should == 1
@time.next_quarter.month.should == 10
@time.respond_to?(:floor).should be_true
@time.respond_to?(:beginning_of).should be_true
@time.respond_to?(:ceil).should be_true
@time.respond_to?(:beginning_of_next).should be_true
end
it "should floor to seconds" do
@now.floor(:sec).usec.should == 0
@now.floor(:sec).sec.should == @now.sec
@now.floor(:sec).min.should == @now.min
@now.floor(:sec).hour.should == @now.hour
@now.floor(:sec).day.should == @now.day
@now.floor(:sec).month.should == @now.month
@now.floor(:sec).year.should == @now.year
it "should floor and ceil to seconds" do
floor = @time.floor(:sec)
floor.usec.should == 0
floor.sec.should == @time.sec
floor.min.should == @time.min
floor.hour.should == @time.hour
floor.day.should == @time.day
floor.month.should == @time.month
floor.year.should == @time.year
ceil = @time.ceil(:sec)
ceil.usec.should == 0
ceil.sec.should == @time.sec + 1
ceil.min.should == @time.min
ceil.hour.should == @time.hour
ceil.day.should == @time.day
ceil.month.should == @time.month
ceil.year.should == @time.year
end
it "should floor to minutes" do
@now.floor(:min).usec.should == 0
@now.floor(:min).sec.should == 0
@now.floor(:min).min.should == @now.min
@now.floor(:min).hour.should == @now.hour
@now.floor(:min).day.should == @now.day
@now.floor(:min).month.should == @now.month
@now.floor(:min).year.should == @now.year
it "should floor and ceil to minutes" do
floor = @time.floor(:min)
floor.usec.should == 0
floor.sec.should == 0
floor.min.should == @time.min
floor.hour.should == @time.hour
floor.day.should == @time.day
floor.month.should == @time.month
floor.year.should == @time.year
ceil = @time.ceil(:min)
ceil.usec.should == 0
ceil.sec.should == 0
ceil.min.should == @time.min + 1
ceil.hour.should == @time.hour
ceil.day.should == @time.day
ceil.month.should == @time.month
ceil.year.should == @time.year
end
it "should floor to hours" do
@now.floor(:hour).usec.should == 0
@now.floor(:hour).sec.should == 0
@now.floor(:hour).min.should == 0
@now.floor(:hour).hour.should == @now.hour
@now.floor(:hour).day.should == @now.day
@now.floor(:hour).month.should == @now.month
@now.floor(:hour).year.should == @now.year
it "should floor and ceil to hours" do
floor = @time.floor(:hour)
floor.usec.should == 0
floor.sec.should == 0
floor.min.should == 0
floor.hour.should == @time.hour
floor.day.should == @time.day
floor.month.should == @time.month
floor.year.should == @time.year
ceil = @time.ceil(:hour)
ceil.usec.should == 0
ceil.sec.should == 0
ceil.min.should == 0
ceil.hour.should == @time.hour + 1
ceil.day.should == @time.day
ceil.month.should == @time.month
ceil.year.should == @time.year
end
it "should floor to days" do
@now.floor(:day).usec.should == 0
@now.floor(:day).sec.should == 0
@now.floor(:day).min.should == 0
@now.floor(:day).hour.should == 0
@now.floor(:day).day.should == @now.day
@now.floor(:day).month.should == @now.month
@now.floor(:day).year.should == @now.year
it "should floor and ceil to days" do
floor = @time.floor(:day)
floor.usec.should == 0
floor.sec.should == 0
floor.min.should == 0
floor.hour.should == 0
floor.day.should == @time.day
floor.month.should == @time.month
floor.year.should == @time.year
ceil = @time.ceil(:day)
ceil.usec.should == 0
ceil.sec.should == 0
ceil.min.should == 0
ceil.hour.should == 0
ceil.day.should == @time.day + 1
ceil.month.should == @time.month
ceil.year.should == @time.year
end
it "should floor to months" do
@now.floor(:month).usec.should == 0
@now.floor(:month).sec.should == 0
@now.floor(:month).min.should == 0
@now.floor(:month).hour.should == 0
@now.floor(:month).day.should == 1
@now.floor(:month).month.should == @now.month
@now.floor(:month).year.should == @now.year
it "should floor and ceil to weeks" do
floor = @time.floor(:week)
floor.usec.should == 0
floor.sec.should == 0
floor.min.should == 0
floor.hour.should == 0
floor.day.should == 23
floor.month.should == @time.month
floor.year.should == @time.year
ceil = @time.ceil(:week)
ceil.usec.should == 0
ceil.sec.should == 0
ceil.min.should == 0
ceil.hour.should == 0
ceil.day.should == 30
ceil.month.should == @time.month
ceil.year.should == @time.year
end
it "should floor to years" do
@now.floor(:year).usec.should == 0
@now.floor(:year).sec.should == 0
@now.floor(:year).min.should == 0
@now.floor(:year).hour.should == 0
@now.floor(:year).day.should == 1
@now.floor(:year).month.should == 1
@now.floor(:year).year.should == @now.year
it "should floor and ceil to quarters" do
floor = @time.floor(:quarter)
floor.usec.should == 0
floor.sec.should == 0
floor.min.should == 0
floor.hour.should == 0
floor.day.should == 1
floor.month.should == 7
floor.year.should == @time.year
ceil = @time.ceil(:quarter)
ceil.usec.should == 0
ceil.sec.should == 0
ceil.min.should == 0
ceil.hour.should == 0
ceil.day.should == 1
ceil.month.should == 10
ceil.year.should == @time.year
end
it "should ceil to seconds" do
@now.ceil(:sec).usec.should == 0
@now.ceil(:sec).sec.should == @now.sec + 1
@now.ceil(:sec).min.should == @now.min
@now.ceil(:sec).hour.should == @now.hour
@now.ceil(:sec).day.should == @now.day
@now.ceil(:sec).month.should == @now.month
@now.ceil(:sec).year.should == @now.year
it "should floor and ceil to months" do
floor = @time.floor(:month)
floor.usec.should == 0
floor.sec.should == 0
floor.min.should == 0
floor.hour.should == 0
floor.day.should == 1
floor.month.should == @time.month
floor.year.should == @time.year
ceil = @time.ceil(:month)
ceil.usec.should == 0
ceil.sec.should == 0
ceil.min.should == 0
ceil.hour.should == 0
ceil.day.should == 1
ceil.month.should == @time.month + 1
ceil.year.should == @time.year
end
it "should ceil to minutes" do
@now.ceil(:min).usec.should == 0
@now.ceil(:min).sec.should == 0
@now.ceil(:min).min.should == @now.min + 1
@now.ceil(:min).hour.should == @now.hour
@now.ceil(:min).day.should == @now.day
@now.ceil(:min).month.should == @now.month
@now.ceil(:min).year.should == @now.year
it "should floor and ceil to years" do
floor = @time.floor(:year)
floor.usec.should == 0
floor.sec.should == 0
floor.min.should == 0
floor.hour.should == 0
floor.day.should == 1
floor.month.should == 1
floor.year.should == @time.year
ceil = @time.ceil(:year)
ceil.usec.should == 0
ceil.sec.should == 0
ceil.min.should == 0
ceil.hour.should == 0
ceil.day.should == 1
ceil.month.should == 1
ceil.year.should == @time.year + 1
end
it "should round to seconds" do
round = Time.local(2010, 8, 28, 15, 57, 17, 999999.999).round(:sec)
round.usec.should == 0
round.sec.should == 18
round = Time.local(2010, 8, 28, 15, 57, 17, 111111.111).round(:sec)
round.usec.should == 0
round.sec.should == 17
end
it "should ceil to hours" do
@now.ceil(:hour).usec.should == 0
@now.ceil(:hour).sec.should == 0
@now.ceil(:hour).min.should == 0
@now.ceil(:hour).hour.should == @now.hour + 1
@now.ceil(:hour).day.should == @now.day
@now.ceil(:hour).month.should == @now.month
@now.ceil(:hour).year.should == @now.year
it "should round to minutes" do
round = Time.local(2010, 8, 28, 15, 57, 47, 999999.999).round(:min)
round.sec.should == 0
round.min.should == 58
round = Time.local(2010, 8, 28, 15, 57, 17, 999999.999).round(:min)
round.sec.should == 0
round.min.should == 57
end
it "should ceil to days" do
@now.ceil(:day).usec.should == 0
@now.ceil(:day).sec.should == 0
@now.ceil(:day).min.should == 0
@now.ceil(:day).hour.should == 0
@now.ceil(:day).day.should == @now.day + 1
@now.ceil(:day).month.should == @now.month
@now.ceil(:day).year.should == @now.year
it "should round to hours" do
round = Time.local(2010, 8, 28, 15, 57, 47, 999999.999).round(:hour)
round.min.should == 0
round.hour.should == 16
round = Time.local(2010, 8, 28, 15, 17, 47, 999999.999).round(:hour)
round.min.should == 0
round.hour.should == 15
end
it "should ceil to months" do
@now.ceil(:month).usec.should == 0
@now.ceil(:month).sec.should == 0
@now.ceil(:month).min.should == 0
@now.ceil(:month).hour.should == 0
@now.ceil(:month).day.should == 1
@now.ceil(:month).month.should == @now.month + 1
@now.ceil(:month).year.should == @now.year
it "should round to days" do
round = Time.local(2010, 8, 28, 15, 57, 47, 999999.999).round(:day)
round.hour.should == 0
round.day.should == 29
round = Time.local(2010, 8, 28, 11, 57, 47, 999999.999).round(:day)
round.hour.should == 0
round.day.should == 28
end
it "should ceil to years" do
@now.ceil(:year).usec.should == 0
@now.ceil(:year).sec.should == 0
@now.ceil(:year).min.should == 0
@now.ceil(:year).hour.should == 0
@now.ceil(:year).day.should == 1
@now.ceil(:year).month.should == 1
@now.ceil(:year).year.should == @now.year + 1
it "should round to weeks" do
round = Time.local(2010, 8, 28, 15, 57, 47, 999999.999).round(:week)
round.hour.should == 0
round.day.should == 30
round = Time.local(2010, 8, 25, 15, 57, 47, 999999.999).round(:week)
round.hour.should == 0
round.day.should == 23
end
it "should round to quarters" do
round = Time.local(2010, 8, 28, 15, 57, 47, 999999.999).round(:quarter)
round.hour.should == 0
round.day.should == 1
round.month.should == 10
round = Time.local(2010, 8, 8, 15, 57, 47, 999999.999).round(:quarter)
round.hour.should == 0
round.day.should == 1
round.month.should == 7
end
it "should round to months" do
round = Time.local(2010, 8, 28, 15, 57, 47, 999999.999).round(:month)
round.day.should == 1
round.month.should == 9
round = Time.local(2010, 8, 8, 15, 57, 47, 999999.999).round(:month)
round.day.should == 1
round.month.should == 8
end
it "should round to years" do
round = Time.local(2010, 8, 28, 15, 57, 47, 999999.999).round(:year)
round.month.should == 1
round.year.should == 2011
round = Time.local(2010, 4, 28, 15, 57, 47, 999999.999).round(:year)
round.month.should == 1
round.year.should == 2010
end
end