class TimeZoneTest

Public Instance Methods

test_all_sorted() click to toggle source
# File activesupport/test/time_zone_test.rb, line 688
def test_all_sorted
  all = ActiveSupport::TimeZone.all
  1.upto(all.length - 1) do |i|
    assert all[i - 1] < all[i]
  end
end
test_at() click to toggle source
# File activesupport/test/time_zone_test.rb, line 198
def test_at
  zone = ActiveSupport::TimeZone["Eastern Time (US & Canada)"]
  secs = 946684800.0
  twz = zone.at(secs)
  assert_equal Time.utc(1999, 12, 31, 19), twz.time
  assert_equal Time.utc(2000), twz.utc
  assert_equal zone, twz.time_zone
  assert_equal secs, twz.to_f
end
test_at_with_old_date() click to toggle source
# File activesupport/test/time_zone_test.rb, line 208
def test_at_with_old_date
  zone = ActiveSupport::TimeZone["Eastern Time (US & Canada)"]
  secs = DateTime.civil(1850).to_f
  twz = zone.at(secs)
  assert_equal [1850, 1, 1, 0], [twz.utc.year, twz.utc.mon, twz.utc.day, twz.utc.hour]
  assert_equal zone, twz.time_zone
  assert_equal secs, twz.to_f
end
test_country_zones() click to toggle source
# File activesupport/test/time_zone_test.rb, line 721
def test_country_zones
  assert_includes ActiveSupport::TimeZone.country_zones("ru"), ActiveSupport::TimeZone["Moscow"]
  assert_not_includes ActiveSupport::TimeZone.country_zones(:ru), ActiveSupport::TimeZone["Kuala Lumpur"]
end
test_country_zones_without_mappings() click to toggle source
# File activesupport/test/time_zone_test.rb, line 726
def test_country_zones_without_mappings
  assert_includes ActiveSupport::TimeZone.country_zones(:sv), ActiveSupport::TimeZone["America/El_Salvador"]
end
test_formatted_offset_negative() click to toggle source
# File activesupport/test/time_zone_test.rb, line 649
def test_formatted_offset_negative
  zone = ActiveSupport::TimeZone["Eastern Time (US & Canada)"]
  assert_equal "-05:00", zone.formatted_offset
  assert_equal "-0500", zone.formatted_offset(false)
end
test_formatted_offset_positive() click to toggle source
# File activesupport/test/time_zone_test.rb, line 643
def test_formatted_offset_positive
  zone = ActiveSupport::TimeZone["New Delhi"]
  assert_equal "+05:30", zone.formatted_offset
  assert_equal "+0530", zone.formatted_offset(false)
end
test_formatted_offset_zero() click to toggle source
# File activesupport/test/time_zone_test.rb, line 663
def test_formatted_offset_zero
  zone = ActiveSupport::TimeZone["London"]
  assert_equal "+00:00", zone.formatted_offset
  assert_equal "UTC", zone.formatted_offset(true, "UTC")
end
test_from_duration_to_map() click to toggle source
# File activesupport/test/time_zone_test.rb, line 39
def test_from_duration_to_map
  assert_instance_of ActiveSupport::TimeZone, ActiveSupport::TimeZone[-480.minutes] # PST
end
test_from_integer_to_map() click to toggle source
# File activesupport/test/time_zone_test.rb, line 35
def test_from_integer_to_map
  assert_instance_of ActiveSupport::TimeZone, ActiveSupport::TimeZone[-28800] # PST
end
test_index() click to toggle source
# File activesupport/test/time_zone_test.rb, line 695
def test_index
  assert_nil ActiveSupport::TimeZone["bogus"]
  assert_instance_of ActiveSupport::TimeZone, ActiveSupport::TimeZone["Central Time (US & Canada)"]
  assert_instance_of ActiveSupport::TimeZone, ActiveSupport::TimeZone[8]
  assert_raise(ArgumentError) { ActiveSupport::TimeZone[false] }
end
test_iso8601() click to toggle source
# File activesupport/test/time_zone_test.rb, line 217
def test_iso8601
  zone = ActiveSupport::TimeZone["Eastern Time (US & Canada)"]
  twz = zone.iso8601("1999-12-31T19:00:00")
  assert_equal Time.utc(1999, 12, 31, 19), twz.time
  assert_equal Time.utc(2000), twz.utc
  assert_equal zone, twz.time_zone
end
test_iso8601_doesnt_use_local_dst() click to toggle source
# File activesupport/test/time_zone_test.rb, line 290
def test_iso8601_doesnt_use_local_dst
  with_env_tz "US/Eastern" do
    zone = ActiveSupport::TimeZone["UTC"]
    twz = zone.iso8601("2013-03-10T02:00:00")
    assert_equal Time.utc(2013, 3, 10, 2, 0, 0), twz.time
  end
end
test_iso8601_far_future_date_with_time_zone_offset_in_string() click to toggle source
# File activesupport/test/time_zone_test.rb, line 267
def test_iso8601_far_future_date_with_time_zone_offset_in_string
  zone = ActiveSupport::TimeZone["Eastern Time (US & Canada)"]
  twz = zone.iso8601("2050-12-31T19:00:00-10:00") # i.e., 2050-01-01 05:00:00 UTC
  assert_equal [0, 0, 0, 1, 1, 2051], twz.to_a[0, 6]
  assert_equal zone, twz.time_zone
