tzinfo 1.0.1 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of tzinfo might be problematic. Click here for more details.

Files changed (56) hide show
  1. checksums.yaml +4 -4
  2. checksums.yaml.gz.sig +0 -0
  3. data.tar.gz.sig +0 -0
  4. data/.yardopts +6 -0
  5. data/{CHANGES → CHANGES.md} +121 -50
  6. data/{README → README.md} +48 -34
  7. data/Rakefile +45 -22
  8. data/lib/tzinfo.rb +7 -2
  9. data/lib/tzinfo/country.rb +23 -1
  10. data/lib/tzinfo/country_index_definition.rb +6 -1
  11. data/lib/tzinfo/country_timezone.rb +9 -1
  12. data/lib/tzinfo/data_source.rb +26 -5
  13. data/lib/tzinfo/data_timezone.rb +30 -2
  14. data/lib/tzinfo/data_timezone_info.rb +26 -0
  15. data/lib/tzinfo/info_timezone.rb +3 -1
  16. data/lib/tzinfo/linked_timezone.rb +30 -1
  17. data/lib/tzinfo/offset_rationals.rb +5 -3
  18. data/lib/tzinfo/ruby_core_support.rb +2 -0
  19. data/lib/tzinfo/ruby_country_info.rb +14 -0
  20. data/lib/tzinfo/ruby_data_source.rb +5 -0
  21. data/lib/tzinfo/time_or_datetime.rb +16 -1
  22. data/lib/tzinfo/timezone.rb +107 -5
  23. data/lib/tzinfo/timezone_definition.rb +5 -1
  24. data/lib/tzinfo/timezone_index_definition.rb +7 -1
  25. data/lib/tzinfo/{timezone_offset_info.rb → timezone_offset.rb} +12 -10
  26. data/lib/tzinfo/timezone_period.rb +19 -15
  27. data/lib/tzinfo/timezone_proxy.rb +5 -1
  28. data/lib/tzinfo/timezone_transition.rb +136 -0
  29. data/lib/tzinfo/{timezone_transition_info.rb → timezone_transition_definition.rb} +21 -57
  30. data/lib/tzinfo/transition_data_timezone_info.rb +81 -8
  31. data/lib/tzinfo/zoneinfo_country_info.rb +7 -0
  32. data/lib/tzinfo/zoneinfo_data_source.rb +104 -57
  33. data/lib/tzinfo/zoneinfo_timezone_info.rb +18 -10
  34. data/test/tc_country.rb +39 -1
  35. data/test/tc_data_timezone.rb +28 -5
  36. data/test/tc_linked_timezone.rb +24 -3
  37. data/test/tc_ruby_data_source.rb +22 -2
  38. data/test/tc_time_or_datetime.rb +3 -3
  39. data/test/tc_timezone.rb +364 -117
  40. data/test/tc_timezone_london.rb +25 -0
  41. data/test/tc_timezone_melbourne.rb +24 -0
  42. data/test/tc_timezone_new_york.rb +24 -0
  43. data/test/{tc_timezone_offset_info.rb → tc_timezone_offset.rb} +27 -27
  44. data/test/tc_timezone_period.rb +113 -90
  45. data/test/tc_timezone_transition.rb +374 -0
  46. data/test/tc_timezone_transition_definition.rb +306 -0
  47. data/test/tc_transition_data_timezone_info.rb +143 -43
  48. data/test/tc_zoneinfo_data_source.rb +69 -5
  49. data/test/tc_zoneinfo_timezone_info.rb +63 -20
  50. data/test/test_utils.rb +27 -7
  51. data/tzinfo.gemspec +21 -0
  52. metadata +61 -38
  53. metadata.gz.sig +3 -0
  54. data/test/tc_timezone_transition_info.rb +0 -471
  55. data/test/zoneinfo/UTC +0 -0
  56. data/test/zoneinfo/localtime +0 -0
@@ -70,6 +70,18 @@ class TCTimezoneLondon < Test::Unit::TestCase
70
70
  assert_equal(0, tz.period_for_local(DateTime.new(2004,10,31,1,59,59), false).utc_total_offset)
71
71
  assert_equal(3600, tz.period_for_local(DateTime.new(2004,10,31,1,0,0), true).utc_total_offset)
72
72
  assert_equal(0, tz.period_for_local(DateTime.new(2004,10,31,1,0,0), false).utc_total_offset)
73
+
74
+ transitions = tz.transitions_up_to(DateTime.new(2005,1,1,0,0,0), DateTime.new(2004,1,1,0,0,0))
75
+ assert_equal(2, transitions.length)
76
+ assert_equal(TimeOrDateTime.new(DateTime.new(2004,3,28,1,0,0)), transitions[0].at)
77
+ assert_equal(TimezoneOffset.new(0, 0, :GMT), transitions[0].previous_offset)
78
+ assert_equal(TimezoneOffset.new(0, 3600, :BST), transitions[0].offset)
79
+ assert_equal(TimeOrDateTime.new(DateTime.new(2004,10,31,1,0,0)), transitions[1].at)
80
+ assert_equal(TimezoneOffset.new(0, 3600, :BST), transitions[1].previous_offset)
81
+ assert_equal(TimezoneOffset.new(0, 0, :GMT), transitions[1].offset)
82
+
83
+ offsets = tz.offsets_up_to(DateTime.new(2005,1,1,0,0,0), DateTime.new(2004,1,1,0,0,0))
84
+ assert_array_same_items([TimezoneOffset.new(0, 0, :GMT), TimezoneOffset.new(0, 3600, :BST)], offsets)
73
85
  end
74
86
 
75
87
  def test_1961
@@ -122,6 +134,19 @@ class TCTimezoneLondon < Test::Unit::TestCase
122
134
  assert_equal(0, tz.period_for_local(DateTime.new(1961,10,29,2,59,59), false).utc_total_offset)
