PageRenderTime 40ms CodeModel.GetById 18ms RepoModel.GetById 0ms app.codeStats 0ms

/test/date/test_date.rb

http://github.com/ruby/ruby
Ruby | 166 lines | 142 code | 22 blank | 2 comment | 0 complexity | 591030fd0f79a43e558cd43c2b4e5184 MD5 | raw file
Possible License(s): GPL-2.0, BSD-3-Clause, AGPL-3.0
  1. # frozen_string_literal: true
  2. require 'test/unit'
  3. require 'date'
  4. class DateSub < Date; end
  5. class DateTimeSub < DateTime; end
  6. class TestDate < Test::Unit::TestCase
  7. def test_range_infinite_float
  8. today = Date.today
  9. r = today...Float::INFINITY
  10. assert_equal today, r.begin
  11. assert_equal Float::INFINITY, r.end
  12. assert_equal true, r.cover?(today+1)
  13. assert_equal false, r.cover?(today-1)
  14. r = (-Float::INFINITY)...today
  15. assert_equal(-Float::INFINITY, r.begin)
  16. assert_equal today, r.end
  17. assert_equal false, r.cover?(today+1)
  18. assert_equal true, r.cover?(today-1)
  19. end
  20. def test__const
  21. assert_nil(Date::MONTHNAMES[0])
  22. assert_equal('January', Date::MONTHNAMES[1])
  23. assert_equal(13, Date::MONTHNAMES.size)
  24. assert_equal('Sunday', Date::DAYNAMES[0])
  25. assert_equal(7, Date::DAYNAMES.size)
  26. assert_nil(Date::ABBR_MONTHNAMES[0])
  27. assert_equal('Jan', Date::ABBR_MONTHNAMES[1])
  28. assert_equal(13, Date::ABBR_MONTHNAMES.size)
  29. assert_equal('Sun', Date::ABBR_DAYNAMES[0])
  30. assert_equal(7, Date::ABBR_DAYNAMES.size)
  31. assert(Date::MONTHNAMES.frozen?)
  32. assert(Date::MONTHNAMES[1].frozen?)
  33. assert(Date::DAYNAMES.frozen?)
  34. assert(Date::DAYNAMES[0].frozen?)
  35. assert(Date::ABBR_MONTHNAMES.frozen?)
  36. assert(Date::ABBR_MONTHNAMES[1].frozen?)
  37. assert(Date::ABBR_DAYNAMES.frozen?)
  38. assert(Date::ABBR_DAYNAMES[0].frozen?)
  39. end
  40. def test_sub
  41. d = DateSub.new
  42. dt = DateTimeSub.new
  43. assert_instance_of(DateSub, d)
  44. assert_instance_of(DateTimeSub, dt)
  45. assert_instance_of(DateSub, DateSub.today)
  46. assert_instance_of(DateTimeSub, DateTimeSub.now)
  47. assert_equal('-4712-01-01', d.to_s)
  48. assert_equal('-4712-01-01T00:00:00+00:00', dt.to_s)
  49. d2 = d + 1
  50. assert_instance_of(DateSub, d2)
  51. d2 = d - 1
  52. assert_instance_of(DateSub, d2)
  53. d2 = d >> 1
  54. assert_instance_of(DateSub, d2)
  55. d2 = d << 1
  56. assert_instance_of(DateSub, d2)
  57. d2 = d.succ
  58. assert_instance_of(DateSub, d2)
  59. d2 = d.next
  60. assert_instance_of(DateSub, d2)
  61. d2 = d.italy
  62. assert_instance_of(DateSub, d2)
  63. d2 = d.england
  64. assert_instance_of(DateSub, d2)
  65. d2 = d.julian
  66. assert_instance_of(DateSub, d2)
  67. d2 = d.gregorian
  68. assert_instance_of(DateSub, d2)
  69. s = Marshal.dump(d)
  70. d2 = Marshal.load(s)
  71. assert_equal(d2, d)
  72. assert_instance_of(DateSub, d2)
  73. dt2 = dt + 1
  74. assert_instance_of(DateTimeSub, dt2)
  75. dt2 = dt - 1
  76. assert_instance_of(DateTimeSub, dt2)
  77. dt2 = dt >> 1
  78. assert_instance_of(DateTimeSub, dt2)
  79. dt2 = dt << 1
  80. assert_instance_of(DateTimeSub, dt2)
  81. dt2 = dt.succ
  82. assert_instance_of(DateTimeSub, dt2)
  83. dt2 = dt.next
  84. assert_instance_of(DateTimeSub, dt2)
  85. dt2 = dt.italy
  86. assert_instance_of(DateTimeSub, dt2)
  87. dt2 = dt.england
  88. assert_instance_of(DateTimeSub, dt2)
  89. dt2 = dt.julian
  90. assert_instance_of(DateTimeSub, dt2)
  91. dt2 = dt.gregorian
  92. assert_instance_of(DateTimeSub, dt2)
  93. s = Marshal.dump(dt)
  94. dt2 = Marshal.load(s)
  95. assert_equal(dt2, dt)
  96. assert_instance_of(DateTimeSub, dt2)
  97. end
  98. def test_eql_p
  99. d = Date.jd(0)
  100. d2 = Date.jd(0)
  101. dt = DateTime.jd(0)
  102. dt2 = DateTime.jd(0)
  103. assert_equal(d, d2)
  104. assert_not_equal(d, 0)
  105. assert_equal(dt, dt2)
  106. assert_not_equal(dt, 0)
  107. assert_equal(d, dt)
  108. assert_equal(d2, dt2)
  109. end
  110. def test_hash
  111. h = {}
  112. h[Date.new(1999,5,23)] = 0
  113. h[Date.new(1999,5,24)] = 1
  114. h[Date.new(1999,5,25)] = 2
  115. h[Date.new(1999,5,25)] = 9
  116. assert_equal(3, h.size)
  117. assert_equal(9, h[Date.new(1999,5,25)])
  118. assert_equal(9, h[DateTime.new(1999,5,25)])
  119. h = {}
  120. h[DateTime.new(1999,5,23)] = 0
  121. h[DateTime.new(1999,5,24)] = 1
  122. h[DateTime.new(1999,5,25)] = 2
  123. h[DateTime.new(1999,5,25)] = 9
  124. assert_equal(3, h.size)
  125. assert_equal(9, h[Date.new(1999,5,25)])
  126. assert_equal(9, h[DateTime.new(1999,5,25)])
  127. assert_instance_of(String, Date.new(1999,5,25).hash.to_s)
  128. end
  129. def test_freeze
  130. d = Date.new
  131. d.freeze
  132. assert_equal(true, d.frozen?)
  133. assert_instance_of(Integer, d.yday)
  134. assert_instance_of(String, d.to_s)
  135. end
  136. def test_submillisecond_comparison
  137. d1 = DateTime.new(2013, 12, 6, 0, 0, Rational(1, 10000))
  138. d2 = DateTime.new(2013, 12, 6, 0, 0, Rational(2, 10000))
  139. # d1 is 0.0001s earlier than d2
  140. assert_equal(-1, d1 <=> d2)
  141. assert_equal(0, d1 <=> d1)
  142. assert_equal(1, d2 <=> d1)
  143. end
  144. end