end
test_iso8601_handles_dst_jump() click to toggle source
# File activesupport/test/time_zone_test.rb, line 298
def test_iso8601_handles_dst_jump
  with_env_tz "US/Eastern" do
    zone = ActiveSupport::TimeZone["Eastern Time (US & Canada)"]
    twz = zone.iso8601("2013-03-10T02:00:00")
    assert_equal Time.utc(2013, 3, 10, 3, 0, 0), twz.time
  end
end
test_iso8601_should_black_out_app_timezone_dst_jump() click to toggle source
# File activesupport/test/time_zone_test.rb, line 282
def test_iso8601_should_black_out_app_timezone_dst_jump
  with_env_tz("EET") do
    zone = ActiveSupport::TimeZone["Pacific Time (US & Canada)"]
    twz = zone.iso8601("2012-03-11T02:29:00")
    assert_equal [0, 29, 3, 11, 3, 2012], twz.to_a[0, 6]
  end
end
test_iso8601_should_not_black_out_system_timezone_dst_jump() click to toggle source
# File activesupport/test/time_zone_test.rb, line 274
def test_iso8601_should_not_black_out_system_timezone_dst_jump
  with_env_tz("EET") do
    zone = ActiveSupport::TimeZone["Pacific Time (US & Canada)"]
    twz = zone.iso8601("2012-03-25T03:29:00")
    assert_equal [0, 29, 3, 25, 3, 2012], twz.to_a[0, 6]
  end
end
test_iso8601_with_fractional_seconds() click to toggle source
# File activesupport/test/time_zone_test.rb, line 225
def test_iso8601_with_fractional_seconds
  zone = ActiveSupport::TimeZone["Eastern Time (US & Canada)"]
  twz = zone.iso8601("1999-12-31T19:00:00.750")
  assert_equal 750000, twz.time.usec
  assert_equal Time.utc(1999, 12, 31, 19, 0, 0 + Rational(3, 4)), twz.time
  assert_equal Time.utc(2000, 1, 1, 0, 0, 0 + Rational(3, 4)), twz.utc
  assert_equal zone, twz.time_zone
end
test_iso8601_with_invalid_string() click to toggle source
# File activesupport/test/time_zone_test.rb, line 242
def test_iso8601_with_invalid_string
  zone = ActiveSupport::TimeZone["Eastern Time (US & Canada)"]

  exception = assert_raises(ArgumentError) do
    zone.iso8601("foobar")
  end

  assert_equal "invalid date", exception.message
end
test_iso8601_with_missing_time_components() click to toggle source
# File activesupport/test/time_zone_test.rb, line 252
def test_iso8601_with_missing_time_components
  zone = ActiveSupport::TimeZone["Eastern Time (US & Canada)"]
  twz = zone.iso8601("1999-12-31")
  assert_equal Time.utc(1999, 12, 31, 0, 0, 0), twz.time
  assert_equal Time.utc(1999, 12, 31, 5, 0, 0), twz.utc
  assert_equal zone, twz.time_zone
end
test_iso8601_with_old_date() click to toggle source
# File activesupport/test/time_zone_test.rb, line 260
def test_iso8601_with_old_date
  zone = ActiveSupport::TimeZone["Eastern Time (US & Canada)"]
  twz = zone.iso8601("1883-12-31T19:00:00")
  assert_equal [0, 0, 19, 31, 12, 1883], twz.to_a[0, 6]
  assert_equal zone, twz.time_zone
end
test_iso8601_with_zone() click to toggle source
# File activesupport/test/time_zone_test.rb, line 234
def test_iso8601_with_zone
  zone = ActiveSupport::TimeZone["Eastern Time (US & Canada)"]
  twz = zone.iso8601("1999-12-31T14:00:00-10:00")
  assert_equal Time.utc(1999, 12, 31, 19), twz.time
  assert_equal Time.utc(2000), twz.utc
  assert_equal zone, twz.time_zone
end
test_local() click to toggle source
# File activesupport/test/time_zone_test.rb, line 156
def test_local
  time = ActiveSupport::TimeZone["Hawaii"].local(2007, 2, 5, 15, 30, 45)
  assert_equal Time.utc(2007, 2, 5, 15, 30, 45), time.time
  assert_equal ActiveSupport::TimeZone["Hawaii"], time.time_zone
end
test_local_enforces_fall_dst_rules() click to toggle source
# File activesupport/test/time_zone_test.rb, line 187
def test_local_enforces_fall_dst_rules
  # 1AM during fall DST transition is ambiguous, it could be either DST or non-DST 1AM
  # Mirroring Time.local behavior, this method selects the DST time
  zone = ActiveSupport::TimeZone["Eastern Time (US & Canada)"]
  twz = zone.local(2006, 10, 29, 1)
  assert_equal Time.utc(2006, 10, 29, 1), twz.time
  assert_equal Time.utc(2006, 10, 29, 5), twz.utc
  assert_equal true, twz.dst?
  assert_equal "EDT", twz.zone