123
135
  assert_equal(3600, tz.period_for_local(DateTime.new(1961,10,29,2,0,0), true).utc_total_offset)
124
136
  assert_equal(0, tz.period_for_local(DateTime.new(1961,10,29,2,0,0), false).utc_total_offset)
137
+
138
+
139
+ transitions = tz.transitions_up_to(DateTime.new(1962,1,1,0,0,0), DateTime.new(1961,1,1,0,0,0))
140
+ assert_equal(2, transitions.length)
141
+ assert_equal(TimeOrDateTime.new(DateTime.new(1961,3,26,2,0,0)), transitions[0].at)
142
+ assert_equal(TimezoneOffset.new(0, 0, :GMT), transitions[0].previous_offset)
143
+ assert_equal(TimezoneOffset.new(0, 3600, :BST), transitions[0].offset)
144
+ assert_equal(TimeOrDateTime.new(DateTime.new(1961,10,29,2,0,0)), transitions[1].at)
145
+ assert_equal(TimezoneOffset.new(0, 3600, :BST), transitions[1].previous_offset)
146
+ assert_equal(TimezoneOffset.new(0, 0, :GMT), transitions[1].offset)
147
+
148
+ offsets = tz.offsets_up_to(DateTime.new(1962,1,1,0,0,0), DateTime.new(1961,1,1,0,0,0))
149
+ assert_array_same_items([TimezoneOffset.new(0, 0, :GMT), TimezoneOffset.new(0, 3600, :BST)], offsets)
125
150
  end
126
151
  end
127
152
 
@@ -70,6 +70,18 @@ class TCTimezoneMelbourne < Test::Unit::TestCase
70
70
  assert_equal(36000, tz.period_for_local(DateTime.new(2004,3,28,2,0,0), false).utc_total_offset)
71
71
  assert_equal(36000, tz.period_for_local(DateTime.new(2004,10,31,1,59,59)).utc_total_offset)
72
72
  assert_equal(39600, tz.period_for_local(DateTime.new(2004,10,31,3,0,0)).utc_total_offset)
73
+
74
+ transitions = tz.transitions_up_to(DateTime.new(2005,1,1,0,0,0), DateTime.new(2004,1,1,0,0,0))
75
+ assert_equal(2, transitions.length)
76
+ assert_equal(TimeOrDateTime.new(DateTime.new(2004,3,27,16,0,0)), transitions[0].at)
77
+ assert_equal(TimezoneOffset.new(36000, 3600, :EST), transitions[0].previous_offset)
78
+ assert_equal(TimezoneOffset.new(36000, 0, :EST), transitions[0].offset)
79
+ assert_equal(TimeOrDateTime.new(DateTime.new(2004,10,30,16,0,0)), transitions[1].at)
80
+ assert_equal(TimezoneOffset.new(36000, 0, :EST), transitions[1].previous_offset)
81
+ assert_equal(TimezoneOffset.new(36000, 3600, :EST), transitions[1].offset)
82
+
83
+ offsets = tz.offsets_up_to(DateTime.new(2005,1,1,0,0,0), DateTime.new(2004,1,1,0,0,0))
84
+ assert_array_same_items([TimezoneOffset.new(36000, 0, :EST), TimezoneOffset.new(36000, 3600, :EST)], offsets)
73
85
  end
74
86
 
75
87
  def test_1942
@@ -122,6 +134,18 @@ class TCTimezoneMelbourne < Test::Unit::TestCase
122
134
  assert_equal(36000, tz.period_for_local(DateTime.new(1942,3,29,1,0,0), false).utc_total_offset)
123
135
  assert_equal(36000, tz.period_for_local(DateTime.new(1942,9,27,1,59,59)).utc_total_offset)
124
136
  assert_equal(39600, tz.period_for_local(DateTime.new(1942,9,27,3,0,0)).utc_total_offset)
137
+
138
+ transitions = tz.transitions_up_to(DateTime.new(1943,1,1,0,0,0), DateTime.new(1942,1,1,0,0,0))
139
+ assert_equal(2, transitions.length)
140
+ assert_equal(TimeOrDateTime.new(DateTime.new(1942,3,28,15,0,0)), transitions[0].at)
141
+ assert_equal(TimezoneOffset.new(36000, 3600, :EST), transitions[0].previous_offset)
142
+ assert_equal(TimezoneOffset.new(36000, 0, :EST), transitions[0].offset)
143
+ assert_equal(TimeOrDateTime.new(DateTime.new(1942,9,26,16,0,0)), transitions[1].at)
144
+ assert_equal(TimezoneOffset.new(36000, 0, :EST), transitions[1].previous_offset)
145
+ assert_equal(TimezoneOffset.new(36000, 3600, :EST), transitions[1].offset)
146
+
147
+ offsets = tz.offsets_up_to(DateTime.new(1943,1,1,0,0,0), DateTime.new(1942,1,1,0,0,0))
148
+ assert_array_same_items([TimezoneOffset.new(36000, 0, :EST), TimezoneOffset.new(36000, 3600, :EST)], offsets)
125
149
  end
126
150
  end
127
151
 
@@ -70,6 +70,18 @@ class TCTimezoneNewYork < Test::Unit::TestCase
70
70
  assert_equal(-18000, tz.period_for_local(DateTime.new(2004,10,31,1,59,59), false).utc_total_offset)
71
71
  assert_equal(-14400, tz.period_for_local(DateTime.new(2004,10,31,1,0,0), true).utc_total_offset)
72
72
  assert_equal(-18000, tz.period_for_local(DateTime.new(2004,10,31,1,0,0), false).utc_total_offset)
