when_exe 0.2.100 → 0.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (193) hide show
  1. data/LICENSE.ja.txt +25 -25
  2. data/LICENSE.txt +31 -31
  3. data/bin/irb.rc +5 -0
  4. data/bin/locales.rb +2 -2
  5. data/bin/when.rb +16 -0
  6. data/bin/when.rb.config +7 -0
  7. data/lib/when_exe.rb +616 -14
  8. data/lib/when_exe/basictypes.rb +615 -0
  9. data/lib/when_exe/calendartypes.rb +1700 -0
  10. data/lib/when_exe/coordinates.rb +1936 -0
  11. data/lib/when_exe/core/compatibility.rb +54 -0
  12. data/lib/when_exe/core/duration.rb +72 -72
  13. data/lib/when_exe/core/extension.rb +382 -0
  14. data/lib/when_exe/ephemeris.rb +1845 -0
  15. data/lib/when_exe/googlecalendar.rb +140 -0
  16. data/lib/when_exe/icalendar.rb +1587 -0
  17. data/lib/when_exe/inspect.rb +1237 -0
  18. data/lib/when_exe/locales/af.rb +90 -0
  19. data/lib/when_exe/locales/ar.rb +145 -0
  20. data/lib/when_exe/locales/az.rb +90 -0
  21. data/lib/when_exe/locales/bg.rb +90 -0
  22. data/lib/when_exe/locales/bn.rb +94 -0
  23. data/lib/when_exe/locales/bs.rb +121 -0
  24. data/lib/when_exe/locales/ca.rb +92 -0
  25. data/lib/when_exe/locales/cs.rb +107 -0
  26. data/lib/when_exe/locales/cy.rb +150 -0
  27. data/lib/when_exe/locales/da.rb +84 -0
  28. data/lib/when_exe/locales/de.rb +92 -0
  29. data/lib/when_exe/locales/de_AT.rb +92 -0
  30. data/lib/when_exe/locales/de_CH.rb +92 -0
  31. data/lib/when_exe/locales/el.rb +93 -0
  32. data/lib/when_exe/locales/en.rb +88 -0
  33. data/lib/when_exe/locales/en_AU.rb +88 -0
  34. data/lib/when_exe/locales/en_CA.rb +88 -0
  35. data/lib/when_exe/locales/en_GB.rb +88 -0
  36. data/lib/when_exe/locales/en_IN.rb +88 -0
  37. data/lib/when_exe/locales/en_NZ.rb +88 -0
  38. data/lib/when_exe/locales/eo.rb +89 -0
  39. data/lib/when_exe/locales/es.rb +84 -0
  40. data/lib/when_exe/locales/es_419.rb +84 -0
  41. data/lib/when_exe/locales/es_AR.rb +84 -0
  42. data/lib/when_exe/locales/es_CL.rb +84 -0
  43. data/lib/when_exe/locales/es_CO.rb +84 -0
  44. data/lib/when_exe/locales/es_MX.rb +84 -0
  45. data/lib/when_exe/locales/es_PE.rb +85 -0
  46. data/lib/when_exe/locales/es_VE.rb +84 -0
  47. data/lib/when_exe/locales/et.rb +94 -0
  48. data/lib/when_exe/locales/eu.rb +95 -0
  49. data/lib/when_exe/locales/fa.rb +80 -0
  50. data/lib/when_exe/locales/fi.rb +89 -0
  51. data/lib/when_exe/locales/fr.rb +88 -0
  52. data/lib/when_exe/locales/fr_CA.rb +88 -0
  53. data/lib/when_exe/locales/fr_CH.rb +88 -0
  54. data/lib/when_exe/locales/gl.rb +81 -0
  55. data/lib/when_exe/locales/he.rb +84 -0
  56. data/lib/when_exe/locales/hi.rb +80 -0
  57. data/lib/when_exe/locales/hi_IN.rb +84 -0
  58. data/lib/when_exe/locales/hr.rb +128 -0
  59. data/lib/when_exe/locales/hu.rb +84 -0
  60. data/lib/when_exe/locales/id.rb +89 -0
  61. data/lib/when_exe/locales/is.rb +89 -0
  62. data/lib/when_exe/locales/it.rb +87 -0
  63. data/lib/when_exe/locales/it_CH.rb +87 -0
  64. data/lib/when_exe/locales/ja.rb +78 -0
  65. data/lib/when_exe/locales/kn.rb +86 -0
  66. data/lib/when_exe/locales/ko.rb +78 -0
  67. data/lib/when_exe/locales/links.rb +2342 -0
  68. data/lib/when_exe/locales/lo.rb +123 -0
  69. data/lib/when_exe/locales/locales.rb +91 -0
  70. data/lib/when_exe/locales/lt.rb +111 -0
  71. data/lib/when_exe/locales/lv.rb +118 -0
  72. data/lib/when_exe/locales/mk.rb +93 -0
  73. data/lib/when_exe/locales/mn.rb +80 -0
  74. data/lib/when_exe/locales/nb.rb +81 -0
  75. data/lib/when_exe/locales/ne.rb +81 -0
  76. data/lib/when_exe/locales/nl.rb +92 -0
  77. data/lib/when_exe/locales/nn.rb +73 -0
  78. data/lib/when_exe/locales/or.rb +84 -0
  79. data/lib/when_exe/locales/pl.rb +128 -0
  80. data/lib/when_exe/locales/pt.rb +88 -0
  81. data/lib/when_exe/locales/pt_BR.rb +88 -0
  82. data/lib/when_exe/locales/rm.rb +143 -0
  83. data/lib/when_exe/locales/ro.rb +105 -0
  84. data/lib/when_exe/locales/ru.rb +128 -0
  85. data/lib/when_exe/locales/sk.rb +109 -0
  86. data/lib/when_exe/locales/sl.rb +122 -0
  87. data/lib/when_exe/locales/sr.rb +122 -0
  88. data/lib/when_exe/locales/sv.rb +83 -0
  89. data/lib/when_exe/locales/sw.rb +89 -0
  90. data/lib/when_exe/locales/th.rb +78 -0
  91. data/lib/when_exe/locales/tl.rb +99 -0
  92. data/lib/when_exe/locales/tr.rb +96 -0
  93. data/lib/when_exe/locales/uk.rb +128 -0
  94. data/lib/when_exe/locales/uz.rb +128 -0
  95. data/lib/when_exe/locales/vi.rb +94 -0
  96. data/lib/when_exe/locales/wo.rb +82 -0
  97. data/lib/when_exe/locales/zh_CN.rb +77 -0
  98. data/lib/when_exe/locales/zh_HK.rb +77 -0
  99. data/lib/when_exe/locales/zh_TW.rb +77 -0
  100. data/lib/when_exe/mini_application.rb +252 -0
  101. data/lib/when_exe/parts/enumerator.rb +472 -0
  102. data/lib/when_exe/parts/geometric_complex.rb +379 -0
  103. data/lib/when_exe/parts/locale.rb +513 -0
  104. data/lib/when_exe/parts/method_cash.rb +207 -0
  105. data/lib/when_exe/parts/resource.rb +806 -0
  106. data/lib/when_exe/parts/timezone.rb +182 -0
  107. data/lib/when_exe/region/bahai.rb +145 -0
  108. data/lib/when_exe/region/balinese.rb +627 -0
  109. data/lib/when_exe/region/chinese.rb +896 -0
  110. data/lib/when_exe/region/chinese_calendar.rb +919 -0
  111. data/lib/when_exe/region/chinese_epoch.rb +1245 -0
  112. data/lib/when_exe/region/christian.rb +644 -0
  113. data/lib/when_exe/region/far_east.rb +192 -0
  114. data/lib/when_exe/region/french.rb +66 -0
  115. data/lib/when_exe/region/geologicalage.rb +639 -0
  116. data/lib/when_exe/region/indian.rb +1066 -0
  117. data/lib/when_exe/region/iranian.rb +66 -0
  118. data/lib/when_exe/region/islamic.rb +105 -0
  119. data/lib/when_exe/region/japanese.rb +851 -0
  120. data/lib/when_exe/region/japanese_notes.rb +964 -0
  121. data/lib/when_exe/region/japanese_residues.rb +1149 -0
  122. data/lib/when_exe/region/javanese.rb +228 -0
  123. data/lib/when_exe/region/jewish.rb +127 -0
  124. data/lib/when_exe/region/korean.rb +267 -0
  125. data/lib/when_exe/region/m17n.rb +115 -0
  126. data/lib/when_exe/region/martian.rb +215 -0
  127. data/lib/when_exe/region/mayan.rb +122 -0
  128. data/lib/when_exe/region/moon.rb +333 -0
  129. data/lib/when_exe/region/nihon_shoki.rb +73 -0
  130. data/lib/when_exe/region/planets.rb +585 -0
  131. data/lib/when_exe/region/pope.rb +298 -0
  132. data/lib/when_exe/region/residue.rb +229 -0
  133. data/lib/when_exe/region/roman.rb +325 -0
  134. data/lib/when_exe/region/ryukyu.rb +98 -0
  135. data/lib/when_exe/region/shire.rb +254 -0
  136. data/lib/when_exe/region/sun.rb +210 -0
  137. data/lib/when_exe/region/thai.rb +227 -0
  138. data/lib/when_exe/region/tibetan.rb +233 -0
  139. data/lib/when_exe/region/v50.rb +111 -0
  140. data/lib/when_exe/region/vietnamese.rb +173 -0
  141. data/lib/when_exe/region/world.rb +197 -0
  142. data/lib/when_exe/timestandard.rb +547 -0
  143. data/lib/when_exe/tmduration.rb +330 -330
  144. data/lib/when_exe/tmobjects.rb +1295 -0
  145. data/lib/when_exe/tmposition.rb +1955 -0
  146. data/lib/when_exe/tmreference.rb +1547 -0
  147. data/lib/when_exe/version.rb +10 -3
  148. data/link_to_online_documents +4 -0
  149. data/test/examples/JapanHolidays.ics +456 -0
  150. data/test/examples/Millennium.ics +17 -0
  151. data/test/examples/NewYork.ics +61 -0
  152. data/test/examples/Residue.m17n +135 -0
  153. data/test/examples/Spatial.m17n +179 -0
  154. data/test/examples/Terms.m17n +39 -0
  155. data/test/examples/Test.ics +53 -0
  156. data/test/examples/USA-DST.ics +61 -0
  157. data/test/examples/geometric_complex.rb +41 -0
  158. data/test/examples/sample.xml +14 -0
  159. data/test/examples/today.rb +61 -0
  160. data/test/test.rb +54 -19
  161. data/test/test.rb.config +1 -0
  162. data/test/test/basictypes.rb +368 -0
  163. data/test/test/calendartypes.rb +57 -0
  164. data/test/test/coordinates.rb +380 -0
  165. data/test/test/ephemeris.rb +127 -0
  166. data/test/test/googlecalendar.rb +167 -0
  167. data/test/test/icalendar.rb +848 -0
  168. data/test/test/inspect.rb +115 -0
  169. data/test/test/parts.rb +480 -0
  170. data/test/test/region/chinese.rb +161 -0
  171. data/test/test/region/french.rb +33 -0
  172. data/test/test/region/geologicalage.rb +14 -0
  173. data/test/test/region/indian.rb +55 -0
  174. data/test/test/region/iran.rb +54 -0
  175. data/test/test/region/islamic.rb +18 -0
  176. data/test/test/region/japanese.rb +62 -0
  177. data/test/test/region/jewish.rb +61 -0
  178. data/test/test/region/m17n.rb +181 -0
  179. data/test/test/region/mayan.rb +78 -0
  180. data/test/test/region/moon.rb +14 -0
  181. data/test/test/region/planets.rb +14 -0
  182. data/test/test/region/residue.rb +123 -0
  183. data/test/test/region/sun.rb +14 -0
  184. data/test/test/region/thai.rb +94 -0
  185. data/test/test/region/tibetan.rb +30 -0
  186. data/test/test/tmobjects.rb +356 -57
  187. data/test/test/tmposition.rb +237 -0
  188. data/test/test/tmreference.rb +95 -0
  189. data/when_exe.gemspec +2 -2
  190. metadata +187 -7
  191. data/doc/COPYING +0 -31
  192. data/doc/COPYING.ja +0 -25
  193. data/doc/document_url +0 -1