end
test_local_enforces_spring_dst_rules() click to toggle source
# File activesupport/test/time_zone_test.rb, line 168
def test_local_enforces_spring_dst_rules
  zone = ActiveSupport::TimeZone["Eastern Time (US & Canada)"]
  twz = zone.local(2006, 4, 2, 1, 59, 59) # 1 second before DST start
  assert_equal Time.utc(2006, 4, 2, 1, 59, 59), twz.time
  assert_equal Time.utc(2006, 4, 2, 6, 59, 59), twz.utc
  assert_equal false, twz.dst?
  assert_equal "EST", twz.zone
  twz2 = zone.local(2006, 4, 2, 2) # 2AM does not exist because at 2AM, time springs forward to 3AM
  assert_equal Time.utc(2006, 4, 2, 3), twz2.time # twz is created for 3AM
  assert_equal Time.utc(2006, 4, 2, 7), twz2.utc
  assert_equal true, twz2.dst?
  assert_equal "EDT", twz2.zone
  twz3 = zone.local(2006, 4, 2, 2, 30) # 2:30AM does not exist because at 2AM, time springs forward to 3AM
  assert_equal Time.utc(2006, 4, 2, 3, 30), twz3.time # twz is created for 3:30AM
  assert_equal Time.utc(2006, 4, 2, 7, 30), twz3.utc
  assert_equal true, twz3.dst?
  assert_equal "EDT", twz3.zone
end
test_local_to_utc() click to toggle source
# File activesupport/test/time_zone_test.rb, line 17
def test_local_to_utc
  zone = ActiveSupport::TimeZone["Eastern Time (US & Canada)"]
  assert_equal Time.utc(2000, 1, 1, 5), zone.local_to_utc(Time.utc(2000, 1)) # standard offset -0500
  assert_equal Time.utc(2000, 7, 1, 4), zone.local_to_utc(Time.utc(2000, 7)) # dst offset -0400
end
test_local_with_old_date() click to toggle source
# File activesupport/test/time_zone_test.rb, line 162
def test_local_with_old_date
  time = ActiveSupport::TimeZone["Hawaii"].local(1850, 2, 5, 15, 30, 45)
  assert_equal [45, 30, 15, 5, 2, 1850], time.to_a[0, 6]
  assert_equal ActiveSupport::TimeZone["Hawaii"], time.time_zone
end
test_new() click to toggle source
# File activesupport/test/time_zone_test.rb, line 712
def test_new
  assert_equal ActiveSupport::TimeZone["Central Time (US & Canada)"], ActiveSupport::TimeZone.new("Central Time (US & Canada)")
end
test_now() click to toggle source
# File activesupport/test/time_zone_test.rb, line 55
def test_now
  with_env_tz "US/Eastern" do
    zone = ActiveSupport::TimeZone["Eastern Time (US & Canada)"].dup
    def zone.time_now; Time.local(2000); end
    assert_instance_of ActiveSupport::TimeWithZone, zone.now
    assert_equal Time.utc(2000, 1, 1, 5), zone.now.utc
    assert_equal Time.utc(2000), zone.now.time
    assert_equal zone, zone.now.time_zone
  end
end
test_now_enforces_fall_dst_rules() click to toggle source
# File activesupport/test/time_zone_test.rb, line 78
def test_now_enforces_fall_dst_rules
  with_env_tz "US/Eastern" do
    zone = ActiveSupport::TimeZone["Eastern Time (US & Canada)"].dup
    def zone.time_now
      Time.at(1162098000) # equivalent to 1AM DST
    end
    assert_equal Time.utc(2006, 10, 29, 1), zone.now.time
    assert_equal true, zone.now.dst?
  end
end
test_now_enforces_spring_dst_rules() click to toggle source
# File activesupport/test/time_zone_test.rb, line 66
def test_now_enforces_spring_dst_rules
  with_env_tz "US/Eastern" do
    zone = ActiveSupport::TimeZone["Eastern Time (US & Canada)"].dup
    def zone.time_now
      Time.local(2006, 4, 2, 2) # 2AM springs forward to 3AM
    end

    assert_equal Time.utc(2006, 4, 2, 3), zone.now.time
    assert_equal true, zone.now.dst?
  end
end
test_parse() click to toggle source
# File activesupport/test/time_zone_test.rb, line 306
def test_parse
  zone = ActiveSupport::TimeZone["Eastern Time (US & Canada)"]
  twz = zone.parse("1999-12-31 19:00:00")
  assert_equal Time.utc(1999, 12, 31, 19), twz.time
  assert_equal Time.utc(2000), twz.utc
  assert_equal zone, twz.time_zone
end
test_parse_doesnt_use_local_dst() click to toggle source
# File activesupport/test/time_zone_test.rb, line 389
def test_parse_doesnt_use_local_dst
  with_env_tz "US/Eastern" do
    zone = ActiveSupport::TimeZone["UTC"]
    twz = zone.parse("2013-03-10 02:00:00")
    assert_equal Time.utc(2013, 3, 10, 2, 0, 0), twz.time
  end
end
test_parse_far_future_date_with_time_zone_offset_in_string() click to toggle source
# File activesupport/test/time_zone_test.rb, line 329
def test_parse_far_future_date_with_time_zone_offset_in_string
  zone = ActiveSupport::TimeZone["Eastern Time (US & Canada)"]
  twz = zone.parse("2050-12-31 19:00:00 -10:00") # i.e., 2050-01-01 05:00:00 UTC
  assert_equal [0, 0, 0, 1, 1, 2051], twz.to_a[0, 6]
  assert_equal zone, twz.time_zone
end
test_parse_handles_dst_jump() click to toggle source
# File activesupport/test/time_zone_test.rb, line 397
def test_parse_handles_dst_jump
  with_env_tz "US/Eastern" do
    zone = ActiveSupport::TimeZone["Eastern Time (US & Canada)"]
    twz = zone.parse("2013-03-10 02:00:00")
    assert_equal Time.utc(2013, 3, 10, 3, 0, 0), twz.time
  end