73
+
74
+ transitions = tz.transitions_up_to(DateTime.new(2005,1,1,0,0,0), DateTime.new(2004,1,1,0,0,0))
75
+ assert_equal(2, transitions.length)
76
+ assert_equal(TimeOrDateTime.new(DateTime.new(2004,4,4,7,0,0)), transitions[0].at)
77
+ assert_equal(TimezoneOffset.new(-18000, 0, :EST), transitions[0].previous_offset)
78
+ assert_equal(TimezoneOffset.new(-18000, 3600, :EDT), transitions[0].offset)
79
+ assert_equal(TimeOrDateTime.new(DateTime.new(2004,10,31,6,0,0)), transitions[1].at)
80
+ assert_equal(TimezoneOffset.new(-18000, 3600, :EDT), transitions[1].previous_offset)
81
+ assert_equal(TimezoneOffset.new(-18000, 0, :EST), transitions[1].offset)
82
+
83
+ offsets = tz.offsets_up_to(DateTime.new(2005,1,1,0,0,0), DateTime.new(2004,1,1,0,0,0))
84
+ assert_array_same_items([TimezoneOffset.new(-18000, 0, :EST), TimezoneOffset.new(-18000, 3600, :EDT)], offsets)
73
85
  end
74
86
 
75
87
  def test_1957
@@ -122,6 +134,18 @@ class TCTimezoneNewYork < Test::Unit::TestCase
122
134
  assert_equal(-18000, tz.period_for_local(DateTime.new(1957,10,27,1,59,59), false).utc_total_offset)
123
135
  assert_equal(-14400, tz.period_for_local(DateTime.new(1957,10,27,1,0,0), true).utc_total_offset)
124
136
  assert_equal(-18000, tz.period_for_local(DateTime.new(1957,10,27,1,0,0), false).utc_total_offset)
137
+
138
+ transitions = tz.transitions_up_to(DateTime.new(1958,1,1,0,0,0), DateTime.new(1957,1,1,0,0,0))
139
+ assert_equal(2, transitions.length)
140
+ assert_equal(TimeOrDateTime.new(DateTime.new(1957,4,28,7,0,0)), transitions[0].at)
141
+ assert_equal(TimezoneOffset.new(-18000, 0, :EST), transitions[0].previous_offset)
142
+ assert_equal(TimezoneOffset.new(-18000, 3600, :EDT), transitions[0].offset)
143
+ assert_equal(TimeOrDateTime.new(DateTime.new(1957,10,27,6,0,0)), transitions[1].at)
144
+ assert_equal(TimezoneOffset.new(-18000, 3600, :EDT), transitions[1].previous_offset)
145
+ assert_equal(TimezoneOffset.new(-18000, 0, :EST), transitions[1].offset)
146
+
147
+ offsets = tz.offsets_up_to(DateTime.new(1958,1,1,0,0,0), DateTime.new(1957,1,1,0,0,0))
148
+ assert_array_same_items([TimezoneOffset.new(-18000, 0, :EST), TimezoneOffset.new(-18000, 3600, :EDT)], offsets)
125
149
  end
126
150
  end
127
151
 
@@ -24,51 +24,51 @@ require File.join(File.expand_path(File.dirname(__FILE__)), 'test_utils')
24
24
 
25
25
  include TZInfo
26
26
 
27
- class TCTimezoneOffsetInfo < Test::Unit::TestCase
27
+ class TCTimezoneOffset < Test::Unit::TestCase
28
28
 
29
29
  def test_utc_offset
30
- o1 = TimezoneOffsetInfo.new(18000, 0, :TEST)
31
- o2 = TimezoneOffsetInfo.new(-3600, 3600, :TEST2)
30
+ o1 = TimezoneOffset.new(18000, 0, :TEST)
31
+ o2 = TimezoneOffset.new(-3600, 3600, :TEST2)
32
32
 
33
33
  assert_equal(18000, o1.utc_offset)
34
34
  assert_equal(-3600, o2.utc_offset)
35
35
  end
36
36
 
37
37
  def test_std_offset
38
- o1 = TimezoneOffsetInfo.new(18000, 0, :TEST)
39
- o2 = TimezoneOffsetInfo.new(-3600, 3600, :TEST2)
38
+ o1 = TimezoneOffset.new(18000, 0, :TEST)
39
+ o2 = TimezoneOffset.new(-3600, 3600, :TEST2)
40
40
 
41
41
  assert_equal(0, o1.std_offset)
42
42
  assert_equal(3600, o2.std_offset)
43
43
  end
44
44
 
45
45
  def test_utc_total_offset
46
- o1 = TimezoneOffsetInfo.new(18000, 0, :TEST)
47
- o2 = TimezoneOffsetInfo.new(-3600, 3600, :TEST2)
46
+ o1 = TimezoneOffset.new(18000, 0, :TEST)
47
+ o2 = TimezoneOffset.new(-3600, 3600, :TEST2)
48
48
 
49
49
  assert_equal(18000, o1.utc_total_offset)
50
50
  assert_equal(0, o2.utc_total_offset)
51
51
  end
52
52
 
53
53
  def test_abbreviation
54
- o1 = TimezoneOffsetInfo.new(18000, 0, :TEST)
55
- o2 = TimezoneOffsetInfo.new(-3600, 3600, :TEST2)
54
+ o1 = TimezoneOffset.new(18000, 0, :TEST)
55
+ o2 = TimezoneOffset.new(-3600, 3600, :TEST2)
56
56
 
57
57
  assert_equal(:TEST, o1.abbreviation)
58
58
  assert_equal(:TEST2, o2.abbreviation)
59
59
  end
60
60
 
61
61
  def test_dst
62
- o1 = TimezoneOffsetInfo.new(18000, 0, :TEST)
63
- o2 = TimezoneOffsetInfo.new(-3600, 3600, :TEST2)
62
+ o1 = TimezoneOffset.new(18000, 0, :TEST)
63
+ o2 = TimezoneOffset.new(-3600, 3600, :TEST2)
64
64
 
65
65
  assert_equal(false, o1.dst?)
66
66
  assert_equal(true, o2.dst?)
