PageRenderTime 26ms CodeModel.GetById 15ms RepoModel.GetById 0ms app.codeStats 0ms

/Languages/Ruby/Tests/Libraries/TZInfoTests/tc_timezone_period.rb

http://github.com/IronLanguages/main
Ruby | 511 lines | 429 code | 82 blank | 0 comment | 25 complexity | 00e92fe8addb171b1c07be67c6fc128d MD5 | raw file
Possible License(s): CPL-1.0, BSD-3-Clause, ISC, GPL-2.0, MPL-2.0-no-copyleft-exception
  1. $:.unshift File.join(File.dirname(__FILE__), "..", "lib")
  2. require 'test/unit'
  3. require 'tzinfo/timezone_period'
  4. require 'tzinfo/timezone_offset_info'
  5. require 'tzinfo/timezone_transition_info'
  6. include TZInfo
  7. class TCTimezonePeriod < Test::Unit::TestCase
  8. def test_initialize_start_end
  9. std = TimezoneOffsetInfo.new(-7200, 0, :TEST)
  10. dst = TimezoneOffsetInfo.new(-7200, 3600, :TEST)
  11. start_t = TimezoneTransitionInfo.new(dst, std, 1136073600)
  12. end_t = TimezoneTransitionInfo.new(std, dst, 1136160000)
  13. p = TimezonePeriod.new(start_t, end_t)
  14. assert_equal(start_t, p.start_transition)
  15. assert_equal(end_t, p.end_transition)
  16. assert_equal(dst, p.offset)
  17. assert_equal(DateTime.new(2006,1,1,0,0,0), p.utc_start)
  18. assert_equal(DateTime.new(2006,1,2,0,0,0), p.utc_end)
  19. assert_equal(-7200, p.utc_offset)
  20. assert_equal(3600, p.std_offset)
  21. assert_equal(-3600, p.utc_total_offset)
  22. assert_equal(Rational(-3600, 86400), p.utc_total_offset_rational)
  23. assert_equal(:TEST, p.zone_identifier)
  24. assert_equal(:TEST, p.abbreviation)
  25. assert_equal(DateTime.new(2005,12,31,23,0,0), p.local_start)
  26. assert_equal(DateTime.new(2006,1,1,23,0,0), p.local_end)
  27. end
  28. def test_initialize_start_end_offset
  29. std = TimezoneOffsetInfo.new(-7200, 0, :TEST)
  30. dst = TimezoneOffsetInfo.new(-7200, 3600, :TEST)
  31. special = TimezoneOffsetInfo.new(0, 0, :SPECIAL)
  32. start_t = TimezoneTransitionInfo.new(dst, std, 1136073600)
  33. end_t = TimezoneTransitionInfo.new(std, dst, 1136160000)
  34. assert_raises(ArgumentError) { TimezonePeriod.new(start_t, end_t, special) }
  35. end
  36. def test_initialize_start
  37. std = TimezoneOffsetInfo.new(-7200, 0, :TEST)
  38. dst = TimezoneOffsetInfo.new(-7200, 3600, :TEST)
  39. start_t = TimezoneTransitionInfo.new(dst, std, 1136073600)
  40. p = TimezonePeriod.new(start_t, nil)
  41. assert_equal(start_t, p.start_transition)
  42. assert_nil(p.end_transition)
  43. assert_equal(dst, p.offset)
  44. assert_equal(DateTime.new(2006,1,1,0,0,0), p.utc_start)
  45. assert_nil(p.utc_end)
  46. assert_equal(-7200, p.utc_offset)
  47. assert_equal(3600, p.std_offset)
  48. assert_equal(-3600, p.utc_total_offset)
  49. assert_equal(Rational(-3600, 86400), p.utc_total_offset_rational)
  50. assert_equal(:TEST, p.zone_identifier)
  51. assert_equal(:TEST, p.abbreviation)
  52. assert_equal(DateTime.new(2005,12,31,23,0,0), p.local_start)
  53. assert_nil(p.local_end)
  54. end
  55. def test_initialize_start_offset
  56. std = TimezoneOffsetInfo.new(-7200, 0, :TEST)
  57. dst = TimezoneOffsetInfo.new(-7200, 3600, :TEST)
  58. special = TimezoneOffsetInfo.new(0, 0, :SPECIAL)
  59. start_t = TimezoneTransitionInfo.new(dst, std, 1136073600)
  60. assert_raises(ArgumentError) { TimezonePeriod.new(start_t, nil, special) }
  61. end
  62. def test_initialize_end
  63. std = TimezoneOffsetInfo.new(-7200, 0, :TEST)
  64. dst = TimezoneOffsetInfo.new(-7200, 3600, :TEST)
  65. end_t = TimezoneTransitionInfo.new(std, dst, 1136160000)
  66. p = TimezonePeriod.new(nil, end_t)
  67. assert_nil(p.start_transition)
  68. assert_equal(end_t, p.end_transition)
  69. assert_equal(dst, p.offset)
  70. assert_nil(p.utc_start)
  71. assert_equal(DateTime.new(2006,1,2,0,0,0), p.utc_end)
  72. assert_equal(-7200, p.utc_offset)
  73. assert_equal(3600, p.std_offset)
  74. assert_equal(-3600, p.utc_total_offset)
  75. assert_equal(Rational(-3600, 86400), p.utc_total_offset_rational)
  76. assert_equal(:TEST, p.zone_identifier)
  77. assert_equal(:TEST, p.abbreviation)
  78. assert_nil(p.local_start)
  79. assert_equal(DateTime.new(2006,1,1,23,0,0), p.local_end)
  80. end
  81. def test_initialize_end_offset
  82. std = TimezoneOffsetInfo.new(-7200, 0, :TEST)
  83. dst = TimezoneOffsetInfo.new(-7200, 3600, :TEST)
  84. special = TimezoneOffsetInfo.new(0, 0, :SPECIAL)
  85. end_t = TimezoneTransitionInfo.new(std, dst, 1136160000)
  86. assert_raises(ArgumentError) { TimezonePeriod.new(nil, end_t, special) }
  87. end
  88. def test_initialize
  89. assert_raises(ArgumentError) { TimezonePeriod.new(nil, nil) }
  90. end
  91. def test_initialize_offset
  92. special = TimezoneOffsetInfo.new(0, 0, :SPECIAL)
  93. p = TimezonePeriod.new(nil, nil, special)
  94. assert_nil(p.start_transition)
  95. assert_nil(p.end_transition)
  96. assert_equal(special, p.offset)
  97. assert_nil(p.utc_start)
  98. assert_nil(p.utc_end)
  99. assert_equal(0, p.utc_offset)
  100. assert_equal(0, p.std_offset)
  101. assert_equal(0, p.utc_total_offset)
  102. assert_equal(Rational(0, 86400), p.utc_total_offset_rational)
  103. assert_equal(:SPECIAL, p.zone_identifier)
  104. assert_equal(:SPECIAL, p.abbreviation)
  105. assert_nil(p.local_start)
  106. assert_nil(p.local_end)
  107. end
  108. def test_dst
  109. p1 = TimezonePeriod.new(nil, nil, TimezoneOffsetInfo.new(-14400, 3600, :TEST))
  110. p2 = TimezonePeriod.new(nil, nil, TimezoneOffsetInfo.new(-14400, 0, :TEST))
  111. p3 = TimezonePeriod.new(nil, nil, TimezoneOffsetInfo.new(-14400, -3600, :TEST))
  112. p4 = TimezonePeriod.new(nil, nil, TimezoneOffsetInfo.new(-14400, 7200, :TEST))
  113. p5 = TimezonePeriod.new(nil, nil, TimezoneOffsetInfo.new(-14400, -7200, :TEST))
  114. assert_equal(true, p1.dst?)
  115. assert_equal(false, p2.dst?)
  116. assert_equal(true, p3.dst?)
  117. assert_equal(true, p4.dst?)
  118. assert_equal(true, p5.dst?)
  119. end
  120. def test_valid_for_utc
  121. offset = TimezoneOffsetInfo.new(-7200, 3600, :TEST)
  122. t1 = TimezoneTransitionInfo.new(offset, offset, 1104541261)
  123. t2 = TimezoneTransitionInfo.new(offset, offset, 1107309722)
  124. t3 = TimezoneTransitionInfo.new(offset, offset, 210551144461, 86400)
  125. t4 = TimezoneTransitionInfo.new(offset, offset, 105276956461, 43200)
  126. p1 = TimezonePeriod.new(t1, t2)
  127. p2 = TimezonePeriod.new(nil, t2)
  128. p3 = TimezonePeriod.new(t1, nil)
  129. p4 = TimezonePeriod.new(nil, nil, offset)
  130. p5 = TimezonePeriod.new(t3, t4)
  131. assert_equal(true, p1.valid_for_utc?(DateTime.new(2005,1,1,1,1,1)))
  132. assert_equal(true, p1.valid_for_utc?(Time.utc(2005,2,2,2,2,1)))
  133. assert_equal(true, p1.valid_for_utc?(1104541262))
  134. assert_equal(true, p1.valid_for_utc?(DateTime.new(2005,2,2,2,2,0)))
  135. assert_equal(false, p1.valid_for_utc?(DateTime.new(2005,1,1,1,1,0)))
  136. assert_equal(false, p1.valid_for_utc?(DateTime.new(2005,2,2,2,2,3)))
  137. assert_equal(false, p1.valid_for_utc?(DateTime.new(1960,1,1,1,1,0)))
  138. assert_equal(false, p1.valid_for_utc?(DateTime.new(2040,1,1,1,1,0)))
  139. assert_equal(true, p2.valid_for_utc?(DateTime.new(2005,1,1,1,1,1)))
  140. assert_equal(true, p2.valid_for_utc?(Time.utc(2005,2,2,2,2,1)))
  141. assert_equal(true, p2.valid_for_utc?(1104541262))
  142. assert_equal(true, p2.valid_for_utc?(DateTime.new(2005,2,2,2,2,0)))
  143. assert_equal(true, p2.valid_for_utc?(DateTime.new(2005,1,1,1,1,0)))
  144. assert_equal(false, p2.valid_for_utc?(DateTime.new(2005,2,2,2,2,3)))
  145. assert_equal(true, p2.valid_for_utc?(DateTime.new(1960,1,1,1,1,0)))
  146. assert_equal(false, p2.valid_for_utc?(DateTime.new(2040,1,1,1,1,0)))
  147. assert_equal(true, p3.valid_for_utc?(DateTime.new(2005,1,1,1,1,1)))
  148. assert_equal(true, p3.valid_for_utc?(Time.utc(2005,2,2,2,2,1)))
  149. assert_equal(true, p3.valid_for_utc?(1104541262))
  150. assert_equal(true, p3.valid_for_utc?(DateTime.new(2005,2,2,2,2,0)))
  151. assert_equal(false, p3.valid_for_utc?(DateTime.new(2005,1,1,1,1,0)))
  152. assert_equal(true, p3.valid_for_utc?(DateTime.new(2005,2,2,2,2,3)))
  153. assert_equal(false, p3.valid_for_utc?(DateTime.new(1960,1,1,1,1,0)))
  154. assert_equal(true, p3.valid_for_utc?(DateTime.new(2040,1,1,1,1,0)))
  155. assert_equal(true, p4.valid_for_utc?(DateTime.new(2005,1,1,1,1,1)))
  156. assert_equal(true, p4.valid_for_utc?(Time.utc(2005,2,2,2,2,1)))
  157. assert_equal(true, p4.valid_for_utc?(1104541262))
  158. assert_equal(true, p4.valid_for_utc?(DateTime.new(2005,2,2,2,2,0)))
  159. assert_equal(true, p4.valid_for_utc?(DateTime.new(2005,1,1,1,1,0)))
  160. assert_equal(true, p4.valid_for_utc?(DateTime.new(2005,2,2,2,2,3)))
  161. assert_equal(true, p4.valid_for_utc?(DateTime.new(1960,1,1,1,1,0)))
  162. assert_equal(true, p4.valid_for_utc?(DateTime.new(2040,1,1,1,1,0)))
  163. assert_equal(false, p5.valid_for_utc?(Time.utc(2005,1,1,1,1,1)))
  164. assert_equal(false, p5.valid_for_utc?(1104541262))
  165. end
  166. def test_utc_after_start
  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, 210077845261, 86400)
  171. t4 = TimezoneTransitionInfo.new(offset, offset, 105040306861, 43200)
  172. p1 = TimezonePeriod.new(t1, t2)
  173. p2 = TimezonePeriod.new(nil, t2)
  174. p3 = TimezonePeriod.new(t3, t4)
  175. assert_equal(true, p1.utc_after_start?(DateTime.new(2005,1,1,1,1,1)))
  176. assert_equal(true, p1.utc_after_start?(Time.utc(2005,1,1,1,1,2)))
  177. assert_equal(false, p1.utc_after_start?(1104541260))
  178. assert_equal(true, p1.utc_after_start?(DateTime.new(2045,1,1,1,1,0)))
  179. assert_equal(false, p1.utc_after_start?(DateTime.new(1955,1,1,1,1,0)))
  180. assert_equal(true, p2.utc_after_start?(DateTime.new(2005,1,1,1,1,1)))
  181. assert_equal(true, p2.utc_after_start?(Time.utc(2005,1,1,1,1,2)))
  182. assert_equal(true, p2.utc_after_start?(1104541260))
  183. assert_equal(true, p3.utc_after_start?(Time.utc(2005,1,2,1,1,1)))
  184. assert_equal(true, p3.utc_after_start?(1104627661))
  185. end
  186. def test_utc_before_end
  187. offset = TimezoneOffsetInfo.new(-7200, 3600, :TEST)
  188. t1 = TimezoneTransitionInfo.new(offset, offset, 1104541261)
  189. t2 = TimezoneTransitionInfo.new(offset, offset, 1107309722)
  190. t3 = TimezoneTransitionInfo.new(offset, offset, 210077845261, 86400)
  191. t4 = TimezoneTransitionInfo.new(offset, offset, 105040306861, 43200)
  192. p1 = TimezonePeriod.new(t1, t2)
  193. p2 = TimezonePeriod.new(t1, nil)
  194. p3 = TimezonePeriod.new(t3, t4)
  195. assert_equal(true, p1.utc_before_end?(DateTime.new(2005,2,2,2,2,1)))
  196. assert_equal(true, p1.utc_before_end?(Time.utc(2005,2,2,2,2,0)))
  197. assert_equal(false, p1.utc_before_end?(1107309723))
  198. assert_equal(false, p1.utc_before_end?(DateTime.new(2045,1,1,1,1,0)))
  199. assert_equal(true, p1.utc_before_end?(DateTime.new(1955,1,1,1,1,0)))
  200. assert_equal(true, p2.utc_before_end?(DateTime.new(2005,2,2,2,2,1)))
  201. assert_equal(true, p2.utc_before_end?(Time.utc(2005,2,2,2,2,0)))
  202. assert_equal(true, p2.utc_before_end?(1107309723))
  203. assert_equal(false, p3.utc_before_end?(Time.utc(2005,1,2,1,1,1)))
  204. assert_equal(false, p3.utc_before_end?(1104627661))
  205. end
  206. def test_valid_for_local
  207. offset = TimezoneOffsetInfo.new(-7200, 3600, :TEST)
  208. t1 = TimezoneTransitionInfo.new(offset, offset, 1104544861)
  209. t2 = TimezoneTransitionInfo.new(offset, offset, 1107313322)
  210. t3 = TimezoneTransitionInfo.new(offset, offset, 1104544861)
  211. t4 = TimezoneTransitionInfo.new(offset, offset, 210551144461, 86400)
  212. t5 = TimezoneTransitionInfo.new(offset, offset, 105276956461, 43200)
  213. p1 = TimezonePeriod.new(t1, t2)
  214. p2 = TimezonePeriod.new(nil, t2)
  215. p3 = TimezonePeriod.new(t3, nil)
  216. p4 = TimezonePeriod.new(nil, nil, offset)
  217. p5 = TimezonePeriod.new(t4, t5)
  218. assert_equal(true, p1.valid_for_local?(DateTime.new(2005,1,1,1,1,1)))
  219. assert_equal(true, p1.valid_for_local?(Time.utc(2005,2,2,2,2,1)))
  220. assert_equal(true, p1.valid_for_local?(1104541262))
  221. assert_equal(true, p1.valid_for_local?(DateTime.new(2005,2,2,2,2,0)))
  222. assert_equal(false, p1.valid_for_local?(DateTime.new(2005,1,1,1,1,0)))
  223. assert_equal(false, p1.valid_for_local?(DateTime.new(2005,2,2,2,2,3)))
  224. assert_equal(false, p1.valid_for_local?(DateTime.new(1960,1,1,1,1,0)))
  225. assert_equal(false, p1.valid_for_local?(DateTime.new(2040,1,1,1,1,0)))
  226. assert_equal(true, p2.valid_for_local?(DateTime.new(2005,1,1,1,1,1)))
  227. assert_equal(true, p2.valid_for_local?(DateTime.new(2005,2,2,2,2,1)))
  228. assert_equal(true, p2.valid_for_local?(1104541262))
  229. assert_equal(true, p2.valid_for_local?(DateTime.new(2005,2,2,2,2,0)))
  230. assert_equal(true, p2.valid_for_local?(DateTime.new(2005,1,1,1,1,0)))
  231. assert_equal(false, p2.valid_for_local?(DateTime.new(2005,2,2,2,2,3)))
  232. assert_equal(true, p2.valid_for_local?(DateTime.new(1960,1,1,1,1,0)))
  233. assert_equal(false, p2.valid_for_local?(DateTime.new(2040,1,1,1,1,0)))
  234. assert_equal(true, p3.valid_for_local?(DateTime.new(2005,1,1,1,1,1)))
  235. assert_equal(true, p3.valid_for_local?(DateTime.new(2005,2,2,2,2,1)))
  236. assert_equal(true, p3.valid_for_local?(1104541262))
  237. assert_equal(true, p3.valid_for_local?(DateTime.new(2005,2,2,2,2,0)))
  238. assert_equal(false, p3.valid_for_local?(DateTime.new(2005,1,1,1,1,0)))
  239. assert_equal(true, p3.valid_for_local?(DateTime.new(2005,2,2,2,2,3)))
  240. assert_equal(false, p3.valid_for_local?(DateTime.new(1960,1,1,1,1,0)))
  241. assert_equal(true, p3.valid_for_local?(DateTime.new(2040,1,1,1,1,0)))
  242. assert_equal(true, p4.valid_for_local?(DateTime.new(2005,1,1,1,1,1)))
  243. assert_equal(true, p4.valid_for_local?(DateTime.new(2005,2,2,2,2,1)))
  244. assert_equal(true, p4.valid_for_local?(1104541262))
  245. assert_equal(true, p4.valid_for_local?(DateTime.new(2005,2,2,2,2,0)))
  246. assert_equal(true, p4.valid_for_local?(DateTime.new(2005,1,1,1,1,0)))
  247. assert_equal(true, p4.valid_for_local?(DateTime.new(2005,2,2,2,2,3)))
  248. assert_equal(true, p4.valid_for_local?(DateTime.new(1960,1,1,1,1,0)))
  249. assert_equal(true, p4.valid_for_local?(DateTime.new(2040,1,1,1,1,0)))
  250. assert_equal(false, p5.valid_for_utc?(Time.utc(2005,1,1,1,1,1)))
  251. assert_equal(false, p5.valid_for_utc?(1104541262))
  252. end
  253. def test_local_after_start
  254. offset = TimezoneOffsetInfo.new(-7200, 3600, :TEST)
  255. t1 = TimezoneTransitionInfo.new(offset, offset, 1104544861)
  256. t2 = TimezoneTransitionInfo.new(offset, offset, 1107313322)
  257. t3 = TimezoneTransitionInfo.new(offset, offset, 210077845261, 86400)
  258. t4 = TimezoneTransitionInfo.new(offset, offset, 105040306861, 43200)
  259. p1 = TimezonePeriod.new(t1, t2)
  260. p2 = TimezonePeriod.new(nil, t2)
  261. p3 = TimezonePeriod.new(t3, t4)
  262. assert_equal(true, p1.local_after_start?(DateTime.new(2005,1,1,1,1,1)))
  263. assert_equal(true, p1.local_after_start?(Time.utc(2005,1,1,1,1,2)))
  264. assert_equal(false, p1.local_after_start?(1104541260))
  265. assert_equal(true, p1.local_after_start?(DateTime.new(2045,1,1,1,1,0)))
  266. assert_equal(false, p1.local_after_start?(DateTime.new(1955,1,1,1,1,0)))
  267. assert_equal(true, p2.local_after_start?(DateTime.new(2005,1,1,1,1,1)))
  268. assert_equal(true, p2.local_after_start?(Time.utc(2005,1,1,1,1,2)))
  269. assert_equal(true, p2.local_after_start?(1104541260))
  270. assert_equal(true, p3.local_after_start?(Time.utc(2005,1,2,1,1,1)))
  271. assert_equal(true, p3.local_after_start?(1104627661))
  272. end
  273. def test_local_before_end
  274. offset = TimezoneOffsetInfo.new(-7200, 3600, :TEST)
  275. t1 = TimezoneTransitionInfo.new(offset, offset, 1104544861)
  276. t2 = TimezoneTransitionInfo.new(offset, offset, 1107313322)
  277. t3 = TimezoneTransitionInfo.new(offset, offset, 210077845261, 86400)
  278. t4 = TimezoneTransitionInfo.new(offset, offset, 105040306861, 43200)
  279. p1 = TimezonePeriod.new(t1, t2)
  280. p2 = TimezonePeriod.new(t1, nil)
  281. p3 = TimezonePeriod.new(t3, t4)
  282. assert_equal(true, p1.local_before_end?(DateTime.new(2005,2,2,2,2,1)))
  283. assert_equal(true, p1.local_before_end?(Time.utc(2005,2,2,2,2,0)))
  284. assert_equal(false, p1.local_before_end?(1107309723))
  285. assert_equal(false, p1.local_before_end?(DateTime.new(2045,1,1,1,1,0)))
  286. assert_equal(true, p1.local_before_end?(DateTime.new(1955,1,1,1,1,0)))
  287. assert_equal(true, p2.local_before_end?(DateTime.new(2005,2,2,2,2,1)))
  288. assert_equal(true, p2.local_before_end?(Time.utc(2005,2,2,2,2,0)))
  289. assert_equal(true, p2.local_before_end?(1107309723))
  290. assert_equal(false, p3.local_before_end?(Time.utc(2005,1,2,1,1,1)))
  291. assert_equal(false, p3.local_before_end?(1104627661))
  292. end
  293. def test_to_local
  294. p1 = TimezonePeriod.new(nil, nil, TimezoneOffsetInfo.new(-14400, 3600, :TEST))
  295. p2 = TimezonePeriod.new(nil, nil, TimezoneOffsetInfo.new(-14400, 0, :TEST))
  296. p3 = TimezonePeriod.new(nil, nil, TimezoneOffsetInfo.new(7200, 3600, :TEST))
  297. assert_equal(DateTime.new(2005,1,19,22,0,0), p1.to_local(DateTime.new(2005,1,20,1,0,0)))
  298. assert_equal(Time.utc(2005,1,19,21,0,0), p2.to_local(Time.utc(2005,1,20,1,0,0)))
  299. assert_equal(1106193600, p3.to_local(1106182800))
  300. end
  301. def test_to_utc
  302. p1 = TimezonePeriod.new(nil, nil, TimezoneOffsetInfo.new(-14400, 3600, :TEST))
  303. p2 = TimezonePeriod.new(nil, nil, TimezoneOffsetInfo.new(-14400, 0, :TEST))
  304. p3 = TimezonePeriod.new(nil, nil, TimezoneOffsetInfo.new(7200, 3600, :TEST))
  305. assert_equal(DateTime.new(2005,1,20,4,0,0), p1.to_utc(DateTime.new(2005,1,20,1,0,0)))
  306. assert_equal(Time.utc(2005,1,20,5,0,0), p2.to_utc(Time.utc(2005,1,20,1,0,0)))
  307. assert_equal(1106172000, p3.to_utc(1106182800))
  308. end
  309. def test_time_boundary_start
  310. o1 = TimezoneOffsetInfo.new(-3600, 0, :TEST)
  311. o2 = TimezoneOffsetInfo.new(-3600, 3600, :TEST)
  312. t1 = TimezoneTransitionInfo.new(o1, o2, 0)
  313. p1 = TimezonePeriod.new(t1, nil)
  314. assert_equal(DateTime.new(1969,12,31,23,0,0), p1.local_start)
  315. end
  316. def test_time_boundary_end
  317. o1 = TimezoneOffsetInfo.new(0, 3600, :TEST)
  318. o2 = TimezoneOffsetInfo.new(0, 0, :TEST)
  319. t1 = TimezoneTransitionInfo.new(o2, o1, 2147482800)
  320. p1 = TimezonePeriod.new(nil, t1)
  321. assert_equal(DateTime.new(2038,1,19,4,0,0), p1.local_end)
  322. end
  323. def test_equality
  324. o1 = TimezoneOffsetInfo.new(0, 3600, :TEST)
  325. o2 = TimezoneOffsetInfo.new(0, 0, :TEST)
  326. t1 = TimezoneTransitionInfo.new(o1, o2, 1149368400)
  327. t2 = TimezoneTransitionInfo.new(o1, o2, 19631123, 8)
  328. t3 = TimezoneTransitionInfo.new(o1, o2, 1149454800)
  329. t4 = TimezoneTransitionInfo.new(o1, o2, 1149541200)
  330. p1 = TimezonePeriod.new(t1, t3)
  331. p2 = TimezonePeriod.new(t1, t3)
  332. p3 = TimezonePeriod.new(t2, t3)
  333. p4 = TimezonePeriod.new(t3, nil)
  334. p5 = TimezonePeriod.new(t3, nil)
  335. p6 = TimezonePeriod.new(t4, nil)
  336. p7 = TimezonePeriod.new(nil, t3)
  337. p8 = TimezonePeriod.new(nil, t3)
  338. p9 = TimezonePeriod.new(nil, t4)
  339. p10 = TimezonePeriod.new(nil, nil, o1)
  340. p11 = TimezonePeriod.new(nil, nil, o1)
  341. p12 = TimezonePeriod.new(nil, nil, o2)
  342. assert_equal(true, p1 == p1)
  343. assert_equal(true, p1 == p2)
  344. assert_equal(true, p1 == p3)
  345. assert_equal(false, p1 == p4)
  346. assert_equal(false, p1 == p5)
  347. assert_equal(false, p1 == p6)
  348. assert_equal(false, p1 == p7)
  349. assert_equal(false, p1 == p8)
  350. assert_equal(false, p1 == p9)
  351. assert_equal(false, p1 == p10)
  352. assert_equal(false, p1 == p11)
  353. assert_equal(false, p1 == p12)
  354. assert_equal(false, p1 == Object.new)
  355. assert_equal(true, p4 == p4)
  356. assert_equal(true, p4 == p5)
  357. assert_equal(false, p4 == p6)
  358. assert_equal(false, p4 == Object.new)
  359. assert_equal(true, p7 == p7)
  360. assert_equal(true, p7 == p8)
  361. assert_equal(false, p7 == p9)
  362. assert_equal(false, p7 == Object.new)
  363. assert_equal(true, p10 == p10)
  364. assert_equal(true, p10 == p11)
  365. assert_equal(false, p10 == p12)
  366. assert_equal(false, p10 == Object.new)
  367. end
  368. def test_eql
  369. o1 = TimezoneOffsetInfo.new(0, 3600, :TEST)
  370. o2 = TimezoneOffsetInfo.new(0, 0, :TEST)
  371. t1 = TimezoneTransitionInfo.new(o1, o2, 1149368400)
  372. t2 = TimezoneTransitionInfo.new(o1, o2, 19631123, 8)
  373. t3 = TimezoneTransitionInfo.new(o1, o2, 1149454800)
  374. t4 = TimezoneTransitionInfo.new(o1, o2, 1149541200)
  375. p1 = TimezonePeriod.new(t1, t3)
  376. p2 = TimezonePeriod.new(t1, t3)
  377. p3 = TimezonePeriod.new(t2, t3)
  378. p4 = TimezonePeriod.new(t3, nil)
  379. p5 = TimezonePeriod.new(t3, nil)
  380. p6 = TimezonePeriod.new(t4, nil)
  381. p7 = TimezonePeriod.new(nil, t3)
  382. p8 = TimezonePeriod.new(nil, t3)
  383. p9 = TimezonePeriod.new(nil, t4)
  384. p10 = TimezonePeriod.new(nil, nil, o1)
  385. p11 = TimezonePeriod.new(nil, nil, o1)
  386. p12 = TimezonePeriod.new(nil, nil, o2)
  387. assert_equal(true, p1.eql?(p1))
  388. assert_equal(true, p1.eql?(p2))
  389. assert_equal(false, p1.eql?(p3))
  390. assert_equal(false, p1.eql?(p4))
  391. assert_equal(false, p1.eql?(p5))
  392. assert_equal(false, p1.eql?(p6))
  393. assert_equal(false, p1.eql?(p7))
  394. assert_equal(false, p1.eql?(p8))
  395. assert_equal(false, p1.eql?(p9))
  396. assert_equal(false, p1.eql?(p10))
  397. assert_equal(false, p1.eql?(p11))
  398. assert_equal(false, p1.eql?(p12))
  399. assert_equal(false, p1.eql?(Object.new))
  400. assert_equal(true, p4.eql?(p4))
  401. assert_equal(true, p4.eql?(p5))
  402. assert_equal(false, p4.eql?(p6))
  403. assert_equal(false, p4.eql?(Object.new))
  404. assert_equal(true, p7.eql?(p7))
  405. assert_equal(true, p7.eql?(p8))
  406. assert_equal(false, p7.eql?(p9))
  407. assert_equal(false, p7.eql?(Object.new))
  408. assert_equal(true, p10.eql?(p10))
  409. assert_equal(true, p10.eql?(p11))
  410. assert_equal(false, p10.eql?(p12))
  411. assert_equal(false, p10.eql?(Object.new))
  412. end
  413. def test_hash
  414. o1 = TimezoneOffsetInfo.new(0, 3600, :TEST)
  415. o2 = TimezoneOffsetInfo.new(0, 0, :TEST)
  416. t1 = TimezoneTransitionInfo.new(o1, o2, 1149368400)
  417. t2 = TimezoneTransitionInfo.new(o1, o2, 19631123, 8)
  418. t3 = TimezoneTransitionInfo.new(o1, o2, 1149454800)
  419. t4 = TimezoneTransitionInfo.new(o1, o2, 1149541200)
  420. p1 = TimezonePeriod.new(t1, t3)
  421. p2 = TimezonePeriod.new(t3, nil)
  422. p3 = TimezonePeriod.new(nil, t3)
  423. p4 = TimezonePeriod.new(nil, nil, o1)
  424. assert_equal(t1.hash ^ t3.hash, p1.hash)
  425. assert_equal(t3.hash ^ nil.hash, p2.hash)
  426. assert_equal(nil.hash ^ t3.hash, p3.hash)
  427. assert_equal(nil.hash ^ nil.hash ^ o1.hash, p4.hash)
  428. end
  429. end