when_exe 0.3.6 → 0.3.7

Sign up to get free protection for your applications and to get access to all the features.
Files changed (117) hide show
  1. checksums.yaml +7 -0
  2. data/README.md +171 -0
  3. data/lib/when_exe.rb +78 -47
  4. data/lib/when_exe/basictypes.rb +752 -747
  5. data/lib/when_exe/calendarnote.rb +805 -801
  6. data/lib/when_exe/calendartypes.rb +1583 -1531
  7. data/lib/when_exe/coordinates.rb +16 -15
  8. data/lib/when_exe/core/duration.rb +114 -110
  9. data/lib/when_exe/core/extension.rb +504 -504
  10. data/lib/when_exe/ephemeris.rb +1917 -1913
  11. data/lib/when_exe/ephemeris/moon.rb +333 -333
  12. data/lib/when_exe/ephemeris/notes.rb +389 -387
  13. data/lib/when_exe/ephemeris/planets.rb +585 -585
  14. data/lib/when_exe/ephemeris/sun.rb +214 -214
  15. data/lib/when_exe/googlecalendar.rb +144 -140
  16. data/lib/when_exe/icalendar.rb +1636 -1636
  17. data/lib/when_exe/inspect.rb +46 -22
  18. data/lib/when_exe/locales/akt.rb +176 -176
  19. data/lib/when_exe/locales/encoding_conversion.rb +134 -126
  20. data/lib/when_exe/locales/iast.rb +90 -90
  21. data/lib/when_exe/locales/locale.rb +750 -746
  22. data/lib/when_exe/locales/transliteration_table.rb +62 -62
  23. data/lib/when_exe/mini_application.rb +307 -305
  24. data/lib/when_exe/parts/enumerator.rb +2 -2
  25. data/lib/when_exe/parts/geometric_complex.rb +397 -397
  26. data/lib/when_exe/parts/method_cash.rb +224 -224
  27. data/lib/when_exe/parts/resource.rb +1069 -1071
  28. data/lib/when_exe/parts/timezone.rb +240 -230
  29. data/lib/when_exe/region/armenian.rb +56 -56
  30. data/lib/when_exe/region/babylonian.rb +405 -0
  31. data/lib/when_exe/region/bahai.rb +146 -146
  32. data/lib/when_exe/region/balinese.rb +622 -622
  33. data/lib/when_exe/region/chinese.rb +95 -25
  34. data/lib/when_exe/region/chinese/calendars.rb +1016 -1016
  35. data/lib/when_exe/region/chinese/epochs.rb +1 -1
  36. data/lib/when_exe/region/chinese/twins.rb +803 -795
  37. data/lib/when_exe/region/christian.rb +824 -824
  38. data/lib/when_exe/region/coptic.rb +106 -87
  39. data/lib/when_exe/region/discordian.rb +225 -225
  40. data/lib/when_exe/region/far_east.rb +188 -188
  41. data/lib/when_exe/region/french.rb +56 -56
  42. data/lib/when_exe/region/geologicalage.rb +639 -639
  43. data/lib/when_exe/region/goddess.rb +58 -58
  44. data/lib/when_exe/region/indian.rb +1254 -1251
  45. data/lib/when_exe/region/iranian.rb +8 -8
  46. data/lib/when_exe/region/islamic.rb +3 -3
  47. data/lib/when_exe/region/japanese.rb +93 -99
  48. data/lib/when_exe/region/japanese/calendars.rb +396 -397
  49. data/lib/when_exe/region/japanese/epochs.rb +26 -26
  50. data/lib/when_exe/region/japanese/nihon_shoki.rb +71 -71
  51. data/lib/when_exe/region/japanese/notes.rb +1383 -1386
  52. data/lib/when_exe/region/japanese/residues.rb +1306 -1306
  53. data/lib/when_exe/region/japanese/twins.rb +225 -225
  54. data/lib/when_exe/region/japanese/weeks.rb +112 -0
  55. data/lib/when_exe/region/javanese.rb +230 -230
  56. data/lib/when_exe/region/jewish.rb +126 -126
  57. data/lib/when_exe/region/korean.rb +378 -378
  58. data/lib/when_exe/region/m17n.rb +114 -113
  59. data/lib/when_exe/region/martian.rb +258 -255
  60. data/lib/when_exe/region/mayan.rb +32 -32
  61. data/lib/when_exe/region/residue.rb +89 -89
  62. data/lib/when_exe/region/roman.rb +36 -24
  63. data/lib/when_exe/region/ryukyu.rb +97 -97
  64. data/lib/when_exe/region/shire.rb +240 -240
  65. data/lib/when_exe/region/soviet.rb +209 -0
  66. data/lib/when_exe/region/symmetry.rb +50 -50
  67. data/lib/when_exe/region/thai.rb +336 -335
  68. data/lib/when_exe/region/tibetan.rb +316 -315
  69. data/lib/when_exe/region/vietnamese.rb +440 -439
  70. data/lib/when_exe/region/weekdate.rb +80 -80
  71. data/lib/when_exe/region/world.rb +175 -175
  72. data/lib/when_exe/region/yerm.rb +14 -14
  73. data/lib/when_exe/region/zoroastrian.rb +203 -203
  74. data/lib/when_exe/timestandard.rb +707 -681
  75. data/lib/when_exe/tmduration.rb +338 -330
  76. data/lib/when_exe/tmobjects.rb +1346 -1325
  77. data/lib/when_exe/tmposition.rb +2115 -2072
  78. data/lib/when_exe/tmreference.rb +1693 -1669
  79. data/lib/when_exe/version.rb +1 -1
  80. data/link_to_online_documents +1 -1
  81. data/test/examples/JapanHolidaysRFC6350.ics +1 -1
  82. data/test/test.rb +67 -61
  83. data/test/test/basictypes.rb +409 -409
  84. data/test/test/calendarnote.rb +86 -69
  85. data/test/test/calendartypes.rb +97 -97
  86. data/test/test/coordinates.rb +396 -396
  87. data/test/test/ephemeris.rb +83 -74
  88. data/test/test/ephemeris/moon.rb +14 -14
  89. data/test/test/ephemeris/planets.rb +14 -14
  90. data/test/test/ephemeris/sun.rb +14 -14
  91. data/test/test/googlecalendar.rb +194 -176
  92. data/test/test/icalendar.rb +867 -858
  93. data/test/test/inspect.rb +117 -117
  94. data/test/test/parts.rb +487 -487
  95. data/test/test/region/balinese.rb +34 -0
  96. data/test/test/region/chinese.rb +218 -206
  97. data/test/test/region/christian.rb +245 -245
  98. data/test/test/region/coptic.rb +27 -27
  99. data/test/test/region/french.rb +33 -33
  100. data/test/test/region/geologicalage.rb +17 -17
  101. data/test/test/region/indian.rb +57 -57
  102. data/test/test/region/iran.rb +54 -54
  103. data/test/test/region/islamic.rb +18 -18
  104. data/test/test/region/japanese.rb +237 -219
  105. data/test/test/region/jewish.rb +61 -61
  106. data/test/test/region/m17n.rb +184 -184
  107. data/test/test/region/mayan.rb +195 -195
  108. data/test/test/region/residue.rb +147 -139
  109. data/test/test/region/thai.rb +116 -116
  110. data/test/test/region/tibetan.rb +30 -30
  111. data/test/test/region/vietnamese.rb +102 -102
  112. data/test/test/region/yerm.rb +146 -146
  113. data/test/test/timestandard.rb +81 -81
  114. data/test/test/tmobjects.rb +328 -328
  115. data/test/test/tmposition.rb +397 -284
  116. data/test/test/tmreference.rb +157 -157
  117. metadata +13 -10