67
67
  end
68
68
 
69
69
  def test_to_local
70
- o1 = TimezoneOffsetInfo.new(18000, 0, :TEST)
71
- o2 = TimezoneOffsetInfo.new(-3600, 3600, :TEST2)
70
+ o1 = TimezoneOffset.new(18000, 0, :TEST)
71
+ o2 = TimezoneOffset.new(-3600, 3600, :TEST2)
72
72
 
73
73
  assert_equal(1148949080, o1.to_local(1148931080))
74
74
  assert_equal(Time.utc(2006, 5, 30, 0, 31, 20), o1.to_local(Time.utc(2006, 5, 29, 19, 31, 20)))
@@ -88,8 +88,8 @@ class TCTimezoneOffsetInfo < Test::Unit::TestCase
88
88
  end
89
89
 
90
90
  def test_to_utc
91
- o1 = TimezoneOffsetInfo.new(18000, 0, :TEST)
92
- o2 = TimezoneOffsetInfo.new(-3600, 3600, :TEST2)
91
+ o1 = TimezoneOffset.new(18000, 0, :TEST)
92
+ o2 = TimezoneOffset.new(-3600, 3600, :TEST2)
93
93
 
94
94
  assert_equal(1148913080, o1.to_utc(1148931080))
95
95
  assert_equal(Time.utc(2006, 5, 29, 14, 31, 20), o1.to_utc(Time.utc(2006, 5, 29, 19, 31, 20)))
@@ -109,11 +109,11 @@ class TCTimezoneOffsetInfo < Test::Unit::TestCase
109
109
  end
110
110
 
111
111
  def test_equality
112
- o1 = TimezoneOffsetInfo.new(18000, 0, :TEST)
113
- o2 = TimezoneOffsetInfo.new(18000, 0, :TEST)
114
- o3 = TimezoneOffsetInfo.new(18001, 0, :TEST)
115
- o4 = TimezoneOffsetInfo.new(18000, 1, :TEST)
116
- o5 = TimezoneOffsetInfo.new(18000, 0, :TEST2)
112
+ o1 = TimezoneOffset.new(18000, 0, :TEST)
113
+ o2 = TimezoneOffset.new(18000, 0, :TEST)
114
+ o3 = TimezoneOffset.new(18001, 0, :TEST)
115
+ o4 = TimezoneOffset.new(18000, 1, :TEST)
116
+ o5 = TimezoneOffset.new(18000, 0, :TEST2)
117
117
 
118
118
  assert_equal(true, o1 == o1)
119
119
  assert_equal(true, o1 == o2)
@@ -124,11 +124,11 @@ class TCTimezoneOffsetInfo < Test::Unit::TestCase
124
124
  end
125
125
 
126
126
  def test_eql
127
- o1 = TimezoneOffsetInfo.new(18000, 0, :TEST)
128
- o2 = TimezoneOffsetInfo.new(18000, 0, :TEST)
129
- o3 = TimezoneOffsetInfo.new(18001, 0, :TEST)
130
- o4 = TimezoneOffsetInfo.new(18000, 1, :TEST)
131
- o5 = TimezoneOffsetInfo.new(18000, 0, :TEST2)
127
+ o1 = TimezoneOffset.new(18000, 0, :TEST)
128
+ o2 = TimezoneOffset.new(18000, 0, :TEST)
129
+ o3 = TimezoneOffset.new(18001, 0, :TEST)
130
+ o4 = TimezoneOffset.new(18000, 1, :TEST)
131
+ o5 = TimezoneOffset.new(18000, 0, :TEST2)
132
132
 
133
133
  assert_equal(true, o1.eql?(o1))
134
134
  assert_equal(true, o1.eql?(o2))
@@ -139,8 +139,8 @@ class TCTimezoneOffsetInfo < Test::Unit::TestCase
139
139
  end
140
140
 
141
141
  def test_hash
142
- o1 = TimezoneOffsetInfo.new(18000, 0, :TEST)
143
- o2 = TimezoneOffsetInfo.new(-3600, 3600, :TEST2)
142
+ o1 = TimezoneOffset.new(18000, 0, :TEST)
143
+ o2 = TimezoneOffset.new(-3600, 3600, :TEST2)
144
144
 
145
145
  assert_equal(18000.hash ^ 0.hash ^ :TEST.hash, o1.hash)
146
146
  assert_equal(-3600.hash ^ 3600.hash ^ :TEST2.hash, o2.hash)
@@ -26,14 +26,28 @@ include TZInfo
26
26
 
27
27
  class TCTimezonePeriod < Test::Unit::TestCase
28
28
 
29
+ class TestTimezoneTransition < TimezoneTransition
30
+ def initialize(offset, previous_offset, at)
31
+ super(offset, previous_offset)
32
+ @at = TimeOrDateTime.wrap(at)
33
+ end
34
+
35
+ def at
36
+ @at
37
+ end
38
+ end
39
+
29
40
  def test_initialize_start_end
30
- std = TimezoneOffsetInfo.new(-7200, 0, :TEST)
31
- dst = TimezoneOffsetInfo.new(-7200, 3600, :TEST)
32
- start_t = TimezoneTransitionInfo.new(dst, std, 1136073600)
33
- end_t = TimezoneTransitionInfo.new(std, dst, 1136160000)
41
+ std = TimezoneOffset.new(-7200, 0, :TEST)
42
+ dst = TimezoneOffset.new(-7200, 3600, :TEST)
43
+ start_t = TestTimezoneTransition.new(dst, std, 1136073600)
44
+ end_t = TestTimezoneTransition.new(std, dst, 1136160000)
34
45
 
35
46
  p = TimezonePeriod.new(start_t, end_t)
36
47
 
48
+ assert_same(start_t, p.start_transition)
49
+ assert_same(end_t, p.end_transition)
50
+ assert_same(dst, p.offset)
37
51
  assert_equal(DateTime.new(2006,1,1,0,0,0), p.utc_start)
