PageRenderTime 31ms CodeModel.GetById 0ms RepoModel.GetById 0ms app.codeStats 0ms

/projects/jruby-1.7.3/test/externals/ruby1.9/date/test_date_parse.rb

https://gitlab.com/essere.lab.public/qualitas.class-corpus
Ruby | 1058 lines | 912 code | 117 blank | 29 comment | 4 complexity | 517e96f27f0d8762ccfe51be1c42926e MD5 | raw file
  1. require 'test/unit'
  2. require 'date'
  3. class TestDateParse < Test::Unit::TestCase
  4. def test__parse
  5. [
  6. # ctime(3), asctime(3)
  7. [['Sat Aug 28 02:55:50 1999',false],[1999,8,28,2,55,50,nil,nil,6]],
  8. [['Sat Aug 28 02:55:50 02',false],[2,8,28,2,55,50,nil,nil,6]],
  9. [['Sat Aug 28 02:55:50 02',true],[2002,8,28,2,55,50,nil,nil,6]],
  10. [['Sat Aug 28 02:55:50 0002',false],[2,8,28,2,55,50,nil,nil,6]],
  11. [['Sat Aug 28 02:55:50 0002',true],[2,8,28,2,55,50,nil,nil,6]],
  12. # date(1)
  13. [['Sat Aug 28 02:29:34 JST 1999',false],[1999,8,28,2,29,34,'JST',9*3600,6]],
  14. [['Sat Aug 28 02:29:34 MET DST 1999',false],[1999,8,28,2,29,34,'MET DST',2*3600,6]],
  15. [['Sat Aug 28 02:29:34 AMT 1999',false],[1999,8,28,2,29,34,'AMT',nil,6]],
  16. [['Sat Aug 28 02:29:34 PMT 1999',false],[1999,8,28,2,29,34,'PMT',nil,6]],
  17. [['Sat Aug 28 02:29:34 PMT -1999',false],[-1999,8,28,2,29,34,'PMT',nil,6]],
  18. [['Sat Aug 28 02:29:34 JST 02',false],[2,8,28,2,29,34,'JST',9*3600,6]],
  19. [['Sat Aug 28 02:29:34 JST 02',true],[2002,8,28,2,29,34,'JST',9*3600,6]],
  20. [['Sat Aug 28 02:29:34 JST 0002',false],[2,8,28,2,29,34,'JST',9*3600,6]],
  21. [['Sat Aug 28 02:29:34 JST 0002',true],[2,8,28,2,29,34,'JST',9*3600,6]],
  22. [['Sat Aug 28 02:29:34 GMT+09 0002',false],[2,8,28,2,29,34,'GMT+09',9*3600,6]],
  23. [['Sat Aug 28 02:29:34 GMT+0900 0002',false],[2,8,28,2,29,34,'GMT+0900',9*3600,6]],
  24. [['Sat Aug 28 02:29:34 GMT+09:00 0002',false],[2,8,28,2,29,34,'GMT+09:00',9*3600,6]],
  25. [['Sat Aug 28 02:29:34 GMT-09 0002',false],[2,8,28,2,29,34,'GMT-09',-9*3600,6]],
  26. [['Sat Aug 28 02:29:34 GMT-0900 0002',false],[2,8,28,2,29,34,'GMT-0900',-9*3600,6]],
  27. [['Sat Aug 28 02:29:34 GMT-09:00 0002',false],[2,8,28,2,29,34,'GMT-09:00',-9*3600,6]],
  28. [['Sat Aug 28 02:29:34 GMT-090102 0002',false],[2,8,28,2,29,34,'GMT-090102',-9*3600-60-2,6]],
  29. [['Sat Aug 28 02:29:34 GMT-09:01:02 0002',false],[2,8,28,2,29,34,'GMT-09:01:02',-9*3600-60-2,6]],
  30. [['Sat Aug 28 02:29:34 GMT Standard Time 2000',false],[2000,8,28,2,29,34,'GMT Standard Time',0*3600,6]],
  31. [['Sat Aug 28 02:29:34 Mountain Standard Time 2000',false],[2000,8,28,2,29,34,'Mountain Standard Time',-7*3600,6]],
  32. [['Sat Aug 28 02:29:34 Mountain Daylight Time 2000',false],[2000,8,28,2,29,34,'Mountain Daylight Time',-6*3600,6]],
  33. [['Sat Aug 28 02:29:34 Mexico Standard Time 2000',false],[2000,8,28,2,29,34,'Mexico Standard Time',-6*3600,6]],
  34. # [['Sat Aug 28 02:29:34 Mexico Standard Time 2 2000',false],[2000,8,28,2,29,34,'Mexico Standard Time 2',-7*3600,6]], # cp
  35. [['Sat Aug 28 02:29:34 E. Australia Standard Time 2000',false],[2000,8,28,2,29,34,'E. Australia Standard Time',10*3600,6]],
  36. # part of iso 8601
  37. [['1999-05-23 23:55:21',false],[1999,5,23,23,55,21,nil,nil,nil]],
  38. [['1999-05-23 23:55:21+0900',false],[1999,5,23,23,55,21,'+0900',9*3600,nil]],
  39. [['1999-05-23 23:55:21-0900',false],[1999,5,23,23,55,21,'-0900',-9*3600,nil]],
  40. [['1999-05-23 23:55:21+09:00',false],[1999,5,23,23,55,21,'+09:00',9*3600,nil]],
  41. [['1999-05-23T23:55:21-09:00',false],[1999,5,23,23,55,21,'-09:00',-9*3600,nil]],
  42. [['1999-05-23 23:55:21Z',false],[1999,5,23,23,55,21,'Z',0,nil]],
  43. [['1999-05-23T23:55:21Z',false],[1999,5,23,23,55,21,'Z',0,nil]],
  44. [['-1999-05-23T23:55:21Z',false],[-1999,5,23,23,55,21,'Z',0,nil]],
  45. [['-1999-05-23T23:55:21Z',true],[-1999,5,23,23,55,21,'Z',0,nil]],
  46. [['19990523T23:55:21Z',false],[1999,5,23,23,55,21,'Z',0,nil]],
  47. [['+011985-04-12',false],[11985,4,12,nil,nil,nil,nil,nil,nil]],
  48. [['+011985-04-12T10:15:30',false],[11985,4,12,10,15,30,nil,nil,nil]],
  49. [['-011985-04-12',false],[-11985,4,12,nil,nil,nil,nil,nil,nil]],
  50. [['-011985-04-12T10:15:30',false],[-11985,4,12,10,15,30,nil,nil,nil]],
  51. [['02-04-12',false],[2,4,12,nil,nil,nil,nil,nil,nil]],
  52. [['02-04-12',true],[2002,4,12,nil,nil,nil,nil,nil,nil]],
  53. [['0002-04-12',false],[2,4,12,nil,nil,nil,nil,nil,nil]],
  54. [['0002-04-12',true],[2,4,12,nil,nil,nil,nil,nil,nil]],
  55. [['19990523',true],[1999,5,23,nil,nil,nil,nil,nil,nil]],
  56. [['-19990523',true],[-1999,5,23,nil,nil,nil,nil,nil,nil]],
  57. [['990523',true],[1999,5,23,nil,nil,nil,nil,nil,nil]],
  58. [['0523',false],[nil,5,23,nil,nil,nil,nil,nil,nil]],
  59. [['23',false],[nil,nil,23,nil,nil,nil,nil,nil,nil]],
  60. [['19990523 235521',true],[1999,5,23,23,55,21,nil,nil,nil]],
  61. [['990523 235521',true],[1999,5,23,23,55,21,nil,nil,nil]],
  62. [['0523 2355',false],[nil,5,23,23,55,nil,nil,nil,nil]],
  63. [['23 2355',false],[nil,nil,23,23,55,nil,nil,nil,nil]],
  64. [['19990523T235521',true],[1999,5,23,23,55,21,nil,nil,nil]],
  65. [['990523T235521',true],[1999,5,23,23,55,21,nil,nil,nil]],
  66. [['19990523T235521.99',true],[1999,5,23,23,55,21,nil,nil,nil]],
  67. [['990523T235521.99',true],[1999,5,23,23,55,21,nil,nil,nil]],
  68. [['0523T2355',false],[nil,5,23,23,55,nil,nil,nil,nil]],
  69. [['19990523T235521+0900',true],[1999,5,23,23,55,21,'+0900',9*3600,nil]],
  70. [['990523T235521-0900',true],[1999,5,23,23,55,21,'-0900',-9*3600,nil]],
  71. [['19990523T235521.99+0900',true],[1999,5,23,23,55,21,'+0900',9*3600,nil]],
  72. [['990523T235521.99-0900',true],[1999,5,23,23,55,21,'-0900',-9*3600,nil]],
  73. [['0523T2355Z',false],[nil,5,23,23,55,nil,'Z',0,nil]],
  74. [['19990523235521.123456+0900',true],[1999,5,23,23,55,21,'+0900',9*3600,nil]],
  75. [['19990523235521.123456-0900',true],[1999,5,23,23,55,21,'-0900',-9*3600,nil]],
  76. [['19990523235521,123456+0900',true],[1999,5,23,23,55,21,'+0900',9*3600,nil]],
  77. [['19990523235521,123456-0900',true],[1999,5,23,23,55,21,'-0900',-9*3600,nil]],
  78. [['990523235521,123456-0900',false],[99,5,23,23,55,21,'-0900',-9*3600,nil]],
  79. [['0523235521,123456-0900',false],[nil,5,23,23,55,21,'-0900',-9*3600,nil]],
  80. [['23235521,123456-0900',false],[nil,nil,23,23,55,21,'-0900',-9*3600,nil]],
  81. [['235521,123456-0900',false],[nil,nil,nil,23,55,21,'-0900',-9*3600,nil]],
  82. [['5521,123456-0900',false],[nil,nil,nil,nil,55,21,'-0900',-9*3600,nil]],
  83. [['21,123456-0900',false],[nil,nil,nil,nil,nil,21,'-0900',-9*3600,nil]],
  84. [['3235521,123456-0900',false],[nil,nil,3,23,55,21,'-0900',-9*3600,nil]],
  85. [['35521,123456-0900',false],[nil,nil,nil,3,55,21,'-0900',-9*3600,nil]],
  86. [['521,123456-0900',false],[nil,nil,nil,nil,5,21,'-0900',-9*3600,nil]],
  87. # reversed iso 8601 (?)
  88. [['23-05-1999',false],[1999,5,23,nil,nil,nil,nil,nil,nil]],
  89. [['23-05-1999 23:55:21',false],[1999,5,23,23,55,21,nil,nil,nil]],
  90. [['23-05--1999 23:55:21',false],[-1999,5,23,23,55,21,nil,nil,nil]],
  91. [["23-05-'99",false],[99,5,23,nil,nil,nil,nil,nil,nil]],
  92. [["23-05-'99",true],[1999,5,23,nil,nil,nil,nil,nil,nil]],
  93. # broken iso 8601 (?)
  94. # [['1999-05-23T235521Z',false],[1999,5,23,23,55,21,'Z',0,nil]], # cp
  95. [['19990523T23:55:21Z',false],[1999,5,23,23,55,21,'Z',0,nil]],
  96. [['19990523235521.1234-100',true],[1999,5,23,23,55,21,'-100',-1*3600,nil]],
  97. [['19990523235521.1234-10',true],[1999,5,23,23,55,21,'-10',-10*3600,nil]],
  98. # part of jis x0301
  99. [['M11.05.23',false],[1878,5,23,nil,nil,nil,nil,nil,nil]],
  100. [['T11.05.23 23:55:21+0900',false],[1922,5,23,23,55,21,'+0900',9*3600,nil]],
  101. [['S11.05.23 23:55:21-0900',false],[1936,5,23,23,55,21,'-0900',-9*3600,nil]],
  102. [['S40.05.23 23:55:21+09:00',false],[1965,5,23,23,55,21,'+09:00',9*3600,nil]],
  103. [['S40.05.23T23:55:21-09:00',false],[1965,5,23,23,55,21,'-09:00',-9*3600,nil]],
  104. [['H11.05.23 23:55:21Z',false],[1999,5,23,23,55,21,'Z',0,nil]],
  105. [['H11.05.23T23:55:21Z',false],[1999,5,23,23,55,21,'Z',0,nil]],
  106. # ofx date
  107. [['19990523235521',false],[1999,5,23,23,55,21,nil,nil,nil]],
  108. [['19990523235521.123',false],[1999,5,23,23,55,21,nil,nil,nil]],
  109. [['19990523235521.123[-9]',false],[1999,5,23,23,55,21,'-9',-(9*3600),nil]],
  110. [['19990523235521.123[+9]',false],[1999,5,23,23,55,21,'+9',+(9*3600),nil]],
  111. [['19990523235521.123[9]',false],[1999,5,23,23,55,21,'9',+(9*3600),nil]],
  112. [['19990523235521.123[-9.50]',false],[1999,5,23,23,55,21,'-9.50',-(9*3600+30*60),nil]],
  113. [['19990523235521.123[+9.50]',false],[1999,5,23,23,55,21,'+9.50',+(9*3600+30*60),nil]],
  114. [['19990523235521.123[-5:EST]',false],[1999,5,23,23,55,21,'EST',-5*3600,nil]],
  115. [['19990523235521.123[+9:JST]',false],[1999,5,23,23,55,21,'JST',9*3600,nil]],
  116. [['19990523235521.123[+12:XXX YYY ZZZ]',false],[1999,5,23,23,55,21,'XXX YYY ZZZ',12*3600,nil]],
  117. # [['235521',false],[nil,nil,nil,23,55,21,nil,nil,nil]], # cp
  118. [['235521.123',false],[nil,nil,nil,23,55,21,nil,nil,nil]],
  119. [['235521.123[-9]',false],[nil,nil,nil,23,55,21,'-9',-9*3600,nil]],
  120. [['235521.123[+9]',false],[nil,nil,nil,23,55,21,'+9',+9*3600,nil]],
  121. [['235521.123[-5:EST]',false],[nil,nil,nil,23,55,21,'EST',-5*3600,nil]],
  122. [['235521.123[+9:JST]',false],[nil,nil,nil,23,55,21,'JST',+9*3600,nil]],
  123. # rfc 2822
  124. [['Sun, 22 Aug 1999 00:45:29 -0400',false],[1999,8,22,0,45,29,'-0400',-4*3600,0]],
  125. [['Sun, 22 Aug 1999 00:45:29 -9959',false],[1999,8,22,0,45,29,'-9959',-(99*3600+59*60),0]],
  126. [['Sun, 22 Aug 1999 00:45:29 +9959',false],[1999,8,22,0,45,29,'+9959',+(99*3600+59*60),0]],
  127. [['Sun, 22 Aug 05 00:45:29 -0400',true],[2005,8,22,0,45,29,'-0400',-4*3600,0]],
  128. [['Sun, 22 Aug 49 00:45:29 -0400',true],[2049,8,22,0,45,29,'-0400',-4*3600,0]],
  129. # [['Sun, 22 Aug 50 00:45:29 -0400',true],[1950,8,22,0,45,29,'-0400',-4*3600,0]],
  130. # [['Sun, 22 Aug 111 00:45:29 -0400',true],[2011,8,22,0,45,29,'-0400',-4*3600,0]],
  131. [['Sun, 22 Aug 1999 00:45:29 GMT',false],[1999,8,22,0,45,29,'GMT',0,0]],
  132. [["Sun,\00022\r\nAug\r\n1999\r\n00:45:29\r\nGMT",false],[1999,8,22,0,45,29,'GMT',0,0]],
  133. [['Sun, 22 Aug 1999 00:45 GMT',false],[1999,8,22,0,45,nil,'GMT',0,0]],
  134. [['Sun, 22 Aug -1999 00:45 GMT',false],[-1999,8,22,0,45,nil,'GMT',0,0]],
  135. [['Sun, 22 Aug 99 00:45:29 UT',true],[1999,8,22,0,45,29,'UT',0,0]],
  136. [['Sun, 22 Aug 0099 00:45:29 UT',true],[99,8,22,0,45,29,'UT',0,0]],
  137. # rfc 850, obsoleted by rfc 1036
  138. [['Tuesday, 02-Mar-99 11:20:32 GMT',true],[1999,3,2,11,20,32,'GMT',0,2]],
  139. # W3C Working Draft - XForms - 4.8 Time
  140. [['2000-01-31 13:20:00-5',false],[2000,1,31,13,20,0,'-5',-5*3600,nil]],
  141. # [-+]\d+.\d+
  142. [['2000-01-31 13:20:00-5.5',false],[2000,1,31,13,20,0,'-5.5',-5*3600-30*60,nil]],
  143. [['2000-01-31 13:20:00-5,5',false],[2000,1,31,13,20,0,'-5,5',-5*3600-30*60,nil]],
  144. [['2000-01-31 13:20:00+3.5',false],[2000,1,31,13,20,0,'+3.5',3*3600+30*60,nil]],
  145. [['2000-01-31 13:20:00+3,5',false],[2000,1,31,13,20,0,'+3,5',3*3600+30*60,nil]],
  146. # mil
  147. [['2000-01-31 13:20:00 Z',false],[2000,1,31,13,20,0,'Z',0*3600,nil]],
  148. [['2000-01-31 13:20:00 H',false],[2000,1,31,13,20,0,'H',8*3600,nil]],
  149. [['2000-01-31 13:20:00 M',false],[2000,1,31,13,20,0,'M',12*3600,nil]],
  150. [['2000-01-31 13:20 M',false],[2000,1,31,13,20,nil,'M',12*3600,nil]],
  151. [['2000-01-31 13:20:00 S',false],[2000,1,31,13,20,0,'S',-6*3600,nil]],
  152. [['2000-01-31 13:20:00 A',false],[2000,1,31,13,20,0,'A',1*3600,nil]],
  153. [['2000-01-31 13:20:00 P',false],[2000,1,31,13,20,0,'P',-3*3600,nil]],
  154. # dot
  155. [['1999.5.2',false],[1999,5,2,nil,nil,nil,nil,nil,nil]],
  156. [['1999.05.02',false],[1999,5,2,nil,nil,nil,nil,nil,nil]],
  157. [['-1999.05.02',false],[-1999,5,2,nil,nil,nil,nil,nil,nil]],
  158. # [['05.02',false],[nil,5,2,nil,nil,nil,nil,nil,nil]], # not support
  159. # [[' 5. 2',false],[nil,5,2,nil,nil,nil,nil,nil,nil]], # not support
  160. [['0099.5.2',false],[99,5,2,nil,nil,nil,nil,nil,nil]],
  161. [['0099.5.2',true],[99,5,2,nil,nil,nil,nil,nil,nil]],
  162. [["'99.5.2",false],[99,5,2,nil,nil,nil,nil,nil,nil]],
  163. [["'99.5.2",true],[1999,5,2,nil,nil,nil,nil,nil,nil]],
  164. # reversed dot
  165. [['2.5.1999',false],[1999,5,2,nil,nil,nil,nil,nil,nil]],
  166. [['02.05.1999',false],[1999,5,2,nil,nil,nil,nil,nil,nil]],
  167. [['02.05.-1999',false],[-1999,5,2,nil,nil,nil,nil,nil,nil]],
  168. [['2.5.0099',false],[99,5,2,nil,nil,nil,nil,nil,nil]],
  169. [['2.5.0099',true],[99,5,2,nil,nil,nil,nil,nil,nil]],
  170. [["2.5.'99",false],[99,5,2,nil,nil,nil,nil,nil,nil]],
  171. [["2.5.'99",true],[1999,5,2,nil,nil,nil,nil,nil,nil]],
  172. # vms
  173. [['08-DEC-1988',false],[1988,12,8,nil,nil,nil,nil,nil,nil]],
  174. [['31-JAN-1999',false],[1999,1,31,nil,nil,nil,nil,nil,nil]],
  175. [['31-JAN--1999',false],[-1999,1,31,nil,nil,nil,nil,nil,nil]],
  176. [['08-DEC-88',false],[88,12,8,nil,nil,nil,nil,nil,nil]],
  177. [['08-DEC-88',true],[1988,12,8,nil,nil,nil,nil,nil,nil]],
  178. [['08-DEC-0088',false],[88,12,8,nil,nil,nil,nil,nil,nil]],
  179. [['08-DEC-0088',true],[88,12,8,nil,nil,nil,nil,nil,nil]],
  180. # swaped vms
  181. [['DEC-08-1988',false],[1988,12,8,nil,nil,nil,nil,nil,nil]],
  182. [['JAN-31-1999',false],[1999,1,31,nil,nil,nil,nil,nil,nil]],
  183. [['JAN-31--1999',false],[-1999,1,31,nil,nil,nil,nil,nil,nil]],
  184. [['JAN-1999',false],[1999,1,nil,nil,nil,nil,nil,nil,nil]],
  185. [['JAN--1999',false],[-1999,1,nil,nil,nil,nil,nil,nil,nil]],
  186. # reversed vms
  187. [['1988-DEC-08',false],[1988,12,8,nil,nil,nil,nil,nil,nil]],
  188. [['1999-JAN-31',false],[1999,1,31,nil,nil,nil,nil,nil,nil]],
  189. [['-1999-JAN-31',false],[-1999,1,31,nil,nil,nil,nil,nil,nil]],
  190. [['0088-DEC-08',false],[88,12,8,nil,nil,nil,nil,nil,nil]],
  191. [['0088-DEC-08',true],[88,12,8,nil,nil,nil,nil,nil,nil]],
  192. [["'88/12/8",false],[88,12,8,nil,nil,nil,nil,nil,nil]],
  193. [["'88/12/8",true],[1988,12,8,nil,nil,nil,nil,nil,nil]],
  194. # non-spaced eu
  195. [['08/dec/1988',false],[1988,12,8,nil,nil,nil,nil,nil,nil]],
  196. [['31/jan/1999',false],[1999,1,31,nil,nil,nil,nil,nil,nil]],
  197. [['31/jan/-1999',false],[-1999,1,31,nil,nil,nil,nil,nil,nil]],
  198. [['08.dec.1988',false],[1988,12,8,nil,nil,nil,nil,nil,nil]],
  199. [['31.jan.1999',false],[1999,1,31,nil,nil,nil,nil,nil,nil]],
  200. [['31.jan.-1999',false],[-1999,1,31,nil,nil,nil,nil,nil,nil]],
  201. # non-spaced us
  202. [['dec/08/1988',false],[1988,12,8,nil,nil,nil,nil,nil,nil]],
  203. [['jan/31/1999',false],[1999,1,31,nil,nil,nil,nil,nil,nil]],
  204. [['jan/31/-1999',false],[-1999,1,31,nil,nil,nil,nil,nil,nil]],
  205. [['jan/31',false],[nil,1,31,nil,nil,nil,nil,nil,nil]],
  206. [['jan/1988',false],[1988,1,nil,nil,nil,nil,nil,nil,nil]],
  207. [['dec.08.1988',false],[1988,12,8,nil,nil,nil,nil,nil,nil]],
  208. [['jan.31.1999',false],[1999,1,31,nil,nil,nil,nil,nil,nil]],
  209. [['jan.31.-1999',false],[-1999,1,31,nil,nil,nil,nil,nil,nil]],
  210. [['jan.31',false],[nil,1,31,nil,nil,nil,nil,nil,nil]],
  211. [['jan.1988',false],[1988,1,nil,nil,nil,nil,nil,nil,nil]],
  212. # month and day of month
  213. [['Jan 1',false],[nil,1,1,nil,nil,nil,nil,nil,nil]],
  214. [['Jul 11',false],[nil,7,11,nil,nil,nil,nil,nil,nil]],
  215. [['July 11',false],[nil,7,11,nil,nil,nil,nil,nil,nil]],
  216. [['Sept 23',false],[nil,9,23,nil,nil,nil,nil,nil,nil]],
  217. [['Sep. 23',false],[nil,9,23,nil,nil,nil,nil,nil,nil]],
  218. [['Sept. 23',false],[nil,9,23,nil,nil,nil,nil,nil,nil]],
  219. [['September 23',false],[nil,9,23,nil,nil,nil,nil,nil,nil]],
  220. [['October 1st',false],[nil,10,1,nil,nil,nil,nil,nil,nil]],
  221. [['October 23rd',false],[nil,10,23,nil,nil,nil,nil,nil,nil]],
  222. [['October 25th 1999',false],[1999,10,25,nil,nil,nil,nil,nil,nil]],
  223. [['October 25th -1999',false],[-1999,10,25,nil,nil,nil,nil,nil,nil]],
  224. [['october 25th 1999',false],[1999,10,25,nil,nil,nil,nil,nil,nil]],
  225. [['OCTOBER 25th 1999',false],[1999,10,25,nil,nil,nil,nil,nil,nil]],
  226. [['oCtoBer 25th 1999',false],[1999,10,25,nil,nil,nil,nil,nil,nil]],
  227. [['aSep 23',false],[nil,nil,23,nil,nil,nil,nil,nil,nil]],
  228. # month and year
  229. [['Sept 1990',false],[1990,9,nil,nil,nil,nil,nil,nil,nil]],
  230. [["Sept '90",false],[90,9,nil,nil,nil,nil,nil,nil,nil]],
  231. [["Sept '90",true],[1990,9,nil,nil,nil,nil,nil,nil,nil]],
  232. [['1990/09',false],[1990,9,nil,nil,nil,nil,nil,nil,nil]],
  233. [['09/1990',false],[1990,9,nil,nil,nil,nil,nil,nil,nil]],
  234. [["aSep '90",false],[90,nil,nil,nil,nil,nil,nil,nil,nil]],
  235. # year
  236. [["'90",false],[90,nil,nil,nil,nil,nil,nil,nil,nil]],
  237. [["'90",true],[1990,nil,nil,nil,nil,nil,nil,nil,nil]],
  238. # month
  239. [['Jun',false],[nil,6,nil,nil,nil,nil,nil,nil,nil]],
  240. [['June',false],[nil,6,nil,nil,nil,nil,nil,nil,nil]],
  241. [['Sep',false],[nil,9,nil,nil,nil,nil,nil,nil,nil]],
  242. [['Sept',false],[nil,9,nil,nil,nil,nil,nil,nil,nil]],
  243. [['September',false],[nil,9,nil,nil,nil,nil,nil,nil,nil]],
  244. [['aSep',false],[nil,nil,nil,nil,nil,nil,nil,nil,nil]],
  245. # day of month
  246. [['1st',false],[nil,nil,1,nil,nil,nil,nil,nil,nil]],
  247. [['2nd',false],[nil,nil,2,nil,nil,nil,nil,nil,nil]],
  248. [['3rd',false],[nil,nil,3,nil,nil,nil,nil,nil,nil]],
  249. [['4th',false],[nil,nil,4,nil,nil,nil,nil,nil,nil]],
  250. [['29th',false],[nil,nil,29,nil,nil,nil,nil,nil,nil]],
  251. [['31st',false],[nil,nil,31,nil,nil,nil,nil,nil,nil]],
  252. [['1sta',false],[nil,nil,nil,nil,nil,nil,nil,nil,nil]],
  253. # era
  254. [['Sat Aug 28 02:29:34 GMT CE 2000',false],[2000,8,28,2,29,34,'GMT',0,6]],
  255. [['Sat Aug 28 02:29:34 GMT C.E. 2000',false],[2000,8,28,2,29,34,'GMT',0,6]],
  256. [['Sat Aug 28 02:29:34 GMT BCE 2000',false],[-1999,8,28,2,29,34,'GMT',0,6]],
  257. [['Sat Aug 28 02:29:34 GMT B.C.E. 2000',false],[-1999,8,28,2,29,34,'GMT',0,6]],
  258. [['Sat Aug 28 02:29:34 GMT AD 2000',false],[2000,8,28,2,29,34,'GMT',0,6]],
  259. [['Sat Aug 28 02:29:34 GMT A.D. 2000',false],[2000,8,28,2,29,34,'GMT',0,6]],
  260. [['Sat Aug 28 02:29:34 GMT BC 2000',false],[-1999,8,28,2,29,34,'GMT',0,6]],
  261. [['Sat Aug 28 02:29:34 GMT B.C. 2000',false],[-1999,8,28,2,29,34,'GMT',0,6]],
  262. [['Sat Aug 28 02:29:34 GMT 2000 BC',false],[-1999,8,28,2,29,34,'GMT',0,6]],
  263. [['Sat Aug 28 02:29:34 GMT 2000 BCE',false],[-1999,8,28,2,29,34,'GMT',0,6]],
  264. [['Sat Aug 28 02:29:34 GMT 2000 B.C.',false],[-1999,8,28,2,29,34,'GMT',0,6]],
  265. [['Sat Aug 28 02:29:34 GMT 2000 B.C.E.',false],[-1999,8,28,2,29,34,'GMT',0,6]],
  266. # collection
  267. # [['le ler juillet 1982',false],[1982,7,1,nil,nil,nil,nil,nil,nil]], # bih 1982
  268. # [['30 June 1982 , 23h 59m 59s',false],[1982,6,30,23,59,59,nil,nil,nil]], # bih 1982
  269. [['Tuesday, May 18, 1999 Published at 13:36 GMT 14:36 UK',false],[1999,5,18,13,36,nil,'GMT',0,2]], # bbc.co.uk
  270. [['July 20, 2000 Web posted at: 3:37 p.m. EDT (1937 GMT)',false],[2000,7,20,15,37,nil,'EDT',-4*3600,nil]], # cnn.com
  271. [['12:54 p.m. EDT, September 11, 2006',false],[2006,9,11,12,54,nil,'EDT',-4*3600,nil]], # cnn.com
  272. [['February 04, 2001 at 10:59 AM PST',false],[2001,2,4,10,59,nil,'PST',-8*3600,nil]], # old amazon.com
  273. [['Monday May 08, @01:55PM',false],[nil,5,8,13,55,nil,nil,nil,1]], # slashdot.org
  274. [['06.June 2005',false],[2005,6,6,nil,nil,nil,nil,nil,nil]], # dhl.com
  275. # etc.
  276. [['8:00 pm lt',false],[nil,nil,nil,20,0,nil,'lt',nil,nil]],
  277. [['4:00 AM, Jan. 12, 1990',false],[1990,1,12,4,0,nil,nil,nil,nil]],
  278. [['Jan. 12 4:00 AM 1990',false],[1990,1,12,4,0,nil,nil,nil,nil]],
  279. # [['Jan. 12 4:00 -1990',false],[-1990,1,12,4,0,nil,nil,nil,nil]], # cp
  280. [['1990-01-12 04:00:00+00',false],[1990,1,12,4,0,0,'+00',0,nil]],
  281. [['1990-01-11 20:00:00-08',false],[1990,1,11,20,0,0,'-08',-8*3600,nil]],
  282. [['1990/01/12 04:00:00',false],[1990,1,12,4,0,0,nil,nil,nil]],
  283. # [['Thu Jan 11 20:00:00 1990 LT',false], [1990,1,11,20,0,0,'LT',nil,4]], # cp
  284. [['Thu Jan 11 20:00:00 PST 1990',false],[1990,1,11,20,0,0,'PST',-8*3600,4]],
  285. [['Fri Jan 12 04:00:00 GMT 1990',false],[1990,1,12,4,0,0,'GMT',0,5]],
  286. [['Thu, 11 Jan 1990 20:00:00 -0800',false],[1990,1,11,20,0,0,'-0800',-8*3600,4]],
  287. [['12-January-1990, 04:00 WET',false],[1990,1,12,4,0,nil,'WET',0*3600,nil]],
  288. [['jan 2 3 am +4 5',false],[5,1,2,3,nil,nil,'+4',4*3600,nil]],
  289. [['jan 2 3 am +4 5',true],[2005,1,2,3,nil,nil,'+4',4*3600,nil]],
  290. [['fri1feb3bc4pm+5',false],[-2,2,1,16,nil,nil,'+5',5*3600,5]],
  291. [['fri1feb3bc4pm+5',true],[-2,2,1,16,nil,nil,'+5',5*3600,5]],
  292. [['03 feb 1st',false],[03,2,1,nil,nil,nil,nil,nil,nil]],
  293. # apostrophe
  294. [["July 4, '79",true],[1979,7,4,nil,nil,nil,nil,nil,nil]],
  295. [["4th July '79",true],[1979,7,4,nil,nil,nil,nil,nil,nil]],
  296. # day of week
  297. [['Sunday',false],[nil,nil,nil,nil,nil,nil,nil,nil,0]],
  298. [['Mon',false],[nil,nil,nil,nil,nil,nil,nil,nil,1]],
  299. [['Tue',false],[nil,nil,nil,nil,nil,nil,nil,nil,2]],
  300. [['Wed',false],[nil,nil,nil,nil,nil,nil,nil,nil,3]],
  301. [['Thurs',false],[nil,nil,nil,nil,nil,nil,nil,nil,4]],
  302. [['Friday',false],[nil,nil,nil,nil,nil,nil,nil,nil,5]],
  303. [['Sat.',false],[nil,nil,nil,nil,nil,nil,nil,nil,6]],
  304. [['sat.',false],[nil,nil,nil,nil,nil,nil,nil,nil,6]],
  305. [['SAT.',false],[nil,nil,nil,nil,nil,nil,nil,nil,6]],
  306. [['sAt.',false],[nil,nil,nil,nil,nil,nil,nil,nil,6]],
  307. # [['su',false],[nil,nil,nil,nil,nil,nil,nil,nil,0]],
  308. # [['mo',false],[nil,nil,nil,nil,nil,nil,nil,nil,1]],
  309. # time
  310. [['09:55',false],[nil,nil,nil,9,55,nil,nil,nil,nil]],
  311. [['09:55:30',false],[nil,nil,nil,9,55,30,nil,nil,nil]],
  312. [['09:55:30am',false],[nil,nil,nil,9,55,30,nil,nil,nil]],
  313. [['09:55:30pm',false],[nil,nil,nil,21,55,30,nil,nil,nil]],
  314. [['09:55:30a.m.',false],[nil,nil,nil,9,55,30,nil,nil,nil]],
  315. [['09:55:30p.m.',false],[nil,nil,nil,21,55,30,nil,nil,nil]],
  316. [['09:55:30pm GMT',false],[nil,nil,nil,21,55,30,'GMT',0,nil]],
  317. [['09:55:30p.m. GMT',false],[nil,nil,nil,21,55,30,'GMT',0,nil]],
  318. [['09:55+0900',false],[nil,nil,nil,9,55,nil,'+0900',9*3600,nil]],
  319. [['09 AM',false],[nil,nil,nil,9,nil,nil,nil,nil,nil]],
  320. [['09am',false],[nil,nil,nil,9,nil,nil,nil,nil,nil]],
  321. [['09 A.M.',false],[nil,nil,nil,9,nil,nil,nil,nil,nil]],
  322. [['09 PM',false],[nil,nil,nil,21,nil,nil,nil,nil,nil]],
  323. [['09pm',false],[nil,nil,nil,21,nil,nil,nil,nil,nil]],
  324. [['09 P.M.',false],[nil,nil,nil,21,nil,nil,nil,nil,nil]],
  325. [['9h22m23s',false],[nil,nil,nil,9,22,23,nil,nil,nil]],
  326. [['9h 22m 23s',false],[nil,nil,nil,9,22,23,nil,nil,nil]],
  327. [['9h22m',false],[nil,nil,nil,9,22,nil,nil,nil,nil]],
  328. [['9h 22m',false],[nil,nil,nil,9,22,nil,nil,nil,nil]],
  329. [['9h',false],[nil,nil,nil,9,nil,nil,nil,nil,nil]],
  330. [['9h 22m 23s am',false],[nil,nil,nil,9,22,23,nil,nil,nil]],
  331. [['9h 22m 23s pm',false],[nil,nil,nil,21,22,23,nil,nil,nil]],
  332. [['9h 22m am',false],[nil,nil,nil,9,22,nil,nil,nil,nil]],
  333. [['9h 22m pm',false],[nil,nil,nil,21,22,nil,nil,nil,nil]],
  334. [['9h am',false],[nil,nil,nil,9,nil,nil,nil,nil,nil]],
  335. [['9h pm',false],[nil,nil,nil,21,nil,nil,nil,nil,nil]],
  336. [['00:00',false],[nil,nil,nil,0,0,nil,nil,nil,nil]],
  337. [['01:00',false],[nil,nil,nil,1,0,nil,nil,nil,nil]],
  338. [['11:00',false],[nil,nil,nil,11,0,nil,nil,nil,nil]],
  339. [['12:00',false],[nil,nil,nil,12,0,nil,nil,nil,nil]],
  340. [['13:00',false],[nil,nil,nil,13,0,nil,nil,nil,nil]],
  341. [['23:00',false],[nil,nil,nil,23,0,nil,nil,nil,nil]],
  342. [['24:00',false],[nil,nil,nil,24,0,nil,nil,nil,nil]],
  343. [['00:00 AM',false],[nil,nil,nil,0,0,nil,nil,nil,nil]],
  344. [['12:00 AM',false],[nil,nil,nil,0,0,nil,nil,nil,nil]],
  345. [['01:00 AM',false],[nil,nil,nil,1,0,nil,nil,nil,nil]],
  346. [['11:00 AM',false],[nil,nil,nil,11,0,nil,nil,nil,nil]],
  347. [['00:00 PM',false],[nil,nil,nil,12,0,nil,nil,nil,nil]],
  348. [['12:00 PM',false],[nil,nil,nil,12,0,nil,nil,nil,nil]],
  349. [['01:00 PM',false],[nil,nil,nil,13,0,nil,nil,nil,nil]],
  350. [['11:00 PM',false],[nil,nil,nil,23,0,nil,nil,nil,nil]],
  351. # pick up the rest
  352. [['2000-01-02 1',false],[2000,1,2,1,nil,nil,nil,nil,nil]],
  353. [['2000-01-02 23',false],[2000,1,2,23,nil,nil,nil,nil,nil]],
  354. [['2000-01-02 24',false],[2000,1,2,24,nil,nil,nil,nil,nil]],
  355. [['1 03:04:05',false],[nil,nil,1,3,4,5,nil,nil,nil]],
  356. [['02 03:04:05',false],[nil,nil,2,3,4,5,nil,nil,nil]],
  357. [['31 03:04:05',false],[nil,nil,31,3,4,5,nil,nil,nil]],
  358. # null, space
  359. [['',false],[nil,nil,nil,nil,nil,nil,nil,nil,nil]],
  360. [["\s",false],[nil,nil,nil,nil,nil,nil,nil,nil,nil]],
  361. [["\s" * 10, true],[nil,nil,nil,nil,nil,nil,nil,nil,nil]],
  362. [["\t",false],[nil,nil,nil,nil,nil,nil,nil,nil,nil]],
  363. [["\n",false],[nil,nil,nil,nil,nil,nil,nil,nil,nil]],
  364. [["\v",false],[nil,nil,nil,nil,nil,nil,nil,nil,nil]],
  365. [["\f",false],[nil,nil,nil,nil,nil,nil,nil,nil,nil]],
  366. [["\r",false],[nil,nil,nil,nil,nil,nil,nil,nil,nil]],
  367. [["\t\n\v\f\r\s",false],[nil,nil,nil,nil,nil,nil,nil,nil,nil]],
  368. [["1999-05-23\t\n\v\f\r\s21:34:56",false],[1999,5,23,21,34,56,nil,nil,nil]],
  369. [["1999-05-23\n\n\n\n\n\n21:34:56",false],[1999,5,23,21,34,56,nil,nil,nil]],
  370. ].each do |x,y|
  371. h = Date._parse(*x)
  372. a = h.values_at(:year,:mon,:mday,:hour,:min,:sec,:zone,:offset,:wday)
  373. if y[1] == -1
  374. a[1] = -1
  375. a[2] = h[:yday]
  376. end
  377. assert_equal(y, a, [x, y, a].inspect)
  378. end
  379. end
  380. def test__parse_slash_exp
  381. [
  382. # little
  383. [['2/5/1999',false],[1999,5,2,nil,nil,nil,nil,nil,nil]],
  384. [['02/05/1999',false],[1999,5,2,nil,nil,nil,nil,nil,nil]],
  385. [['02/05/-1999',false],[-1999,5,2,nil,nil,nil,nil,nil,nil]],
  386. [['05/02',false],[nil,5,2,nil,nil,nil,nil,nil,nil]],
  387. [[' 5/ 2',false],[nil,5,2,nil,nil,nil,nil,nil,nil]],
  388. [["2/5/'99",true],[1999,5,2,nil,nil,nil,nil,nil,nil]],
  389. [['2/5/0099',false],[99,5,2,nil,nil,nil,nil,nil,nil]],
  390. [['2/5/0099',true],[99,5,2,nil,nil,nil,nil,nil,nil]],
  391. [['2/5 1999',false],[1999,5,2,nil,nil,nil,nil,nil,nil]],
  392. [['2/5-1999',false],[1999,5,2,nil,nil,nil,nil,nil,nil]],
  393. [['2/5--1999',false],[-1999,5,2,nil,nil,nil,nil,nil,nil]],
  394. # big
  395. [['99/5/2',false],[99,5,2,nil,nil,nil,nil,nil,nil]],
  396. [['99/5/2',true],[1999,5,2,nil,nil,nil,nil,nil,nil]],
  397. [['1999/5/2',false],[1999,5,2,nil,nil,nil,nil,nil,nil]],
  398. [['1999/05/02',false],[1999,5,2,nil,nil,nil,nil,nil,nil]],
  399. [['-1999/05/02',false],[-1999,5,2,nil,nil,nil,nil,nil,nil]],
  400. [['0099/5/2',false],[99,5,2,nil,nil,nil,nil,nil,nil]],
  401. [['0099/5/2',true],[99,5,2,nil,nil,nil,nil,nil,nil]],
  402. [["'99/5/2",false],[99,5,2,nil,nil,nil,nil,nil,nil]],
  403. [["'99/5/2",true],[1999,5,2,nil,nil,nil,nil,nil,nil]],
  404. ].each do |x,y|
  405. h = Date._parse(*x)
  406. a = h.values_at(:year,:mon,:mday,:hour,:min,:sec,:zone,:offset,:wday)
  407. if y[1] == -1
  408. a[1] = -1
  409. a[2] = h[:yday]
  410. end
  411. assert_equal(y, a, [x, y, a].inspect)
  412. end
  413. end
  414. def test__parse__2
  415. h = Date._parse('22:45:59.5')
  416. assert_equal([22, 45, 59, 5.to_r/10**1], h.values_at(:hour, :min, :sec, :sec_fraction))
  417. h = Date._parse('22:45:59.05')
  418. assert_equal([22, 45, 59, 5.to_r/10**2], h.values_at(:hour, :min, :sec, :sec_fraction))
  419. h = Date._parse('22:45:59.005')
  420. assert_equal([22, 45, 59, 5.to_r/10**3], h.values_at(:hour, :min, :sec, :sec_fraction))
  421. h = Date._parse('22:45:59.0123')
  422. assert_equal([22, 45, 59, 123.to_r/10**4], h.values_at(:hour, :min, :sec, :sec_fraction))
  423. h = Date._parse('224559.5')
  424. assert_equal([22, 45, 59, 5.to_r/10**1], h.values_at(:hour, :min, :sec, :sec_fraction))
  425. h = Date._parse('224559.05')
  426. assert_equal([22, 45, 59, 5.to_r/10**2], h.values_at(:hour, :min, :sec, :sec_fraction))
  427. h = Date._parse('224559.005')
  428. assert_equal([22, 45, 59, 5.to_r/10**3], h.values_at(:hour, :min, :sec, :sec_fraction))
  429. h = Date._parse('224559.0123')
  430. assert_equal([22, 45, 59, 123.to_r/10**4], h.values_at(:hour, :min, :sec, :sec_fraction))
  431. h = Date._parse('2006-w15-5')
  432. assert_equal([2006, 15, 5], h.values_at(:cwyear, :cweek, :cwday))
  433. h = Date._parse('2006w155')
  434. assert_equal([2006, 15, 5], h.values_at(:cwyear, :cweek, :cwday))
  435. h = Date._parse('06w155', false)
  436. assert_equal([6, 15, 5], h.values_at(:cwyear, :cweek, :cwday))
  437. h = Date._parse('06w155', true)
  438. assert_equal([2006, 15, 5], h.values_at(:cwyear, :cweek, :cwday))
  439. h = Date._parse('2006-w15')
  440. assert_equal([2006, 15, nil], h.values_at(:cwyear, :cweek, :cwday))
  441. h = Date._parse('2006w15')
  442. assert_equal([2006, 15, nil], h.values_at(:cwyear, :cweek, :cwday))
  443. h = Date._parse('-w15-5')
  444. assert_equal([nil, 15, 5], h.values_at(:cwyear, :cweek, :cwday))
  445. h = Date._parse('-w155')
  446. assert_equal([nil, 15, 5], h.values_at(:cwyear, :cweek, :cwday))
  447. h = Date._parse('-w15')
  448. assert_equal([nil, 15, nil], h.values_at(:cwyear, :cweek, :cwday))
  449. h = Date._parse('-w15')
  450. assert_equal([nil, 15, nil], h.values_at(:cwyear, :cweek, :cwday))
  451. h = Date._parse('-w-5')
  452. assert_equal([nil, nil, 5], h.values_at(:cwyear, :cweek, :cwday))
  453. h = Date._parse('--11-29')
  454. assert_equal([nil, 11, 29], h.values_at(:year, :mon, :mday))
  455. h = Date._parse('--1129')
  456. assert_equal([nil, 11, 29], h.values_at(:year, :mon, :mday))
  457. h = Date._parse('--11')
  458. assert_equal([nil, 11, nil], h.values_at(:year, :mon, :mday))
  459. h = Date._parse('---29')
  460. assert_equal([nil, nil, 29], h.values_at(:year, :mon, :mday))
  461. h = Date._parse('-333')
  462. assert_equal([nil, 333], h.values_at(:year, :yday))
  463. h = Date._parse('2006-333')
  464. assert_equal([2006, 333], h.values_at(:year, :yday))
  465. h = Date._parse('2006333')
  466. assert_equal([2006, 333], h.values_at(:year, :yday))
  467. h = Date._parse('06333', false)
  468. assert_equal([6, 333], h.values_at(:year, :yday))
  469. h = Date._parse('06333', true)
  470. assert_equal([2006, 333], h.values_at(:year, :yday))
  471. h = Date._parse('333')
  472. assert_equal([nil, 333], h.values_at(:year, :yday))
  473. end
  474. def test_parse
  475. assert_equal(Date.new, Date.parse)
  476. assert_equal(Date.new(2002,3,14), Date.parse('2002-03-14'))
  477. assert_equal(DateTime.new(2002,3,14,11,22,33, 0),
  478. DateTime.parse('2002-03-14T11:22:33Z'))
  479. assert_equal(DateTime.new(2002,3,14,11,22,33, 9.to_r/24),
  480. DateTime.parse('2002-03-14T11:22:33+09:00'))
  481. assert_equal(DateTime.new(2002,3,14,11,22,33, -9.to_r/24),
  482. DateTime.parse('2002-03-14T11:22:33-09:00'))
  483. assert_equal(DateTime.new(2002,3,14,11,22,33, -9.to_r/24) + 123456789.to_r/1000000000/86400,
  484. DateTime.parse('2002-03-14T11:22:33.123456789-09:00'))
  485. end
  486. def test_parse__2
  487. d1 = DateTime.parse('2004-03-13T22:45:59.5')
  488. d2 = DateTime.parse('2004-03-13T22:45:59')
  489. assert_equal(d2 + 5.to_r/10**1/86400, d1)
  490. d1 = DateTime.parse('2004-03-13T22:45:59.05')
  491. d2 = DateTime.parse('2004-03-13T22:45:59')
  492. assert_equal(d2 + 5.to_r/10**2/86400, d1)
  493. d1 = DateTime.parse('2004-03-13T22:45:59.005')
  494. d2 = DateTime.parse('2004-03-13T22:45:59')
  495. assert_equal(d2 + 5.to_r/10**3/86400, d1)
  496. d1 = DateTime.parse('2004-03-13T22:45:59.0123')
  497. d2 = DateTime.parse('2004-03-13T22:45:59')
  498. assert_equal(d2 + 123.to_r/10**4/86400, d1)
  499. d1 = DateTime.parse('2004-03-13T22:45:59.5')
  500. d1 += 1.to_r/2/86400
  501. d2 = DateTime.parse('2004-03-13T22:46:00')
  502. assert_equal(d2, d1)
  503. end
  504. require 'time'
  505. def test_parse__time
  506. methods = [:to_s, :asctime, :iso8601, :rfc2822, :httpdate, :xmlschema]
  507. t = Time.utc(2001,2,3,4,5,6)
  508. methods.each do |m|
  509. d = DateTime.parse(t.__send__(m))
  510. assert_equal([2001, 2, 3, 4, 5, 6],
  511. [d.year, d.mon, d.mday, d.hour, d.min, d.sec],
  512. [m, t.__send__(m)].inspect)
  513. end
  514. t = Time.mktime(2001,2,3,4,5,6)
  515. methods.each do |m|
  516. next if m == :httpdate
  517. d = DateTime.parse(t.__send__(m))
  518. assert_equal([2001, 2, 3, 4, 5, 6],
  519. [d.year, d.mon, d.mday, d.hour, d.min, d.sec],
  520. [m, t.__send__(m)].inspect)
  521. end
  522. end
  523. def test_parse__comp
  524. n = DateTime.now
  525. d = DateTime.parse('073')
  526. assert_equal([n.year, 73, 0, 0, 0],
  527. [d.year, d.yday, d.hour, d.min, d.sec])
  528. d = DateTime.parse('13')
  529. assert_equal([n.year, n.mon, 13, 0, 0, 0],
  530. [d.year, d.mon, d.mday, d.hour, d.min, d.sec])
  531. d = DateTime.parse('Mar 13')
  532. assert_equal([n.year, 3, 13, 0, 0, 0],
  533. [d.year, d.mon, d.mday, d.hour, d.min, d.sec])
  534. d = DateTime.parse('Mar 2004')
  535. assert_equal([2004, 3, 1, 0, 0, 0],
  536. [d.year, d.mon, d.mday, d.hour, d.min, d.sec])
  537. d = DateTime.parse('23:55')
  538. assert_equal([n.year, n.mon, n.mday, 23, 55, 0],
  539. [d.year, d.mon, d.mday, d.hour, d.min, d.sec])
  540. d = DateTime.parse('23:55:30')
  541. assert_equal([n.year, n.mon, n.mday, 23, 55, 30],
  542. [d.year, d.mon, d.mday, d.hour, d.min, d.sec])
  543. d = DateTime.parse('Sun 23:55')
  544. d2 = d - d.wday
  545. assert_equal([d2.year, d2.mon, d2.mday, 23, 55, 0],
  546. [d.year, d.mon, d.mday, d.hour, d.min, d.sec])
  547. d = DateTime.parse('Aug 23:55')
  548. assert_equal([n.year, 8, 1, 23, 55, 0],
  549. [d.year, d.mon, d.mday, d.hour, d.min, d.sec])
  550. end
  551. def test_parse__d_to_s
  552. d = Date.new(2002,3,14)
  553. assert_equal(d, Date.parse(d.to_s))
  554. d = DateTime.new(2002,3,14,11,22,33, 9.to_r/24)
  555. assert_equal(d, DateTime.parse(d.to_s))
  556. end
  557. def test_parse_utf8
  558. h = DateTime._parse("Sun\u{3000}Aug 16 01:02:03 \u{65e5}\u{672c} 2009")
  559. assert_equal(2009, h[:year])
  560. assert_equal(8, h[:mon])
  561. assert_equal(16, h[:mday])
  562. assert_equal(0, h[:wday])
  563. assert_equal(1, h[:hour])
  564. assert_equal(2, h[:min])
  565. assert_equal(3, h[:sec])
  566. assert_equal("\u{65e5}\u{672c}", h[:zone])
  567. end
  568. def test_parse__ex
  569. assert_raise(ArgumentError) do
  570. Date.parse('')
  571. end
  572. assert_raise(ArgumentError) do
  573. DateTime.parse('')
  574. end
  575. assert_raise(ArgumentError) do
  576. Date.parse('2001-02-29')
  577. end
  578. assert_raise(ArgumentError) do
  579. DateTime.parse('2001-02-29T23:59:60')
  580. end
  581. assert_raise(ArgumentError) do
  582. Date.parse('23:55')
  583. end
  584. end
  585. def test__iso8601
  586. h = Date._iso8601('01-02-03T04:05:06Z')
  587. assert_equal([2001, 2, 3, 4, 5, 6, 0],
  588. h.values_at(:year, :mon, :mday, :hour, :min, :sec, :offset))
  589. h = Date._iso8601('2001-02-03T04:05:06Z')
  590. assert_equal([2001, 2, 3, 4, 5, 6, 0],
  591. h.values_at(:year, :mon, :mday, :hour, :min, :sec, :offset))
  592. h = Date._iso8601('--02-03T04:05:06Z')
  593. assert_equal([nil, 2, 3, 4, 5, 6, 0],
  594. h.values_at(:year, :mon, :mday, :hour, :min, :sec, :offset))
  595. h = Date._iso8601('---03T04:05:06Z')
  596. assert_equal([nil, nil, 3, 4, 5, 6, 0],
  597. h.values_at(:year, :mon, :mday, :hour, :min, :sec, :offset))
  598. h = Date._iso8601('2001-02-03T04:05')
  599. assert_equal([2001, 2, 3, 4, 5, nil, nil],
  600. h.values_at(:year, :mon, :mday, :hour, :min, :sec, :offset))
  601. h = Date._iso8601('2001-02-03T04:05:06')
  602. assert_equal([2001, 2, 3, 4, 5, 6, nil],
  603. h.values_at(:year, :mon, :mday, :hour, :min, :sec, :offset))
  604. h = Date._iso8601('2001-02-03T04:05:06,07')
  605. assert_equal([2001, 2, 3, 4, 5, 6, nil],
  606. h.values_at(:year, :mon, :mday, :hour, :min, :sec, :offset))
  607. h = Date._iso8601('2001-02-03T04:05:06Z')
  608. assert_equal([2001, 2, 3, 4, 5, 6, 0],
  609. h.values_at(:year, :mon, :mday, :hour, :min, :sec, :offset))
  610. h = Date._iso8601('2001-02-03T04:05:06.07+01:00')
  611. assert_equal([2001, 2, 3, 4, 5, 6, 3600],
  612. h.values_at(:year, :mon, :mday, :hour, :min, :sec, :offset))
  613. h = Date._iso8601('010203T040506Z')
  614. assert_equal([2001, 2, 3, 4, 5, 6, 0],
  615. h.values_at(:year, :mon, :mday, :hour, :min, :sec, :offset))
  616. h = Date._iso8601('20010203T040506Z')
  617. assert_equal([2001, 2, 3, 4, 5, 6, 0],
  618. h.values_at(:year, :mon, :mday, :hour, :min, :sec, :offset))
  619. h = Date._iso8601('--0203T040506Z')
  620. assert_equal([nil, 2, 3, 4, 5, 6, 0],
  621. h.values_at(:year, :mon, :mday, :hour, :min, :sec, :offset))
  622. h = Date._iso8601('---03T040506Z')
  623. assert_equal([nil, nil, 3, 4, 5, 6, 0],
  624. h.values_at(:year, :mon, :mday, :hour, :min, :sec, :offset))
  625. h = Date._iso8601('010203T0405')
  626. assert_equal([2001, 2, 3, 4, 5, nil, nil],
  627. h.values_at(:year, :mon, :mday, :hour, :min, :sec, :offset))
  628. h = Date._iso8601('20010203T0405')
  629. assert_equal([2001, 2, 3, 4, 5, nil, nil],
  630. h.values_at(:year, :mon, :mday, :hour, :min, :sec, :offset))
  631. h = Date._iso8601('20010203T040506')
  632. assert_equal([2001, 2, 3, 4, 5, 6, nil],
  633. h.values_at(:year, :mon, :mday, :hour, :min, :sec, :offset))
  634. h = Date._iso8601('20010203T040506,07')
  635. assert_equal([2001, 2, 3, 4, 5, 6, nil],
  636. h.values_at(:year, :mon, :mday, :hour, :min, :sec, :offset))
  637. h = Date._iso8601('20010203T040506Z')
  638. assert_equal([2001, 2, 3, 4, 5, 6, 0],
  639. h.values_at(:year, :mon, :mday, :hour, :min, :sec, :offset))
  640. h = Date._iso8601('20010203T040506.07+0100')
  641. assert_equal([2001, 2, 3, 4, 5, 6, 3600],
  642. h.values_at(:year, :mon, :mday, :hour, :min, :sec, :offset))
  643. h = Date._iso8601('200102030405')
  644. assert_equal([2001, 2, 3, 4, 5, nil, nil],
  645. h.values_at(:year, :mon, :mday, :hour, :min, :sec, :offset))
  646. h = Date._iso8601('20010203040506')
  647. assert_equal([2001, 2, 3, 4, 5, 6, nil],
  648. h.values_at(:year, :mon, :mday, :hour, :min, :sec, :offset))
  649. h = Date._iso8601('20010203040506,07')
  650. assert_equal([2001, 2, 3, 4, 5, 6, nil],
  651. h.values_at(:year, :mon, :mday, :hour, :min, :sec, :offset))
  652. h = Date._iso8601('20010203040506Z')
  653. assert_equal([2001, 2, 3, 4, 5, 6, 0],
  654. h.values_at(:year, :mon, :mday, :hour, :min, :sec, :offset))
  655. h = Date._iso8601('20010203040506.07+0100')
  656. assert_equal([2001, 2, 3, 4, 5, 6, 3600],
  657. h.values_at(:year, :mon, :mday, :hour, :min, :sec, :offset))
  658. h = Date._iso8601('01-023T04:05:06Z')
  659. assert_equal([2001, 23, 4, 5, 6, 0],
  660. h.values_at(:year, :yday, :hour, :min, :sec, :offset))
  661. h = Date._iso8601('2001-023T04:05:06Z')
  662. assert_equal([2001, 23, 4, 5, 6, 0],
  663. h.values_at(:year, :yday, :hour, :min, :sec, :offset))
  664. h = Date._iso8601('-023T04:05:06Z')
  665. assert_equal([nil, 23, 4, 5, 6, 0],
  666. h.values_at(:year, :yday, :hour, :min, :sec, :offset))
  667. h = Date._iso8601('01023T040506Z')
  668. assert_equal([2001, 23, 4, 5, 6, 0],
  669. h.values_at(:year, :yday, :hour, :min, :sec, :offset))
  670. h = Date._iso8601('2001023T040506Z')
  671. assert_equal([2001, 23, 4, 5, 6, 0],
  672. h.values_at(:year, :yday, :hour, :min, :sec, :offset))
  673. h = Date._iso8601('-023T040506Z')
  674. assert_equal([nil, 23, 4, 5, 6, 0],
  675. h.values_at(:year, :yday, :hour, :min, :sec, :offset))
  676. h = Date._iso8601('01-w02-3T04:05:06Z')
  677. assert_equal([2001, 2, 3, 4, 5, 6, 0],
  678. h.values_at(:cwyear, :cweek, :cwday, :hour, :min, :sec, :offset))
  679. h = Date._iso8601('2001-w02-3T04:05:06Z')
  680. assert_equal([2001, 2, 3, 4, 5, 6, 0],
  681. h.values_at(:cwyear, :cweek, :cwday, :hour, :min, :sec, :offset))
  682. h = Date._iso8601('-w02-3T04:05:06Z')
  683. assert_equal([nil, 2, 3, 4, 5, 6, 0],
  684. h.values_at(:cwyear, :cweek, :cwday, :hour, :min, :sec, :offset))
  685. h = Date._iso8601('-w-3T04:05:06Z')
  686. assert_equal([nil, nil, 3, 4, 5, 6, 0],
  687. h.values_at(:cwyear, :cweek, :cwday, :hour, :min, :sec, :offset))
  688. h = Date._iso8601('01w023T040506Z')
  689. assert_equal([2001, 2, 3, 4, 5, 6, 0],
  690. h.values_at(:cwyear, :cweek, :cwday, :hour, :min, :sec, :offset))
  691. h = Date._iso8601('2001w023T040506Z')
  692. assert_equal([2001, 2, 3, 4, 5, 6, 0],
  693. h.values_at(:cwyear, :cweek, :cwday, :hour, :min, :sec, :offset))
  694. h = Date._iso8601('-w023T040506Z')
  695. assert_equal([nil, 2, 3, 4, 5, 6, 0],
  696. h.values_at(:cwyear, :cweek, :cwday, :hour, :min, :sec, :offset))
  697. h = Date._iso8601('-w-3T040506Z')
  698. assert_equal([nil, nil, 3, 4, 5, 6, 0],
  699. h.values_at(:cwyear, :cweek, :cwday, :hour, :min, :sec, :offset))
  700. h = Date._iso8601('04:05')
  701. assert_equal([nil, nil, nil, 4, 5, nil, nil],
  702. h.values_at(:year, :mon, :mday, :hour, :min, :sec, :offset))
  703. h = Date._iso8601('04:05:06')
  704. assert_equal([nil, nil, nil, 4, 5, 6, nil],
  705. h.values_at(:year, :mon, :mday, :hour, :min, :sec, :offset))
  706. h = Date._iso8601('04:05:06,07')
  707. assert_equal([nil, nil, nil, 4, 5, 6, nil],
  708. h.values_at(:year, :mon, :mday, :hour, :min, :sec, :offset))
  709. h = Date._iso8601('04:05:06Z')
  710. assert_equal([nil, nil, nil, 4, 5, 6, 0],
  711. h.values_at(:year, :mon, :mday, :hour, :min, :sec, :offset))
  712. h = Date._iso8601('04:05:06.07+01:00')
  713. assert_equal([nil, nil, nil, 4, 5, 6, 3600],
  714. h.values_at(:year, :mon, :mday, :hour, :min, :sec, :offset))
  715. h = Date._iso8601('040506,07')
  716. assert_equal([nil, nil, nil, 4, 5, 6, nil],
  717. h.values_at(:year, :mon, :mday, :hour, :min, :sec, :offset))
  718. h = Date._iso8601('040506.07+0100')
  719. assert_equal([nil, nil, nil, 4, 5, 6, 3600],
  720. h.values_at(:year, :mon, :mday, :hour, :min, :sec, :offset))
  721. end
  722. def test__rfc3339
  723. h = Date._rfc3339('2001-02-03T04:05:06Z')
  724. assert_equal([2001, 2, 3, 4, 5, 6, 0],
  725. h.values_at(:year, :mon, :mday, :hour, :min, :sec, :offset))
  726. h = Date._rfc3339('2001-02-03 04:05:06Z')
  727. assert_equal([2001, 2, 3, 4, 5, 6, 0],
  728. h.values_at(:year, :mon, :mday, :hour, :min, :sec, :offset))
  729. h = Date._rfc3339('2001-02-03T04:05:06.07+01:00')
  730. assert_equal([2001, 2, 3, 4, 5, 6, 3600],
  731. h.values_at(:year, :mon, :mday, :hour, :min, :sec, :offset))
  732. end
  733. def test__xmlschema
  734. h = Date._xmlschema('2001-02-03')
  735. assert_equal([2001, 2, 3, nil, nil, nil, nil],
  736. h.values_at(:year, :mon, :mday, :hour, :min, :sec, :offset))
  737. h = Date._xmlschema('2001-02-03Z')
  738. assert_equal([2001, 2, 3, nil, nil, nil, 0],
  739. h.values_at(:year, :mon, :mday, :hour, :min, :sec, :offset))
  740. h = Date._xmlschema('2001-02-03+01:00')
  741. assert_equal([2001, 2, 3, nil, nil, nil, 3600],
  742. h.values_at(:year, :mon, :mday, :hour, :min, :sec, :offset))
  743. h = Date._xmlschema('2001-02-03T04:05:06')
  744. assert_equal([2001, 2, 3, 4, 5, 6, nil],
  745. h.values_at(:year, :mon, :mday, :hour, :min, :sec, :offset))
  746. h = Date._xmlschema('2001-02-03T04:05:06.07')
  747. assert_equal([2001, 2, 3, 4, 5, 6, nil],
  748. h.values_at(:year, :mon, :mday, :hour, :min, :sec, :offset))
  749. h = Date._xmlschema('2001-02-03T04:05:06.07Z')
  750. assert_equal([2001, 2, 3, 4, 5, 6, 0],
  751. h.values_at(:year, :mon, :mday, :hour, :min, :sec, :offset))
  752. h = Date._xmlschema('2001-02-03T04:05:06.07+01:00')
  753. assert_equal([2001, 2, 3, 4, 5, 6, 3600],
  754. h.values_at(:year, :mon, :mday, :hour, :min, :sec, :offset))
  755. h = Date._xmlschema('04:05:06')
  756. assert_equal([nil, nil, nil, 4, 5, 6, nil],
  757. h.values_at(:year, :mon, :mday, :hour, :min, :sec, :offset))
  758. h = Date._xmlschema('04:05:06Z')
  759. assert_equal([nil, nil, nil, 4, 5, 6, 0],
  760. h.values_at(:year, :mon, :mday, :hour, :min, :sec, :offset))
  761. h = Date._xmlschema('04:05:06+01:00')
  762. assert_equal([nil, nil, nil, 4, 5, 6, 3600],
  763. h.values_at(:year, :mon, :mday, :hour, :min, :sec, :offset))
  764. h = Date._xmlschema('2001-02')
  765. assert_equal([2001, 2, nil, nil, nil, nil, nil],
  766. h.values_at(:year, :mon, :mday, :hour, :min, :sec, :offset))
  767. h = Date._xmlschema('2001-02Z')
  768. assert_equal([2001, 2, nil, nil, nil, nil, 0],
  769. h.values_at(:year, :mon, :mday, :hour, :min, :sec, :offset))
  770. h = Date._xmlschema('2001-02+01:00')
  771. assert_equal([2001, 2, nil, nil, nil, nil, 3600],
  772. h.values_at(:year, :mon, :mday, :hour, :min, :sec, :offset))
  773. h = Date._xmlschema('2001-02-01:00')
  774. assert_equal([2001, 2, nil, nil, nil, nil, -3600],
  775. h.values_at(:year, :mon, :mday, :hour, :min, :sec, :offset))
  776. h = Date._xmlschema('2001')
  777. assert_equal([2001, nil, nil, nil, nil, nil, nil],
  778. h.values_at(:year, :mon, :mday, :hour, :min, :sec, :offset))
  779. h = Date._xmlschema('2001Z')
  780. assert_equal([2001, nil, nil, nil, nil, nil, 0],
  781. h.values_at(:year, :mon, :mday, :hour, :min, :sec, :offset))
  782. h = Date._xmlschema('2001+01:00')
  783. assert_equal([2001, nil, nil, nil, nil, nil, 3600],
  784. h.values_at(:year, :mon, :mday, :hour, :min, :sec, :offset))
  785. h = Date._xmlschema('2001-01:00')
  786. assert_equal([2001, nil, nil, nil, nil, nil, -3600],
  787. h.values_at(:year, :mon, :mday, :hour, :min, :sec, :offset))
  788. h = Date._xmlschema('--02')
  789. assert_equal([nil, 2, nil, nil, nil, nil, nil],
  790. h.values_at(:year, :mon, :mday, :hour, :min, :sec, :offset))
  791. h = Date._xmlschema('--02Z')
  792. assert_equal([nil, 2, nil, nil, nil, nil, 0],
  793. h.values_at(:year, :mon, :mday, :hour, :min, :sec, :offset))
  794. h = Date._xmlschema('--02+01:00')
  795. assert_equal([nil, 2, nil, nil, nil, nil, 3600],
  796. h.values_at(:year, :mon, :mday, :hour, :min, :sec, :offset))
  797. h = Date._xmlschema('92001-02-03T04:05:06.07+01:00')
  798. assert_equal([92001, 2, 3, 4, 5, 6, 3600],
  799. h.values_at(:year, :mon, :mday, :hour, :min, :sec, :offset))
  800. h = Date._xmlschema('-92001-02-03T04:05:06.07+01:00')
  801. assert_equal([-92001, 2, 3, 4, 5, 6, 3600],
  802. h.values_at(:year, :mon, :mday, :hour, :min, :sec, :offset))
  803. end
  804. def test__rfc2822
  805. h = Date._rfc2822('Sat, 3 Feb 2001 04:05:06 UT')
  806. assert_equal([2001, 2, 3, 4, 5, 6, 0],
  807. h.values_at(:year, :mon, :mday, :hour, :min, :sec, :offset))
  808. h = Date._rfc2822('Sat, 3 Feb 2001 04:05:06 EST')
  809. assert_equal([2001, 2, 3, 4, 5, 6, -5*3600],
  810. h.values_at(:year, :mon, :mday, :hour, :min, :sec, :offset))
  811. h = Date._rfc2822('Sat, 3 Feb 2001 04:05:06 +0000')
  812. assert_equal([2001, 2, 3, 4, 5, 6, 0],
  813. h.values_at(:year, :mon, :mday, :hour, :min, :sec, :offset))
  814. h = Date._rfc2822('Sat, 3 Feb 2001 04:05:06 +0100')
  815. assert_equal([2001, 2, 3, 4, 5, 6, 3600],
  816. h.values_at(:year, :mon, :mday, :hour, :min, :sec, :offset))
  817. h = Date._rfc2822('Sat, 03 Feb 50 04:05:06 +0100')
  818. assert_equal([1950, 2, 3, 4, 5, 6, 3600],
  819. h.values_at(:year, :mon, :mday, :hour, :min, :sec, :offset))
  820. h = Date._rfc2822('Sat, 03 Feb 49 04:05:06 +0100')
  821. assert_equal([2049, 2, 3, 4, 5, 6, 3600],
  822. h.values_at(:year, :mon, :mday, :hour, :min, :sec, :offset))
  823. h = Date._rfc2822('Sat, 03 Feb 100 04:05:06 +0100')
  824. assert_equal([2000, 2, 3, 4, 5, 6, 3600],
  825. h.values_at(:year, :mon, :mday, :hour, :min, :sec, :offset))
  826. h1 = Date._rfc2822('Sat, 3 Feb 2001 04:05:06 UT')
  827. h2 = Date._rfc822('Sat, 3 Feb 2001 04:05:06 UT')
  828. assert_equal(h1, h2)
  829. end
  830. def test__httpdate
  831. h = Date._httpdate('Sat, 03 Feb 2001 04:05:06 GMT')
  832. assert_equal([2001, 2, 3, 4, 5, 6, 0],
  833. h.values_at(:year, :mon, :mday, :hour, :min, :sec, :offset))
  834. h = Date._httpdate('Saturday, 03-Feb-01 04:05:06 GMT')
  835. assert_equal([2001, 2, 3, 4, 5, 6, 0],
  836. h.values_at(:year, :mon, :mday, :hour, :min, :sec, :offset))
  837. h = Date._httpdate('Sat Feb 3 04:05:06 2001')
  838. assert_equal([2001, 2, 3, 4, 5, 6, nil],
  839. h.values_at(:year, :mon, :mday, :hour, :min, :sec, :offset))
  840. h = Date._httpdate('Sat Feb 03 04:05:06 2001')
  841. assert_equal([2001, 2, 3, 4, 5, 6, nil],
  842. h.values_at(:year, :mon, :mday, :hour, :min, :sec, :offset))
  843. end
  844. def test__jisx0301
  845. h = Date._jisx0301('13.02.03')
  846. assert_equal([2001, 2, 3, nil, nil, nil, nil],
  847. h.values_at(:year, :mon, :mday, :hour, :min, :sec, :offset))
  848. h = Date._jisx0301('H13.02.03')
  849. assert_equal([2001, 2, 3, nil, nil, nil, nil],
  850. h.values_at(:year, :mon, :mday, :hour, :min, :sec, :offset))
  851. h = Date._jisx0301('S63.02.03')
  852. assert_equal([1988, 2, 3, nil, nil, nil, nil],
  853. h.values_at(:year, :mon, :mday, :hour, :min, :sec, :offset))
  854. h = Date._jisx0301('H13.02.03T04:05:06')
  855. assert_equal([2001, 2, 3, 4, 5, 6, nil],
  856. h.values_at(:year, :mon, :mday, :hour, :min, :sec, :offset))
  857. h = Date._jisx0301('H13.02.03T04:05:06,07')
  858. assert_equal([2001, 2, 3, 4, 5, 6, nil],
  859. h.values_at(:year, :mon, :mday, :hour, :min, :sec, :offset))
  860. h = Date._jisx0301('H13.02.03T04:05:06Z')
  861. assert_equal([2001, 2, 3, 4, 5, 6, 0],
  862. h.values_at(:year, :mon, :mday, :hour, :min, :sec, :offset))
  863. h = Date._jisx0301('H13.02.03T04:05:06.07+0100')
  864. assert_equal([2001, 2, 3, 4, 5, 6, 3600],
  865. h.values_at(:year, :mon, :mday, :hour, :min, :sec, :offset))
  866. end
  867. def test_iso8601
  868. assert_instance_of(Date, Date.iso8601)
  869. assert_instance_of(DateTime, DateTime.iso8601)
  870. d = Date.iso8601('2001-02-03', Date::ITALY + 10)
  871. assert_equal(Date.new(2001,2,3), d)
  872. assert_equal(Date::ITALY + 10, d.start)
  873. d = DateTime.iso8601('2001-02-03T04:05:06+07:00', Date::ITALY + 10)
  874. assert_equal(DateTime.new(2001,2,3,4,5,6,'+07:00'), d)
  875. assert_equal(Date::ITALY + 10, d.start)
  876. end
  877. def test_rfc3339
  878. assert_instance_of(Date, Date.rfc3339)
  879. assert_instance_of(DateTime, DateTime.rfc3339)
  880. d = Date.rfc3339('2001-02-03T04:05:06+07:00', Date::ITALY + 10)
  881. assert_equal(Date.new(2001,2,3), d)
  882. assert_equal(Date::ITALY + 10, d.start)
  883. d = DateTime.rfc3339('2001-02-03T04:05:06+07:00', Date::ITALY + 10)
  884. assert_equal(DateTime.new(2001,2,3,4,5,6,'+07:00'), d)
  885. assert_equal(Date::ITALY + 10, d.start)
  886. end
  887. def test_xmlschema
  888. assert_instance_of(Date, Date.xmlschema)
  889. assert_instance_of(DateTime, DateTime.xmlschema)
  890. d = Date.xmlschema('2001-02-03', Date::ITALY + 10)
  891. assert_equal(Date.new(2001,2,3), d)
  892. assert_equal(Date::ITALY + 10, d.start)
  893. d = DateTime.xmlschema('2001-02-03T04:05:06+07:00', Date::ITALY + 10)
  894. assert_equal(DateTime.new(2001,2,3,4,5,6,'+07:00'), d)
  895. assert_equal(Date::ITALY + 10, d.start)
  896. end
  897. def test_rfc2822
  898. assert_instance_of(Date, Date.rfc2822)
  899. assert_instance_of(DateTime, DateTime.rfc2822)
  900. assert_instance_of(Date, Date.rfc822)
  901. assert_instance_of(DateTime, DateTime.rfc822)
  902. d = Date.rfc2822('Sat, 3 Feb 2001 04:05:06 +0700', Date::ITALY + 10)
  903. assert_equal(Date.new(2001,2,3), d)
  904. assert_equal(Date::ITALY + 10, d.start)
  905. d = DateTime.rfc2822('Sat, 3 Feb 2001 04:05:06 +0700', Date::ITALY + 10)
  906. assert_equal(DateTime.new(2001,2,3,4,5,6,'+07:00'), d)
  907. assert_equal(Date::ITALY + 10, d.start)
  908. end
  909. def test_httpdate
  910. assert_instance_of(Date, Date.httpdate)
  911. assert_instance_of(DateTime, DateTime.httpdate)
  912. d = Date.httpdate('Sat, 03 Feb 2001 04:05:06 GMT', Date::ITALY + 10)
  913. assert_equal(Date.new(2001,2,3), d)
  914. assert_equal(Date::ITALY + 10, d.start)
  915. d = DateTime.httpdate('Sat, 03 Feb 2001 04:05:06 GMT', Date::ITALY + 10)
  916. assert_equal(DateTime.new(2001,2,3,4,5,6,'+00:00'), d)
  917. assert_equal(Date::ITALY + 10, d.start)
  918. end
  919. def test_jisx0301
  920. assert_instance_of(Date, Date.jisx0301)
  921. assert_instance_of(DateTime, DateTime.jisx0301)
  922. d = Date.jisx0301('H13.02.03', Date::ITALY + 10)
  923. assert_equal(Date.new(2001,2,3), d)
  924. assert_equal(Date::ITALY + 10, d.start)
  925. d = DateT