@@ -1,195 +1,195 @@
1
- # -*- coding: utf-8 -*-
2
- =begin
3
- Copyright (C) 2011-2014 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
- # No offset
14
- [['PHLC13.0.0.0.0', 'PHLC13(00).00.00.00.00', 584283],
15
- ['HLC0.0.0.0.1', 'HLC00.00.00.00.01', 584284],
16
- ['HLC13.0.0.0.0', 'HLC13.00.00.00.00', 2456283],
17
- ['HLC13.0.0.0.1', 'NLC00(13).00.00.00.01', 2456284]].each do |sample|
18
- date = When.when?(sample.shift)
19
- assert_equal(sample, [date.to_s, date.to_i])
20
- end
21
-
22
- # offset 0B
23
- [['LongCount?Epoch=0D::PHLC13.0.0.0.0', 'LongCount?Epoch=0D::PHLC13(00).00.00.00.00', 584283],
24
- ['LongCount?Epoch=0D::HLC0.0.0.0.1', 'LongCount?Epoch=0D::HLC00.00.00.00.01', 584284],
25
- ['LongCount?Epoch=0D::HLC13.0.0.0.0', 'LongCount?Epoch=0D::HLC13.00.00.00.00', 2456283],
26
- ['LongCount?Epoch=0D::HLC13.0.0.0.1', 'LongCount?Epoch=0D::NLC00(13).00.00.00.01', 2456284]].each do |sample|
27
- date = When.when?(sample.shift)
28
- assert_equal(sample, [date.to_s, date.to_i])
29
- end
30
-
31
- # offset 2B
32
- [['LongCount?Epoch=2D::PHLC13.0.0.0.0', 'LongCount?Epoch=2D::PHLC13(00).00.00.00.00', 584285],
33
- ['LongCount?Epoch=2D::HLC0.0.0.0.1', 'LongCount?Epoch=2D::HLC00.00.00.00.01', 584286],
34
- ['LongCount?Epoch=2D::HLC13.0.0.0.0', 'LongCount?Epoch=2D::HLC13.00.00.00.00', 2456285],
35
- ['LongCount?Epoch=2D::HLC13.0.0.0.1', 'LongCount?Epoch=2D::NLC00(13).00.00.00.01', 2456286]].each do |sample|
36
- date = When.when?(sample.shift)
37
- assert_equal(sample, [date.to_s, date.to_i])
38
- end
39
- end
40
-
41
- def test__mayan_period
42
- date = When.when?('HLC0.0.0.0.1')
43
- period = When.Duration('P2X1X3Y4M5D')
44
- assert_equal('HLC02.01.03.04.06', (date + period).to_s)
45
- end
46
-
47
- def test__haab
48
- # No offset
49
- haab = When.Resource("_co:Mayan::Haab'")
50
- assert_equal("ハアブ", haab.label.translate('ja'))
51
- assert_equal("http://en.wikipedia.org/wiki/Haab'", haab.label.reference)
52
- pop = When.Resource("_co:Mayan::Haab'::Pop")
53
- assert_equal("Pop", pop.label.translate('en'))
54
- assert_equal("http://en.wikipedia.org/wiki/File:Maya-Pop.jpg", pop.label.reference)
55
- date0 = When.when?('2011-05-16T12:34:56Z')
56
- sample = [
57
- "2012-04-12T12:34:56Z",
58
- "2012-04-13T12:34:56Z",
59
- "2012-04-14T12:34:56Z"
60
- ]
61
- [10,11,12].each do |i|
62
- assert_equal(sample.shift, (date0 & pop[i]).to_s)
63
- end
64
- assert_equal(42, When.when?('2011-05-15') % haab)
65
- h = haab % When.when?('2011-05-15')
66
- assert_equal(["Sip", 2], [h.label.to_s, h.difference])
67
-
68
- # offset 0B
69
- haab = When.Resource("_co:Mayan?Epoch=0D::Haab'")
70
- assert_equal("ハアブ", haab.label.translate('ja'))
71
- assert_equal("http://en.wikipedia.org/wiki/Haab'", haab.label.reference)
72
- pop = When.Resource("_co:Mayan?Epoch=0D::Haab'::Pop")
73
- assert_equal("Pop", pop.label.translate('en'))
74
- assert_equal("http://en.wikipedia.org/wiki/File:Maya-Pop.jpg", pop.label.reference)
75
- date0 = When.when?('2011-05-16T12:34:56Z')
76
- sample = [
77
- "2012-04-12T12:34:56Z",
78
- "2012-04-13T12:34:56Z",
79
- "2012-04-14T12:34:56Z"
80
- ]
81
- [10,11,12].each do |i|
82
- assert_equal(sample.shift, (date0 & pop[i]).to_s)
83
- end
84
- assert_equal(42, When.when?('2011-05-15') % haab)
85
- h = haab % When.when?('2011-05-15')
86
- assert_equal(["Sip", 2], [h.label.to_s, h.difference])
87
-
88
- # offset 2B
89
- haab = When.Resource("_co:Mayan?Epoch=2D::Haab'")
90
- assert_equal("ハアブ", haab.label.translate('ja'))
91
- assert_equal("http://en.wikipedia.org/wiki/Haab'", haab.label.reference)
92
- pop = When.Resource("_co:Mayan?Epoch=2D::Haab'::Pop")
93
- assert_equal("Pop", pop.label.translate('en'))
94
- assert_equal("http://en.wikipedia.org/wiki/File:Maya-Pop.jpg", pop.label.reference)
95
- date0 = When.when?('2011-05-16T12:34:56Z')
96
- sample = [
97
- "2012-04-14T12:34:56Z",
98
- "2012-04-15T12:34:56Z",
99
- "2012-04-16T12:34:56Z"
100
- ]
101
- [10,11,12].each do |i|
102
- assert_equal(sample.shift, (date0 & pop[i]).to_s)
103
- end
104
- assert_equal(42, When.when?('2011-05-17') % haab)
105
- h = haab % When.when?('2011-05-17')
106
- assert_equal(["Sip", 2], [h.label.to_s, h.difference])
107
- end
108
-
109
- def test__tzolkin
110
- # No offset
111
- trecena = When.Resource("_co:Mayan::Trecena")
112
- assert_equal("トレセナ", trecena.label.translate('ja'))
113
- assert_equal("http://en.wikipedia.org/wiki/Trecena", trecena.label.reference)
114
- assert_equal(2, When.when?('2011-05-15') % trecena)
115
-
116
-
117
- tzolkin = When.Resource("_co:Mayan::Tzolk'in")
118
- assert_equal("ツォルキン", tzolkin.label.translate('ja'))
119
- assert_equal("http://en.wikipedia.org/wiki/Tzolk'in", tzolkin.label.reference)
120
- ajaw = When.Resource("_co:Mayan::Tzolk'in::Ajaw")
121
- assert_equal("Ajaw", ajaw.label.translate('en'))
122
- assert_equal("http://en.wikipedia.org/wiki/File:MAYA-g-log-cal-D20-Ajaw-cdxW.png", ajaw.label.reference('alias'))
123
- date0 = When.when?('2011-05-16T12:34:56Z')
124
- sample = [
125
- "2011-05-21T12:34:56Z",
126
- "2011-05-21T12:34:56Z",
127
- "2011-05-21T12:34:56Z"
128
- ]
129
- [10,11,12].each do |i|
130
- assert_equal(sample.shift, (date0 & ajaw).to_s)
131
- end
132
- assert_equal(13, When.when?('2011-05-15') % tzolkin)
133
- assert_equal('Ix', (tzolkin % When.when?('2011-05-15')).label.to_s)
134
- if ::Object.const_defined?(:Date) && Date.respond_to?(:civil)
135
- assert_equal('Ix', (tzolkin % Date.new(2011,5,15)).label.to_s)
136
- end
137
-
138
- # offset 0B
139
- trecena = When.Resource("_co:Mayan?Epoch=0D::Trecena")
140
- assert_equal("トレセナ", trecena.label.translate('ja'))
141
- assert_equal("http://en.wikipedia.org/wiki/Trecena", trecena.label.reference)
142
- assert_equal(2, When.when?('2011-05-15') % trecena)
143
-
144
-
145
- tzolkin = When.Resource("_co:Mayan?Epoch=0D::Tzolk'in")
146
- assert_equal("ツォルキン", tzolkin.label.translate('ja'))
147
- assert_equal("http://en.wikipedia.org/wiki/Tzolk'in", tzolkin.label.reference)
148
- ajaw = When.Resource("_co:Mayan?Epoch=0D::Tzolk'in::Ajaw")
149
- assert_equal("Ajaw", ajaw.label.translate('en'))
150
- assert_equal("http://en.wikipedia.org/wiki/File:MAYA-g-log-cal-D20-Ajaw-cdxW.png", ajaw.label.reference('alias'))
151
- date0 = When.when?('2011-05-16T12:34:56Z')
152
- sample = [
153
- "2011-05-21T12:34:56Z",
154
- "2011-05-21T12:34:56Z",
155
- "2011-05-21T12:34:56Z"
156
- ]
157
- [10,11,12].each do |i|
158
- assert_equal(sample.shift, (date0 & ajaw).to_s)
159
- end
160
- assert_equal(13, When.when?('2011-05-15') % tzolkin)
161
- assert_equal('Ix', (tzolkin % When.when?('2011-05-15')).label.to_s)
162
- if ::Object.const_defined?(:Date) && Date.respond_to?(:civil)
163
- assert_equal('Ix', (tzolkin % Date.new(2011,5,15)).label.to_s)
164
- end
165
-
166
- # offset 2B
167
- trecena = When.Resource("_co:Mayan?Epoch=2D::Trecena")
168
- assert_equal("トレセナ", trecena.label.translate('ja'))
169
- assert_equal("http://en.wikipedia.org/wiki/Trecena", trecena.label.reference)
170
- assert_equal(2, When.when?('2011-05-17') % trecena)
171
-
172
-
173
- tzolkin = When.Resource("_co:Mayan?Epoch=2D::Tzolk'in")
174
- assert_equal("ツォルキン", tzolkin.label.translate('ja'))
175
- assert_equal("http://en.wikipedia.org/wiki/Tzolk'in", tzolkin.label.reference)
176
- ajaw = When.Resource("_co:Mayan?Epoch=2D::Tzolk'in::Ajaw")
177
- assert_equal("Ajaw", ajaw.label.translate('en'))
178
- assert_equal("http://en.wikipedia.org/wiki/File:MAYA-g-log-cal-D20-Ajaw-cdxW.png", ajaw.label.reference('alias'))
179
- date0 = When.when?('2011-05-16T12:34:56Z')
180
- sample = [
181
- "2011-05-23T12:34:56Z",
182
- "2011-05-23T12:34:56Z",
183
- "2011-05-23T12:34:56Z"
184
- ]
185
- [10,11,12].each do |i|
186
- assert_equal(sample.shift, (date0 & ajaw).to_s)
187
- end
188
- assert_equal(13, When.when?('2011-05-17') % tzolkin)
189
- assert_equal('Ix', (tzolkin % When.when?('2011-05-17')).label.to_s)
190
- if ::Object.const_defined?(:Date) && Date.respond_to?(:civil)
191
- assert_equal('Ix', (tzolkin % Date.new(2011,5,17)).label.to_s)
192
- end
193
- end
194
- end
195
- end
1
+ # -*- coding: utf-8 -*-
2
+ =begin
3
+ Copyright (C) 2011-2014 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 MiniTest
10
+
11
+ class Mayan < MiniTest::TestCase
12
+ def test__mayan_epoch
13
+ # No offset
14
+ [['PHLC13.0.0.0.0', 'PHLC13(00).00.00.00.00', 584283],
15
+ ['HLC0.0.0.0.1', 'HLC00.00.00.00.01', 584284],
16
+ ['HLC13.0.0.0.0', 'HLC13.00.00.00.00', 2456283],
17
+ ['HLC13.0.0.0.1', 'NLC00(13).00.00.00.01', 2456284]].each do |sample|
18
+ date = When.when?(sample.shift)
19
+ assert_equal(sample, [date.to_s, date.to_i])
20
+ end
21
+
22
+ # offset 0B
23
+ [['LongCount?Epoch=0D::PHLC13.0.0.0.0', 'LongCount?Epoch=0D::PHLC13(00).00.00.00.00', 584283],
24
+ ['LongCount?Epoch=0D::HLC0.0.0.0.1', 'LongCount?Epoch=0D::HLC00.00.00.00.01', 584284],
25
+ ['LongCount?Epoch=0D::HLC13.0.0.0.0', 'LongCount?Epoch=0D::HLC13.00.00.00.00', 2456283],
26
+ ['LongCount?Epoch=0D::HLC13.0.0.0.1', 'LongCount?Epoch=0D::NLC00(13).00.00.00.01', 2456284]].each do |sample|
27
+ date = When.when?(sample.shift)
28
+ assert_equal(sample, [date.to_s, date.to_i])
29
+ end
30
+
31
+ # offset 2B
32
+ [['LongCount?Epoch=2D::PHLC13.0.0.0.0', 'LongCount?Epoch=2D::PHLC13(00).00.00.00.00', 584285],
33
+ ['LongCount?Epoch=2D::HLC0.0.0.0.1', 'LongCount?Epoch=2D::HLC00.00.00.00.01', 584286],
34
+ ['LongCount?Epoch=2D::HLC13.0.0.0.0', 'LongCount?Epoch=2D::HLC13.00.00.00.00', 2456285],
35
+ ['LongCount?Epoch=2D::HLC13.0.0.0.1', 'LongCount?Epoch=2D::NLC00(13).00.00.00.01', 2456286]].each do |sample|
36
+ date = When.when?(sample.shift)
37
+ assert_equal(sample, [date.to_s, date.to_i])
38
+ end
39
+ end
40
+
41
+ def test__mayan_period
42
+ date = When.when?('HLC0.0.0.0.1')
43
+ period = When.Duration('P2X1X3Y4M5D')
44
+ assert_equal('HLC02.01.03.04.06', (date + period).to_s)
45
+ end
46
+
47
+ def test__haab
48
+ # No offset
49
+ haab = When.Resource("_co:Mayan::Haab'")
50
+ assert_equal("ハアブ", haab.label.translate('ja'))
51
+ assert_equal("http://en.wikipedia.org/wiki/Haab'", haab.label.reference)
52
+ pop = When.Resource("_co:Mayan::Haab'::Pop")
53
+ assert_equal("Pop", pop.label.translate('en'))
54
+ assert_equal("http://en.wikipedia.org/wiki/File:Maya-Pop.jpg", pop.label.reference)
55
+ date0 = When.when?('2011-05-16T12:34:56Z')
56
+ sample = [
57
+ "2012-04-12T12:34:56Z",
58
+ "2012-04-13T12:34:56Z",
59
+ "2012-04-14T12:34:56Z"
60
+ ]
61
+ [10,11,12].each do |i|
62
+ assert_equal(sample.shift, (date0 & pop[i]).to_s)
63
+ end
64
+ assert_equal(42, When.when?('2011-05-15') % haab)
65
+ h = haab % When.when?('2011-05-15')
66
+ assert_equal(["Sip", 2], [h.label.to_s, h.difference])
67
+
68
+ # offset 0B
69
+ haab = When.Resource("_co:Mayan?Epoch=0D::Haab'")
70
+ assert_equal("ハアブ", haab.label.translate('ja'))
71
+ assert_equal("http://en.wikipedia.org/wiki/Haab'", haab.label.reference)
72
+ pop = When.Resource("_co:Mayan?Epoch=0D::Haab'::Pop")
73
+ assert_equal("Pop", pop.label.translate('en'))
74
+ assert_equal("http://en.wikipedia.org/wiki/File:Maya-Pop.jpg", pop.label.reference)
75
+ date0 = When.when?('2011-05-16T12:34:56Z')
76
+ sample = [
77
+ "2012-04-12T12:34:56Z",
78
+ "2012-04-13T12:34:56Z",
79
+ "2012-04-14T12:34:56Z"
80
+ ]
81
+ [10,11,12].each do |i|
82
+ assert_equal(sample.shift, (date0 & pop[i]).to_s)
83
+ end
84
+ assert_equal(42, When.when?('2011-05-15') % haab)
85
+ h = haab % When.when?('2011-05-15')
86
+ assert_equal(["Sip", 2], [h.label.to_s, h.difference])
87
+
88
+ # offset 2B
89
+ haab = When.Resource("_co:Mayan?Epoch=2D::Haab'")
90
+ assert_equal("ハアブ", haab.label.translate('ja'))
91
+ assert_equal("http://en.wikipedia.org/wiki/Haab'", haab.label.reference)
92
+ pop = When.Resource("_co:Mayan?Epoch=2D::Haab'::Pop")
93
+ assert_equal("Pop", pop.label.translate('en'))
94
+ assert_equal("http://en.wikipedia.org/wiki/File:Maya-Pop.jpg", pop.label.reference)
95
+ date0 = When.when?('2011-05-16T12:34:56Z')
96
+ sample = [
97
+ "2012-04-14T12:34:56Z",
98
+ "2012-04-15T12:34:56Z",
99
+ "2012-04-16T12:34:56Z"
100
+ ]
101
+ [10,11,12].each do |i|
102
+ assert_equal(sample.shift, (date0 & pop[i]).to_s)
103
+ end
104
+ assert_equal(42, When.when?('2011-05-17') % haab)
105
+ h = haab % When.when?('2011-05-17')
106
+ assert_equal(["Sip", 2], [h.label.to_s, h.difference])
107
+ end
108
+
109
+ def test__tzolkin
110
+ # No offset
111
+ trecena = When.Resource("_co:Mayan::Trecena")
112
+ assert_equal("トレセナ", trecena.label.translate('ja'))
113
+ assert_equal("http://en.wikipedia.org/wiki/Trecena", trecena.label.reference)
114
+ assert_equal(2, When.when?('2011-05-15') % trecena)
115
+
116
+
117
+ tzolkin = When.Resource("_co:Mayan::Tzolk'in")
118
+ assert_equal("ツォルキン", tzolkin.label.translate('ja'))
119
+ assert_equal("http://en.wikipedia.org/wiki/Tzolk'in", tzolkin.label.reference)
120
+ ajaw = When.Resource("_co:Mayan::Tzolk'in::Ajaw")
121
+ assert_equal("Ajaw", ajaw.label.translate('en'))
122
+ assert_equal("http://en.wikipedia.org/wiki/File:MAYA-g-log-cal-D20-Ajaw-cdxW.png", ajaw.label.reference('alias'))
123
+ date0 = When.when?('2011-05-16T12:34:56Z')
124
+ sample = [
125
+ "2011-05-21T12:34:56Z",
126
+ "2011-05-21T12:34:56Z",
127
+ "2011-05-21T12:34:56Z"
128
+ ]
129
+ [10,11,12].each do |i|
130
+ assert_equal(sample.shift, (date0 & ajaw).to_s)
131
+ end
132
+ assert_equal(13, When.when?('2011-05-15') % tzolkin)
133
+ assert_equal('Ix', (tzolkin % When.when?('2011-05-15')).label.to_s)
134
+ if ::Object.const_defined?(:Date) && Date.respond_to?(:civil)
135
+ assert_equal('Ix', (tzolkin % Date.new(2011,5,15)).label.to_s)
136
+ end
137
+
138
+ # offset 0B
139
+ trecena = When.Resource("_co:Mayan?Epoch=0D::Trecena")
140
+ assert_equal("トレセナ", trecena.label.translate('ja'))
141
+ assert_equal("http://en.wikipedia.org/wiki/Trecena", trecena.label.reference)
142
+ assert_equal(2, When.when?('2011-05-15') % trecena)
143
+
144
+
145
+ tzolkin = When.Resource("_co:Mayan?Epoch=0D::Tzolk'in")
146
+ assert_equal("ツォルキン", tzolkin.label.translate('ja'))
147
+ assert_equal("http://en.wikipedia.org/wiki/Tzolk'in", tzolkin.label.reference)
148
+ ajaw = When.Resource("_co:Mayan?Epoch=0D::Tzolk'in::Ajaw")
149
+ assert_equal("Ajaw", ajaw.label.translate('en'))
150
+ assert_equal("http://en.wikipedia.org/wiki/File:MAYA-g-log-cal-D20-Ajaw-cdxW.png", ajaw.label.reference('alias'))
151
+ date0 = When.when?('2011-05-16T12:34:56Z')
152
+ sample = [
153
+ "2011-05-21T12:34:56Z",
154
+ "2011-05-21T12:34:56Z",
155
+ "2011-05-21T12:34:56Z"
156
+ ]
157
+ [10,11,12].each do |i|
158
+ assert_equal(sample.shift, (date0 & ajaw).to_s)
159
+ end
160
+ assert_equal(13, When.when?('2011-05-15') % tzolkin)
161
+ assert_equal('Ix', (tzolkin % When.when?('2011-05-15')).label.to_s)
162
+ if ::Object.const_defined?(:Date) && Date.respond_to?(:civil)
163
+ assert_equal('Ix', (tzolkin % Date.new(2011,5,15)).label.to_s)
164
+ end
165
+
166
+ # offset 2B
167
+ trecena = When.Resource("_co:Mayan?Epoch=2D::Trecena")
168
+ assert_equal("トレセナ", trecena.label.translate('ja'))
169
+ assert_equal("http://en.wikipedia.org/wiki/Trecena", trecena.label.reference)
170
+ assert_equal(2, When.when?('2011-05-17') % trecena)
171
+
172
+
173
+ tzolkin = When.Resource("_co:Mayan?Epoch=2D::Tzolk'in")
174
+ assert_equal("ツォルキン", tzolkin.label.translate('ja'))
175
+ assert_equal("http://en.wikipedia.org/wiki/Tzolk'in", tzolkin.label.reference)
176
+ ajaw = When.Resource("_co:Mayan?Epoch=2D::Tzolk'in::Ajaw")
177
+ assert_equal("Ajaw", ajaw.label.translate('en'))
178
+ assert_equal("http://en.wikipedia.org/wiki/File:MAYA-g-log-cal-D20-Ajaw-cdxW.png", ajaw.label.reference('alias'))
179
+ date0 = When.when?('2011-05-16T12:34:56Z')
180
+ sample = [
181
+ "2011-05-23T12:34:56Z",
182
+ "2011-05-23T12:34:56Z",
183
+ "2011-05-23T12:34:56Z"
184
+ ]
185
+ [10,11,12].each do |i|
186
+ assert_equal(sample.shift, (date0 & ajaw).to_s)
187
+ end
188
+ assert_equal(13, When.when?('2011-05-17') % tzolkin)
189
+ assert_equal('Ix', (tzolkin % When.when?('2011-05-17')).label.to_s)
190
+ if ::Object.const_defined?(:Date) && Date.respond_to?(:civil)
191
+ assert_equal('Ix', (tzolkin % Date.new(2011,5,17)).label.to_s)
192
+ end
193
+ end
194
+ end
195
+ end
@@ -1,139 +1,147 @@
1
- # -*- coding: utf-8 -*-
2
- =begin
3
- Copyright (C) 2011-2014 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:Common', '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
- # 'Dee',
96
- # 'DeeCecil',
97
- 'Coptic?Epoch=284Y',
98
- 'Coptic?Epoch=8Y',
99
- 'IndianNationalSolar',
100
- 'Nanakshahi',
101
- 'RevisedBengali',
102
- 'HinduSolar?type=SBV',
103
- 'HinduSolar?type=SBVZ',
104
- 'HinduSolar?type=SBS',
105
- 'HinduSolar?type=SBSZ',
106
- 'HinduSolar?type=SBB',
107
- 'HinduSolar?type=SBBZ',
108
- 'HinduSolar?type=SBH',
109
- 'HinduSolar?type=SBHZ',
110
- # 'HinduLuniSolar?type=SBVA',
111
- # 'HinduLuniSolar?type=SBVZA',
112
- # 'HinduLuniSolar?type=SBSA',
113
- # 'HinduLuniSolar?type=SBSZA',
114
- # 'HinduLuniSolar?type=SBB',
115
- # 'HinduLuniSolar?type=SBBZ',
116
- # 'HinduLuniSolar?type=SBH',
117
- # 'HinduLuniSolar?type=SBHZ',
118
- 'FrenchRepublican',
119
- 'Jalali',
120
- 'SolarHijri',
121
- 'SolarHijriAlgorithmic',
122
- 'Borji',
123
- 'Jewish',
124
- 'Thai',
125
- # 'ThaiC',
126
- 'Tibetan',
127
- ]
128
- eto = When.Resource('_co:Common::干支').to('year')
129
- today = When.when?('2012-06-13')
130
- assert_equal([[28, 246778, 246778]],
131
- cals.map { |cal|
132
- date = When.Calendar(cal) ^ today
133
- [date % eto, (eto & date).to_i/10, (date & eto).to_i/10]
134
- }.uniq
135
- )
136
- end
137
- end
138
- end
139
-
1
+ # -*- coding: utf-8 -*-
2
+ =begin
3
+ Copyright (C) 2011-2014 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 MiniTest
10
+
11
+ class Residue < MiniTest::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:Common', '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
+ 'Dee',
96
+ 'DeeCecil',
97
+ 'Coptic?Epoch=284Y',
98
+ 'Coptic?Epoch=8Y',
99
+ 'Coptic?Epoch=0Y',
100
+ 'Babylonian',
101
+ 'BabylonianPD',
102
+ 'Seleucid',
103
+ 'SeleucidPD',
104
+ ['Ptolemaic', +2],
105
+ 'IndianNationalSolar',
106
+ 'Nanakshahi',
107
+ 'RevisedBengali',
108
+ 'HinduSolar?type=SBV',
109
+ 'HinduSolar?type=SBVZ',
110
+ 'HinduSolar?type=SBS',
111
+ 'HinduSolar?type=SBSZ',
112
+ 'HinduSolar?type=SBB',
113
+ 'HinduSolar?type=SBBZ',
114
+ 'HinduSolar?type=SBH',
115
+ 'HinduSolar?type=SBHZ',
116
+ # 'HinduLuniSolar?type=SBVA',
117
+ # 'HinduLuniSolar?type=SBVZA',
118
+ # 'HinduLuniSolar?type=SBSA',
119
+ # 'HinduLuniSolar?type=SBSZA',
120
+ # 'HinduLuniSolar?type=SBB',
121
+ # 'HinduLuniSolar?type=SBBZ',
122
+ # 'HinduLuniSolar?type=SBH',
123
+ # 'HinduLuniSolar?type=SBHZ',
124
+ 'FrenchRepublican',
125
+ 'Jalali',
126
+ 'SolarHijri',
127
+ 'SolarHijriAlgorithmic',
128
+ 'Borji',
129
+ 'Jewish',
130
+ 'Thai',
131
+ # 'ThaiC',
132
+ 'Tibetan',
133
+ ]
134
+ eto = When.Resource('_co:Common::干支').to('year')
135
+ today = When.when?('2012-06-16')
136
+ assert_equal([[28, 246778, 246778]],
137
+ cals.map { |list|
138
+ cal, shift = list
139
+ shift ||= 0
140
+ date = When.Calendar(cal) ^ today
141
+ [date % eto - shift, ((eto & date).to_i/10).to_i + 37*shift, ((date & eto).to_i/10).to_i + 37*shift]
142
+ }.uniq
143
+ )
144
+ end
145
+ end
146
+ end
147
+