end
test_parse_returns_nil_when_string_without_date_information_is_passed_in() click to toggle source
# File activesupport/test/time_zone_test.rb, line 336
def test_parse_returns_nil_when_string_without_date_information_is_passed_in
  zone = ActiveSupport::TimeZone["Eastern Time (US & Canada)"]
  assert_nil zone.parse("foobar")
  assert_nil zone.parse("   ")
end
test_parse_should_black_out_app_timezone_dst_jump() click to toggle source
# File activesupport/test/time_zone_test.rb, line 367
def test_parse_should_black_out_app_timezone_dst_jump
  with_env_tz("EET") do
    zone = ActiveSupport::TimeZone["Pacific Time (US & Canada)"]
    twz = zone.parse("2012-03-11 02:29:00")
    assert_equal [0, 29, 3, 11, 3, 2012], twz.to_a[0, 6]
  end
end
test_parse_should_not_black_out_system_timezone_dst_jump() click to toggle source
# File activesupport/test/time_zone_test.rb, line 359
def test_parse_should_not_black_out_system_timezone_dst_jump
  with_env_tz("EET") do
    zone = ActiveSupport::TimeZone["Pacific Time (US & Canada)"]
    twz = zone.parse("2012-03-25 03:29:00")
    assert_equal [0, 29, 3, 25, 3, 2012], twz.to_a[0, 6]
  end
end
test_parse_string_with_timezone() click to toggle source
# File activesupport/test/time_zone_test.rb, line 314
def test_parse_string_with_timezone
  (-11..13).each do |timezone_offset|
    zone = ActiveSupport::TimeZone[timezone_offset]
    twz = zone.parse("1999-12-31 19:00:00")
    assert_equal twz, zone.parse(twz.to_s)
  end
end
test_parse_with_day_omitted() click to toggle source
# File activesupport/test/time_zone_test.rb, line 350
def test_parse_with_day_omitted
  with_env_tz "US/Eastern" do
    zone = ActiveSupport::TimeZone["Eastern Time (US & Canada)"]
    assert_equal Time.local(2000, 2, 1), zone.parse("Feb", Time.local(2000, 1, 1))
    assert_equal Time.local(2005, 2, 1), zone.parse("Feb 2005", Time.local(2000, 1, 1))
    assert_equal Time.local(2005, 2, 2), zone.parse("2 Feb 2005", Time.local(2000, 1, 1))
  end
end
test_parse_with_incomplete_date() click to toggle source
# File activesupport/test/time_zone_test.rb, line 342
def test_parse_with_incomplete_date
  zone = ActiveSupport::TimeZone["Eastern Time (US & Canada)"]
  zone.stub(:now, zone.local(1999, 12, 31)) do
    twz = zone.parse("19:00:00")
    assert_equal Time.utc(1999, 12, 31, 19), twz.time
  end
end
test_parse_with_invalid_date() click to toggle source
# File activesupport/test/time_zone_test.rb, line 405
def test_parse_with_invalid_date
  zone = ActiveSupport::TimeZone["UTC"]

  exception = assert_raises(ArgumentError) do
    zone.parse("9000")
  end

  assert_equal "argument out of range", exception.message
end
test_parse_with_javascript_date() click to toggle source
# File activesupport/test/time_zone_test.rb, line 383
def test_parse_with_javascript_date
  zone = ActiveSupport::TimeZone["Eastern Time (US & Canada)"]
  twz = zone.parse("Mon May 28 2012 00:00:00 GMT-0700 (PDT)")
  assert_equal Time.utc(2012, 5, 28, 7, 0, 0), twz.utc
end
test_parse_with_missing_time_components() click to toggle source
# File activesupport/test/time_zone_test.rb, line 375
def test_parse_with_missing_time_components
  zone = ActiveSupport::TimeZone["Eastern Time (US & Canada)"]
  zone.stub(:now, zone.local(1999, 12, 31, 12, 59, 59)) do
    twz = zone.parse("2012-12-01")
    assert_equal Time.utc(2012, 12, 1), twz.time
  end
end
test_parse_with_old_date() click to toggle source
# File activesupport/test/time_zone_test.rb, line 322
def test_parse_with_old_date
  zone = ActiveSupport::TimeZone["Eastern Time (US & Canada)"]
  twz = zone.parse("1883-12-31 19:00:00")
  assert_equal [0, 0, 19, 31, 12, 1883], twz.to_a[0, 6]
  assert_equal zone, twz.time_zone
end
test_period_for_local() click to toggle source
# File activesupport/test/time_zone_test.rb, line 23
def test_period_for_local
  zone = ActiveSupport::TimeZone["Eastern Time (US & Canada)"]
  assert_instance_of TZInfo::TimezonePeriod, zone.period_for_local(Time.utc(2000))
end
test_rfc3339() click to toggle source
# File activesupport/test/time_zone_test.rb, line 415
def test_rfc3339
  zone = ActiveSupport::TimeZone["Eastern Time (US & Canada)"]
  twz = zone.rfc3339("1999-12-31T14:00:00-10:00")
  assert_equal Time.utc(1999, 12, 31, 19), twz.time
  assert_equal Time.utc(2000), twz.utc
  assert_equal zone, twz.time_zone
end
test_rfc3339_doesnt_use_local_dst() click to toggle source
# File activesupport/test/time_zone_test.rb, line 492
def test_rfc3339_doesnt_use_local_dst
  with_env_tz "US/Eastern" do
    zone = ActiveSupport::TimeZone["UTC"]
    twz = zone.rfc3339("2013-03-10T02:00:00Z")
    assert_equal Time.utc(2013, 3, 10, 2, 0, 0), twz.time
  end