@@ -0,0 +1,57 @@
1
+ # -*- coding: utf-8 -*-
2
+ =begin
3
+ Copyright (C) 2011 Takashi SUGA
4
+
5
+ You may use and/or modify this file according to the license
6
+ described in the LICENSE.txt file included in this archive.
7
+ =end
8
+
9
+ module Test::CalendarTypes
10
+
11
+ class UTC < Test::Unit::TestCase
12
+ def test__utc
13
+ assert_equal("+00:00", When.utc.tzname[0].to_s)
14
+ end
15
+ end
16
+
17
+ class TableBased < Test::Unit::TestCase
18
+ def test_nothing
19
+ end
20
+ end
21
+
22
+ class PatternTableBasedLuniSolar < Test::Unit::TestCase
23
+ def test__japanese
24
+
25
+ frame = When.Resource('Japanese', '_c:')
26
+ date = When.when?('16000101^Japanese')
27
+ assert_equal(["1600-01-01", 2305493], [date.to_s, date.to_i])
28
+ assert_equal(2305493, frame._coordinates_to_number(1600-454,0,0))
29
+ assert_equal([1146, 0, 0], frame._number_to_coordinates(2305493))
30
+
31
+ date = When.when?('0594-09=12^Japanese')
32
+ assert_equal(["0594-09=12", 1938320], [date.to_s, date.to_i])
33
+ assert_equal(594, date['YEAR'])
34
+ assert_equal(When::BasicTypes::M17n, date.name('Month').class)
35
+
36
+ result = []
37
+ (date ^ When::TM::Calendar).each do |d|
38
+ result << d.to_s
39
+ end
40
+ result.sort!
41
+
42
+ sample = ["0594-09=12", "0594-11-02", "0594-11-02"] #TODO �Ȃ� Greg 2��?
43
+ # assert_equal(sample, result)
44
+ end
45
+ end
46
+
47
+ class CyclicTableBased < Test::Unit::TestCase
48
+ def test__islamic
49
+ frame = When.Resource('_c:TabularIslamic')
50
+ date = When.when?('00010101^TabularIslamic')
51
+ assert_equal(["0001-01-01", 1948440], [date.to_s, date.to_i])
52
+ assert_equal(1959071, frame._coordinates_to_number(31,0,0))
53
+ assert_equal([31, 0, 0], frame._number_to_coordinates(1948440+10631))
54
+ end
55
+ end
56
+ end
57
+
@@ -0,0 +1,380 @@
1
+ # -*- coding: utf-8 -*-
2
+ =begin
3
+ Copyright (C) 2011-2013 Takashi SUGA
4
+
5
+ You may use and/or modify this file according to the license
6
+ described in the LICENSE.txt file included in this archive.
7
+ =end
8
+
9
+ module Test::Coordinates
10
+
11
+ #
12
+ # 剰余類
13
+ #
14
+ class Residue < Test::Unit::TestCase
15
+
16
+ def test__intersection
17
+ r1 = When::Coordinates::Residue.new(3,10)
18
+ r2 = When::Coordinates::Residue.new(5,12)
19
+ r3 = When::Coordinates::Residue.new(6,12)
20
+ r = r1 & r2
21
+ assert_equal([53,60], [r.remainder, r.divisor])
22
+ assert_nil(r1 & r3)
23
+
24
+ r4 = When::Coordinates::Residue.new(2,7)
25
+ date1 = When.when?(2440587.5)
26
+ assert_equal(2440593.5, (date1 & r4).to_f)
27
+
28
+ r5 = When::Coordinates::Residue.new(3,7)
29
+ date2 = When.when?("19820606^^Julian")
30
+ assert_equal("1982-06-11", (date2 & r5).to_s)
31
+ assert_equal("1982-06-11", (r5 & date2).to_s)
32
+
33
+ assert_equal("1982-06-10T00:00:00.00Z", (r5 & Time.utc(1982,6,6)).to_s)
34
+ if ::Object.const_defined?(:Date) && Date.respond_to?(:civil)
35
+ assert_equal("1982-06-24", (r5 & Date.new(1982,6,6,Date::JULIAN)).to_s)
36
+ end
37
+
38
+ date3 = When.when?("19820606T021540+0900^^Julian")
39
+ [[-5, "1979-06-06T02:15:40+09:00"],
40
+ [-4, "1980-06-06T02:15:40+09:00"],
41
+ [-3, "1981-06-06T02:15:40+09:00"],
42
+ [-2, "1922-06-06T02:15:40+09:00"],
43
+ [-1, "1923-06-06T02:15:40+09:00"],
44
+ [ 0, "1984-06-06T02:15:40+09:00"],
45
+ [ 1, "1985-06-06T02:15:40+09:00"],
46
+ [ 2, "1986-06-06T02:15:40+09:00"],
47
+ [ 3, "1987-06-06T02:15:40+09:00"],
48
+ [ 4, "1988-06-06T02:15:40+09:00"],
49
+ [ 5, "1989-06-06T02:15:40+09:00"]].each do |sample|
50
+ r6 = When::Coordinates::Residue.new(sample[0], 60, {'year'=>4})
51
+ assert_equal(sample[1], (date3 & r6).to_s)
52
+ assert_equal(sample[1], (r6 & date3).to_s)
53
+ end
54
+
55
+ kanshi = When.Resource("_co:Residue?divisor=60&YEAR=4&DAY=11")
56
+ date = When.when?("19820606T021540+0900^^Julian")
57
+ assert_equal("1982-07-27T02:15:40+09:00", (date & kanshi.to('day')).to_s)
58
+ assert_equal("1985-06-06T02:15:40+09:00", (date & kanshi.to('year')[1]).to_s)
59
+
60
+ week = When.Resource("_co:Residue?divisor=7")
61
+ [[0, "1982-06-08T02:15:40+09:00"],
62
+ [1, "1982-06-09T02:15:40+09:00"],
63
+ [2, "1982-06-10T02:15:40+09:00"],
64
+ [3, "1982-06-11T02:15:40+09:00"],
65
+ [4, "1982-06-12T02:15:40+09:00"],
66
+ [5, "1982-06-06T02:15:40+09:00"],
67
+ [6, "1982-06-07T02:15:40+09:00"],
68
+ [7, "1982-06-15T02:15:40+09:00"]].each do |sample|
69
+ assert_equal(sample[1], (date & week[sample[0]]).to_s)
70
+ end
71
+ end
72
+
73
+ class BestRationalApproximations < Test::Unit::TestCase
74
+ def test__continued_fraction
75
+ it = When.Resource("_co:Residue?remainder=365.2421875&divisor=1").each
76
+ [[365, 1], [1461, 4], [10592, 29], [12053, 33], [46751, 128]].each do |ratio|
77
+ assert_equal(ratio, it.next[0..1])
78
+ end
79
+ end
80
+ end
81
+
82
+ class Enumerator < Test::Unit::TestCase
83
+ def test_nothing
84
+ end
85
+ end
86
+ end
87
+
88
+ # 暦座標番号
89
+ class Index < Test::Unit::TestCase
90
+ def test__trunk
91
+ month = When::Coordinates::Index.new({:label=>'month', :unit=>12, :base=>1,
92
+ :trunk => %w(January February March April May June July August September October November December).map {|v| When.m17n(v)}})
93
+ assert_equal({
94
+ 1=>"January",
95
+ 2=>"February",
96
+ 3=>"March",
97
+ 4=>"April",
98
+ 5=>"May",
99
+ 6=>"June",
100
+ 7=>"July",
101
+ 8=>"August",
102
+ 9=>"September",
103
+ 10=>"October",
104
+ 11=>"November",
105
+ 12=>"December"
106
+ }, month.trunk)
107
+ end
108
+ end
109
+
110
+ # 暦座標要素
111
+ class Pair < Test::Unit::TestCase
112
+ def test_nothing
113
+ end
114
+ end
115
+
116
+ class Temporal < Test::Unit::TestCase
117
+ def test__validate
118
+
119
+ midJulian = When.Resource("_c:Julian?border=[0,3,25]")
120
+ # assert_equal([0, 3, 25], midJulian.border)
121
+
122
+ mDate = When.when?('20100324', {:frame=>midJulian})
123
+ assert_equal("2009=03-24", mDate.to_s)
124
+
125
+ assert_equal("2010-05-11", When.when?('2010-05-11').to_s)
126
+ assert_equal("2010=05-11", When.when?('2010=05-11').to_s)
127
+
128
+ date1 =When.when?("M32.01.01")
129
+ date2 =When.when?("M34.05.05")
130
+ assert_equal("M34(1901).05.05", date2.to_s)
131
+ assert_equal("M35(1902).05.05", (date2+When::Duration('P1Y')).to_s)
132
+ assert_equal("S06(1931).05.05", (date2+When::Duration('P30Y')).to_s)
133
+
134
+ assert_equal(2426467, (date2+When::Duration('P30Y')).to_i)
135
+ sample = [
136
+ ["Japan64(1931).05.05", false],
137
+ ["S06(1931).05.05", true]
138
+ ]
139
+ ((date2+When::Duration('P30Y')).scan(When.Resource('ModernJapanese', '_e:'))).each do |d|
140
+ assert_equal(sample.shift, [d.to_s, d.leaf?])
141
+ end
142
+
143
+ sample = [
144
+ ["S06(1931).05.05", true]
145
+ ]
146
+ ((date2+When::Duration('P30Y'))^When.Resource('ModernJapanese', '_e:')).each do |d|
147
+ assert_equal(sample.shift, [d.to_s, d.leaf?])
148
+ end
149
+
150
+ sample =[
151
+ ["明治", "http://ja.wikipedia.org/wiki/%E6%98%8E%E6%B2%BB"],
152
+ ["Meiji", "http://en.wikipedia.org/wiki/Meiji_period"],
153
+ ["M", ""],
154
+ ["大正", "http://ja.wikipedia.org/wiki/%E5%A4%A7%E6%AD%A3"],
155
+ ["Taishō", "http://en.wikipedia.org/wiki/Taish%C5%8D_period"],
156
+ ["T", ""],
157
+ ["昭和", "http://ja.wikipedia.org/wiki/%E6%98%AD%E5%92%8C"],
158
+ ["Shōwa", "http://en.wikipedia.org/wiki/Sh%C5%8Dwa_period"],
159
+ ["S", ""],
160
+ ["平成", "http://ja.wikipedia.org/wiki/%E5%B9%B3%E6%88%90"],
161
+ ["Heisei", "http://en.wikipedia.org/wiki/Heisei_period"],
162
+ ["H", ""]
163
+ ]
164
+ ['明治', '大正', '昭和', '平成'].each do |nengo|
165
+ era = When::era(nengo)
166
+ ['ja', 'en', 'alias'].each do |lang|
167
+ assert_equal(sample.shift, [era[0].label.translate(lang), era[0].label.reference(lang)])
168
+ end
169
+ end
170
+
171
+ sample =[
172
+ ["明治天皇", "http://ja.wikipedia.org/wiki/%E6%98%8E%E6%B2%BB%E5%A4%A9%E7%9A%87"],
173
+ ["Emperor_Meiji", "http://en.wikipedia.org/wiki/Emperor_Meiji"],
174
+ ["大正天皇", "http://ja.wikipedia.org/wiki/%E5%A4%A7%E6%AD%A3%E5%A4%A9%E7%9A%87"],
175
+ ["Emperor_Taishō", "http://en.wikipedia.org/wiki/Emperor_Taish%C5%8D"],
176
+ ["昭和天皇", "http://ja.wikipedia.org/wiki/%E6%98%AD%E5%92%8C%E5%A4%A9%E7%9A%87"],
177
+ ["Emperor_Shōwa", "http://en.wikipedia.org/wiki/Emperor_Sh%C5%8Dwa"],
178
+ ["今上天皇", "http://ja.wikipedia.org/wiki/%E6%98%8E%E4%BB%81"],
179
+ ["Emperor_Kinjō", "http://en.wikipedia.org/wiki/Akihito"]
180
+ ]
181
+ ['明治', '大正', '昭和', '平成'].each do |nengo|
182
+ name = When.when?(nengo + '06.01.01').query['name']
183
+ ['ja', 'en'].each do |lang|
184
+ assert_equal(sample.shift, [name.translate(lang), name.reference(lang)])
185
+ end
186
+ end
187
+
188
+ assert_equal("昭和02(1927).03.01", When.when?('大正16.2.29').to_s)
189
+ assert_equal({"name"=>"大正天皇", "period"=>nil, "area"=>"日本"}, When::era('大正')[0].options)
190
+ end
191
+ end
192
+
193
+ #
194
+ # 空間位置
195
+ #
196
+ class Spatial < Test::Unit::TestCase
197
+ IndianCities = [
198
+ ["CentralIndia",
199
+ "インド中部",
200
+ "http://en.wikipedia.org/wiki/CentralIndia",
201
+ 23.15 + 1.0/30,
202
+ 82.5],
203
+ ["NorthIndia",
204
+ "インド北部",
205
+ "http://en.wikipedia.org/wiki/NorthIndia",
206
+ 29.0,
207
+ 82.5],
208
+ ["Agra",
209
+ "アーグラ",
210
+ "http://en.wikipedia.org/wiki/Agra",
211
+ 27.2,
212
+ 78.0],
213
+ ["Ahmedabad",
214
+ "アフマダーバード",
215
+ "http://en.wikipedia.org/wiki/Ahmedabad",
216
+ 23.0,
217
+ 72.6],
218
+ ["Ajmer",
219
+ "アジメール",
220
+ "http://en.wikipedia.org/wiki/Ajmer",
221
+ 26.5,
222
+ 74.6],
223
+ ["Aligarh",
224
+ "アリーガル",
225
+ "http://en.wikipedia.org/wiki/Aligarh",
226
+ 27.9,
227
+ 78.1],
228
+ ["Amritsar",
229
+ "アムリトサル",
230
+ "http://en.wikipedia.org/wiki/Amritsar",
231
+ 31.6,
232
+ 74.9],
233
+ ["Bangalore",
234
+ "バンガロール",
235
+ "http://en.wikipedia.org/wiki/Bangalore",
236
+ 13.0,
237
+ 77.6],
238
+ ["Bhuvaneswar",
239
+ "ブヴァネーシュヴァル",
240
+ "http://en.wikipedia.org/wiki/Bhuvaneswar",
241
+ 20.2,
242
+ 85.8],
243
+ ["Chennai",
244
+ "チェンナイ",
245
+ "http://en.wikipedia.org/wiki/Chennai",
246
+ 13.1,
247
+ 80.3],
248
+ ["Colombo",
249
+ "コロンボ",
250
+ "http://en.wikipedia.org/wiki/Colombo",
251
+ 6.9,
252
+ 79.9],
253
+ ["Dacca",
254
+ "ダッカ",
255
+ "http://en.wikipedia.org/wiki/Dacca",
256
+ 23.7,
257
+ 90.4],
258
+ ["Delhi",
259
+ "デリー",
260
+ "http://en.wikipedia.org/wiki/Delhi",
261
+ 28.6,
262
+ 77.2],
263
+ ["Hyderabad",
264
+ "ハイデラバード",
265
+ "http://en.wikipedia.org/wiki/Hyderabad",
266
+ 17.4,
267
+ 78.5],
268
+ ["Jaipur",
269
+ "ジャイプル",
270
+ "http://en.wikipedia.org/wiki/Jaipur",
271
+ 26.9,
272
+ 75.8],
273
+ ["Kathmandu",
274
+ "カトマンズ",
275
+ "http://en.wikipedia.org/wiki/Kathmandu",
276
+ 27.7,
277
+ 85.2],
278
+ ["Kochi",
279
+ "コーチ",
280
+ "http://en.wikipedia.org/wiki/Kochi",
281
+ 10.0,
282
+ 76.2],
283
+ ["Kolkata",
284
+ "コルカタ",
285
+ "http://en.wikipedia.org/wiki/Kolkata",
286
+ 22.6,
287
+ 88.4],
288
+ ["Lahor",
289
+ "ラホール",
290
+ "http://en.wikipedia.org/wiki/Lahor",
291
+ 31.6,
292
+ 74.3],
293
+ ["Mathura",
294
+ "マトゥラー",
295
+ "http://en.wikipedia.org/wiki/Mathura",
296
+ 27.5,
297
+ 77.7],
298
+ ["Mumbai",
299
+ "ムンバイ",
300
+ "http://en.wikipedia.org/wiki/Mumbai",
301
+ 19.0,
302
+ 72.8],
303
+ ["Mysore",
304
+ "マイソール",
305
+ "http://en.wikipedia.org/wiki/Mysore",
306
+ 12.3,
307
+ 76.6],
308
+ ["Patna",
309
+ "パトナ",
310
+ "http://en.wikipedia.org/wiki/Patna",
311
+ 25.6,
312
+ 85.1],
313
+ ["Pune",
314
+ "プネー",
315
+ "http://en.wikipedia.org/wiki/Pune",
316
+ 18.5,
317
+ 73.9],
318
+ ["Srinagar",
319
+ "シュリーナガル",
320
+ "http://en.wikipedia.org/wiki/Srinagar",
321
+ 34.1,
322
+ 74.8],
323
+ ["Thiruvananthapuram",
324
+ "ティルヴァナンタプラム",
325
+ "http://en.wikipedia.org/wiki/Thiruvananthapuram",
326
+ 8.5,
327
+ 77.0],
328
+ ["Varanasi",
329
+ "ワーラーナシー",
330
+ "http://en.wikipedia.org/wiki/Varanasi",
331
+ 25.3,
332
+ 83.0],
333
+ ["Ujjain",
334
+ "ウッジャイン",
335
+ "http://en.wikipedia.org/wiki/Ujjain",
336
+ 23.2,
337
+ 75.8]
338
+ ]
339
+
340
+ def test__inner_representation
341
+ location = When.Resource("examples/sample.xml?lat=35&long=135")
342
+ assert_equal( 7875.0, location.lat)
343
+ assert_equal(30375.0, location.long)
344
+ end
345
+
346
+ def test__reference
347
+ location = When.Resource("_co:Spatial?label=Kyoto&long=136&lat=30&ref=http%3A%2F%2f")
348
+ assert_equal("http://", location.ref)
349
+ end
350
+
351
+ def test__spatial_m17n
352
+ ['_co:IndianCities', 'examples/Spatial.m17n'].each do |iri|
353
+ samples = IndianCities.dup
354
+ assert_equal(samples.size, When.Resource(iri).child.size)
355
+ When.Resource(iri).child.each do |obj|
356
+ name = obj.label
357
+ sample = samples.shift.dup
358
+ sample << iri.sub(/_co:/, 'http://hosi.org/When/Coordinates/') + '::' + sample[0]
359
+ assert_equal(sample,
360
+ [name.label,
361
+ name.translate('ja'),
362
+ name.reference('en'),
363
+ obj.lat / When::Coordinates::Spatial::DEGREE,
364
+ obj.long / When::Coordinates::Spatial::DEGREE,
365
+ obj.iri])
366
+ end
367
+ end
368
+ end
369
+
370
+ def test__to_dms
371
+ assert_equal(+135.9, When::Coordinates.to_deg("東経135度54分", 'EW'))
372
+ assert_equal(+135.9, When::Coordinates.to_deg("135度54分E", 'EW'))
373
+ assert_equal(+135.9, When::Coordinates.to_deg("135.5400E", 'EW'))
374
+ assert_equal(+135.9, When::Coordinates.to_deg("E135.5400", 'EW'))
375
+ assert_equal("135.5400E", When::Coordinates.to_dms(+135.9, 'EW'))
376
+ assert_equal( "35.3935N", When::Coordinates.to_dms(+35.66, 'NS'))
377
+ end
378
+ end
379
+ end
380
+
@@ -0,0 +1,127 @@
1
+ # -*- coding: utf-8 -*-
2
+ =begin
3
+ Copyright (C) 2011-2013 Takashi SUGA
4
+
5
+ You may use and/or modify this file according to the license
6
+ described in the LICENSE.txt file included in this archive.
7
+ =end
8
+
9
+ module Test::Ephemeris
10
+
11
+ class Ephemeris < Test::Unit::TestCase
12
+ def test_nothing
13
+ end
14
+ end
15
+
16
+ class CelestialObject < Test::Unit::TestCase
17
+ def test_nothing
18
+ end
19
+ end
20
+
21
+ class Star < Test::Unit::TestCase
22
+
23
+ def test_nothing
24
+ end
25
+
26
+ # 恒星
27
+ class Fixed < Test::Unit::TestCase
28
+ def test__access_hr
29
+ polaris = When::Resource('_sc:HR0424')
30
+ assert_equal("Alp UMi", polaris.bayer_name)
31
+ end
32
+ end
33
+
34
+ # 春分点
35
+ class Vernal < Test::Unit::TestCase
36
+ def test_nothing
37
+ end
38
+ end
39
+
40
+ # 北極
41
+ class Pole < Test::Unit::TestCase
42
+ def test_nothing
43
+ end
44
+ end
45
+ end
46
+
47
+ class Planet < Test::Unit::TestCase
48
+ def test_nothing
49
+ end
50
+ end
51
+
52
+ class Coords < Test::Unit::TestCase
53
+ def test_nothing
54
+ end
55
+ end
56
+
57
+ class UniversalTime < Test::Unit::TestCase
58
+ def view(time)
59
+ return time unless time.instance_of?(When::Coordinates::LeapSeconds)
60
+ return [time.trunk, time.branch, time.second]
61
+ end
62
+
63
+ def test__delta_t
64
+ date = When.when?('2009-01-01T00:00:00Z')
65
+ assert_equal("2008-12-31T23:59:01Z", (date - When::TM::IntervalLength.new(60, 'second')).to_s)
66
+ assert_equal("2008-12-31T23:59:00Z", (date - When::Duration('PT60S')).to_s)
67
+
68
+ date = When::TM::JulianDate.dynamical_time((2500000-(When::TM::JulianDate::JD19700101-0.5))*675)
69
+ assert_equal(2500000.0, +date)
70
+ assert_equal(true, +date > date.to_f)
71
+
72
+ date = When::TM::JulianDate.universal_time((2500000-(When::TM::JulianDate::JD19700101-0.5))*675)
73
+ assert_equal(2500000.0, date.to_f)
74
+ assert_equal(true, +date > date.to_f)
75
+
76
+ assert_equal((40 + 377.0/2048), When::TimeStandard.delta_t(When.when?('1970-01-01T').to_f))
77
+
78
+ date = When.when?('2008-10-31T23:59:60Z')
79
+ assert_equal([[2008, 11, 1], [0, 0, 0, 0]], [date.cal_date, date.clk_time.clk_time])
80
+
81
+ pair = When::Coordinates::Pair.new(1,1)
82
+ assert_equal([-1, -1, 1], [0.9, 1, 1.1].map {|v| v<=>pair})
83
+
84
+ time = When.Resource('_t:UniversalTime')
85
+ date0 = When.when?('2008-12-31T23:59:58Z') ^ When.Duration('1s') # Duration('PT1S')
86
+ [
87
+ "2008-12-31T23:59:58Z",
88
+ "2008-12-31T23:59:59Z",
89
+ "2008-12-31T23:59:60Z",
90
+ "2009-01-01T00:00:00Z",
91
+ "2009-01-01T00:00:01Z"
92
+ ].each do |sample|
93
+ date = date0.next
94
+ assert_equal([sample, true], [date.to_s, date.universal_time == time.from_dynamical_time(date.dynamical_time)])
95
+ end
96
+
97
+ it = When::V::Event.new({
98
+ 'rrule' => 'FREQ=MINUTELY;BYSECOND=59,60',
99
+ 'dtstart' => '2008-12-31T23:58:59Z'
100
+ }).each
101
+
102
+ [
103
+ "2008-12-31T23:58:59Z",
104
+ "2008-12-31T23:59:59Z",
105
+ "2009-01-01T00:00:59Z",
106
+ "2009-01-01T00:01:59Z"
107
+ ].each do |sample|
108
+ assert_equal(sample, it.next.to_s)
109
+ end
110
+
111
+ it = When::V::Event.new({
112
+ 'rrule' => 'FREQ=1s', #;BYSECOND=59,60',
113
+ 'dtstart' => '2008-12-31T23:59:58Z'
114
+ }).each
115
+
116
+ [
117
+ "2008-12-31T23:59:58Z",
118
+ "2008-12-31T23:59:59Z",
119
+ "2008-12-31T23:59:60Z",
120
+ "2009-01-01T00:00:00Z",
121
+ "2009-01-01T00:00:01Z"
122
+ ].each do |sample|
123
+ assert_equal(sample, it.next.to_s)
124
+ end
125
+ end
126
+ end
127
+ end