38
52
  assert_equal(Time.utc(2006,1,1,0,0,0), p.utc_start_time)
39
53
  assert_equal(DateTime.new(2006,1,2,0,0,0), p.utc_end)
@@ -51,22 +65,25 @@ class TCTimezonePeriod < Test::Unit::TestCase
51
65
  end
52
66
 
53
67
  def test_initialize_start_end_offset
54
- std = TimezoneOffsetInfo.new(-7200, 0, :TEST)
55
- dst = TimezoneOffsetInfo.new(-7200, 3600, :TEST)
56
- special = TimezoneOffsetInfo.new(0, 0, :SPECIAL)
57
- start_t = TimezoneTransitionInfo.new(dst, std, 1136073600)
58
- end_t = TimezoneTransitionInfo.new(std, dst, 1136160000)
68
+ std = TimezoneOffset.new(-7200, 0, :TEST)
69
+ dst = TimezoneOffset.new(-7200, 3600, :TEST)
70
+ special = TimezoneOffset.new(0, 0, :SPECIAL)
71
+ start_t = TestTimezoneTransition.new(dst, std, 1136073600)
72
+ end_t = TestTimezoneTransition.new(std, dst, 1136160000)
59
73
 
60
74
  assert_raises(ArgumentError) { TimezonePeriod.new(start_t, end_t, special) }
61
75
  end
62
76
 
63
77
  def test_initialize_start
64
- std = TimezoneOffsetInfo.new(-7200, 0, :TEST)
65
- dst = TimezoneOffsetInfo.new(-7200, 3600, :TEST)
66
- start_t = TimezoneTransitionInfo.new(dst, std, 1136073600)
78
+ std = TimezoneOffset.new(-7200, 0, :TEST)
79
+ dst = TimezoneOffset.new(-7200, 3600, :TEST)
80
+ start_t = TestTimezoneTransition.new(dst, std, 1136073600)
67
81
 
68
82
  p = TimezonePeriod.new(start_t, nil)
69
83
 
84
+ assert_same(start_t, p.start_transition)
85
+ assert_nil(p.end_transition)
86
+ assert_same(dst, p.offset)
70
87
  assert_equal(DateTime.new(2006,1,1,0,0,0), p.utc_start)
71
88
  assert_equal(Time.utc(2006,1,1,0,0,0), p.utc_start_time)
72
89
  assert_nil(p.utc_end)
@@ -84,21 +101,24 @@ class TCTimezonePeriod < Test::Unit::TestCase
84
101
  end
85
102
 
86
103
  def test_initialize_start_offset
87
- std = TimezoneOffsetInfo.new(-7200, 0, :TEST)
88
- dst = TimezoneOffsetInfo.new(-7200, 3600, :TEST)
89
- special = TimezoneOffsetInfo.new(0, 0, :SPECIAL)
90
- start_t = TimezoneTransitionInfo.new(dst, std, 1136073600)
104
+ std = TimezoneOffset.new(-7200, 0, :TEST)
105
+ dst = TimezoneOffset.new(-7200, 3600, :TEST)
106
+ special = TimezoneOffset.new(0, 0, :SPECIAL)
107
+ start_t = TestTimezoneTransition.new(dst, std, 1136073600)
91
108
 
92
109
  assert_raises(ArgumentError) { TimezonePeriod.new(start_t, nil, special) }
93
110
  end
94
111
 
95
112
  def test_initialize_end
96
- std = TimezoneOffsetInfo.new(-7200, 0, :TEST)
97
- dst = TimezoneOffsetInfo.new(-7200, 3600, :TEST)
98
- end_t = TimezoneTransitionInfo.new(std, dst, 1136160000)
113
+ std = TimezoneOffset.new(-7200, 0, :TEST)
114
+ dst = TimezoneOffset.new(-7200, 3600, :TEST)
115
+ end_t = TestTimezoneTransition.new(std, dst, 1136160000)
99
116
 
100
117
  p = TimezonePeriod.new(nil, end_t)
101
118
 
119
+ assert_nil(p.start_transition)
120
+ assert_same(end_t, p.end_transition)
121
+ assert_same(dst, p.offset)
102
122
  assert_nil(p.utc_start)
103
123
  assert_nil(p.utc_start_time)
104
124
  assert_equal(DateTime.new(2006,1,2,0,0,0), p.utc_end)
@@ -116,10 +136,10 @@ class TCTimezonePeriod < Test::Unit::TestCase
116
136
  end
117
137
 
118
138
  def test_initialize_end_offset
119
- std = TimezoneOffsetInfo.new(-7200, 0, :TEST)
120
- dst = TimezoneOffsetInfo.new(-7200, 3600, :TEST)
121
- special = TimezoneOffsetInfo.new(0, 0, :SPECIAL)
122
- end_t = TimezoneTransitionInfo.new(std, dst, 1136160000)
139
+ std = TimezoneOffset.new(-7200, 0, :TEST)
140
+ dst = TimezoneOffset.new(-7200, 3600, :TEST)
141
+ special = TimezoneOffset.new(0, 0, :SPECIAL)
142
+ end_t = TestTimezoneTransition.new(std, dst, 1136160000)
123
143
 
124
144
  assert_raises(ArgumentError) { TimezonePeriod.new(nil, end_t, special) }
125
145
  end
@@ -129,10 +149,13 @@ class TCTimezonePeriod < Test::Unit::TestCase
129
149
  end
130
150
 
131
151
  def test_initialize_offset
132
- special = TimezoneOffsetInfo.new(0, 0, :SPECIAL)
152
+ special = TimezoneOffset.new(0, 0, :SPECIAL)
133
153
 
134
154
  p = TimezonePeriod.new(nil, nil, special)
135
155
 