end
test_rfc3339_far_future_date_with_time_zone_offset_in_string() click to toggle source
# File activesupport/test/time_zone_test.rb, line 469
def test_rfc3339_far_future_date_with_time_zone_offset_in_string
  zone = ActiveSupport::TimeZone["Eastern Time (US & Canada)"]
  twz = zone.rfc3339("2050-12-31T19:00:00-10:00") # i.e., 2050-01-01 05:00:00 UTC
  assert_equal [0, 0, 0, 1, 1, 2051], twz.to_a[0, 6]
  assert_equal zone, twz.time_zone
end
test_rfc3339_handles_dst_jump() click to toggle source
# File activesupport/test/time_zone_test.rb, line 500
def test_rfc3339_handles_dst_jump
  with_env_tz "US/Eastern" do
    zone = ActiveSupport::TimeZone["Eastern Time (US & Canada)"]
    twz = zone.iso8601("2013-03-10T02:00:00-05:00")
    assert_equal Time.utc(2013, 3, 10, 3, 0, 0), twz.time
  end
end
test_rfc3339_should_black_out_app_timezone_dst_jump() click to toggle source
# File activesupport/test/time_zone_test.rb, line 484
def test_rfc3339_should_black_out_app_timezone_dst_jump
  with_env_tz("EET") do
    zone = ActiveSupport::TimeZone["Pacific Time (US & Canada)"]
    twz = zone.rfc3339("2012-03-11T02:29:00-08:00")
    assert_equal [0, 29, 3, 11, 3, 2012], twz.to_a[0, 6]
  end
end
test_rfc3339_should_not_black_out_system_timezone_dst_jump() click to toggle source
# File activesupport/test/time_zone_test.rb, line 476
def test_rfc3339_should_not_black_out_system_timezone_dst_jump
  with_env_tz("EET") do
    zone = ActiveSupport::TimeZone["Pacific Time (US & Canada)"]
    twz = zone.rfc3339("2012-03-25T03:29:00-07:00")
    assert_equal [0, 29, 3, 25, 3, 2012], twz.to_a[0, 6]
  end
end
test_rfc3339_with_fractional_seconds() click to toggle source
# File activesupport/test/time_zone_test.rb, line 423
def test_rfc3339_with_fractional_seconds
  zone = ActiveSupport::TimeZone["Eastern Time (US & Canada)"]
  twz = zone.iso8601("1999-12-31T14:00:00.750-10:00")
  assert_equal 750000, twz.time.usec
  assert_equal Time.utc(1999, 12, 31, 19, 0, 0 + Rational(3, 4)), twz.time
  assert_equal Time.utc(2000, 1, 1, 0, 0, 0 + Rational(3, 4)), twz.utc
  assert_equal zone, twz.time_zone
end
test_rfc3339_with_invalid_string() click to toggle source
# File activesupport/test/time_zone_test.rb, line 452
def test_rfc3339_with_invalid_string
  zone = ActiveSupport::TimeZone["Eastern Time (US & Canada)"]

  exception = assert_raises(ArgumentError) do
    zone.rfc3339("foobar")
  end

  assert_equal "invalid date", exception.message
end
test_rfc3339_with_missing_offset() click to toggle source
# File activesupport/test/time_zone_test.rb, line 442
def test_rfc3339_with_missing_offset
  zone = ActiveSupport::TimeZone["Eastern Time (US & Canada)"]

  exception = assert_raises(ArgumentError) do
    zone.rfc3339("1999-12-31T19:00:00")
  end

  assert_equal "invalid date", exception.message
end
test_rfc3339_with_missing_time() click to toggle source
# File activesupport/test/time_zone_test.rb, line 432
def test_rfc3339_with_missing_time
  zone = ActiveSupport::TimeZone["Eastern Time (US & Canada)"]

  exception = assert_raises(ArgumentError) do
    zone.rfc3339("1999-12-31")
  end

  assert_equal "invalid date", exception.message
end
test_rfc3339_with_old_date() click to toggle source
# File activesupport/test/time_zone_test.rb, line 462
def test_rfc3339_with_old_date
  zone = ActiveSupport::TimeZone["Eastern Time (US & Canada)"]
  twz = zone.rfc3339("1883-12-31T19:00:00-05:00")
  assert_equal [0, 0, 19, 31, 12, 1883], twz.to_a[0, 6]
  assert_equal zone, twz.time_zone
end
test_seconds_to_utc_offset_with_colon() click to toggle source
# File activesupport/test/time_zone_test.rb, line 625
def test_seconds_to_utc_offset_with_colon
  assert_equal "-06:00", ActiveSupport::TimeZone.seconds_to_utc_offset(-21_600)
  assert_equal "+00:00", ActiveSupport::TimeZone.seconds_to_utc_offset(0)
  assert_equal "+05:00", ActiveSupport::TimeZone.seconds_to_utc_offset(18_000)
end
test_seconds_to_utc_offset_with_negative_offset() click to toggle source
# File activesupport/test/time_zone_test.rb, line 637
def test_seconds_to_utc_offset_with_negative_offset
  assert_equal "-01:00", ActiveSupport::TimeZone.seconds_to_utc_offset(-3_600)
  assert_equal "-00:59", ActiveSupport::TimeZone.seconds_to_utc_offset(-3_599)
  assert_equal "-05:30", ActiveSupport::TimeZone.seconds_to_utc_offset(-19_800)
