tzinfo 1.2.1 → 2.0.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (146) hide show
  1. checksums.yaml +5 -5
  2. checksums.yaml.gz.sig +0 -0
  3. data/.yardopts +3 -0
  4. data/CHANGES.md +693 -315
  5. data/LICENSE +13 -13
  6. data/README.md +368 -113
  7. data/lib/tzinfo/annual_rules.rb +71 -0
  8. data/lib/tzinfo/country.rb +148 -120
  9. data/lib/tzinfo/country_timezone.rb +71 -101
  10. data/lib/tzinfo/data_source.rb +400 -144
  11. data/lib/tzinfo/data_sources/constant_offset_data_timezone_info.rb +56 -0
  12. data/lib/tzinfo/data_sources/country_info.rb +42 -0
  13. data/lib/tzinfo/data_sources/data_timezone_info.rb +91 -0
  14. data/lib/tzinfo/data_sources/linked_timezone_info.rb +33 -0
  15. data/lib/tzinfo/data_sources/posix_time_zone_parser.rb +181 -0
  16. data/lib/tzinfo/data_sources/ruby_data_source.rb +145 -0
  17. data/lib/tzinfo/data_sources/timezone_info.rb +47 -0
  18. data/lib/tzinfo/data_sources/transitions_data_timezone_info.rb +214 -0
  19. data/lib/tzinfo/data_sources/zoneinfo_data_source.rb +596 -0
  20. data/lib/tzinfo/data_sources/zoneinfo_reader.rb +486 -0
  21. data/lib/tzinfo/data_sources.rb +8 -0
  22. data/lib/tzinfo/data_timezone.rb +33 -47
  23. data/lib/tzinfo/datetime_with_offset.rb +153 -0
  24. data/lib/tzinfo/format1/country_definer.rb +17 -0
  25. data/lib/tzinfo/format1/country_index_definition.rb +64 -0
  26. data/lib/tzinfo/format1/timezone_definer.rb +64 -0
  27. data/lib/tzinfo/format1/timezone_definition.rb +39 -0
  28. data/lib/tzinfo/format1/timezone_index_definition.rb +77 -0
  29. data/lib/tzinfo/format1.rb +10 -0
  30. data/lib/tzinfo/format2/country_definer.rb +68 -0
  31. data/lib/tzinfo/format2/country_index_definer.rb +68 -0
  32. data/lib/tzinfo/format2/country_index_definition.rb +46 -0
  33. data/lib/tzinfo/format2/timezone_definer.rb +94 -0
  34. data/lib/tzinfo/format2/timezone_definition.rb +73 -0
  35. data/lib/tzinfo/format2/timezone_index_definer.rb +45 -0
  36. data/lib/tzinfo/format2/timezone_index_definition.rb +55 -0
  37. data/lib/tzinfo/format2.rb +10 -0
  38. data/lib/tzinfo/info_timezone.rb +26 -21
  39. data/lib/tzinfo/linked_timezone.rb +33 -52
  40. data/lib/tzinfo/offset_timezone_period.rb +42 -0
  41. data/lib/tzinfo/string_deduper.rb +118 -0
  42. data/lib/tzinfo/time_with_offset.rb +154 -0
  43. data/lib/tzinfo/timestamp.rb +552 -0
  44. data/lib/tzinfo/timestamp_with_offset.rb +85 -0
  45. data/lib/tzinfo/timezone.rb +997 -473
  46. data/lib/tzinfo/timezone_offset.rb +91 -54
  47. data/lib/tzinfo/timezone_period.rb +163 -188
  48. data/lib/tzinfo/timezone_proxy.rb +75 -49
  49. data/lib/tzinfo/timezone_transition.rb +77 -99
  50. data/lib/tzinfo/transition_rule.rb +455 -0
  51. data/lib/tzinfo/transitions_timezone_period.rb +63 -0
  52. data/lib/tzinfo/untaint_ext.rb +18 -0
  53. data/lib/tzinfo/version.rb +7 -0
  54. data/lib/tzinfo/with_offset.rb +61 -0
  55. data/lib/tzinfo.rb +74 -29
  56. data.tar.gz.sig +0 -0
  57. metadata +72 -120
  58. metadata.gz.sig +0 -0
  59. data/Rakefile +0 -104
  60. data/lib/tzinfo/country_index_definition.rb +0 -31
  61. data/lib/tzinfo/country_info.rb +0 -42
  62. data/lib/tzinfo/data_timezone_info.rb +0 -55
  63. data/lib/tzinfo/linked_timezone_info.rb +0 -26
  64. data/lib/tzinfo/offset_rationals.rb +0 -77
  65. data/lib/tzinfo/ruby_core_support.rb +0 -146
  66. data/lib/tzinfo/ruby_country_info.rb +0 -70
  67. data/lib/tzinfo/ruby_data_source.rb +0 -136
  68. data/lib/tzinfo/time_or_datetime.rb +0 -333
  69. data/lib/tzinfo/timezone_definition.rb +0 -36
  70. data/lib/tzinfo/timezone_index_definition.rb +0 -54
  71. data/lib/tzinfo/timezone_info.rb +0 -30
  72. data/lib/tzinfo/timezone_transition_definition.rb +0 -101
  73. data/lib/tzinfo/transition_data_timezone_info.rb +0 -274
  74. data/lib/tzinfo/zoneinfo_country_info.rb +0 -35
  75. data/lib/tzinfo/zoneinfo_data_source.rb +0 -460
  76. data/lib/tzinfo/zoneinfo_timezone_info.rb +0 -245
  77. data/test/tc_country.rb +0 -236
  78. data/test/tc_country_index_definition.rb +0 -69
  79. data/test/tc_country_info.rb +0 -16
  80. data/test/tc_country_timezone.rb +0 -161
  81. data/test/tc_data_source.rb +0 -192
  82. data/test/tc_data_timezone.rb +0 -99
  83. data/test/tc_data_timezone_info.rb +0 -18
  84. data/test/tc_info_timezone.rb +0 -34
  85. data/test/tc_linked_timezone.rb +0 -155
  86. data/test/tc_linked_timezone_info.rb +0 -23
  87. data/test/tc_offset_rationals.rb +0 -23
  88. data/test/tc_ruby_core_support.rb +0 -168
  89. data/test/tc_ruby_country_info.rb +0 -80
  90. data/test/tc_ruby_data_source.rb +0 -143
  91. data/test/tc_time_or_datetime.rb +0 -639
  92. data/test/tc_timezone.rb +0 -1334
  93. data/test/tc_timezone_definition.rb +0 -113
  94. data/test/tc_timezone_index_definition.rb +0 -73
  95. data/test/tc_timezone_info.rb +0 -11
  96. data/test/tc_timezone_london.rb +0 -143
  97. data/test/tc_timezone_melbourne.rb +0 -142
  98. data/test/tc_timezone_new_york.rb +0 -142
  99. data/test/tc_timezone_offset.rb +0 -126
  100. data/test/tc_timezone_period.rb +0 -548
  101. data/test/tc_timezone_proxy.rb +0 -113
  102. data/test/tc_timezone_transition.rb +0 -352
  103. data/test/tc_timezone_transition_definition.rb +0 -284
  104. data/test/tc_timezone_utc.rb +0 -27
  105. data/test/tc_transition_data_timezone_info.rb +0 -423
  106. data/test/tc_zoneinfo_country_info.rb +0 -64
  107. data/test/tc_zoneinfo_data_source.rb +0 -985
  108. data/test/tc_zoneinfo_timezone_info.rb +0 -814
  109. data/test/test_utils.rb +0 -132
  110. data/test/ts_all.rb +0 -7
  111. data/test/ts_all_ruby.rb +0 -5
  112. data/test/ts_all_zoneinfo.rb +0 -7
  113. data/test/tzinfo-data/tzinfo/data/definitions/America/Argentina/Buenos_Aires.rb +0 -89
  114. data/test/tzinfo-data/tzinfo/data/definitions/America/New_York.rb +0 -315
  115. data/test/tzinfo-data/tzinfo/data/definitions/Australia/Melbourne.rb +0 -218
  116. data/test/tzinfo-data/tzinfo/data/definitions/EST.rb +0 -19
  117. data/test/tzinfo-data/tzinfo/data/definitions/Etc/GMT__m__1.rb +0 -21
  118. data/test/tzinfo-data/tzinfo/data/definitions/Etc/GMT__p__1.rb +0 -21
  119. data/test/tzinfo-data/tzinfo/data/definitions/Etc/UTC.rb +0 -21
  120. data/test/tzinfo-data/tzinfo/data/definitions/Europe/Amsterdam.rb +0 -261
  121. data/test/tzinfo-data/tzinfo/data/definitions/Europe/Andorra.rb +0 -186
  122. data/test/tzinfo-data/tzinfo/data/definitions/Europe/London.rb +0 -321
  123. data/test/tzinfo-data/tzinfo/data/definitions/Europe/Paris.rb +0 -265
  124. data/test/tzinfo-data/tzinfo/data/definitions/Europe/Prague.rb +0 -220
  125. data/test/tzinfo-data/tzinfo/data/definitions/UTC.rb +0 -16
  126. data/test/tzinfo-data/tzinfo/data/indexes/countries.rb +0 -927
  127. data/test/tzinfo-data/tzinfo/data/indexes/timezones.rb +0 -594
  128. data/test/tzinfo-data/tzinfo/data/version.rb +0 -14
  129. data/test/tzinfo-data/tzinfo/data.rb +0 -8
  130. data/test/zoneinfo/America/Argentina/Buenos_Aires +0 -0
  131. data/test/zoneinfo/America/New_York +0 -0
  132. data/test/zoneinfo/Australia/Melbourne +0 -0
  133. data/test/zoneinfo/EST +0 -0
  134. data/test/zoneinfo/Etc/UTC +0 -0
  135. data/test/zoneinfo/Europe/Amsterdam +0 -0
  136. data/test/zoneinfo/Europe/Andorra +0 -0
  137. data/test/zoneinfo/Europe/London +0 -0
  138. data/test/zoneinfo/Europe/Paris +0 -0
  139. data/test/zoneinfo/Europe/Prague +0 -0
  140. data/test/zoneinfo/Factory +0 -0
  141. data/test/zoneinfo/iso3166.tab +0 -275
  142. data/test/zoneinfo/posix/Europe/London +0 -0
  143. data/test/zoneinfo/posixrules +0 -0
  144. data/test/zoneinfo/right/Europe/London +0 -0
  145. data/test/zoneinfo/zone.tab +0 -452
  146. data/tzinfo.gemspec +0 -21