156
+ assert_nil(p.start_transition)
157
+ assert_nil(p.end_transition)
158
+ assert_same(special, p.offset)
136
159
  assert_nil(p.utc_start)
137
160
  assert_nil(p.utc_start_time)
138
161
  assert_nil(p.utc_end)
@@ -150,11 +173,11 @@ class TCTimezonePeriod < Test::Unit::TestCase
150
173
  end
151
174
 
152
175
  def test_dst
153
- p1 = TimezonePeriod.new(nil, nil, TimezoneOffsetInfo.new(-14400, 3600, :TEST))
154
- p2 = TimezonePeriod.new(nil, nil, TimezoneOffsetInfo.new(-14400, 0, :TEST))
155
- p3 = TimezonePeriod.new(nil, nil, TimezoneOffsetInfo.new(-14400, -3600, :TEST))
156
- p4 = TimezonePeriod.new(nil, nil, TimezoneOffsetInfo.new(-14400, 7200, :TEST))
157
- p5 = TimezonePeriod.new(nil, nil, TimezoneOffsetInfo.new(-14400, -7200, :TEST))
176
+ p1 = TimezonePeriod.new(nil, nil, TimezoneOffset.new(-14400, 3600, :TEST))
177
+ p2 = TimezonePeriod.new(nil, nil, TimezoneOffset.new(-14400, 0, :TEST))
178
+ p3 = TimezonePeriod.new(nil, nil, TimezoneOffset.new(-14400, -3600, :TEST))
179
+ p4 = TimezonePeriod.new(nil, nil, TimezoneOffset.new(-14400, 7200, :TEST))
180
+ p5 = TimezonePeriod.new(nil, nil, TimezoneOffset.new(-14400, -7200, :TEST))
158
181
 
159
182
  assert_equal(true, p1.dst?)
160
183
  assert_equal(false, p2.dst?)
@@ -164,11 +187,11 @@ class TCTimezonePeriod < Test::Unit::TestCase
164
187
  end
165
188
 
166
189
  def test_valid_for_utc
167
- offset = TimezoneOffsetInfo.new(-7200, 3600, :TEST)
168
- t1 = TimezoneTransitionInfo.new(offset, offset, 1104541261)
169
- t2 = TimezoneTransitionInfo.new(offset, offset, 1107309722)
170
- t3 = TimezoneTransitionInfo.new(offset, offset, 210551144461, 86400)
171
- t4 = TimezoneTransitionInfo.new(offset, offset, 105276956461, 43200)
190
+ offset = TimezoneOffset.new(-7200, 3600, :TEST)
191
+ t1 = TestTimezoneTransition.new(offset, offset, 1104541261)
192
+ t2 = TestTimezoneTransition.new(offset, offset, 1107309722)
193
+ t3 = TestTimezoneTransition.new(offset, offset, DateTime.new(1960, 1, 1, 1, 1, 1))
194
+ t4 = TestTimezoneTransition.new(offset, offset, DateTime.new(1960, 2, 2, 2, 2, 2))
172
195
 
173
196
  p1 = TimezonePeriod.new(t1, t2)
174
197
  p2 = TimezonePeriod.new(nil, t2)
@@ -217,11 +240,11 @@ class TCTimezonePeriod < Test::Unit::TestCase
217
240
  end
218
241
 
219
242
  def test_utc_after_start
220
- offset = TimezoneOffsetInfo.new(-7200, 3600, :TEST)
221
- t1 = TimezoneTransitionInfo.new(offset, offset, 1104541261)
222
- t2 = TimezoneTransitionInfo.new(offset, offset, 1107309722)
223
- t3 = TimezoneTransitionInfo.new(offset, offset, 210077845261, 86400)
224
- t4 = TimezoneTransitionInfo.new(offset, offset, 105040306861, 43200)
243
+ offset = TimezoneOffset.new(-7200, 3600, :TEST)
244
+ t1 = TestTimezoneTransition.new(offset, offset, 1104541261)
245
+ t2 = TestTimezoneTransition.new(offset, offset, 1107309722)
246
+ t3 = TestTimezoneTransition.new(offset, offset, DateTime.new(1945, 1, 1, 1, 1, 1))
247
+ t4 = TestTimezoneTransition.new(offset, offset, DateTime.new(1945, 2, 2, 2, 2, 2))
225
248
 
226
249
  p1 = TimezonePeriod.new(t1, t2)
227
250
  p2 = TimezonePeriod.new(nil, t2)
@@ -242,11 +265,11 @@ class TCTimezonePeriod < Test::Unit::TestCase
242
265
  end
243
266
 
244
267
  def test_utc_before_end
245
- offset = TimezoneOffsetInfo.new(-7200, 3600, :TEST)
246
- t1 = TimezoneTransitionInfo.new(offset, offset, 1104541261)
247
- t2 = TimezoneTransitionInfo.new(offset, offset, 1107309722)
248
- t3 = TimezoneTransitionInfo.new(offset, offset, 210077845261, 86400)
249
- t4 = TimezoneTransitionInfo.new(offset, offset, 105040306861, 43200)
268
+ offset = TimezoneOffset.new(-7200, 3600, :TEST)
269
+ t1 = TestTimezoneTransition.new(offset, offset, 1104541261)
270
+ t2 = TestTimezoneTransition.new(offset, offset, 1107309722)
271
+ t3 = TestTimezoneTransition.new(offset, offset, DateTime.new(1945, 1, 1, 1, 1, 1))
272
+ t4 = TestTimezoneTransition.new(offset, offset, DateTime.new(1945, 2, 2, 2, 2, 2))
250
273
 
251
274
  p1 = TimezonePeriod.new(t1, t2)
252
275
  p2 = TimezonePeriod.new(t1, nil)
@@ -267,12 +290,12 @@ class TCTimezonePeriod < Test::Unit::TestCase
267
290
  end
268
291
 
269
292
  def test_valid_for_local