end
test_seconds_to_utc_offset_without_colon() click to toggle source
# File activesupport/test/time_zone_test.rb, line 631
def test_seconds_to_utc_offset_without_colon
  assert_equal "-0600", ActiveSupport::TimeZone.seconds_to_utc_offset(-21_600, false)
  assert_equal "+0000", ActiveSupport::TimeZone.seconds_to_utc_offset(0, false)
  assert_equal "+0500", ActiveSupport::TimeZone.seconds_to_utc_offset(18_000, false)
end
test_strptime() click to toggle source
# File activesupport/test/time_zone_test.rb, line 508
def test_strptime
  zone = ActiveSupport::TimeZone["Eastern Time (US & Canada)"]
  twz = zone.strptime("1999-12-31 12:00:00", "%Y-%m-%d %H:%M:%S")
  assert_equal Time.utc(1999, 12, 31, 17), twz
  assert_equal Time.utc(1999, 12, 31, 12), twz.time
  assert_equal Time.utc(1999, 12, 31, 17), twz.utc
  assert_equal zone, twz.time_zone
end
test_strptime_with_almost_explicit_time_zone() click to toggle source
# File activesupport/test/time_zone_test.rb, line 564
def test_strptime_with_almost_explicit_time_zone
  zone = ActiveSupport::TimeZone["Eastern Time (US & Canada)"]
  twz = zone.strptime("1999-12-31 12:00:00 %Z", "%Y-%m-%d %H:%M:%S %%Z")
  assert_equal Time.utc(1999, 12, 31, 17), twz
  assert_equal Time.utc(1999, 12, 31, 12), twz.time
  assert_equal Time.utc(1999, 12, 31, 17), twz.utc
  assert_equal zone, twz.time_zone
end
test_strptime_with_day_omitted() click to toggle source
# File activesupport/test/time_zone_test.rb, line 573
def test_strptime_with_day_omitted
  with_env_tz "US/Eastern" do
    zone = ActiveSupport::TimeZone["Eastern Time (US & Canada)"]
    assert_equal Time.local(2000, 2, 1), zone.strptime("Feb", "%b", Time.local(2000, 1, 1))
    assert_equal Time.local(2005, 2, 1), zone.strptime("Feb 2005", "%b %Y", Time.local(2000, 1, 1))
    assert_equal Time.local(2005, 2, 2), zone.strptime("2 Feb 2005", "%e %b %Y", Time.local(2000, 1, 1))
  end
end
test_strptime_with_explicit_time_zone_as_abbrev() click to toggle source
# File activesupport/test/time_zone_test.rb, line 528
def test_strptime_with_explicit_time_zone_as_abbrev
  zone = ActiveSupport::TimeZone["Eastern Time (US & Canada)"]
  twz = zone.strptime("1999-12-31 12:00:00 PST", "%Y-%m-%d %H:%M:%S %Z")
  assert_equal Time.utc(1999, 12, 31, 20), twz
  assert_equal Time.utc(1999, 12, 31, 15), twz.time
  assert_equal Time.utc(1999, 12, 31, 20), twz.utc
  assert_equal zone, twz.time_zone
end
test_strptime_with_explicit_time_zone_as_h_offset() click to toggle source
# File activesupport/test/time_zone_test.rb, line 537
def test_strptime_with_explicit_time_zone_as_h_offset
  zone = ActiveSupport::TimeZone["Eastern Time (US & Canada)"]
  twz = zone.strptime("1999-12-31 12:00:00 -08", "%Y-%m-%d %H:%M:%S %:::z")
  assert_equal Time.utc(1999, 12, 31, 20), twz
  assert_equal Time.utc(1999, 12, 31, 15), twz.time
  assert_equal Time.utc(1999, 12, 31, 20), twz.utc
  assert_equal zone, twz.time_zone
end
test_strptime_with_explicit_time_zone_as_hm_offset() click to toggle source
# File activesupport/test/time_zone_test.rb, line 546
def test_strptime_with_explicit_time_zone_as_hm_offset
  zone = ActiveSupport::TimeZone["Eastern Time (US & Canada)"]
  twz = zone.strptime("1999-12-31 12:00:00 -08:00", "%Y-%m-%d %H:%M:%S %:z")
  assert_equal Time.utc(1999, 12, 31, 20), twz
  assert_equal Time.utc(1999, 12, 31, 15), twz.time
  assert_equal Time.utc(1999, 12, 31, 20), twz.utc
  assert_equal zone, twz.time_zone
end
test_strptime_with_explicit_time_zone_as_hms_offset() click to toggle source
# File activesupport/test/time_zone_test.rb, line 555
def test_strptime_with_explicit_time_zone_as_hms_offset
  zone = ActiveSupport::TimeZone["Eastern Time (US & Canada)"]
  twz = zone.strptime("1999-12-31 12:00:00 -08:00:00", "%Y-%m-%d %H:%M:%S %::z")
  assert_equal Time.utc(1999, 12, 31, 20), twz
  assert_equal Time.utc(1999, 12, 31, 15), twz.time
  assert_equal Time.utc(1999, 12, 31, 20), twz.utc
  assert_equal zone, twz.time_zone
end
test_strptime_with_malformed_string() click to toggle source
# File activesupport/test/time_zone_test.rb, line 582
def test_strptime_with_malformed_string
  with_env_tz "US/Eastern" do
    zone = ActiveSupport::TimeZone["Eastern Time (US & Canada)"]
    assert_raise(ArgumentError) { zone.strptime("1999-12-31", "%Y/%m/%d") }
  end
