File: C:/Ruby27-x64/lib/ruby/gems/2.7.0/gems/tzinfo-1.2.11/test/tc_timezone_period.rb
require File.join(File.expand_path(File.dirname(__FILE__)), 'test_utils')
include TZInfo
class TCTimezonePeriod < Minitest::Test
class TestTimezoneTransition < TimezoneTransition
def initialize(offset, previous_offset, at)
super(offset, previous_offset)
@at = TimeOrDateTime.wrap(at)
end
def at
@at
end
end
def test_initialize_start_end
std = TimezoneOffset.new(-7200, 0, :TEST)
dst = TimezoneOffset.new(-7200, 3600, :TEST)
start_t = TestTimezoneTransition.new(dst, std, 1136073600)
end_t = TestTimezoneTransition.new(std, dst, 1136160000)
p = TimezonePeriod.new(start_t, end_t)
assert_same(start_t, p.start_transition)
assert_same(end_t, p.end_transition)
assert_same(dst, p.offset)
assert_equal(DateTime.new(2006,1,1,0,0,0), p.utc_start)
assert_equal(Time.utc(2006,1,1,0,0,0), p.utc_start_time)
assert_equal(DateTime.new(2006,1,2,0,0,0), p.utc_end)
assert_equal(Time.utc(2006,1,2,0,0,0), p.utc_end_time)
assert_equal(-7200, p.utc_offset)
assert_equal(3600, p.std_offset)
assert_equal(-3600, p.utc_total_offset)
assert_equal(Rational(-3600, 86400), p.utc_total_offset_rational)
assert_equal(:TEST, p.zone_identifier)
assert_equal(:TEST, p.abbreviation)
assert_equal(DateTime.new(2005,12,31,23,0,0), p.local_start)
assert_equal(Time.utc(2005,12,31,23,0,0), p.local_start_time)
assert_equal(DateTime.new(2006,1,1,23,0,0), p.local_end)
assert_equal(Time.utc(2006,1,1,23,0,0), p.local_end_time)
end
def test_initialize_start_end_offset
std = TimezoneOffset.new(-7200, 0, :TEST)
dst = TimezoneOffset.new(-7200, 3600, :TEST)
special = TimezoneOffset.new(0, 0, :SPECIAL)
start_t = TestTimezoneTransition.new(dst, std, 1136073600)
end_t = TestTimezoneTransition.new(std, dst, 1136160000)
assert_raises(ArgumentError) { TimezonePeriod.new(start_t, end_t, special) }
end
def test_initialize_start
std = TimezoneOffset.new(-7200, 0, :TEST)
dst = TimezoneOffset.new(-7200, 3600, :TEST)
start_t = TestTimezoneTransition.new(dst, std, 1136073600)
p = TimezonePeriod.new(start_t, nil)
assert_same(start_t, p.start_transition)
assert_nil(p.end_transition)
assert_same(dst, p.offset)
assert_equal(DateTime.new(2006,1,1,0,0,0), p.utc_start)
assert_equal(Time.utc(2006,1,1,0,0,0), p.utc_start_time)
assert_nil(p.utc_end)
assert_nil(p.utc_end_time)
assert_equal(-7200, p.utc_offset)
assert_equal(3600, p.std_offset)
assert_equal(-3600, p.utc_total_offset)
assert_equal(Rational(-3600, 86400), p.utc_total_offset_rational)
assert_equal(:TEST, p.zone_identifier)
assert_equal(:TEST, p.abbreviation)
assert_equal(DateTime.new(2005,12,31,23,0,0), p.local_start)
assert_equal(Time.utc(2005,12,31,23,0,0), p.local_start_time)
assert_nil(p.local_end)
assert_nil(p.local_end_time)
end
def test_initialize_start_offset
std = TimezoneOffset.new(-7200, 0, :TEST)
dst = TimezoneOffset.new(-7200, 3600, :TEST)
special = TimezoneOffset.new(0, 0, :SPECIAL)
start_t = TestTimezoneTransition.new(dst, std, 1136073600)
assert_raises(ArgumentError) { TimezonePeriod.new(start_t, nil, special) }
end
def test_initialize_end
std = TimezoneOffset.new(-7200, 0, :TEST)
dst = TimezoneOffset.new(-7200, 3600, :TEST)
end_t = TestTimezoneTransition.new(std, dst, 1136160000)
p = TimezonePeriod.new(nil, end_t)
assert_nil(p.start_transition)
assert_same(end_t, p.end_transition)
assert_same(dst, p.offset)
assert_nil(p.utc_start)
assert_nil(p.utc_start_time)
assert_equal(DateTime.new(2006,1,2,0,0,0), p.utc_end)
assert_equal(Time.utc(2006,1,2,0,0,0), p.utc_end_time)
assert_equal(-7200, p.utc_offset)
assert_equal(3600, p.std_offset)
assert_equal(-3600, p.utc_total_offset)
assert_equal(Rational(-3600, 86400), p.utc_total_offset_rational)
assert_equal(:TEST, p.zone_identifier)
assert_equal(:TEST, p.abbreviation)
assert_nil(p.local_start)
assert_nil(p.local_start_time)
assert_equal(DateTime.new(2006,1,1,23,0,0), p.local_end)
assert_equal(Time.utc(2006,1,1,23,0,0), p.local_end_time)
end
def test_initialize_end_offset
std = TimezoneOffset.new(-7200, 0, :TEST)
dst = TimezoneOffset.new(-7200, 3600, :TEST)
special = TimezoneOffset.new(0, 0, :SPECIAL)
end_t = TestTimezoneTransition.new(std, dst, 1136160000)
assert_raises(ArgumentError) { TimezonePeriod.new(nil, end_t, special) }
end
def test_initialize
assert_raises(ArgumentError) { TimezonePeriod.new(nil, nil) }
end
def test_initialize_offset
special = TimezoneOffset.new(0, 0, :SPECIAL)
p = TimezonePeriod.new(nil, nil, special)
assert_nil(p.start_transition)
assert_nil(p.end_transition)
assert_same(special, p.offset)
assert_nil(p.utc_start)
assert_nil(p.utc_start_time)
assert_nil(p.utc_end)
assert_nil(p.utc_end_time)
assert_equal(0, p.utc_offset)
assert_equal(0, p.std_offset)
assert_equal(0, p.utc_total_offset)
assert_equal(Rational(0, 86400), p.utc_total_offset_rational)
assert_equal(:SPECIAL, p.zone_identifier)
assert_equal(:SPECIAL, p.abbreviation)
assert_nil(p.local_start)
assert_nil(p.local_start_time)
assert_nil(p.local_end)
assert_nil(p.local_end_time)
end
def test_utc_total_offset_rational_after_freeze
o = TimezoneOffset.new(3600, 0, :TEST)
p = TimezonePeriod.new(nil, nil, o)
p.freeze
assert_equal(Rational(1, 24), p.utc_total_offset_rational)
end
def test_dst
p1 = TimezonePeriod.new(nil, nil, TimezoneOffset.new(-14400, 3600, :TEST))
p2 = TimezonePeriod.new(nil, nil, TimezoneOffset.new(-14400, 0, :TEST))
p3 = TimezonePeriod.new(nil, nil, TimezoneOffset.new(-14400, -3600, :TEST))
p4 = TimezonePeriod.new(nil, nil, TimezoneOffset.new(-14400, 7200, :TEST))
p5 = TimezonePeriod.new(nil, nil, TimezoneOffset.new(-14400, -7200, :TEST))
assert_equal(true, p1.dst?)
assert_equal(false, p2.dst?)
assert_equal(true, p3.dst?)
assert_equal(true, p4.dst?)
assert_equal(true, p5.dst?)
end
def test_valid_for_utc
offset = TimezoneOffset.new(-7200, 3600, :TEST)
t1 = TestTimezoneTransition.new(offset, offset, 1104541261)
t2 = TestTimezoneTransition.new(offset, offset, 1107309722)
t3 = TestTimezoneTransition.new(offset, offset, DateTime.new(1960, 1, 1, 1, 1, 1))
t4 = TestTimezoneTransition.new(offset, offset, DateTime.new(1960, 2, 2, 2, 2, 2))
p1 = TimezonePeriod.new(t1, t2)
p2 = TimezonePeriod.new(nil, t2)
p3 = TimezonePeriod.new(t1, nil)
p4 = TimezonePeriod.new(nil, nil, offset)
p5 = TimezonePeriod.new(t3, t4)
assert_equal(true, p1.valid_for_utc?(DateTime.new(2005,1,1,1,1,1)))
assert_equal(true, p1.valid_for_utc?(Time.utc(2005,2,2,2,2,1)))
assert_equal(true, p1.valid_for_utc?(1104541262))
assert_equal(true, p1.valid_for_utc?(DateTime.new(2005,2,2,2,2,0)))
assert_equal(false, p1.valid_for_utc?(DateTime.new(2005,1,1,1,1,0)))
assert_equal(false, p1.valid_for_utc?(DateTime.new(2005,2,2,2,2,3)))
assert_equal(false, p1.valid_for_utc?(DateTime.new(1960,1,1,1,1,0)))
assert_equal(false, p1.valid_for_utc?(DateTime.new(2040,1,1,1,1,0)))
assert_equal(true, p2.valid_for_utc?(DateTime.new(2005,1,1,1,1,1)))
assert_equal(true, p2.valid_for_utc?(Time.utc(2005,2,2,2,2,1)))
assert_equal(true, p2.valid_for_utc?(1104541262))
assert_equal(true, p2.valid_for_utc?(DateTime.new(2005,2,2,2,2,0)))
assert_equal(true, p2.valid_for_utc?(DateTime.new(2005,1,1,1,1,0)))
assert_equal(false, p2.valid_for_utc?(DateTime.new(2005,2,2,2,2,3)))
assert_equal(true, p2.valid_for_utc?(DateTime.new(1960,1,1,1,1,0)))
assert_equal(false, p2.valid_for_utc?(DateTime.new(2040,1,1,1,1,0)))
assert_equal(true, p3.valid_for_utc?(DateTime.new(2005,1,1,1,1,1)))
assert_equal(true, p3.valid_for_utc?(Time.utc(2005,2,2,2,2,1)))
assert_equal(true, p3.valid_for_utc?(1104541262))
assert_equal(true, p3.valid_for_utc?(DateTime.new(2005,2,2,2,2,0)))
assert_equal(false, p3.valid_for_utc?(DateTime.new(2005,1,1,1,1,0)))
assert_equal(true, p3.valid_for_utc?(DateTime.new(2005,2,2,2,2,3)))
assert_equal(false, p3.valid_for_utc?(DateTime.new(1960,1,1,1,1,0)))
assert_equal(true, p3.valid_for_utc?(DateTime.new(2040,1,1,1,1,0)))
assert_equal(true, p4.valid_for_utc?(DateTime.new(2005,1,1,1,1,1)))
assert_equal(true, p4.valid_for_utc?(Time.utc(2005,2,2,2,2,1)))
assert_equal(true, p4.valid_for_utc?(1104541262))
assert_equal(true, p4.valid_for_utc?(DateTime.new(2005,2,2,2,2,0)))
assert_equal(true, p4.valid_for_utc?(DateTime.new(2005,1,1,1,1,0)))
assert_equal(true, p4.valid_for_utc?(DateTime.new(2005,2,2,2,2,3)))
assert_equal(true, p4.valid_for_utc?(DateTime.new(1960,1,1,1,1,0)))
assert_equal(true, p4.valid_for_utc?(DateTime.new(2040,1,1,1,1,0)))
assert_equal(false, p5.valid_for_utc?(Time.utc(2005,1,1,1,1,1)))
assert_equal(false, p5.valid_for_utc?(1104541262))
end
def test_utc_after_start
offset = TimezoneOffset.new(-7200, 3600, :TEST)
t1 = TestTimezoneTransition.new(offset, offset, 1104541261)
t2 = TestTimezoneTransition.new(offset, offset, 1107309722)
t3 = TestTimezoneTransition.new(offset, offset, DateTime.new(1945, 1, 1, 1, 1, 1))
t4 = TestTimezoneTransition.new(offset, offset, DateTime.new(1945, 2, 2, 2, 2, 2))
p1 = TimezonePeriod.new(t1, t2)
p2 = TimezonePeriod.new(nil, t2)
p3 = TimezonePeriod.new(t3, t4)
assert_equal(true, p1.utc_after_start?(DateTime.new(2005,1,1,1,1,1)))
assert_equal(true, p1.utc_after_start?(Time.utc(2005,1,1,1,1,2)))
assert_equal(false, p1.utc_after_start?(1104541260))
assert_equal(true, p1.utc_after_start?(DateTime.new(2045,1,1,1,1,0)))
assert_equal(false, p1.utc_after_start?(DateTime.new(1955,1,1,1,1,0)))
assert_equal(true, p2.utc_after_start?(DateTime.new(2005,1,1,1,1,1)))
assert_equal(true, p2.utc_after_start?(Time.utc(2005,1,1,1,1,2)))
assert_equal(true, p2.utc_after_start?(1104541260))
assert_equal(true, p3.utc_after_start?(Time.utc(2005,1,2,1,1,1)))
assert_equal(true, p3.utc_after_start?(1104627661))
end
def test_utc_before_end
offset = TimezoneOffset.new(-7200, 3600, :TEST)
t1 = TestTimezoneTransition.new(offset, offset, 1104541261)
t2 = TestTimezoneTransition.new(offset, offset, 1107309722)
t3 = TestTimezoneTransition.new(offset, offset, DateTime.new(1945, 1, 1, 1, 1, 1))
t4 = TestTimezoneTransition.new(offset, offset, DateTime.new(1945, 2, 2, 2, 2, 2))
p1 = TimezonePeriod.new(t1, t2)
p2 = TimezonePeriod.new(t1, nil)
p3 = TimezonePeriod.new(t3, t4)
assert_equal(true, p1.utc_before_end?(DateTime.new(2005,2,2,2,2,1)))
assert_equal(true, p1.utc_before_end?(Time.utc(2005,2,2,2,2,0)))
assert_equal(false, p1.utc_before_end?(1107309723))
assert_equal(false, p1.utc_before_end?(DateTime.new(2045,1,1,1,1,0)))
assert_equal(true, p1.utc_before_end?(DateTime.new(1955,1,1,1,1,0)))
assert_equal(true, p2.utc_before_end?(DateTime.new(2005,2,2,2,2,1)))
assert_equal(true, p2.utc_before_end?(Time.utc(2005,2,2,2,2,0)))
assert_equal(true, p2.utc_before_end?(1107309723))
assert_equal(false, p3.utc_before_end?(Time.utc(2005,1,2,1,1,1)))
assert_equal(false, p3.utc_before_end?(1104627661))
end
def test_valid_for_local
offset = TimezoneOffset.new(-7200, 3600, :TEST)
t1 = TestTimezoneTransition.new(offset, offset, 1104544861)
t2 = TestTimezoneTransition.new(offset, offset, 1107313322)
t3 = TestTimezoneTransition.new(offset, offset, 1104544861)
t4 = TestTimezoneTransition.new(offset, offset, DateTime.new(1960, 1, 1, 1, 1, 1))
t5 = TestTimezoneTransition.new(offset, offset, DateTime.new(1960, 2, 2, 2, 2, 2))
p1 = TimezonePeriod.new(t1, t2)
p2 = TimezonePeriod.new(nil, t2)
p3 = TimezonePeriod.new(t3, nil)
p4 = TimezonePeriod.new(nil, nil, offset)
p5 = TimezonePeriod.new(t4, t5)
assert_equal(true, p1.valid_for_local?(DateTime.new(2005,1,1,1,1,1)))
assert_equal(true, p1.valid_for_local?(Time.utc(2005,2,2,2,2,1)))
assert_equal(true, p1.valid_for_local?(1104541262))
assert_equal(true, p1.valid_for_local?(DateTime.new(2005,2,2,2,2,0)))
assert_equal(false, p1.valid_for_local?(DateTime.new(2005,1,1,1,1,0)))
assert_equal(false, p1.valid_for_local?(DateTime.new(2005,2,2,2,2,3)))
assert_equal(false, p1.valid_for_local?(DateTime.new(1960,1,1,1,1,0)))
assert_equal(false, p1.valid_for_local?(DateTime.new(2040,1,1,1,1,0)))
assert_equal(true, p2.valid_for_local?(DateTime.new(2005,1,1,1,1,1)))
assert_equal(true, p2.valid_for_local?(DateTime.new(2005,2,2,2,2,1)))
assert_equal(true, p2.valid_for_local?(1104541262))
assert_equal(true, p2.valid_for_local?(DateTime.new(2005,2,2,2,2,0)))
assert_equal(true, p2.valid_for_local?(DateTime.new(2005,1,1,1,1,0)))
assert_equal(false, p2.valid_for_local?(DateTime.new(2005,2,2,2,2,3)))
assert_equal(true, p2.valid_for_local?(DateTime.new(1960,1,1,1,1,0)))
assert_equal(false, p2.valid_for_local?(DateTime.new(2040,1,1,1,1,0)))
assert_equal(true, p3.valid_for_local?(DateTime.new(2005,1,1,1,1,1)))
assert_equal(true, p3.valid_for_local?(DateTime.new(2005,2,2,2,2,1)))
assert_equal(true, p3.valid_for_local?(1104541262))
assert_equal(true, p3.valid_for_local?(DateTime.new(2005,2,2,2,2,0)))
assert_equal(false, p3.valid_for_local?(DateTime.new(2005,1,1,1,1,0)))
assert_equal(true, p3.valid_for_local?(DateTime.new(2005,2,2,2,2,3)))
assert_equal(false, p3.valid_for_local?(DateTime.new(1960,1,1,1,1,0)))
assert_equal(true, p3.valid_for_local?(DateTime.new(2040,1,1,1,1,0)))
assert_equal(true, p4.valid_for_local?(DateTime.new(2005,1,1,1,1,1)))
assert_equal(true, p4.valid_for_local?(DateTime.new(2005,2,2,2,2,1)))
assert_equal(true, p4.valid_for_local?(1104541262))
assert_equal(true, p4.valid_for_local?(DateTime.new(2005,2,2,2,2,0)))
assert_equal(true, p4.valid_for_local?(DateTime.new(2005,1,1,1,1,0)))
assert_equal(true, p4.valid_for_local?(DateTime.new(2005,2,2,2,2,3)))
assert_equal(true, p4.valid_for_local?(DateTime.new(1960,1,1,1,1,0)))
assert_equal(true, p4.valid_for_local?(DateTime.new(2040,1,1,1,1,0)))
assert_equal(false, p5.valid_for_utc?(Time.utc(2005,1,1,1,1,1)))
assert_equal(false, p5.valid_for_utc?(1104541262))
end
def test_local_after_start
offset = TimezoneOffset.new(-7200, 3600, :TEST)
t1 = TestTimezoneTransition.new(offset, offset, 1104544861)
t2 = TestTimezoneTransition.new(offset, offset, 1107313322)
t3 = TestTimezoneTransition.new(offset, offset, DateTime.new(1945, 1, 1, 1, 1, 1))
t4 = TestTimezoneTransition.new(offset, offset, DateTime.new(1945, 2, 2, 2, 2, 2))
p1 = TimezonePeriod.new(t1, t2)
p2 = TimezonePeriod.new(nil, t2)
p3 = TimezonePeriod.new(t3, t4)
assert_equal(true, p1.local_after_start?(DateTime.new(2005,1,1,1,1,1)))
assert_equal(true, p1.local_after_start?(Time.utc(2005,1,1,1,1,2)))
assert_equal(false, p1.local_after_start?(1104541260))
assert_equal(true, p1.local_after_start?(DateTime.new(2045,1,1,1,1,0)))
assert_equal(false, p1.local_after_start?(DateTime.new(1955,1,1,1,1,0)))
assert_equal(true, p2.local_after_start?(DateTime.new(2005,1,1,1,1,1)))
assert_equal(true, p2.local_after_start?(Time.utc(2005,1,1,1,1,2)))
assert_equal(true, p2.local_after_start?(1104541260))
assert_equal(true, p3.local_after_start?(Time.utc(2005,1,2,1,1,1)))
assert_equal(true, p3.local_after_start?(1104627661))
end
def test_local_before_end
offset = TimezoneOffset.new(-7200, 3600, :TEST)
t1 = TestTimezoneTransition.new(offset, offset, 1104544861)
t2 = TestTimezoneTransition.new(offset, offset, 1107313322)
t3 = TestTimezoneTransition.new(offset, offset, DateTime.new(1945, 1, 1, 1, 1, 1))
t4 = TestTimezoneTransition.new(offset, offset, DateTime.new(1945, 2, 2, 2, 2, 2))
p1 = TimezonePeriod.new(t1, t2)
p2 = TimezonePeriod.new(t1, nil)
p3 = TimezonePeriod.new(t3, t4)
assert_equal(true, p1.local_before_end?(DateTime.new(2005,2,2,2,2,1)))
assert_equal(true, p1.local_before_end?(Time.utc(2005,2,2,2,2,0)))
assert_equal(false, p1.local_before_end?(1107309723))
assert_equal(false, p1.local_before_end?(DateTime.new(2045,1,1,1,1,0)))
assert_equal(true, p1.local_before_end?(DateTime.new(1955,1,1,1,1,0)))
assert_equal(true, p2.local_before_end?(DateTime.new(2005,2,2,2,2,1)))
assert_equal(true, p2.local_before_end?(Time.utc(2005,2,2,2,2,0)))
assert_equal(true, p2.local_before_end?(1107309723))
assert_equal(false, p3.local_before_end?(Time.utc(2005,1,2,1,1,1)))
assert_equal(false, p3.local_before_end?(1104627661))
end
def test_to_local
p1 = TimezonePeriod.new(nil, nil, TimezoneOffset.new(-14400, 3600, :TEST))
p2 = TimezonePeriod.new(nil, nil, TimezoneOffset.new(-14400, 0, :TEST))
p3 = TimezonePeriod.new(nil, nil, TimezoneOffset.new(7200, 3600, :TEST))
assert_equal(DateTime.new(2005,1,19,22,0,0), p1.to_local(DateTime.new(2005,1,20,1,0,0)))
assert_equal(DateTime.new(2005,1,19,22,0,0 + Rational(512,1000)), p1.to_local(DateTime.new(2005,1,20,1,0,0 + Rational(512,1000))))
assert_equal(Time.utc(2005,1,19,21,0,0), p2.to_local(Time.utc(2005,1,20,1,0,0)))
assert_equal(Time.utc(2005,1,19,21,0,0,512000), p2.to_local(Time.utc(2005,1,20,1,0,0,512000)))
assert_equal(1106193600, p3.to_local(1106182800))
end
def test_to_utc
p1 = TimezonePeriod.new(nil, nil, TimezoneOffset.new(-14400, 3600, :TEST))
p2 = TimezonePeriod.new(nil, nil, TimezoneOffset.new(-14400, 0, :TEST))
p3 = TimezonePeriod.new(nil, nil, TimezoneOffset.new(7200, 3600, :TEST))
assert_equal(DateTime.new(2005,1,20,4,0,0), p1.to_utc(DateTime.new(2005,1,20,1,0,0)))
assert_equal(DateTime.new(2005,1,20,4,0,0 + Rational(571,1000)), p1.to_utc(DateTime.new(2005,1,20,1,0,0 + Rational(571,1000))))
assert_equal(Time.utc(2005,1,20,5,0,0), p2.to_utc(Time.utc(2005,1,20,1,0,0)))
assert_equal(Time.utc(2005,1,20,5,0,0,571000), p2.to_utc(Time.utc(2005,1,20,1,0,0,571000)))
assert_equal(1106172000, p3.to_utc(1106182800))
end
def test_time_boundary_start
o1 = TimezoneOffset.new(-3600, 0, :TEST)
o2 = TimezoneOffset.new(-3600, 3600, :TEST)
t1 = TestTimezoneTransition.new(o1, o2, 0)
p1 = TimezonePeriod.new(t1, nil)
assert_equal(DateTime.new(1969,12,31,23,0,0), p1.local_start)
# Conversion to Time will fail on systems that don't support negative times.
if RubyCoreSupport.time_supports_negative
assert_equal(Time.utc(1969,12,31,23,0,0), p1.local_start_time)
end
end
def test_time_boundary_end
o1 = TimezoneOffset.new(0, 3600, :TEST)
o2 = TimezoneOffset.new(0, 0, :TEST)
t1 = TestTimezoneTransition.new(o2, o1, 2147482800)
p1 = TimezonePeriod.new(nil, t1)
assert_equal(DateTime.new(2038,1,19,4,0,0), p1.local_end)
# Conversion to Time will fail on systems that don't support 64-bit times
if RubyCoreSupport.time_supports_64bit
assert_equal(Time.utc(2038,1,19,4,0,0), p1.local_end_time)
end
end
def test_equality
o1 = TimezoneOffset.new(0, 3600, :TEST)
o2 = TimezoneOffset.new(0, 0, :TEST)
t1 = TestTimezoneTransition.new(o1, o2, 1149368400)
t2 = TestTimezoneTransition.new(o1, o2, DateTime.new(2006, 6, 3, 21, 0, 0))
t3 = TestTimezoneTransition.new(o1, o2, 1149454800)
t4 = TestTimezoneTransition.new(o1, o2, 1149541200)
p1 = TimezonePeriod.new(t1, t3)
p2 = TimezonePeriod.new(t1, t3)
p3 = TimezonePeriod.new(t2, t3)
p4 = TimezonePeriod.new(t3, nil)
p5 = TimezonePeriod.new(t3, nil)
p6 = TimezonePeriod.new(t4, nil)
p7 = TimezonePeriod.new(nil, t3)
p8 = TimezonePeriod.new(nil, t3)
p9 = TimezonePeriod.new(nil, t4)
p10 = TimezonePeriod.new(nil, nil, o1)
p11 = TimezonePeriod.new(nil, nil, o1)
p12 = TimezonePeriod.new(nil, nil, o2)
assert_equal(true, p1 == p1)
assert_equal(true, p1 == p2)
assert_equal(true, p1 == p3)
assert_equal(false, p1 == p4)
assert_equal(false, p1 == p5)
assert_equal(false, p1 == p6)
assert_equal(false, p1 == p7)
assert_equal(false, p1 == p8)
assert_equal(false, p1 == p9)
assert_equal(false, p1 == p10)
assert_equal(false, p1 == p11)
assert_equal(false, p1 == p12)
assert_equal(false, p1 == Object.new)
assert_equal(true, p4 == p4)
assert_equal(true, p4 == p5)
assert_equal(false, p4 == p6)
assert_equal(false, p4 == Object.new)
assert_equal(true, p7 == p7)
assert_equal(true, p7 == p8)
assert_equal(false, p7 == p9)
assert_equal(false, p7 == Object.new)
assert_equal(true, p10 == p10)
assert_equal(true, p10 == p11)
assert_equal(false, p10 == p12)
assert_equal(false, p10 == Object.new)
end
def test_eql
o1 = TimezoneOffset.new(0, 3600, :TEST)
o2 = TimezoneOffset.new(0, 0, :TEST)
t1 = TestTimezoneTransition.new(o1, o2, 1149368400)
t2 = TestTimezoneTransition.new(o1, o2, DateTime.new(2006, 6, 3, 21, 0, 0))
t3 = TestTimezoneTransition.new(o1, o2, 1149454800)
t4 = TestTimezoneTransition.new(o1, o2, 1149541200)
p1 = TimezonePeriod.new(t1, t3)
p2 = TimezonePeriod.new(t1, t3)
p3 = TimezonePeriod.new(t2, t3)
p4 = TimezonePeriod.new(t3, nil)
p5 = TimezonePeriod.new(t3, nil)
p6 = TimezonePeriod.new(t4, nil)
p7 = TimezonePeriod.new(nil, t3)
p8 = TimezonePeriod.new(nil, t3)
p9 = TimezonePeriod.new(nil, t4)
p10 = TimezonePeriod.new(nil, nil, o1)
p11 = TimezonePeriod.new(nil, nil, o1)
p12 = TimezonePeriod.new(nil, nil, o2)
assert_equal(true, p1.eql?(p1))
assert_equal(true, p1.eql?(p2))
assert_equal(false, p1.eql?(p3))
assert_equal(false, p1.eql?(p4))
assert_equal(false, p1.eql?(p5))
assert_equal(false, p1.eql?(p6))
assert_equal(false, p1.eql?(p7))
assert_equal(false, p1.eql?(p8))
assert_equal(false, p1.eql?(p9))
assert_equal(false, p1.eql?(p10))
assert_equal(false, p1.eql?(p11))
assert_equal(false, p1.eql?(p12))
assert_equal(false, p1.eql?(Object.new))
assert_equal(true, p4.eql?(p4))
assert_equal(true, p4.eql?(p5))
assert_equal(false, p4.eql?(p6))
assert_equal(false, p4.eql?(Object.new))
assert_equal(true, p7.eql?(p7))
assert_equal(true, p7.eql?(p8))
assert_equal(false, p7.eql?(p9))
assert_equal(false, p7.eql?(Object.new))
assert_equal(true, p10.eql?(p10))
assert_equal(true, p10.eql?(p11))
assert_equal(false, p10.eql?(p12))
assert_equal(false, p10.eql?(Object.new))
end
def test_hash
o1 = TimezoneOffset.new(0, 3600, :TEST)
o2 = TimezoneOffset.new(0, 0, :TEST)
t1 = TestTimezoneTransition.new(o1, o2, 1149368400)
t2 = TestTimezoneTransition.new(o1, o2, DateTime.new(2006, 6, 3, 21, 0, 0))
t3 = TestTimezoneTransition.new(o1, o2, 1149454800)
t4 = TestTimezoneTransition.new(o1, o2, 1149541200)
p1 = TimezonePeriod.new(t1, t3)
p2 = TimezonePeriod.new(t2, nil)
p3 = TimezonePeriod.new(nil, t4)
p4 = TimezonePeriod.new(nil, nil, o1)
assert_equal(t1.hash ^ t3.hash, p1.hash)
assert_equal(t2.hash ^ nil.hash, p2.hash)
assert_equal(nil.hash ^ t4.hash, p3.hash)
assert_equal(nil.hash ^ nil.hash ^ o1.hash, p4.hash)
end
end