270
- offset = TimezoneOffsetInfo.new(-7200, 3600, :TEST)
271
- t1 = TimezoneTransitionInfo.new(offset, offset, 1104544861)
272
- t2 = TimezoneTransitionInfo.new(offset, offset, 1107313322)
273
- t3 = TimezoneTransitionInfo.new(offset, offset, 1104544861)
274
- t4 = TimezoneTransitionInfo.new(offset, offset, 210551144461, 86400)
275
- t5 = TimezoneTransitionInfo.new(offset, offset, 105276956461, 43200)
293
+ offset = TimezoneOffset.new(-7200, 3600, :TEST)
294
+ t1 = TestTimezoneTransition.new(offset, offset, 1104544861)
295
+ t2 = TestTimezoneTransition.new(offset, offset, 1107313322)
296
+ t3 = TestTimezoneTransition.new(offset, offset, 1104544861)
297
+ t4 = TestTimezoneTransition.new(offset, offset, DateTime.new(1960, 1, 1, 1, 1, 1))
298
+ t5 = TestTimezoneTransition.new(offset, offset, DateTime.new(1960, 2, 2, 2, 2, 2))
276
299
 
277
300
  p1 = TimezonePeriod.new(t1, t2)
278
301
  p2 = TimezonePeriod.new(nil, t2)
@@ -321,11 +344,11 @@ class TCTimezonePeriod < Test::Unit::TestCase
321
344
  end
322
345
 
323
346
  def test_local_after_start
324
- offset = TimezoneOffsetInfo.new(-7200, 3600, :TEST)
325
- t1 = TimezoneTransitionInfo.new(offset, offset, 1104544861)
326
- t2 = TimezoneTransitionInfo.new(offset, offset, 1107313322)
327
- t3 = TimezoneTransitionInfo.new(offset, offset, 210077845261, 86400)
328
- t4 = TimezoneTransitionInfo.new(offset, offset, 105040306861, 43200)
347
+ offset = TimezoneOffset.new(-7200, 3600, :TEST)
348
+ t1 = TestTimezoneTransition.new(offset, offset, 1104544861)
349
+ t2 = TestTimezoneTransition.new(offset, offset, 1107313322)
350
+ t3 = TestTimezoneTransition.new(offset, offset, DateTime.new(1945, 1, 1, 1, 1, 1))
351
+ t4 = TestTimezoneTransition.new(offset, offset, DateTime.new(1945, 2, 2, 2, 2, 2))
329
352
 
330
353
  p1 = TimezonePeriod.new(t1, t2)
331
354
  p2 = TimezonePeriod.new(nil, t2)
@@ -346,11 +369,11 @@ class TCTimezonePeriod < Test::Unit::TestCase
346
369
  end
347
370
 
348
371
  def test_local_before_end
349
- offset = TimezoneOffsetInfo.new(-7200, 3600, :TEST)
350
- t1 = TimezoneTransitionInfo.new(offset, offset, 1104544861)
351
- t2 = TimezoneTransitionInfo.new(offset, offset, 1107313322)
352
- t3 = TimezoneTransitionInfo.new(offset, offset, 210077845261, 86400)
353
- t4 = TimezoneTransitionInfo.new(offset, offset, 105040306861, 43200)
372
+ offset = TimezoneOffset.new(-7200, 3600, :TEST)
373
+ t1 = TestTimezoneTransition.new(offset, offset, 1104544861)
374
+ t2 = TestTimezoneTransition.new(offset, offset, 1107313322)
375
+ t3 = TestTimezoneTransition.new(offset, offset, DateTime.new(1945, 1, 1, 1, 1, 1))
376
+ t4 = TestTimezoneTransition.new(offset, offset, DateTime.new(1945, 2, 2, 2, 2, 2))
354
377
 
355
378
  p1 = TimezonePeriod.new(t1, t2)
356
379
  p2 = TimezonePeriod.new(t1, nil)
@@ -371,9 +394,9 @@ class TCTimezonePeriod < Test::Unit::TestCase
371
394
  end
372
395
 
373
396
  def test_to_local
374
- p1 = TimezonePeriod.new(nil, nil, TimezoneOffsetInfo.new(-14400, 3600, :TEST))
375
- p2 = TimezonePeriod.new(nil, nil, TimezoneOffsetInfo.new(-14400, 0, :TEST))
376
- p3 = TimezonePeriod.new(nil, nil, TimezoneOffsetInfo.new(7200, 3600, :TEST))
397
+ p1 = TimezonePeriod.new(nil, nil, TimezoneOffset.new(-14400, 3600, :TEST))
398
+ p2 = TimezonePeriod.new(nil, nil, TimezoneOffset.new(-14400, 0, :TEST))
399
+ p3 = TimezonePeriod.new(nil, nil, TimezoneOffset.new(7200, 3600, :TEST))
377
400
 
378
401
  assert_equal(DateTime.new(2005,1,19,22,0,0), p1.to_local(DateTime.new(2005,1,20,1,0,0)))
379
402
  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))))
@@ -383,9 +406,9 @@ class TCTimezonePeriod < Test::Unit::TestCase
383
406
  end
384
407
 
385
408
  def test_to_utc
386
- p1 = TimezonePeriod.new(nil, nil, TimezoneOffsetInfo.new(-14400, 3600, :TEST))
387
- p2 = TimezonePeriod.new(nil, nil, TimezoneOffsetInfo.new(-14400, 0, :TEST))
388
- p3 = TimezonePeriod.new(nil, nil, TimezoneOffsetInfo.new(7200, 3600, :TEST))
409
+ p1 = TimezonePeriod.new(nil, nil, TimezoneOffset.new(-14400, 3600, :TEST))
410
+ p2 = TimezonePeriod.new(nil, nil, TimezoneOffset.new(-14400, 0, :TEST))
411
+ p3 = TimezonePeriod.new(nil, nil, TimezoneOffset.new(7200, 3600, :TEST))
389
412
 