end
test_strptime_with_nondefault_time_zone() click to toggle source
# File activesupport/test/time_zone_test.rb, line 517
def test_strptime_with_nondefault_time_zone
  with_tz_default ActiveSupport::TimeZone["Pacific Time (US & Canada)"] do
    zone = ActiveSupport::TimeZone["Eastern Time (US & Canada)"]
    twz = zone.strptime("1999-12-31 12:00:00", "%Y-%m-%d %H:%M:%S")
    assert_equal Time.utc(1999, 12, 31, 17), twz
    assert_equal Time.utc(1999, 12, 31, 12), twz.time
    assert_equal Time.utc(1999, 12, 31, 17), twz.utc
    assert_equal zone, twz.time_zone
  end
end
test_strptime_with_timestamp_milliseconds() click to toggle source
# File activesupport/test/time_zone_test.rb, line 598
def test_strptime_with_timestamp_milliseconds
  with_env_tz "US/Eastern" do
    zone = ActiveSupport::TimeZone["Eastern Time (US & Canada)"]
    time_str = "1470272280000"
    time = zone.strptime(time_str, "%Q")
    assert_equal Time.at(1470272280), time
  end
end
test_strptime_with_timestamp_seconds() click to toggle source
# File activesupport/test/time_zone_test.rb, line 589
def test_strptime_with_timestamp_seconds
  with_env_tz "US/Eastern" do
    zone = ActiveSupport::TimeZone["Eastern Time (US & Canada)"]
    time_str = "1470272280"
    time = zone.strptime(time_str, "%s")
    assert_equal Time.at(1470272280), time
  end
end
test_to_s() click to toggle source
# File activesupport/test/time_zone_test.rb, line 684
def test_to_s
  assert_equal "(GMT+05:30) New Delhi", ActiveSupport::TimeZone["New Delhi"].to_s
end
test_to_yaml() click to toggle source
# File activesupport/test/time_zone_test.rb, line 730
def test_to_yaml
  assert_equal("--- !ruby/object:ActiveSupport::TimeZone\nname: Pacific/Honolulu\n", ActiveSupport::TimeZone["Hawaii"].to_yaml)
  assert_equal("--- !ruby/object:ActiveSupport::TimeZone\nname: Europe/London\n", ActiveSupport::TimeZone["Europe/London"].to_yaml)
end
test_today() click to toggle source
# File activesupport/test/time_zone_test.rb, line 97
def test_today
  travel_to(Time.utc(2000, 1, 1, 4, 59, 59)) # 1 sec before midnight Jan 1 EST
  assert_equal Date.new(1999, 12, 31), ActiveSupport::TimeZone["Eastern Time (US & Canada)"].today
  travel_to(Time.utc(2000, 1, 1, 5)) # midnight Jan 1 EST
  assert_equal Date.new(2000, 1, 1), ActiveSupport::TimeZone["Eastern Time (US & Canada)"].today
  travel_to(Time.utc(2000, 1, 2, 4, 59, 59)) # 1 sec before midnight Jan 2 EST
  assert_equal Date.new(2000, 1, 1), ActiveSupport::TimeZone["Eastern Time (US & Canada)"].today
  travel_to(Time.utc(2000, 1, 2, 5)) # midnight Jan 2 EST
  assert_equal Date.new(2000, 1, 2), ActiveSupport::TimeZone["Eastern Time (US & Canada)"].today
end
test_tomorrow() click to toggle source
# File activesupport/test/time_zone_test.rb, line 108
def test_tomorrow
  travel_to(Time.utc(2000, 1, 1, 4, 59, 59)) # 1 sec before midnight Jan 1 EST
  assert_equal Date.new(2000, 1, 1), ActiveSupport::TimeZone["Eastern Time (US & Canada)"].tomorrow
  travel_to(Time.utc(2000, 1, 1, 5)) # midnight Jan 1 EST
  assert_equal Date.new(2000, 1, 2), ActiveSupport::TimeZone["Eastern Time (US & Canada)"].tomorrow
  travel_to(Time.utc(2000, 1, 2, 4, 59, 59)) # 1 sec before midnight Jan 2 EST
  assert_equal Date.new(2000, 1, 2), ActiveSupport::TimeZone["Eastern Time (US & Canada)"].tomorrow
  travel_to(Time.utc(2000, 1, 2, 5)) # midnight Jan 2 EST
  assert_equal Date.new(2000, 1, 3), ActiveSupport::TimeZone["Eastern Time (US & Canada)"].tomorrow
end
test_travel_to_a_date() click to toggle source
# File activesupport/test/time_zone_test.rb, line 130
def test_travel_to_a_date
  with_env_tz do
    Time.use_zone("Hawaii") do
      date = Date.new(2014, 2, 18)
      time = date.midnight

      travel_to date do
        assert_equal date, Date.current
        assert_equal time, Time.current
      end
    end
  end
end
test_travel_to_travels_back_and_reraises_if_the_block_raises() click to toggle source
# File activesupport/test/time_zone_test.rb, line 144
def test_travel_to_travels_back_and_reraises_if_the_block_raises
  ts = Time.current - 1.second

  travel_to ts do
    raise
  end

  flunk # ensure travel_to re-raises
rescue
  assert_not_equal ts, Time.current
end
test_unknown_timezones_delegation_to_tzinfo() click to toggle source
# File activesupport/test/time_zone_test.rb, line 89
def test_unknown_timezones_delegation_to_tzinfo
  zone = ActiveSupport::TimeZone["America/Montevideo"]
  assert_equal ActiveSupport::TimeZone, zone.class
  assert_equal zone.object_id, ActiveSupport::TimeZone["America/Montevideo"].object_id
  assert_equal Time.utc(2010, 1, 31, 22), zone.utc_to_local(Time.utc(2010, 2)) # daylight saving offset -0200
  assert_equal Time.utc(2010, 3, 31, 21), zone.utc_to_local(Time.utc(2010, 4)) # standard offset -0300
