when_exe 0.2.100 → 0.3.1

Sign up to get free protection for your applications and to get access to all the features.
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,181 @@
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
10
+
11
+ class M17n < Test::Unit::TestCase
12
+
13
+ First = [
14
+ ["CalendarTerms", "CalendarTerms", "http://en.wikipedia.org/wiki/CalendarTerms"],
15
+ ["Month", "月", "http://ja.wikipedia.org/wiki/%E6%9C%88_(%E6%9A%A6)"],
16
+ ["Month", "月", "http://ja.wikipedia.org/wiki/%E6%9C%88_(%E6%9A%A6)"],
17
+ ["January", "1月", "http://ja.wikipedia.org/wiki/1%E6%9C%88"]
18
+ ]
19
+
20
+ Second = [
21
+ ["January", "1月", "http://ja.wikipedia.org/wiki/1%E6%9C%88" ],
22
+ ["February", "2月", "http://ja.wikipedia.org/wiki/2%E6%9C%88" ],
23
+ ["March", "3月", "http://ja.wikipedia.org/wiki/3%E6%9C%88" ],
24
+ ["April", "4月", "http://ja.wikipedia.org/wiki/4%E6%9C%88" ],
25
+ ["May", "5月", "http://ja.wikipedia.org/wiki/5%E6%9C%88" ],
26
+ ["June", "6月", "http://ja.wikipedia.org/wiki/6%E6%9C%88" ],
27
+ ["July", "7月", "http://ja.wikipedia.org/wiki/7%E6%9C%88" ],
28
+ ["August", "8月", "http://ja.wikipedia.org/wiki/8%E6%9C%88" ],
29
+ ["September", "9月", "http://ja.wikipedia.org/wiki/9%E6%9C%88" ],
30
+ ["October", "10月", "http://ja.wikipedia.org/wiki/10%E6%9C%88"],
31
+ ["November", "11月", "http://ja.wikipedia.org/wiki/11%E6%9C%88"],
32
+ ["December", "12月", "http://ja.wikipedia.org/wiki/12%E6%9C%88"]
33
+ ]
34
+
35
+ def test__m17n_1
36
+ ['examples/Terms.m17n', '_m:CalendarTerms'].each do |head|
37
+ When.Resource(head)
38
+
39
+ # pp When::Parts::Resource[head].child.map {|v| v.label}
40
+ assert_equal('Month', When::Parts::Resource[head].child[1].label.to_s)
41
+
42
+ assert_equal(First,
43
+ [head,
44
+ head + '::Month',
45
+ head + '::Month::Month',
46
+ head + '::Month::January'].inject([]) { |first, iri|
47
+ obj = When::Parts::Resource[iri]
48
+ first << [obj.label, obj.translate('ja'), obj.reference('ja')]
49
+ }
50
+ )
51
+
52
+ assert_equal(Second,
53
+ When::Parts::Resource[head + '::Month'].child.inject([]) { |second, obj|
54
+ second << [obj.label, obj.translate('ja'), obj.reference('ja')]
55
+ }
56
+ )
57
+ end
58
+ end
59
+
60
+ def test__m17n_2
61
+ march = When.m17n(['en:March=en_ns:', 'ja:3月=ja_ns:'],
62
+ {'en_ns'=>'http://en.wikipedia.org/wiki/',
63
+ 'ja_ns'=>'http://ja.wikipedia.org/wiki/'})
64
+
65
+ [
66
+ ['ja', ["3月", "3月", "http://ja.wikipedia.org/wiki/3%E6%9C%88"]],
67
+ ['en', ["March", "March", "http://en.wikipedia.org/wiki/March" ]]
68
+ ].each do |sample|
69
+ assert_equal(sample[1], [march.translate(sample[0]), march.translate(sample[0]), march.reference(sample[0])])
70
+ end
71
+
72
+ date = When.when?('CE2010.4.12')
73
+ era = When.era('CE')[0]
74
+ # assert_equal(Second.map {|v| v[0]}, era.m17n('[::_m:CalendarTerms::Month::*]').map {|v| v.to_s})
75
+ assert_equal(Second.map {|v| v[0]}, When.m17n('[::_m:CalendarTerms::Month::*]').map {|v| v.to_s})
76
+ assert_equal(["Accession", true, "http://hosi.org/When/BasicTypes/M17n/EpochEvents::Accession"],
77
+ [era['::_m:EpochEvents::Accession'].to_s,
78
+ era['::_m:EpochEvents::Accession'].registered?,
79
+ era['::_m:EpochEvents::Accession'].iri])
80
+
81
+ assert_equal(era['::_m:EpochEvents::*'].map {|v| v.to_s},
82
+ ["Accession", "FelicitousEvent", "NaturalDisaster", "InauspiciousYear", "Foundation", "CalendarReform"])
83
+
84
+ term = []
85
+ term << When.m17n('[日本語, English]', nil, ', en').translate('ja')
86
+ term << When.m17n('[日本語, English]', nil, ['ja', 'en']).translate('ja')
87
+ term << When.m17n('[ja:日本語, en:English]').translate('ja')
88
+ term << When.m17n(['ja:日本語', 'en:English']).translate('ja')
89
+ term.each do |result|
90
+ assert_equal("日本語", result)
91
+ end
92
+
93
+ date = When.when?('明治6.10.1')
94
+ era = When.era('明治')[0]
95
+ event = era.reference_event
96
+ assert_equal("代始", event.translate('ja'))
97
+ assert_equal(["Accession", true, "http://hosi.org/When/BasicTypes/M17n/EpochEvents::Accession"],
98
+ [era['::_m:EpochEvents::Accession'].to_s,
99
+ era['::_m:EpochEvents::Accession'].registered?,
100
+ era['::_m:EpochEvents::Accession'].iri])
101
+ end
102
+
103
+ def test__m17n_3
104
+ january = When.Resource('_m:CalendarTerms::Month::January')
105
+ [['en', 'January'], ['ja', '1月'], ['fr', 'janvier']].each do |sample|
106
+ assert_equal(sample[1], january.translate(sample[0]))
107
+ end
108
+ end
109
+
110
+ def test__m17n_4
111
+ january = When.Resource('_m:CalendarTerms::Month::January')
112
+ [['en', 'January'], ['ja', '1月'], ['fr', 'janvier']].each do |sample|
113
+ assert_equal(sample[1], january.translate(sample[0]))
114
+ end
115
+ end
116
+
117
+ def test__m17n_5
118
+ month = When.Resource('_m:CalendarTerms::Month')
119
+ [['en', 'Month'], ['ja', '月'], ['fr', 'Mois']].each do |sample|
120
+ assert_equal(sample[1], month.translate(sample[0]))
121
+ end
122
+ end
123
+
124
+ def test__to_hash
125
+ [
126
+ ['HLC0.0.0.0.0',
127
+ {:calendar=>["_e:Mayan::PHLC",-13], :sdn=>584283, :cal_date=>[13, 0, 0, 0, 0],
128
+ :notes=>[[{:note=>"Trecena", :value=>"Trecena(4/13)"},
129
+ {:note=>"Tzolk'in", :value=>"Ajaw(19/20)"},
130
+ {:note=>"Lords_of_the_Night", :value=>"G9(0/9)"},
131
+ {:note=>"Haab'", :value=>"8Kumk'u/365"}]]}],
132
+
133
+ ['1985-1-1',
134
+ {:calendar=>["_c:Gregorian"], :sdn=>2446067, :cal_date=>[1985, 1, 1],
135
+ :notes=>[[{:note=>"Month", :value=>"January"}],[]]}],
136
+
137
+ ['明治7.5.7',
138
+ {:calendar=>["_e:Japanese::明治",1867], :sdn=>2405651, :cal_date=>[7, 5, 7],
139
+ :notes=>[[{:note=>"干支", :value=>"庚午(6)", :position=>"共通"}],
140
+ [{:note=>"月名", :value=>"May", :position=>"月建"}],
141
+ [{:note=>"干支", :value=>"甲子(0)", :position=>"共通"},
142
+ {:note=>"六曜", :value=>"大安", :position=>"民間"}]]}],
143
+
144
+ ['明治17.5.7',
145
+ {:calendar=>["_e:Japanese::明治",1867], :sdn=>2409304, :cal_date=>[17, 5, 7],
146
+ :notes=>[[{:note=>"干支", :value=>"庚辰(16)", :position=>"共通"}],
147
+ [{:note=>"月名", :value=>"May", :position=>"月建"}],
148
+ [{:note=>"干支", :value=>"丁巳(53)", :position=>"共通"},
149
+ {:note=>"六曜", :value=>"友引", :position=>"民間"}]]}],
150
+
151
+ ['CE-2010.06.08T12:00:00+09:00',
152
+ {:calendar=>["_e:Common::BCE", 1, true], :sdn=>987064, :cal_date=>[-2011, 6, 8],
153
+ :notes=>[[{:note=>"Month", :value=>"June"}],[]],
154
+ :clk_time=>[987064, 12, 0, 0]}],
155
+
156
+ [11,
157
+ {:calendar=>["_tm:JulianDate"], :sdn=>11,
158
+ :notes=>[[{:note=>"Week", :value=>"Friday(4)"},
159
+ {:note=>"干支", :value=>"甲子(0)"}]]}],
160
+
161
+ [11.0,
162
+ {:calendar=>["_tm:JulianDate"], :sdn=>11,
163
+ :notes=>[[{:note=>"Week", :value=>"Friday(4)"},
164
+ {:note=>"干支", :value=>"甲子(0)"}]],
165
+ :clk_time=>[11, 12, 0, 0]}]
166
+
167
+ ].each do |sample|
168
+ date, verify = sample
169
+ list = When.when?(date).to_hash({:simple=>true})
170
+ [:calendar, :cal_date, :sdn, :clk_time].each do |key|
171
+ assert_equal(verify[key], list[key])
172
+ end
173
+ verify[:notes].each_index do |i|
174
+ verify[:notes][i].each_index do |k|
175
+ assert_equal(verify[:notes][i][k], list[:notes][i][k])
176
+ end
177
+ end
178
+ end
179
+ end
180
+ end
181
+ end
@@ -0,0 +1,78 @@
1
+ # -*- coding: utf-8 -*-
2
+ =begin
3
+ Copyright (C) 2011-2012 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
10
+
11
+ class Mayan < Test::Unit::TestCase
12
+ def test__mayan_epoch
13
+ [['PHLC13.0.0.0.0', 'PHLC13(0000).00.00.00.00', 584283],
14
+ ['HLC0.0.0.0.1', 'HLC00.00.00.00.01', 584284],
15
+ ['HLC13.0.0.0.0', 'HLC13.00.00.00.00', 2456283],
16
+ ['HLC13.0.0.0.1', 'NLC00(0013).00.00.00.01', 2456284]].each do |sample|
17
+ date = When.when?(sample.shift)
18
+ assert_equal(sample, [date.to_s, date.to_i])
19
+ end
20
+ end
21
+
22
+ def test__mayan_period
23
+ date = When.when?('HLC0.0.0.0.1')
24
+ period = When.Duration('P2X1X3Y4M5D')
25
+ assert_equal('HLC02.01.03.04.06', (date + period).to_s)
26
+ end
27
+
28
+ def test__haab
29
+ haab = When.Resource("_co:Mayan::Haab'")
30
+ assert_equal("ハアブ", haab.label.translate('ja'))
31
+ assert_equal("http://en.wikipedia.org/wiki/Haab'", haab.label.reference)
32
+ pop = When.Resource("_co:Mayan::Haab'::Pop")
33
+ assert_equal("Pop", pop.label.translate('en'))
34
+ assert_equal("http://en.wikipedia.org/wiki/File:Maya-Pop.jpg", pop.label.reference)
35
+ date0 = When.when?('2011-05-16T12:34:56Z')
36
+ sample = [
37
+ "2012-04-12T12:34:56Z",
38
+ "2012-04-13T12:34:56Z",
39
+ "2012-04-14T12:34:56Z"
40
+ ]
41
+ [10,11,12].each do |i|
42
+ assert_equal(sample.shift, (date0 & pop[i]).to_s)
43
+ end
44
+ assert_equal(42, When.when?('2011-05-15') % haab)
45
+ h = haab % When.when?('2011-05-15')
46
+ assert_equal(["Sip", 2], [h.label.to_s, h.difference])
47
+ end
48
+
49
+ def test__tzolkin
50
+ trecena = When.Resource("_co:Mayan::Trecena")
51
+ assert_equal("トレセナ", trecena.label.translate('ja'))
52
+ assert_equal("http://en.wikipedia.org/wiki/Trecena", trecena.label.reference)
53
+ assert_equal(2, When.when?('2011-05-15') % trecena)
54
+
55
+
56
+ tzolkin = When.Resource("_co:Mayan::Tzolk'in")
57
+ assert_equal("ツォルキン", tzolkin.label.translate('ja'))
58
+ assert_equal("http://en.wikipedia.org/wiki/Tzolk'in", tzolkin.label.reference)
59
+ ajaw = When.Resource("_co:Mayan::Tzolk'in::Ajaw")
60
+ assert_equal("Ajaw", ajaw.label.translate('en'))
61
+ assert_equal("http://en.wikipedia.org/wiki/File:MAYA-g-log-cal-D20-Ajaw-cdxW.png", ajaw.label.reference('alias'))
62
+ date0 = When.when?('2011-05-16T12:34:56Z')
63
+ sample = [
64
+ "2011-05-21T12:34:56Z",
65
+ "2011-05-21T12:34:56Z",
66
+ "2011-05-21T12:34:56Z"
67
+ ]
68
+ [10,11,12].each do |i|
69
+ assert_equal(sample.shift, (date0 & ajaw).to_s)
70
+ end
71
+ assert_equal(13, When.when?('2011-05-15') % tzolkin)
72
+ assert_equal('Ix', (tzolkin % When.when?('2011-05-15')).label.to_s)
73
+ if ::Object.const_defined?(:Date) && Date.respond_to?(:civil)
74
+ assert_equal('Ix', (tzolkin % Date.new(2011,5,15)).label.to_s)
75
+ end
76
+ end
77
+ end
78
+ end
@@ -0,0 +1,14 @@
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::Ephemeris
10
+ class Moon < Test::Unit::TestCase
11
+ def test_nothing
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,14 @@
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::Ephemeris
10
+ class Planets < Test::Unit::TestCase
11
+ def test_nothing
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,123 @@
1
+ # -*- coding: utf-8 -*-
2
+ =begin
3
+ Copyright (C) 2011-2012 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
10
+
11
+ class Residue < Test::Unit::TestCase
12
+ def test__enumerator0
13
+ list = []
14
+ res = When::Coordinates::Residue.new(365.2422, 29.530589)
15
+ res.each({:error=>1E-10}) do |v|
16
+ list << v[0..1]
17
+ end
18
+ assert_equal(
19
+ [[12, 1],
20
+ [25, 2],
21
+ [37, 3],
22
+ [99, 8],
23
+ [136, 11],
24
+ [235, 19],
25
+ [4131, 334],
26
+ [8497, 687],
27
+ [12628, 1021],
28
+ [33753, 2729],
29
+ [46381, 3750],
30
+ [219277, 17729],
31
+ [923489, 74666]], list)
32
+ end
33
+
34
+ def test__kanshi
35
+ ['_co:CommonResidue', 'examples/Residue.m17n'].each do |iri|
36
+ assert_equal("Week", When.Resource(iri + '::Week').label)
37
+ assert_equal("Monday", When.Resource(iri + '::Week::Monday').label)
38
+ assert_equal(7, When.Resource(iri + '::Week::Friday').divisor)
39
+ assert_equal(6, When.Resource(iri + '::Week::Sunday').remainder)
40
+ assert_equal(7, When.Resource(iri + '::Week::Sunday').divisor)
41
+ assert_equal("日曜日", When.Resource(iri + '::Week::Sunday::Sunday').translate('ja'))
42
+
43
+ sample = [
44
+ ["Monday", "月曜日", "http://en.wikipedia.org/wiki/Monday"],
45
+ ["Tuesday", "火曜日", "http://en.wikipedia.org/wiki/Tuesday"],
46
+ ["Wednesday", "水曜日", "http://en.wikipedia.org/wiki/Wednesday"],
47
+ ["Thursday", "木曜日", "http://en.wikipedia.org/wiki/Thursday"],
48
+ ["Friday", "金曜日", "http://en.wikipedia.org/wiki/Friday"],
49
+ ["Saturday", "土曜日", "http://en.wikipedia.org/wiki/Saturday"],
50
+ ["Sunday", "日曜日", "http://en.wikipedia.org/wiki/Sunday"]
51
+ ]
52
+ assert_equal(7, When::Parts::Resource[iri + '::Week'].child.size)
53
+ When::Parts::Resource[iri + '::Week'].child.each do |obj|
54
+ name = obj.label
55
+ assert_equal(sample.shift, [name.label, name.translate('ja'), name.reference('en')])
56
+ end
57
+
58
+ stem = When.Resource(iri + '::干')
59
+ kinoto = When.Resource(iri + '::干::乙')
60
+ ushi = When.Resource(iri + '::支::丑')
61
+ kinoto_ushi = When.Resource(iri + '::干支::乙丑')
62
+
63
+ sample = [
64
+ ["干", 10, 0],
65
+ ["乙", 10, 1],
66
+ ["丑", 12, 1]
67
+ ]
68
+ [stem, kinoto, ushi].each do |v|
69
+ assert_equal(sample.shift, [v.label, v.divisor, v.remainder])
70
+ end
71
+
72
+ assert_equal("hinoto", stem[3].label.translate('en'))
73
+
74
+ date0 = When.when?('2011-05-16T12:34:56Z')
75
+ date = date0 & (kinoto & ushi)
76
+ assert_equal("2011-07-09T12:34:56Z", date.to_s)
77
+
78
+ date = date0 & (kinoto & ushi).to('day')
79
+ assert_equal("2011-07-09T12:34:56Z", date.to_s)
80
+
81
+ date = date0 & (kinoto & ushi) / 'day'
82
+ assert_equal("2011-07-09T12:34:56Z", date.to_s)
83
+
84
+ date = date0 & (kinoto & ushi).to('year')
85
+ assert_equal("2045-05-16T12:34:56Z", date.to_s)
86
+
87
+ date = date0 & kinoto_ushi / 'year'
88
+ assert_equal("2045-05-16T12:34:56Z", date.to_s)
89
+ end
90
+ end
91
+
92
+ def test__epoch_in_CE
93
+ cals = [
94
+ 'Gregorian',
95
+ 'EgyptianCoptic',
96
+ 'EthiopianCoptic',
97
+ 'IndianNationalSolar',
98
+ 'HinduSolar?type=SBV',
99
+ 'HinduSolar?type=SBVZ',
100
+ 'HinduSolar?type=SBS',
101
+ 'HinduSolar?type=SBSZ',
102
+ # 'HinduLuniSolar?type=SBVA',
103
+ # 'HinduLuniSolar?type=SBVZA',
104
+ # 'HinduLuniSolar?type=SBSA',
105
+ # 'HinduLuniSolar?type=SBSZA',
106
+ 'SolarHejri',
107
+ 'Jewish',
108
+ 'ThaiB',
109
+ # 'ThaiC',
110
+ 'Tibetan',
111
+ ]
112
+ eto = When.Resource('_co:CommonResidue::干支').to('year')
113
+ today = When.when?('2012-06-13')
114
+ assert_equal([[28, 246778, 246778]],
115
+ cals.map { |cal|
116
+ date = When.Calendar(cal) ^ today
117
+ [date % eto, (eto & date).to_i/10, (date & eto).to_i/10]
118
+ }.uniq
119
+ )
120
+ end
121
+ end
122
+ end
123
+
@@ -0,0 +1,14 @@
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::Ephemeris
10
+ class Sun < Test::Unit::TestCase
11
+ def test_nothing
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,94 @@
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
10
+
11
+ class Thai < Test::Unit::TestCase
12
+ def test_thai_date
13
+
14
+ date = When.Resource('_c:ThaiC') ^ When.when?('2011-05-16')
15
+ [["1373-07-15", 2455698],
16
+ ["1373-07<01", 2455699],
17
+ ["1373-07<02", 2455700]].each do |sample|
18
+ assert_equal(sample, [date.to_s, date.to_i])
19
+ date += When.Duration('P1D')
20
+ end
21
+
22
+ [["1373-07<03", 2455701],
23
+ ["1373-08-03", 2455716],
24
+ ["1373-08<03", 2455731],
25
+ ["1373-09-03", 2455745],
26
+ ["1373-09<03", 2455760],
27
+ ["1373-10-03", 2455775],
28
+ ["1373-10<03", 2455790],
29
+ ["1373-11-03", 2455804],
30
+ ["1373-11<03", 2455819],
31
+ ["1373-12-03", 2455834]].each do |sample|
32
+ assert_equal(sample, [date.to_s, date.to_i])
33
+ date += When.Duration('P1M')
34
+ end
35
+
36
+ date = When.Resource('_c:ThaiB') ^ When.when?('2011-05-16')
37
+ [["1373-06-14", 2455698],
38
+ ["1373-06-15", 2455699],
39
+ ["1373-06<01", 2455700]].each do |sample|
40
+ assert_equal(sample, [date.to_s, date.to_i])
41
+ date += When.Duration('P1D')
42
+ end
43
+
44
+ [["1373-06<02", 2455701],
45
+ ["1373-07-02", 2455716],
46
+ ["1373-07<02", 2455731],
47
+ ["1373-08-02", 2455745],
48
+ ["1373-08<02", 2455760],
49
+ ["1373-09-02", 2455775],
50
+ ["1373-09<02", 2455790],
51
+ ["1373-10-02", 2455804],
52
+ ["1373-10<02", 2455819],
53
+ ["1373-11-02", 2455834],
54
+ ["1373-11<02", 2455849],
55
+ ["1373-12-02", 2455863],
56
+ ["1373-12<02", 2455878],
57
+ ["1374-01-02", 2455893],
58
+ ["1374-01<02", 2455908],
59
+ ["1374-02-02", 2455922],
60
+ ["1374-02<02", 2455937],
61
+ ["1374-03-02", 2455952],
62
+ ["1374-03<02", 2455967],
63
+ ["1374-04-02", 2455981],
64
+ ["1374-04<02", 2455996],
65
+ ["1374-05-02", 2456011],
66
+ ["1374-05<02", 2456026],
67
+ ["1374-06-02", 2456040],
68
+ ["1374-06<02", 2456055],
69
+ ["1374-07-02", 2456070],
70
+ ["1374-07<02", 2456085],
71
+ ["1374-08&02", 2456099],
72
+ ["1374-08*02", 2456114],
73
+ ["1374-08-02", 2456129],
74
+ ["1374-08<02", 2456144],
75
+ ["1374-09-02", 2456159],
76
+ ["1374-09<02", 2456174],
77
+ ["1374-10-02", 2456188],
78
+ ["1374-10<02", 2456203],
79
+ ["1374-11-02", 2456218],
80
+ ["1374-11<02", 2456233],
81
+ ["1374-12-02", 2456247],
82
+ ["1374-12<02", 2456262],
83
+ ["1375-01-02", 2456277]].each do |sample|
84
+ assert_equal(sample, [date.to_s, date.to_i])
85
+ date += When.Duration('P1M')
86
+ end
87
+
88
+ date = When.when?('1374-08&02', {:frame=>When.Resource('_c:ThaiB')})
89
+ assert_equal(["1374-08&02", 2456099, "adhika Āṣāḍha Śuklapakṣa"],
90
+ [date.to_s, date.to_i, date.name('Month').translate('en')])
91
+ end
92
+ end
93
+ end
94
+