390
413
  assert_equal(DateTime.new(2005,1,20,4,0,0), p1.to_utc(DateTime.new(2005,1,20,1,0,0)))
391
414
  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))))
@@ -395,9 +418,9 @@ class TCTimezonePeriod < Test::Unit::TestCase
395
418
  end
396
419
 
397
420
  def test_time_boundary_start
398
- o1 = TimezoneOffsetInfo.new(-3600, 0, :TEST)
399
- o2 = TimezoneOffsetInfo.new(-3600, 3600, :TEST)
400
- t1 = TimezoneTransitionInfo.new(o1, o2, 0)
421
+ o1 = TimezoneOffset.new(-3600, 0, :TEST)
422
+ o2 = TimezoneOffset.new(-3600, 3600, :TEST)
423
+ t1 = TestTimezoneTransition.new(o1, o2, 0)
401
424
 
402
425
  p1 = TimezonePeriod.new(t1, nil)
403
426
 
@@ -410,9 +433,9 @@ class TCTimezonePeriod < Test::Unit::TestCase
410
433
  end
411
434
 
412
435
  def test_time_boundary_end
413
- o1 = TimezoneOffsetInfo.new(0, 3600, :TEST)
414
- o2 = TimezoneOffsetInfo.new(0, 0, :TEST)
415
- t1 = TimezoneTransitionInfo.new(o2, o1, 2147482800)
436
+ o1 = TimezoneOffset.new(0, 3600, :TEST)
437
+ o2 = TimezoneOffset.new(0, 0, :TEST)
438
+ t1 = TestTimezoneTransition.new(o2, o1, 2147482800)
416
439
 
417
440
  p1 = TimezonePeriod.new(nil, t1)
418
441
 
@@ -425,12 +448,12 @@ class TCTimezonePeriod < Test::Unit::TestCase
425
448
  end
426
449
 
427
450
  def test_equality
428
- o1 = TimezoneOffsetInfo.new(0, 3600, :TEST)
429
- o2 = TimezoneOffsetInfo.new(0, 0, :TEST)
430
- t1 = TimezoneTransitionInfo.new(o1, o2, 1149368400)
431
- t2 = TimezoneTransitionInfo.new(o1, o2, 19631123, 8)
432
- t3 = TimezoneTransitionInfo.new(o1, o2, 1149454800)
433
- t4 = TimezoneTransitionInfo.new(o1, o2, 1149541200)
451
+ o1 = TimezoneOffset.new(0, 3600, :TEST)
452
+ o2 = TimezoneOffset.new(0, 0, :TEST)
453
+ t1 = TestTimezoneTransition.new(o1, o2, 1149368400)
454
+ t2 = TestTimezoneTransition.new(o1, o2, DateTime.new(2006, 6, 3, 21, 0, 0))
455
+ t3 = TestTimezoneTransition.new(o1, o2, 1149454800)
456
+ t4 = TestTimezoneTransition.new(o1, o2, 1149541200)
434
457
 
435
458
  p1 = TimezonePeriod.new(t1, t3)
436
459
  p2 = TimezonePeriod.new(t1, t3)
@@ -476,12 +499,12 @@ class TCTimezonePeriod < Test::Unit::TestCase
476
499
  end
477
500
 
478
501
  def test_eql
479
- o1 = TimezoneOffsetInfo.new(0, 3600, :TEST)
480
- o2 = TimezoneOffsetInfo.new(0, 0, :TEST)
481
- t1 = TimezoneTransitionInfo.new(o1, o2, 1149368400)
482
- t2 = TimezoneTransitionInfo.new(o1, o2, 19631123, 8)
483
- t3 = TimezoneTransitionInfo.new(o1, o2, 1149454800)
484
- t4 = TimezoneTransitionInfo.new(o1, o2, 1149541200)
502
+ o1 = TimezoneOffset.new(0, 3600, :TEST)
503
+ o2 = TimezoneOffset.new(0, 0, :TEST)
504
+ t1 = TestTimezoneTransition.new(o1, o2, 1149368400)
505
+ t2 = TestTimezoneTransition.new(o1, o2, DateTime.new(2006, 6, 3, 21, 0, 0))
506
+ t3 = TestTimezoneTransition.new(o1, o2, 1149454800)
507
+ t4 = TestTimezoneTransition.new(o1, o2, 1149541200)
485
508
 
486
509
  p1 = TimezonePeriod.new(t1, t3)
487
510
  p2 = TimezonePeriod.new(t1, t3)
@@ -527,12 +550,12 @@ class TCTimezonePeriod < Test::Unit::TestCase
527
550
  end
528
551
 
529
552
  def test_hash
530
- o1 = TimezoneOffsetInfo.new(0, 3600, :TEST)
531
- o2 = TimezoneOffsetInfo.new(0, 0, :TEST)
532
- t1 = TimezoneTransitionInfo.new(o1, o2, 1149368400)
533
- t2 = TimezoneTransitionInfo.new(o1, o2, 19631123, 8)
534
- t3 = TimezoneTransitionInfo.new(o1, o2, 1149454800)
535
- t4 = TimezoneTransitionInfo.new(o1, o2, 1149541200)
553
+ o1 = TimezoneOffset.new(0, 3600, :TEST)
554
+ o2 = TimezoneOffset.new(0, 0, :TEST)
555
+ t1 = TestTimezoneTransition.new(o1, o2, 1149368400)
556
+ t2 = TestTimezoneTransition.new(o1, o2, DateTime.new(2006, 6, 3, 21, 0, 0))
557
+ t3 = TestTimezoneTransition.new(o1, o2, 1149454800)
558
+ t4 = TestTimezoneTransition.new(o1, o2, 1149541200)
536
559
 
537
560
  p1 = TimezonePeriod.new(t1, t3)
538
561
  p2 = TimezonePeriod.new(t3, nil)