end
test_unknown_zone_raises_exception() click to toggle source
# File activesupport/test/time_zone_test.rb, line 702
def test_unknown_zone_raises_exception
  assert_raise TZInfo::InvalidTimezoneIdentifier do
    ActiveSupport::TimeZone.create("bogus")
  end
end
test_unknown_zones_dont_store_mapping_keys() click to toggle source
# File activesupport/test/time_zone_test.rb, line 708
def test_unknown_zones_dont_store_mapping_keys
  assert_nil ActiveSupport::TimeZone["bogus"]
end
test_us_zones() click to toggle source
# File activesupport/test/time_zone_test.rb, line 716
def test_us_zones
  assert_includes ActiveSupport::TimeZone.us_zones, ActiveSupport::TimeZone["Hawaii"]
  assert_not_includes ActiveSupport::TimeZone.us_zones, ActiveSupport::TimeZone["Kuala Lumpur"]
end
test_utc_offset_is_not_cached_when_current_period_gets_stale() click to toggle source
# File activesupport/test/time_zone_test.rb, line 614
def test_utc_offset_is_not_cached_when_current_period_gets_stale
  tz = ActiveSupport::TimeZone.create("Moscow")
  travel_to(Time.utc(2014, 10, 25, 21)) do # 1 hour before TZ change
    assert_equal 14400, tz.utc_offset, "utc_offset should be initialized according to current_period"
  end

  travel_to(Time.utc(2014, 10, 25, 22)) do # after TZ change
    assert_equal 10800, tz.utc_offset, "utc_offset should not be cached when current_period gets stale"
  end
end
test_utc_offset_lazy_loaded_from_tzinfo_when_not_passed_in_to_initialize() click to toggle source
# File activesupport/test/time_zone_test.rb, line 607
def test_utc_offset_lazy_loaded_from_tzinfo_when_not_passed_in_to_initialize
  tzinfo = TZInfo::Timezone.get("America/New_York")
  zone = ActiveSupport::TimeZone.create(tzinfo.name, nil, tzinfo)
  assert_nil zone.instance_variable_get("@utc_offset")
  assert_equal(-18_000, zone.utc_offset)
end
test_utc_to_local() click to toggle source
# File activesupport/test/time_zone_test.rb, line 11
def test_utc_to_local
  zone = ActiveSupport::TimeZone["Eastern Time (US & Canada)"]
  assert_equal Time.utc(1999, 12, 31, 19), zone.utc_to_local(Time.utc(2000, 1)) # standard offset -0500
  assert_equal Time.utc(2000, 6, 30, 20), zone.utc_to_local(Time.utc(2000, 7)) # dst offset -0400
end
test_yaml_load() click to toggle source
# File activesupport/test/time_zone_test.rb, line 735
def test_yaml_load
  assert_equal(ActiveSupport::TimeZone["Pacific/Honolulu"], YAML.load("--- !ruby/object:ActiveSupport::TimeZone\nname: Pacific/Honolulu\n"))
end
test_yesterday() click to toggle source
# File activesupport/test/time_zone_test.rb, line 119
def test_yesterday
  travel_to(Time.utc(2000, 1, 1, 4, 59, 59)) # 1 sec before midnight Jan 1 EST
  assert_equal Date.new(1999, 12, 30), ActiveSupport::TimeZone["Eastern Time (US & Canada)"].yesterday
  travel_to(Time.utc(2000, 1, 1, 5)) # midnight Jan 1 EST
  assert_equal Date.new(1999, 12, 31), ActiveSupport::TimeZone["Eastern Time (US & Canada)"].yesterday
  travel_to(Time.utc(2000, 1, 2, 4, 59, 59)) # 1 sec before midnight Jan 2 EST
  assert_equal Date.new(1999, 12, 31), ActiveSupport::TimeZone["Eastern Time (US & Canada)"].yesterday
  travel_to(Time.utc(2000, 1, 2, 5)) # midnight Jan 2 EST
  assert_equal Date.new(2000, 1, 1), ActiveSupport::TimeZone["Eastern Time (US & Canada)"].yesterday
end
test_z_format_strings() click to toggle source
# File activesupport/test/time_zone_test.rb, line 655
def test_z_format_strings
  zone = ActiveSupport::TimeZone["Tokyo"]
  twz = zone.now
  assert_equal "+0900",     twz.strftime("%z")
  assert_equal "+09:00",    twz.strftime("%:z")
  assert_equal "+09:00:00", twz.strftime("%::z")
end
test_zone_compare() click to toggle source
# File activesupport/test/time_zone_test.rb, line 669
def test_zone_compare
  zone1 = ActiveSupport::TimeZone["Central Time (US & Canada)"] # offset -0600
  zone2 = ActiveSupport::TimeZone["Eastern Time (US & Canada)"] # offset -0500
  assert zone1 < zone2
  assert zone2 > zone1
  assert zone1 == zone1
end
test_zone_match() click to toggle source
# File activesupport/test/time_zone_test.rb, line 677
def test_zone_match
  zone = ActiveSupport::TimeZone["Eastern Time (US & Canada)"]
  assert zone =~ /Eastern/
  assert zone =~ /New_York/
  assert zone !~ /Nonexistent_Place/
end