@@ -1,126 +0,0 @@
1
- require File.join(File.expand_path(File.dirname(__FILE__)), 'test_utils')
2
-
3
- include TZInfo
4
-
5
- class TCTimezoneOffset < Minitest::Test
6
-
7
- def test_utc_offset
8
- o1 = TimezoneOffset.new(18000, 0, :TEST)
9
- o2 = TimezoneOffset.new(-3600, 3600, :TEST2)
10
-
11
- assert_equal(18000, o1.utc_offset)
12
- assert_equal(-3600, o2.utc_offset)
13
- end
14
-
15
- def test_std_offset
16
- o1 = TimezoneOffset.new(18000, 0, :TEST)
17
- o2 = TimezoneOffset.new(-3600, 3600, :TEST2)
18
-
19
- assert_equal(0, o1.std_offset)
20
- assert_equal(3600, o2.std_offset)
21
- end
22
-
23
- def test_utc_total_offset
24
- o1 = TimezoneOffset.new(18000, 0, :TEST)
25
- o2 = TimezoneOffset.new(-3600, 3600, :TEST2)
26
-
27
- assert_equal(18000, o1.utc_total_offset)
28
- assert_equal(0, o2.utc_total_offset)
29
- end
30
-
31
- def test_abbreviation
32
- o1 = TimezoneOffset.new(18000, 0, :TEST)
33
- o2 = TimezoneOffset.new(-3600, 3600, :TEST2)
34
-
35
- assert_equal(:TEST, o1.abbreviation)
36
- assert_equal(:TEST2, o2.abbreviation)
37
- end
38
-
39
- def test_dst
40
- o1 = TimezoneOffset.new(18000, 0, :TEST)
41
- o2 = TimezoneOffset.new(-3600, 3600, :TEST2)
42
-
43
- assert_equal(false, o1.dst?)
44
- assert_equal(true, o2.dst?)
45
- end
46
-
47
- def test_to_local
48
- o1 = TimezoneOffset.new(18000, 0, :TEST)
49
- o2 = TimezoneOffset.new(-3600, 3600, :TEST2)
50
-
51
- assert_equal(1148949080, o1.to_local(1148931080))
52
- assert_equal(Time.utc(2006, 5, 30, 0, 31, 20), o1.to_local(Time.utc(2006, 5, 29, 19, 31, 20)))
53
- assert_equal(Time.utc(2006, 5, 30, 0, 31, 20, 782000), o1.to_local(Time.utc(2006, 5, 29, 19, 31, 20, 782000)))
54
- assert_equal(DateTime.new(2006, 5, 30, 0, 31, 20), o1.to_local(DateTime.new(2006, 5, 29, 19, 31, 20)))
55
- assert_equal(DateTime.new(2006, 5, 30, 0, 31, 20 + Rational(782, 1000)), o1.to_local(DateTime.new(2006, 5, 29, 19, 31, 20 + Rational(782, 1000))))
56
- assert_equal(1148949080, o1.to_local(1148931080))
57
- assert(TimeOrDateTime.new(1148949080).eql?(o1.to_local(TimeOrDateTime.new(1148931080))))
58
-
59
- assert_equal(1148931080, o2.to_local(1148931080))
60
- assert_equal(Time.utc(2006, 5, 29, 19, 31, 20), o2.to_local(Time.utc(2006, 5, 29, 19, 31, 20)))
61
- assert_equal(Time.utc(2006, 5, 29, 19, 31, 20, 123000), o2.to_local(Time.utc(2006, 5, 29, 19, 31, 20, 123000)))
62
- assert_equal(DateTime.new(2006, 5, 29, 19, 31, 20), o2.to_local(DateTime.new(2006, 5, 29, 19, 31, 20)))
63
- assert_equal(DateTime.new(2006, 5, 29, 19, 31, 20 + Rational(123, 1000)), o2.to_local(DateTime.new(2006, 5, 29, 19, 31, 20 + Rational(123, 1000))))
64
- assert_equal(1148931080, o2.to_local(1148931080))
65
- assert(TimeOrDateTime.new(1148931080).eql?(o2.to_local(TimeOrDateTime.new(1148931080))))
66
- end
67
-
68
- def test_to_utc
69
- o1 = TimezoneOffset.new(18000, 0, :TEST)
70
- o2 = TimezoneOffset.new(-3600, 3600, :TEST2)
71
-
72
- assert_equal(1148913080, o1.to_utc(1148931080))
73
- assert_equal(Time.utc(2006, 5, 29, 14, 31, 20), o1.to_utc(Time.utc(2006, 5, 29, 19, 31, 20)))
74
- assert_equal(Time.utc(2006, 5, 29, 14, 31, 20, 913000), o1.to_utc(Time.utc(2006, 5, 29, 19, 31, 20, 913000)))
75
- assert_equal(DateTime.new(2006, 5, 29, 14, 31, 20), o1.to_utc(DateTime.new(2006, 5, 29, 19, 31, 20)))
76
- assert_equal(DateTime.new(2006, 5, 29, 14, 31, 20 + Rational(913,1000)), o1.to_utc(DateTime.new(2006, 5, 29, 19, 31, 20 + Rational(913,1000))))
77
- assert_equal(1148913080, o1.to_utc(1148931080))
78
- assert(TimeOrDateTime.new(1148913080).eql?(o1.to_utc(TimeOrDateTime.new(1148931080))))
79
-
80
- assert_equal(1148931080, o2.to_local(1148931080))
81
- assert_equal(Time.utc(2006, 5, 29, 19, 31, 20), o2.to_local(Time.utc(2006, 5, 29, 19, 31, 20)))
82
- assert_equal(Time.utc(2006, 5, 29, 19, 31, 20, 323000), o2.to_local(Time.utc(2006, 5, 29, 19, 31, 20, 323000)))
83
- assert_equal(DateTime.new(2006, 5, 29, 19, 31, 20), o2.to_local(DateTime.new(2006, 5, 29, 19, 31, 20)))
84
- assert_equal(DateTime.new(2006, 5, 29, 19, 31, 20 + Rational(323, 1000)), o2.to_local(DateTime.new(2006, 5, 29, 19, 31, 20 + Rational(323, 1000))))
85
- assert_equal(1148931080, o2.to_utc(1148931080))
86
- assert(TimeOrDateTime.new(1148931080).eql?(o2.to_local(TimeOrDateTime.new(1148931080))))
87
- end
88
-
89
- def test_equality
90
- o1 = TimezoneOffset.new(18000, 0, :TEST)
91
- o2 = TimezoneOffset.new(18000, 0, :TEST)
92
- o3 = TimezoneOffset.new(18001, 0, :TEST)
93
- o4 = TimezoneOffset.new(18000, 1, :TEST)
94
- o5 = TimezoneOffset.new(18000, 0, :TEST2)
95
-
96
- assert_equal(true, o1 == o1)
97
- assert_equal(true, o1 == o2)
98
- assert_equal(false, o1 == o3)
99
- assert_equal(false, o1 == o4)
100
- assert_equal(false, o1 == o5)
101
- assert_equal(false, o1 == Object.new)
102
- end
103
-
104
- def test_eql
105
- o1 = TimezoneOffset.new(18000, 0, :TEST)
106
- o2 = TimezoneOffset.new(18000, 0, :TEST)
107
- o3 = TimezoneOffset.new(18001, 0, :TEST)
108
- o4 = TimezoneOffset.new(18000, 1, :TEST)
109
- o5 = TimezoneOffset.new(18000, 0, :TEST2)
110
-
111
- assert_equal(true, o1.eql?(o1))
112
- assert_equal(true, o1.eql?(o2))
113
- assert_equal(false, o1.eql?(o3))
114
- assert_equal(false, o1.eql?(o4))
115
- assert_equal(false, o1.eql?(o5))
116
- assert_equal(false, o1.eql?(Object.new))
117
- end
118
-
119
- def test_hash
120
- o1 = TimezoneOffset.new(18000, 0, :TEST)
121
- o2 = TimezoneOffset.new(-3600, 3600, :TEST2)
122
-
123
- assert_equal(18000.hash ^ 0.hash ^ :TEST.hash, o1.hash)
124
- assert_equal(-3600.hash ^ 3600.hash ^ :TEST2.hash, o2.hash)
125
- end
126
- end
@@ -1,548 +0,0 @@
1
- require File.join(File.expand_path(File.dirname(__FILE__)), 'test_utils')
2
-
3
- include TZInfo
4
-
5
- class TCTimezonePeriod < Minitest::Test
6
-
7
- class TestTimezoneTransition < TimezoneTransition
8
- def initialize(offset, previous_offset, at)
9
- super(offset, previous_offset)
10
- @at = TimeOrDateTime.wrap(at)
11
- end
12
-
13
- def at
14
- @at
15
- end
16
- end
17
-
18
- def test_initialize_start_end
19
- std = TimezoneOffset.new(-7200, 0, :TEST)
20
- dst = TimezoneOffset.new(-7200, 3600, :TEST)
21
- start_t = TestTimezoneTransition.new(dst, std, 1136073600)
22
- end_t = TestTimezoneTransition.new(std, dst, 1136160000)
23
-
24
- p = TimezonePeriod.new(start_t, end_t)
25
-
26
- assert_same(start_t, p.start_transition)
27
- assert_same(end_t, p.end_transition)
28
- assert_same(dst, p.offset)
29
- assert_equal(DateTime.new(2006,1,1,0,0,0), p.utc_start)
30
- assert_equal(Time.utc(2006,1,1,0,0,0), p.utc_start_time)
31
- assert_equal(DateTime.new(2006,1,2,0,0,0), p.utc_end)
32
- assert_equal(Time.utc(2006,1,2,0,0,0), p.utc_end_time)
33
- assert_equal(-7200, p.utc_offset)
34
- assert_equal(3600, p.std_offset)
35
- assert_equal(-3600, p.utc_total_offset)
36
- assert_equal(Rational(-3600, 86400), p.utc_total_offset_rational)
37
- assert_equal(:TEST, p.zone_identifier)
38
- assert_equal(:TEST, p.abbreviation)
39
- assert_equal(DateTime.new(2005,12,31,23,0,0), p.local_start)
40
- assert_equal(Time.utc(2005,12,31,23,0,0), p.local_start_time)
41
- assert_equal(DateTime.new(2006,1,1,23,0,0), p.local_end)
42
- assert_equal(Time.utc(2006,1,1,23,0,0), p.local_end_time)
43
- end
44
-
45
- def test_initialize_start_end_offset
46
- std = TimezoneOffset.new(-7200, 0, :TEST)
47
- dst = TimezoneOffset.new(-7200, 3600, :TEST)
48
- special = TimezoneOffset.new(0, 0, :SPECIAL)
49
- start_t = TestTimezoneTransition.new(dst, std, 1136073600)
50
- end_t = TestTimezoneTransition.new(std, dst, 1136160000)
51
-
52
- assert_raises(ArgumentError) { TimezonePeriod.new(start_t, end_t, special) }
53
- end
54
-
55
- def test_initialize_start
56
- std = TimezoneOffset.new(-7200, 0, :TEST)
57
- dst = TimezoneOffset.new(-7200, 3600, :TEST)
58
- start_t = TestTimezoneTransition.new(dst, std, 1136073600)
59
-
60
- p = TimezonePeriod.new(start_t, nil)
61
-
62
- assert_same(start_t, p.start_transition)
63
- assert_nil(p.end_transition)
64
- assert_same(dst, p.offset)
65
- assert_equal(DateTime.new(2006,1,1,0,0,0), p.utc_start)
66
- assert_equal(Time.utc(2006,1,1,0,0,0), p.utc_start_time)
67
- assert_nil(p.utc_end)
68
- assert_nil(p.utc_end_time)
69
- assert_equal(-7200, p.utc_offset)
70
- assert_equal(3600, p.std_offset)
71
- assert_equal(-3600, p.utc_total_offset)
72
- assert_equal(Rational(-3600, 86400), p.utc_total_offset_rational)
73
- assert_equal(:TEST, p.zone_identifier)
74
- assert_equal(:TEST, p.abbreviation)
75
- assert_equal(DateTime.new(2005,12,31,23,0,0), p.local_start)
76
- assert_equal(Time.utc(2005,12,31,23,0,0), p.local_start_time)
77
- assert_nil(p.local_end)
78
- assert_nil(p.local_end_time)
79
- end
80
-
81
- def test_initialize_start_offset
82
- std = TimezoneOffset.new(-7200, 0, :TEST)
83
- dst = TimezoneOffset.new(-7200, 3600, :TEST)
84
- special = TimezoneOffset.new(0, 0, :SPECIAL)
85
- start_t = TestTimezoneTransition.new(dst, std, 1136073600)
86
-
87
- assert_raises(ArgumentError) { TimezonePeriod.new(start_t, nil, special) }
88
- end
89
-
90
- def test_initialize_end
91
- std = TimezoneOffset.new(-7200, 0, :TEST)
92
- dst = TimezoneOffset.new(-7200, 3600, :TEST)
93
- end_t = TestTimezoneTransition.new(std, dst, 1136160000)
94
-
95
- p = TimezonePeriod.new(nil, end_t)
96
-
97
- assert_nil(p.start_transition)
98
- assert_same(end_t, p.end_transition)
99
- assert_same(dst, p.offset)
100
- assert_nil(p.utc_start)
101
- assert_nil(p.utc_start_time)
102
- assert_equal(DateTime.new(2006,1,2,0,0,0), p.utc_end)
103
- assert_equal(Time.utc(2006,1,2,0,0,0), p.utc_end_time)
104
- assert_equal(-7200, p.utc_offset)
105
- assert_equal(3600, p.std_offset)
106
- assert_equal(-3600, p.utc_total_offset)
107
- assert_equal(Rational(-3600, 86400), p.utc_total_offset_rational)
108
- assert_equal(:TEST, p.zone_identifier)
109
- assert_equal(:TEST, p.abbreviation)
110
- assert_nil(p.local_start)
111
- assert_nil(p.local_start_time)
112
- assert_equal(DateTime.new(2006,1,1,23,0,0), p.local_end)
113
- assert_equal(Time.utc(2006,1,1,23,0,0), p.local_end_time)
114
- end
115
-
116
- def test_initialize_end_offset
117
- std = TimezoneOffset.new(-7200, 0, :TEST)
118
- dst = TimezoneOffset.new(-7200, 3600, :TEST)
119
- special = TimezoneOffset.new(0, 0, :SPECIAL)
120
- end_t = TestTimezoneTransition.new(std, dst, 1136160000)
121
-
122
- assert_raises(ArgumentError) { TimezonePeriod.new(nil, end_t, special) }
123
- end
124
-
125
- def test_initialize
126
- assert_raises(ArgumentError) { TimezonePeriod.new(nil, nil) }
127
- end
128
-
129
- def test_initialize_offset
130
- special = TimezoneOffset.new(0, 0, :SPECIAL)
131
-
132
- p = TimezonePeriod.new(nil, nil, special)
133
-
134
- assert_nil(p.start_transition)
135
- assert_nil(p.end_transition)
136
- assert_same(special, p.offset)
137
- assert_nil(p.utc_start)
138
- assert_nil(p.utc_start_time)
139
- assert_nil(p.utc_end)
140
- assert_nil(p.utc_end_time)
141
- assert_equal(0, p.utc_offset)
142
- assert_equal(0, p.std_offset)
143
- assert_equal(0, p.utc_total_offset)
144
- assert_equal(Rational(0, 86400), p.utc_total_offset_rational)
145
- assert_equal(:SPECIAL, p.zone_identifier)
146
- assert_equal(:SPECIAL, p.abbreviation)
147
- assert_nil(p.local_start)
148
- assert_nil(p.local_start_time)
149
- assert_nil(p.local_end)
150
- assert_nil(p.local_end_time)
151
- end
152
-
153
- def test_dst
154
- p1 = TimezonePeriod.new(nil, nil, TimezoneOffset.new(-14400, 3600, :TEST))
155
- p2 = TimezonePeriod.new(nil, nil, TimezoneOffset.new(-14400, 0, :TEST))
156
- p3 = TimezonePeriod.new(nil, nil, TimezoneOffset.new(-14400, -3600, :TEST))
157
- p4 = TimezonePeriod.new(nil, nil, TimezoneOffset.new(-14400, 7200, :TEST))
158
- p5 = TimezonePeriod.new(nil, nil, TimezoneOffset.new(-14400, -7200, :TEST))
159
-
160
- assert_equal(true, p1.dst?)
161
- assert_equal(false, p2.dst?)
162
- assert_equal(true, p3.dst?)
163
- assert_equal(true, p4.dst?)
164
- assert_equal(true, p5.dst?)
165
- end
166
-
167
- def test_valid_for_utc
168
- offset = TimezoneOffset.new(-7200, 3600, :TEST)
169
- t1 = TestTimezoneTransition.new(offset, offset, 1104541261)
170
- t2 = TestTimezoneTransition.new(offset, offset, 1107309722)
171
- t3 = TestTimezoneTransition.new(offset, offset, DateTime.new(1960, 1, 1, 1, 1, 1))
172
- t4 = TestTimezoneTransition.new(offset, offset, DateTime.new(1960, 2, 2, 2, 2, 2))
173
-
174
- p1 = TimezonePeriod.new(t1, t2)
175
- p2 = TimezonePeriod.new(nil, t2)
176
- p3 = TimezonePeriod.new(t1, nil)
177
- p4 = TimezonePeriod.new(nil, nil, offset)
178
- p5 = TimezonePeriod.new(t3, t4)
179
-
180
- assert_equal(true, p1.valid_for_utc?(DateTime.new(2005,1,1,1,1,1)))
181
- assert_equal(true, p1.valid_for_utc?(Time.utc(2005,2,2,2,2,1)))
182
- assert_equal(true, p1.valid_for_utc?(1104541262))
183
- assert_equal(true, p1.valid_for_utc?(DateTime.new(2005,2,2,2,2,0)))
184
- assert_equal(false, p1.valid_for_utc?(DateTime.new(2005,1,1,1,1,0)))
185
- assert_equal(false, p1.valid_for_utc?(DateTime.new(2005,2,2,2,2,3)))
186
- assert_equal(false, p1.valid_for_utc?(DateTime.new(1960,1,1,1,1,0)))
187
- assert_equal(false, p1.valid_for_utc?(DateTime.new(2040,1,1,1,1,0)))
188
-
189
- assert_equal(true, p2.valid_for_utc?(DateTime.new(2005,1,1,1,1,1)))
190
- assert_equal(true, p2.valid_for_utc?(Time.utc(2005,2,2,2,2,1)))
191
- assert_equal(true, p2.valid_for_utc?(1104541262))
192
- assert_equal(true, p2.valid_for_utc?(DateTime.new(2005,2,2,2,2,0)))
193
- assert_equal(true, p2.valid_for_utc?(DateTime.new(2005,1,1,1,1,0)))
194
- assert_equal(false, p2.valid_for_utc?(DateTime.new(2005,2,2,2,2,3)))
195
- assert_equal(true, p2.valid_for_utc?(DateTime.new(1960,1,1,1,1,0)))
196
- assert_equal(false, p2.valid_for_utc?(DateTime.new(2040,1,1,1,1,0)))
197
-
198
- assert_equal(true, p3.valid_for_utc?(DateTime.new(2005,1,1,1,1,1)))
199
- assert_equal(true, p3.valid_for_utc?(Time.utc(2005,2,2,2,2,1)))
200
- assert_equal(true, p3.valid_for_utc?(1104541262))
201
- assert_equal(true, p3.valid_for_utc?(DateTime.new(2005,2,2,2,2,0)))
202
- assert_equal(false, p3.valid_for_utc?(DateTime.new(2005,1,1,1,1,0)))
203
- assert_equal(true, p3.valid_for_utc?(DateTime.new(2005,2,2,2,2,3)))
204
- assert_equal(false, p3.valid_for_utc?(DateTime.new(1960,1,1,1,1,0)))
205
- assert_equal(true, p3.valid_for_utc?(DateTime.new(2040,1,1,1,1,0)))
206
-
207
- assert_equal(true, p4.valid_for_utc?(DateTime.new(2005,1,1,1,1,1)))
208
- assert_equal(true, p4.valid_for_utc?(Time.utc(2005,2,2,2,2,1)))
209
- assert_equal(true, p4.valid_for_utc?(1104541262))
210
- assert_equal(true, p4.valid_for_utc?(DateTime.new(2005,2,2,2,2,0)))
211
- assert_equal(true, p4.valid_for_utc?(DateTime.new(2005,1,1,1,1,0)))
212
- assert_equal(true, p4.valid_for_utc?(DateTime.new(2005,2,2,2,2,3)))
213
- assert_equal(true, p4.valid_for_utc?(DateTime.new(1960,1,1,1,1,0)))
214
- assert_equal(true, p4.valid_for_utc?(DateTime.new(2040,1,1,1,1,0)))
215
-
216
- assert_equal(false, p5.valid_for_utc?(Time.utc(2005,1,1,1,1,1)))
217
- assert_equal(false, p5.valid_for_utc?(1104541262))
218
- end
219
-
220
- def test_utc_after_start
221
- offset = TimezoneOffset.new(-7200, 3600, :TEST)
222
- t1 = TestTimezoneTransition.new(offset, offset, 1104541261)
223
- t2 = TestTimezoneTransition.new(offset, offset, 1107309722)
224
- t3 = TestTimezoneTransition.new(offset, offset, DateTime.new(1945, 1, 1, 1, 1, 1))
225
- t4 = TestTimezoneTransition.new(offset, offset, DateTime.new(1945, 2, 2, 2, 2, 2))
226
-
227
- p1 = TimezonePeriod.new(t1, t2)
228
- p2 = TimezonePeriod.new(nil, t2)
229
- p3 = TimezonePeriod.new(t3, t4)
230
-
231
- assert_equal(true, p1.utc_after_start?(DateTime.new(2005,1,1,1,1,1)))
232
- assert_equal(true, p1.utc_after_start?(Time.utc(2005,1,1,1,1,2)))
233
- assert_equal(false, p1.utc_after_start?(1104541260))
234
- assert_equal(true, p1.utc_after_start?(DateTime.new(2045,1,1,1,1,0)))
235
- assert_equal(false, p1.utc_after_start?(DateTime.new(1955,1,1,1,1,0)))
236
-
237
- assert_equal(true, p2.utc_after_start?(DateTime.new(2005,1,1,1,1,1)))
238
- assert_equal(true, p2.utc_after_start?(Time.utc(2005,1,1,1,1,2)))
239
- assert_equal(true, p2.utc_after_start?(1104541260))
240
-
241
- assert_equal(true, p3.utc_after_start?(Time.utc(2005,1,2,1,1,1)))
242
- assert_equal(true, p3.utc_after_start?(1104627661))
243
- end
244
-
245
- def test_utc_before_end
246
- offset = TimezoneOffset.new(-7200, 3600, :TEST)
247
- t1 = TestTimezoneTransition.new(offset, offset, 1104541261)
248
- t2 = TestTimezoneTransition.new(offset, offset, 1107309722)
249
- t3 = TestTimezoneTransition.new(offset, offset, DateTime.new(1945, 1, 1, 1, 1, 1))
250
- t4 = TestTimezoneTransition.new(offset, offset, DateTime.new(1945, 2, 2, 2, 2, 2))
251
-
252
- p1 = TimezonePeriod.new(t1, t2)
253
- p2 = TimezonePeriod.new(t1, nil)
254
- p3 = TimezonePeriod.new(t3, t4)
255
-
256
- assert_equal(true, p1.utc_before_end?(DateTime.new(2005,2,2,2,2,1)))
257
- assert_equal(true, p1.utc_before_end?(Time.utc(2005,2,2,2,2,0)))
258
- assert_equal(false, p1.utc_before_end?(1107309723))
259
- assert_equal(false, p1.utc_before_end?(DateTime.new(2045,1,1,1,1,0)))
260
- assert_equal(true, p1.utc_before_end?(DateTime.new(1955,1,1,1,1,0)))
261
-
262
- assert_equal(true, p2.utc_before_end?(DateTime.new(2005,2,2,2,2,1)))
263
- assert_equal(true, p2.utc_before_end?(Time.utc(2005,2,2,2,2,0)))
264
- assert_equal(true, p2.utc_before_end?(1107309723))
265
-
266
- assert_equal(false, p3.utc_before_end?(Time.utc(2005,1,2,1,1,1)))
267
- assert_equal(false, p3.utc_before_end?(1104627661))
268
- end
269
-
270
- def test_valid_for_local
271
- offset = TimezoneOffset.new(-7200, 3600, :TEST)
272
- t1 = TestTimezoneTransition.new(offset, offset, 1104544861)
273
- t2 = TestTimezoneTransition.new(offset, offset, 1107313322)
274
- t3 = TestTimezoneTransition.new(offset, offset, 1104544861)
275
- t4 = TestTimezoneTransition.new(offset, offset, DateTime.new(1960, 1, 1, 1, 1, 1))
276
- t5 = TestTimezoneTransition.new(offset, offset, DateTime.new(1960, 2, 2, 2, 2, 2))
277
-
278
- p1 = TimezonePeriod.new(t1, t2)
279
- p2 = TimezonePeriod.new(nil, t2)
280
- p3 = TimezonePeriod.new(t3, nil)
281
- p4 = TimezonePeriod.new(nil, nil, offset)
282
- p5 = TimezonePeriod.new(t4, t5)
283
-
284
- assert_equal(true, p1.valid_for_local?(DateTime.new(2005,1,1,1,1,1)))
285
- assert_equal(true, p1.valid_for_local?(Time.utc(2005,2,2,2,2,1)))
286
- assert_equal(true, p1.valid_for_local?(1104541262))
287
- assert_equal(true, p1.valid_for_local?(DateTime.new(2005,2,2,2,2,0)))
288
- assert_equal(false, p1.valid_for_local?(DateTime.new(2005,1,1,1,1,0)))
289
- assert_equal(false, p1.valid_for_local?(DateTime.new(2005,2,2,2,2,3)))
290
- assert_equal(false, p1.valid_for_local?(DateTime.new(1960,1,1,1,1,0)))
291
- assert_equal(false, p1.valid_for_local?(DateTime.new(2040,1,1,1,1,0)))
292
-
293
- assert_equal(true, p2.valid_for_local?(DateTime.new(2005,1,1,1,1,1)))
294
- assert_equal(true, p2.valid_for_local?(DateTime.new(2005,2,2,2,2,1)))
295
- assert_equal(true, p2.valid_for_local?(1104541262))
296
- assert_equal(true, p2.valid_for_local?(DateTime.new(2005,2,2,2,2,0)))
297
- assert_equal(true, p2.valid_for_local?(DateTime.new(2005,1,1,1,1,0)))
298
- assert_equal(false, p2.valid_for_local?(DateTime.new(2005,2,2,2,2,3)))
299
- assert_equal(true, p2.valid_for_local?(DateTime.new(1960,1,1,1,1,0)))
300
- assert_equal(false, p2.valid_for_local?(DateTime.new(2040,1,1,1,1,0)))
301
-
302
- assert_equal(true, p3.valid_for_local?(DateTime.new(2005,1,1,1,1,1)))
303
- assert_equal(true, p3.valid_for_local?(DateTime.new(2005,2,2,2,2,1)))
304
- assert_equal(true, p3.valid_for_local?(1104541262))
305
- assert_equal(true, p3.valid_for_local?(DateTime.new(2005,2,2,2,2,0)))
306
- assert_equal(false, p3.valid_for_local?(DateTime.new(2005,1,1,1,1,0)))
307
- assert_equal(true, p3.valid_for_local?(DateTime.new(2005,2,2,2,2,3)))
308
- assert_equal(false, p3.valid_for_local?(DateTime.new(1960,1,1,1,1,0)))
309
- assert_equal(true, p3.valid_for_local?(DateTime.new(2040,1,1,1,1,0)))
310
-
311
- assert_equal(true, p4.valid_for_local?(DateTime.new(2005,1,1,1,1,1)))
312
- assert_equal(true, p4.valid_for_local?(DateTime.new(2005,2,2,2,2,1)))
313
- assert_equal(true, p4.valid_for_local?(1104541262))
314
- assert_equal(true, p4.valid_for_local?(DateTime.new(2005,2,2,2,2,0)))
315
- assert_equal(true, p4.valid_for_local?(DateTime.new(2005,1,1,1,1,0)))
316
- assert_equal(true, p4.valid_for_local?(DateTime.new(2005,2,2,2,2,3)))
317
- assert_equal(true, p4.valid_for_local?(DateTime.new(1960,1,1,1,1,0)))
318
- assert_equal(true, p4.valid_for_local?(DateTime.new(2040,1,1,1,1,0)))
319
-
320
- assert_equal(false, p5.valid_for_utc?(Time.utc(2005,1,1,1,1,1)))
321
- assert_equal(false, p5.valid_for_utc?(1104541262))
322
- end
323
-
324
- def test_local_after_start
325
- offset = TimezoneOffset.new(-7200, 3600, :TEST)
326
- t1 = TestTimezoneTransition.new(offset, offset, 1104544861)
327
- t2 = TestTimezoneTransition.new(offset, offset, 1107313322)
328
- t3 = TestTimezoneTransition.new(offset, offset, DateTime.new(1945, 1, 1, 1, 1, 1))
329
- t4 = TestTimezoneTransition.new(offset, offset, DateTime.new(1945, 2, 2, 2, 2, 2))
330
-
331
- p1 = TimezonePeriod.new(t1, t2)
332
- p2 = TimezonePeriod.new(nil, t2)
333
- p3 = TimezonePeriod.new(t3, t4)
334
-
335
- assert_equal(true, p1.local_after_start?(DateTime.new(2005,1,1,1,1,1)))
336
- assert_equal(true, p1.local_after_start?(Time.utc(2005,1,1,1,1,2)))
337
- assert_equal(false, p1.local_after_start?(1104541260))
338
- assert_equal(true, p1.local_after_start?(DateTime.new(2045,1,1,1,1,0)))
339
- assert_equal(false, p1.local_after_start?(DateTime.new(1955,1,1,1,1,0)))
340
-
341
- assert_equal(true, p2.local_after_start?(DateTime.new(2005,1,1,1,1,1)))
342
- assert_equal(true, p2.local_after_start?(Time.utc(2005,1,1,1,1,2)))
343
- assert_equal(true, p2.local_after_start?(1104541260))
344
-
345
- assert_equal(true, p3.local_after_start?(Time.utc(2005,1,2,1,1,1)))
346
- assert_equal(true, p3.local_after_start?(1104627661))
347
- end
348
-
349
- def test_local_before_end
350
- offset = TimezoneOffset.new(-7200, 3600, :TEST)
351
- t1 = TestTimezoneTransition.new(offset, offset, 1104544861)
352
- t2 = TestTimezoneTransition.new(offset, offset, 1107313322)
353
- t3 = TestTimezoneTransition.new(offset, offset, DateTime.new(1945, 1, 1, 1, 1, 1))
354
- t4 = TestTimezoneTransition.new(offset, offset, DateTime.new(1945, 2, 2, 2, 2, 2))
355
-
356
- p1 = TimezonePeriod.new(t1, t2)
357
- p2 = TimezonePeriod.new(t1, nil)
358
- p3 = TimezonePeriod.new(t3, t4)
359
-
360
- assert_equal(true, p1.local_before_end?(DateTime.new(2005,2,2,2,2,1)))
361
- assert_equal(true, p1.local_before_end?(Time.utc(2005,2,2,2,2,0)))
362
- assert_equal(false, p1.local_before_end?(1107309723))
363
- assert_equal(false, p1.local_before_end?(DateTime.new(2045,1,1,1,1,0)))
364
- assert_equal(true, p1.local_before_end?(DateTime.new(1955,1,1,1,1,0)))
365
-
366
- assert_equal(true, p2.local_before_end?(DateTime.new(2005,2,2,2,2,1)))
367
- assert_equal(true, p2.local_before_end?(Time.utc(2005,2,2,2,2,0)))
368
- assert_equal(true, p2.local_before_end?(1107309723))
369
-
370
- assert_equal(false, p3.local_before_end?(Time.utc(2005,1,2,1,1,1)))
371
- assert_equal(false, p3.local_before_end?(1104627661))
372
- end
373
-
374
- def test_to_local
375
- p1 = TimezonePeriod.new(nil, nil, TimezoneOffset.new(-14400, 3600, :TEST))
376
- p2 = TimezonePeriod.new(nil, nil, TimezoneOffset.new(-14400, 0, :TEST))
377
- p3 = TimezonePeriod.new(nil, nil, TimezoneOffset.new(7200, 3600, :TEST))
378
-
379
- assert_equal(DateTime.new(2005,1,19,22,0,0), p1.to_local(DateTime.new(2005,1,20,1,0,0)))
380
- 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))))
381
- assert_equal(Time.utc(2005,1,19,21,0,0), p2.to_local(Time.utc(2005,1,20,1,0,0)))
382
- assert_equal(Time.utc(2005,1,19,21,0,0,512000), p2.to_local(Time.utc(2005,1,20,1,0,0,512000)))
383
- assert_equal(1106193600, p3.to_local(1106182800))
384
- end
385
-
386
- def test_to_utc
387
- p1 = TimezonePeriod.new(nil, nil, TimezoneOffset.new(-14400, 3600, :TEST))
388
- p2 = TimezonePeriod.new(nil, nil, TimezoneOffset.new(-14400, 0, :TEST))
389
- p3 = TimezonePeriod.new(nil, nil, TimezoneOffset.new(7200, 3600, :TEST))
390
-
391
- assert_equal(DateTime.new(2005,1,20,4,0,0), p1.to_utc(DateTime.new(2005,1,20,1,0,0)))
392
- 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))))
393
- assert_equal(Time.utc(2005,1,20,5,0,0), p2.to_utc(Time.utc(2005,1,20,1,0,0)))
394
- assert_equal(Time.utc(2005,1,20,5,0,0,571000), p2.to_utc(Time.utc(2005,1,20,1,0,0,571000)))
395
- assert_equal(1106172000, p3.to_utc(1106182800))
396
- end
397
-
398
- def test_time_boundary_start
399
- o1 = TimezoneOffset.new(-3600, 0, :TEST)
400
- o2 = TimezoneOffset.new(-3600, 3600, :TEST)
401
- t1 = TestTimezoneTransition.new(o1, o2, 0)
402
-
403
- p1 = TimezonePeriod.new(t1, nil)
404
-
405
- assert_equal(DateTime.new(1969,12,31,23,0,0), p1.local_start)
406
-
407
- # Conversion to Time will fail on systems that don't support negative times.
408
- if RubyCoreSupport.time_supports_negative
409
- assert_equal(Time.utc(1969,12,31,23,0,0), p1.local_start_time)
410
- end
411
- end
412
-
413
- def test_time_boundary_end
414
- o1 = TimezoneOffset.new(0, 3600, :TEST)
415
- o2 = TimezoneOffset.new(0, 0, :TEST)
416
- t1 = TestTimezoneTransition.new(o2, o1, 2147482800)
417
-
418
- p1 = TimezonePeriod.new(nil, t1)
419
-
420
- assert_equal(DateTime.new(2038,1,19,4,0,0), p1.local_end)
421
-
422
- # Conversion to Time will fail on systems that don't support 64-bit times
423
- if RubyCoreSupport.time_supports_64bit
424
- assert_equal(Time.utc(2038,1,19,4,0,0), p1.local_end_time)
425
- end
426
- end
427
-
428
- def test_equality
429
- o1 = TimezoneOffset.new(0, 3600, :TEST)
430
- o2 = TimezoneOffset.new(0, 0, :TEST)
431
- t1 = TestTimezoneTransition.new(o1, o2, 1149368400)
432
- t2 = TestTimezoneTransition.new(o1, o2, DateTime.new(2006, 6, 3, 21, 0, 0))
433
- t3 = TestTimezoneTransition.new(o1, o2, 1149454800)
434
- t4 = TestTimezoneTransition.new(o1, o2, 1149541200)
435
-
436
- p1 = TimezonePeriod.new(t1, t3)
437
- p2 = TimezonePeriod.new(t1, t3)
438
- p3 = TimezonePeriod.new(t2, t3)
439
- p4 = TimezonePeriod.new(t3, nil)
440
- p5 = TimezonePeriod.new(t3, nil)
441
- p6 = TimezonePeriod.new(t4, nil)
442
- p7 = TimezonePeriod.new(nil, t3)
443
- p8 = TimezonePeriod.new(nil, t3)
444
- p9 = TimezonePeriod.new(nil, t4)
445
- p10 = TimezonePeriod.new(nil, nil, o1)
446
- p11 = TimezonePeriod.new(nil, nil, o1)
447
- p12 = TimezonePeriod.new(nil, nil, o2)
448
-
449
- assert_equal(true, p1 == p1)
450
- assert_equal(true, p1 == p2)
451
- assert_equal(true, p1 == p3)
452
- assert_equal(false, p1 == p4)
453
- assert_equal(false, p1 == p5)
454
- assert_equal(false, p1 == p6)
455
- assert_equal(false, p1 == p7)
456
- assert_equal(false, p1 == p8)
457
- assert_equal(false, p1 == p9)
458
- assert_equal(false, p1 == p10)
459
- assert_equal(false, p1 == p11)
460
- assert_equal(false, p1 == p12)
461
- assert_equal(false, p1 == Object.new)
462
-
463
- assert_equal(true, p4 == p4)
464
- assert_equal(true, p4 == p5)
465
- assert_equal(false, p4 == p6)
466
- assert_equal(false, p4 == Object.new)
467
-
468
- assert_equal(true, p7 == p7)
469
- assert_equal(true, p7 == p8)
470
- assert_equal(false, p7 == p9)
471
- assert_equal(false, p7 == Object.new)
472
-
473
- assert_equal(true, p10 == p10)
474
- assert_equal(true, p10 == p11)
475
- assert_equal(false, p10 == p12)
476
- assert_equal(false, p10 == Object.new)
477
- end
478
-
479
- def test_eql
480
- o1 = TimezoneOffset.new(0, 3600, :TEST)
481
- o2 = TimezoneOffset.new(0, 0, :TEST)
482
- t1 = TestTimezoneTransition.new(o1, o2, 1149368400)
483
- t2 = TestTimezoneTransition.new(o1, o2, DateTime.new(2006, 6, 3, 21, 0, 0))
484
- t3 = TestTimezoneTransition.new(o1, o2, 1149454800)
485
- t4 = TestTimezoneTransition.new(o1, o2, 1149541200)
486
-
487
- p1 = TimezonePeriod.new(t1, t3)
488
- p2 = TimezonePeriod.new(t1, t3)
489
- p3 = TimezonePeriod.new(t2, t3)
490
- p4 = TimezonePeriod.new(t3, nil)
491
- p5 = TimezonePeriod.new(t3, nil)
492
- p6 = TimezonePeriod.new(t4, nil)
493
- p7 = TimezonePeriod.new(nil, t3)
494
- p8 = TimezonePeriod.new(nil, t3)
495
- p9 = TimezonePeriod.new(nil, t4)
496
- p10 = TimezonePeriod.new(nil, nil, o1)
497
- p11 = TimezonePeriod.new(nil, nil, o1)
498
- p12 = TimezonePeriod.new(nil, nil, o2)
499
-
500
- assert_equal(true, p1.eql?(p1))
501
- assert_equal(true, p1.eql?(p2))
502
- assert_equal(false, p1.eql?(p3))
503
- assert_equal(false, p1.eql?(p4))
504
- assert_equal(false, p1.eql?(p5))
505
- assert_equal(false, p1.eql?(p6))
506
- assert_equal(false, p1.eql?(p7))
507
- assert_equal(false, p1.eql?(p8))
508
- assert_equal(false, p1.eql?(p9))
509
- assert_equal(false, p1.eql?(p10))
510
- assert_equal(false, p1.eql?(p11))
511
- assert_equal(false, p1.eql?(p12))
512
- assert_equal(false, p1.eql?(Object.new))
513
-
514
- assert_equal(true, p4.eql?(p4))
515
- assert_equal(true, p4.eql?(p5))
516
- assert_equal(false, p4.eql?(p6))
517
- assert_equal(false, p4.eql?(Object.new))
518
-
519
- assert_equal(true, p7.eql?(p7))
520
- assert_equal(true, p7.eql?(p8))
521
- assert_equal(false, p7.eql?(p9))
522
- assert_equal(false, p7.eql?(Object.new))
523
-
524
- assert_equal(true, p10.eql?(p10))
525
- assert_equal(true, p10.eql?(p11))
526
- assert_equal(false, p10.eql?(p12))
527
- assert_equal(false, p10.eql?(Object.new))
528
- end
529
-
530
- def test_hash
531
- o1 = TimezoneOffset.new(0, 3600, :TEST)
532
- o2 = TimezoneOffset.new(0, 0, :TEST)
533
- t1 = TestTimezoneTransition.new(o1, o2, 1149368400)
534
- t2 = TestTimezoneTransition.new(o1, o2, DateTime.new(2006, 6, 3, 21, 0, 0))
535
- t3 = TestTimezoneTransition.new(o1, o2, 1149454800)
536
- t4 = TestTimezoneTransition.new(o1, o2, 1149541200)
537
-
538
- p1 = TimezonePeriod.new(t1, t3)
539
- p2 = TimezonePeriod.new(t2, nil)
540
- p3 = TimezonePeriod.new(nil, t4)
541
- p4 = TimezonePeriod.new(nil, nil, o1)
542
-
543
- assert_equal(t1.hash ^ t3.hash, p1.hash)
544
- assert_equal(t2.hash ^ nil.hash, p2.hash)
545
- assert_equal(nil.hash ^ t4.hash, p3.hash)
546
- assert_equal(nil.hash ^ nil.hash ^ o1.hash, p4.hash)
547
- end
548
- end