class NumericExtTimeAndDateTimeTest

Public Instance Methods

setup() click to toggle source
# File activesupport/test/core_ext/numeric_ext_test.rb, line 9
def setup
  @now = Time.local(2005, 2, 10, 15, 30, 45)
  @dtnow = DateTime.civil(2005, 2, 10, 15, 30, 45)
  @seconds = {
    1.minute   => 60,
    10.minutes => 600,
    1.hour + 15.minutes => 4500,
    2.days + 4.hours + 30.minutes => 189000,
    5.years + 1.month + 1.fortnight => 161624106
  }
end
test_add_one_year_to_leap_day() click to toggle source
# File activesupport/test/core_ext/numeric_ext_test.rb, line 72
def test_add_one_year_to_leap_day
  assert_equal Time.utc(2005, 2, 28, 15, 15, 10), Time.utc(2004, 2, 29, 15, 15, 10) + 1.year
  assert_equal DateTime.civil(2005, 2, 28, 15, 15, 10), DateTime.civil(2004, 2, 29, 15, 15, 10) + 1.year
end
test_chaining_duration_operations() click to toggle source
# File activesupport/test/core_ext/numeric_ext_test.rb, line 58
def test_chaining_duration_operations
  assert_equal @now.advance(days: 2).advance(months: -3), @now + 2.days - 3.months
  assert_equal @now.advance(days: 1).advance(months: 2), @now + 1.day + 2.months
  assert_equal @dtnow.advance(days: 2).advance(months: -3), @dtnow + 2.days - 3.months
  assert_equal @dtnow.advance(days: 1).advance(months: 2), @dtnow + 1.day + 2.months
end
test_duration_addition() click to toggle source
# File activesupport/test/core_ext/numeric_ext_test.rb, line 38
def test_duration_addition
  assert_equal @now.advance(days: 1).advance(months: 1), (1.day + 1.month).since(@now)
  assert_equal @now.advance(days: 7), (1.week + 5.seconds - 5.seconds).since(@now)
  assert_equal @now.advance(years: 2), (4.years - 2.years).since(@now)
  assert_equal @dtnow.advance(days: 1).advance(months: 1), (1.day + 1.month).since(@dtnow)
  assert_equal @dtnow.advance(days: 7), (1.week + 5.seconds - 5.seconds).since(@dtnow)
  assert_equal @dtnow.advance(years: 2), (4.years - 2.years).since(@dtnow)
end
test_duration_after_conversion_is_no_longer_accurate() click to toggle source
# File activesupport/test/core_ext/numeric_ext_test.rb, line 65
def test_duration_after_conversion_is_no_longer_accurate
  assert_equal (1.year / 12).to_i.seconds.since(@now), 1.month.to_i.seconds.since(@now)
  assert_equal 365.2425.days.to_f.seconds.since(@now), 1.year.to_f.seconds.since(@now)
  assert_equal (1.year / 12).to_i.seconds.since(@dtnow), 1.month.to_i.seconds.since(@dtnow)
  assert_equal 365.2425.days.to_f.seconds.since(@dtnow), 1.year.to_f.seconds.since(@dtnow)
end
test_irregular_durations() click to toggle source
# File activesupport/test/core_ext/numeric_ext_test.rb, line 27
def test_irregular_durations
  assert_equal @now.advance(days: 3000), 3000.days.since(@now)
  assert_equal @now.advance(months: 1), 1.month.since(@now)
  assert_equal @now.advance(months: -1), 1.month.until(@now)
  assert_equal @now.advance(years: 20), 20.years.since(@now)
  assert_equal @dtnow.advance(days: 3000), 3000.days.since(@dtnow)
  assert_equal @dtnow.advance(months: 1), 1.month.since(@dtnow)
  assert_equal @dtnow.advance(months: -1), 1.month.until(@dtnow)
  assert_equal @dtnow.advance(years: 20), 20.years.since(@dtnow)
end
test_time_plus_duration() click to toggle source
# File activesupport/test/core_ext/numeric_ext_test.rb, line 47
def test_time_plus_duration
  assert_equal @now + 8, @now + 8.seconds
  assert_equal @now + 22.9, @now + 22.9.seconds
  assert_equal @now.advance(days: 15), @now + 15.days
  assert_equal @now.advance(months: 1), @now + 1.month
  assert_equal @dtnow.since(8), @dtnow + 8.seconds
  assert_equal @dtnow.since(22.9), @dtnow + 22.9.seconds
  assert_equal @dtnow.advance(days: 15), @dtnow + 15.days
  assert_equal @dtnow.advance(months: 1), @dtnow + 1.month
end
test_units() click to toggle source
# File activesupport/test/core_ext/numeric_ext_test.rb, line 21
def test_units
  @seconds.each do |actual, expected|
    assert_equal expected, actual
  end
end