when_exe 0.3.7 → 0.3.8

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 (108) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +210 -171
  3. data/bin/irb.rc +1 -0
  4. data/lib/when_exe.rb +78 -53
  5. data/lib/when_exe/basictypes.rb +27 -8
  6. data/lib/when_exe/calendarnote.rb +848 -805
  7. data/lib/when_exe/calendartypes.rb +110 -240
  8. data/lib/when_exe/coordinates.rb +2440 -2175
  9. data/lib/when_exe/core/compatibility.rb +1 -1
  10. data/lib/when_exe/core/duration.rb +13 -11
  11. data/lib/when_exe/core/extension.rb +38 -45
  12. data/lib/when_exe/ephemeris.rb +43 -14
  13. data/lib/when_exe/ephemeris/eclipse.rb +149 -0
  14. data/lib/when_exe/ephemeris/notes.rb +39 -7
  15. data/lib/when_exe/icalendar.rb +2 -6
  16. data/lib/when_exe/inspect.rb +1408 -1399
  17. data/lib/when_exe/parts/enumerator.rb +486 -477
  18. data/lib/when_exe/parts/resource.rb +1101 -1069
  19. data/lib/when_exe/parts/timezone.rb +6 -5
  20. data/lib/when_exe/region/babylonian.rb +405 -405
  21. data/lib/when_exe/region/bahai.rb +21 -61
  22. data/lib/when_exe/region/chinese/epochs.rb +81 -81
  23. data/lib/when_exe/region/chinese/twins.rb +51 -51
  24. data/lib/when_exe/region/christian.rb +7 -2
  25. data/lib/when_exe/region/coptic.rb +1 -1
  26. data/lib/when_exe/region/discordian.rb +9 -16
  27. data/lib/when_exe/region/french.rb +1 -1
  28. data/lib/when_exe/region/hanke_henry.rb +57 -0
  29. data/lib/when_exe/region/indian.rb +41 -73
  30. data/lib/when_exe/region/international_fixed.rb +97 -0
  31. data/lib/when_exe/region/iranian.rb +203 -203
  32. data/lib/when_exe/region/japanese.rb +13 -13
  33. data/lib/when_exe/region/japanese/eclipses.rb +1194 -0
  34. data/lib/when_exe/region/japanese/notes.rb +1482 -1383
  35. data/lib/when_exe/region/japanese/residues.rb +726 -721
  36. data/lib/when_exe/region/japanese/twins.rb +37 -37
  37. data/lib/when_exe/region/jewish.rb +2 -2
  38. data/lib/when_exe/region/pax.rb +60 -0
  39. data/lib/when_exe/region/positivist.rb +100 -0
  40. data/lib/when_exe/region/roman.rb +333 -334
  41. data/lib/when_exe/region/shire.rb +3 -20
  42. data/lib/when_exe/region/thai.rb +2 -2
  43. data/lib/when_exe/region/tibetan.rb +3 -3
  44. data/lib/when_exe/region/tranquility.rb +208 -0
  45. data/lib/when_exe/region/vanishing_leprechaun.rb +53 -0
  46. data/lib/when_exe/region/vietnamese.rb +4 -4
  47. data/lib/when_exe/region/world.rb +9 -13
  48. data/lib/when_exe/region/world_season.rb +89 -0
  49. data/lib/when_exe/region/zoroastrian.rb +4 -2
  50. data/lib/when_exe/tmobjects.rb +14 -4
  51. data/lib/when_exe/tmposition.rb +239 -81
  52. data/lib/when_exe/tmreference.rb +57 -28
  53. data/lib/when_exe/version.rb +1 -1
  54. data/link_to_online_documents +6 -3
  55. data/test/examples/today.rb +1 -1
  56. data/test/scripts.rb +23 -0
  57. data/test/scripts/2.ext.rb +169 -0
  58. data/test/scripts/2.rb +169 -0
  59. data/test/scripts/3.ext.rb +133 -0
  60. data/test/scripts/3.rb +134 -0
  61. data/test/scripts/4.ext.rb +112 -0
  62. data/test/scripts/4.min.rb +65 -0
  63. data/test/scripts/4.rb +136 -0
  64. data/test/scripts/5.ext.rb +78 -0
  65. data/test/scripts/5.rb +81 -0
  66. data/test/scripts/6.gcal.rb +131 -0
  67. data/test/scripts/6.rb +205 -0
  68. data/test/scripts/6.tz.rb +105 -0
  69. data/test/scripts/7.phase.rb +109 -0
  70. data/test/scripts/7.rb +95 -0
  71. data/test/scripts/7.term.rb +128 -0
  72. data/test/scripts/7.week.rb +84 -0
  73. data/test/scripts/8.ext.rb +61 -0
  74. data/test/scripts/8.rb +62 -0
  75. data/test/scripts/9.ext.rb +131 -0
  76. data/test/scripts/9.rb +130 -0
  77. data/test/scripts/chinese-luni-solar.rb +52 -0
  78. data/test/{examples → scripts}/geometric_complex.rb +41 -41
  79. data/test/scripts/geometric_complex.txt +18 -0
  80. data/test/scripts/korea.rb +59 -0
  81. data/test/scripts/thai-reviewed.txt +211 -0
  82. data/test/scripts/thai.rb +36 -0
  83. data/test/scripts/thai.txt +210 -0
  84. data/test/test.rb +7 -0
  85. data/test/test/basictypes.rb +22 -0
  86. data/test/test/coordinates.rb +2 -1
  87. data/test/test/ephemeris.rb +34 -2
  88. data/test/test/icalendar.rb +12 -0
  89. data/test/test/inspect.rb +37 -1
  90. data/test/test/parts.rb +4 -3
  91. data/test/test/region/armenian.rb +20 -0
  92. data/test/test/region/bahai.rb +58 -0
  93. data/test/test/region/chinese.rb +14 -3
  94. data/test/test/region/christian.rb +16 -35
  95. data/test/test/region/discordian.rb +20 -0
  96. data/test/test/region/indian.rb +30 -2
  97. data/test/test/region/japanese.rb +24 -0
  98. data/test/test/region/jewish.rb +2 -0
  99. data/test/test/region/m17n.rb +9 -0
  100. data/test/test/region/reforms.rb +121 -0
  101. data/test/test/region/residue.rb +17 -11
  102. data/test/test/region/shire.rb +58 -0
  103. data/test/test/region/swedish.rb +45 -0
  104. data/test/test/region/zoroastrian.rb +58 -0
  105. data/test/test/tmobjects.rb +74 -0
  106. data/test/test/tmposition.rb +468 -397
  107. data/when_exe.gemspec +2 -2
  108. metadata +49 -6
data/test/test.rb CHANGED
@@ -51,6 +51,8 @@ require './test/googlecalendar'
51
51
  require './test/region/m17n'
52
52
  require './test/region/residue'
53
53
  require './test/region/christian'
54
+ require './test/region/swedish'
55
+ require './test/region/armenian'
54
56
  require './test/region/japanese'
55
57
  require './test/region/chinese'
56
58
  require './test/region/vietnamese'
@@ -63,5 +65,10 @@ require './test/region/mayan'
63
65
  require './test/region/jewish'
64
66
  require './test/region/french'
65
67
  require './test/region/coptic'
68
+ require './test/region/bahai'
69
+ require './test/region/discordian'
70
+ require './test/region/zoroastrian'
66
71
  require './test/region/yerm'
72
+ require './test/region/reforms'
73
+ require './test/region/shire'
67
74
  require './test/region/geologicalage'
@@ -326,6 +326,28 @@ module MiniTest
326
326
  end
327
327
  end
328
328
  end
329
+
330
+ def test__abbr_and_extra_year_digits
331
+
332
+ assert_equal('-00500', When.when?('-005').to_s)
333
+ assert_equal('2013-01-05', When.when?('-005', {:abbr=>2013}).to_s)
334
+ assert_equal('-000005', When.when?('-005', {:extra_year_digits=>2}).to_s)
335
+
336
+ assert_equal('1900', When.when?('19').to_s)
337
+ assert_equal('1900', When.when?('19', {:extra_year_digits=>0 }).to_s)
338
+ assert_equal('0019', When.when?('19', {:extra_year_digits=>-1}).to_s)
339
+
340
+ [['019', ["0019", -2, "0019-01-01" ]],
341
+ ['0019', ["0019", -2, "0019-01-01" ]],
342
+ ['+019', ["1900", -4, "1900-01-01" ]],
343
+ ['-119', ["-11900", -4, "-11900-01-01"]],
344
+ ['-0119', ["-00119", -2, "-00119-01-01"]],
345
+ ['+01985-04', ["1985-04", -1, "1985-04-01" ]],
346
+ ['+001985-04', ["1985-04", -1, "1985-04-01" ]]].each do |sample|
347
+ date = When.when?(sample[0])
348
+ assert_equal(sample[1], [date.to_s, date.precision, date.floor.to_s])
349
+ end
350
+ end
329
351
  end
330
352
 
331
353
  #
@@ -350,7 +350,8 @@ module MiniTest::Coordinates
350
350
  assert_equal( '40.0000N', location.lat_s)
351
351
  assert_equal('139.421322E',location.long_s)
352
352
  else
353
- puts "\nTests for JSON have been skipped at line #{__LINE__} of #{__FILE__.split(/\//)[-1]}.\n"
353
+ puts
354
+ puts "Tests for JSON have been skipped at line #{__LINE__} of #{__FILE__.split(/\//)[-1]}."
354
355
  end
355
356
  end
356
357
 
@@ -57,9 +57,21 @@ module MiniTest::Ephemeris
57
57
  class Formula < MiniTest::TestCase
58
58
  def test__sunrise
59
59
 
60
- today = '2014-3-4'
60
+ assert_raises(NoMethodError) { When.when?('2012-11-15').sunrise }
61
+
62
+ assert_equal(nil, When.when?('2013-06-21T+09:00', :long=>135, :lat=>70).sunrise)
63
+
64
+ if Object.const_defined?(:TZInfo)
65
+ assert_equal(0, /2012-11-15T06:16/ =~ When.when?('2012-11-15', :tz=>'Asia/Tokyo').sunrise.to_s)
66
+ assert_equal(0, /2012-11-15T06:16/ =~ When.when?('2012-11-15', :tz=>'Asia/Tokyo', :location=>'_l:long=139.7414&lat=35.6581').sunrise.to_s)
67
+ else
68
+ puts
69
+ puts "Tests for TZInfo have been skipped at line #{__LINE__} of #{__FILE__.split(/\//)[-1]}."
70
+ end
71
+ assert_equal(0, /2012-11-15T06:16/ =~ When.when?('2012-11-15T+09:00', :long=>139.7414, :lat=>35.6581).sunrise.to_s)
72
+ assert_equal(0, /2012-11-14T21:16/ =~ When.when?('2012-11-15', :long=>139.7414, :lat=>35.6581).sunrise.to_s)
61
73
 
62
- assert_raises(NoMethodError) { When.when?(today).sunrise }
74
+ today = '2014-3-4'
63
75
 
64
76
  location = When.Location('long=139.413012E&lat=35.412222N')
65
77
  assert_equal(0, /2014-03-03T21:07/ =~ When.when?(today, {:location=>location}).sunrise.to_s)
@@ -80,4 +92,24 @@ module MiniTest::Ephemeris
80
92
  assert_equal('2014-07-07T13:15+09:00', formula2.nearest_past(date, 0.5).floor(When::MINUTE).to_s)
81
93
  end
82
94
  end
95
+
96
+ if Object.const_defined?(:TZInfo)
97
+ class Note < MiniTest::TestCase
98
+ def test__tide
99
+
100
+ sample = [%w(2013-10-02T02:58+09:00 _n:Ephemeris/Notes::day::Tide::Low_Tide),
101
+ %w(2013-10-02T09:09+09:00 _n:Ephemeris/Notes::day::Tide::High_Tide),
102
+ %w(2013-10-02T15:20+09:00 _n:Ephemeris/Notes::day::Tide::Low_Tide),
103
+ %w(2013-10-02T21:32+09:00 _n:Ephemeris/Notes::day::Tide::High_Tide)]
104
+
105
+ note = When.CalendarNote('Ephemeris?interval=0.0')
106
+ date = When.when?('2013-10-02', :tz=>'Asia/Tokyo')
107
+ note.tide(date).each do |d|
108
+ assert_equal(sample.shift, [d.floor(When::MINUTE).to_s, d.events[0].iri(true)])
109
+ end
110
+ end
111
+ end
112
+ else
113
+ puts "Tests for TZInfo have been skipped at line #{__LINE__} of #{__FILE__.split(/\//)[-1]}."
114
+ end
83
115
  end
@@ -802,6 +802,18 @@ module MiniTest:V
802
802
  assert_equal([], sample)
803
803
  end
804
804
 
805
+ def test__each_5
806
+ event5 = When::V::Event.new({
807
+ 'rrule' => 'FREQ=MONTHLY;BYMONTHDAY=31',
808
+ 'dtstart' => 'VALUE=DATE:20070131'
809
+ })
810
+ sample =%w(2007-01-31 2007-03-31 2007-05-31 2007-07-31 2007-08-31
811
+ 2007-10-31 2007-12-31 2008-01-31 2008-03-31 2008-05-31)
812
+ event5.enum_for(When.when?('20070101'), :forward, 10).each do |date|
813
+ assert_equal(sample.shift, date.to_s)
814
+ end
815
+ end
816
+
805
817
  class Enumerator < MiniTest::TestCase
806
818
 
807
819
  def test_nothing
data/test/test/inspect.rb CHANGED
@@ -112,6 +112,42 @@ module MiniTest
112
112
  end
113
113
  end
114
114
  end
115
- end
115
+ end
116
+
117
+ def test__month_included
118
+ assert_equal([['December 2013',
119
+ ['*', '-', '-', '-', '-', '-', 1, 2],
120
+ ['*', 3, 4, 5, 6, 7, 8, 9],
121
+ ['*', 10, 11, 12, 13, 14, 15, 16],
122
+ ['*', 17, 18, 19, 20, 21, 22, 23],
123
+ ['*', 24, 25, 26, 27, 28, 29, 30, 31]]],
124
+
125
+ When.when?('2013-12-30').month_included('WorldWeek') {|date, type|
126
+ case type
127
+ when When::YEAR ; date.strftime('%Y')
128
+ when When::MONTH ; date.strftime('%B %Y')
129
+ when When::WEEK ; '*'
130
+ when When::DAY ; date[When::DAY]
131
+ else ; '-'
132
+ end
133
+ })
134
+ end
135
+
136
+ def test__round
137
+ date = When.when?("2010-09-29T14:45:12.33+09:00")
138
+ assert_equal(%w(2010-09-29T14:45:12.33+09:00 2010-09-29T14:45:12+09:00), [date.to_s, date.to_s(3, true)])
139
+
140
+ date = When.when?('2013-10-28T23:59:59.999', :clock=>'+09:00', :precision=>3)
141
+ assert_equal(%w(2013-10-28T23:59:59+09:00 2013-10-28T24:00:00+09:00), [date.to_s, date.to_s(3, true)])
142
+
143
+ date = When.when?('2013-10-28T23:59:59.999', :clock=>'+09:00')
144
+ assert_equal(%w(2013-10-28T23:59:59.99+09:00 2013-10-28T24:00:00+09:00), [date.to_s, date.to_s(3, true)])
145
+
146
+ date = When.when?('2013-10-28T23:59:29.999', :clock=>'+09:00')
147
+ assert_equal(%w(2013-10-28T23:59:29.99+09:00 2013-10-28T23:59+09:00), [date.to_s, date.to_s(2, true)])
148
+
149
+ date = When.when?('2013-10-28T23:59:30.001', :clock=>'+09:00')
150
+ assert_equal(%w(2013-10-28T23:59:30.00+09:00 2013-10-28T24:00+09:00), [date.to_s, date.to_s(2, true)])
151
+ end
116
152
  end
117
153
  end
data/test/test/parts.rb CHANGED
@@ -119,10 +119,11 @@ LOCALE
119
119
 
120
120
  def test__prefix
121
121
  date = When.when?('0594-09=12^Japanese')
122
- assert_equal(["閏長月", String], [date.name('Month').label.to_s, date.name('Month').label.class])
123
- assert_equal(["閏長月", String], [date.name('Month').to_s, date.name('Month').to_s.class])
122
+ assert_equal(["閏九月", String], [date.name('Month').label.to_s, date.name('Month').label.class])
123
+ assert_equal(["閏九月", String], [date.name('Month').to_s, date.name('Month').to_s.class])
124
124
  assert_equal("http://ja.wikipedia.org/wiki/%E9%96%8F", date.name('Month').reference('ja'))
125
- assert_equal("閏長月", date.name('Month').translate('日本語'))
125
+ assert_equal("閏九月", date.name('Month').translate('日本語'))
126
+ assert_equal("閏長月", date.name('Month').translate('alias'))
126
127
  assert_equal("Intercalary Month 9", date.name('Month').translate('en_US'))
127
128
  end
128
129
 
@@ -0,0 +1,20 @@
1
+ # -*- coding: utf-8 -*-
2
+ =begin
3
+ Copyright (C) 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 Armenian < MiniTest::TestCase
12
+ def test__armenian
13
+ date = When.when?('1-1-1^^Armenian')
14
+ assert_equal(["0001-01-01", "0552-07-11"], [date.to_s, (When::Julian ^ date).to_s])
15
+
16
+ date = When.when?('1462-1-1^^Armenian')
17
+ assert_equal(["1462-01-01", "2012-07-24"], [date.to_s, (When::Gregorian ^ date).to_s])
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,58 @@
1
+ # -*- coding: utf-8 -*-
2
+ =begin
3
+ Copyright (C) 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 Bahai < MiniTest::TestCase
12
+ def test_bahai
13
+ date = When.when? '1.9.1.1.1^^Bahai?location=(_co:Iranian::Tehran)'
14
+ [["01.09.01.01.01", "1996-03-20", 2450163],
15
+ ["01.09.02.01.01", "1997-03-20", 2450528],
16
+ ["01.09.03.01.01", "1998-03-21", 2450894],
17
+ ["01.09.04.01.01", "1999-03-21", 2451259],
18
+ ["01.09.05.01.01", "2000-03-20", 2451624],
19
+ ["01.09.06.01.01", "2001-03-20", 2451989],
20
+ ["01.09.07.01.01", "2002-03-21", 2452355],
21
+ ["01.09.08.01.01", "2003-03-21", 2452720],
22
+ ["01.09.09.01.01", "2004-03-20", 2453085],
23
+ ["01.09.10.01.01", "2005-03-20", 2453450],
24
+ ["01.09.11.01.01", "2006-03-21", 2453816],
25
+ ["01.09.12.01.01", "2007-03-21", 2454181],
26
+ ["01.09.13.01.01", "2008-03-20", 2454546],
27
+ ["01.09.14.01.01", "2009-03-20", 2454911],
28
+ ["01.09.15.01.01", "2010-03-21", 2455277],
29
+ ["01.09.16.01.01", "2011-03-21", 2455642],
30
+ ["01.09.17.01.01", "2012-03-20", 2456007],
31
+ ["01.09.18.01.01", "2013-03-20", 2456372],
32
+ ["01.09.19.01.01", "2014-03-21", 2456738],
33
+ ["01.10.01.01.01", "2015-03-21", 2457103],
34
+ ["01.10.02.01.01", "2016-03-20", 2457468],
35
+ ["01.10.03.01.01", "2017-03-20", 2457833],
36
+ ["01.10.04.01.01", "2018-03-21", 2458199],
37
+ ["01.10.05.01.01", "2019-03-21", 2458564],
38
+ ["01.10.06.01.01", "2020-03-20", 2458929],
39
+ ["01.10.07.01.01", "2021-03-20", 2459294],
40
+ ["01.10.08.01.01", "2022-03-21", 2459660],
41
+ ["01.10.09.01.01", "2023-03-21", 2460025],
42
+ ["01.10.10.01.01", "2024-03-20", 2460390],
43
+ ["01.10.11.01.01", "2025-03-20", 2460755],
44
+ ["01.10.12.01.01", "2026-03-20", 2461120],
45
+ ["01.10.13.01.01", "2027-03-21", 2461486],
46
+ ["01.10.14.01.01", "2028-03-20", 2461851]].each do |sample|
47
+ assert_equal(sample, [date.to_s, (When::Gregorian ^ date).to_s, date.to_i])
48
+ date += When::P1Y
49
+ end
50
+
51
+ date = When.when? '2001.3.21'
52
+ 400.times do
53
+ assert_equal([1,1], (When.Calendar('Bahai') ^ date).cal_date[-2..-1])
54
+ date += When::P1Y
55
+ end
56
+ end
57
+ end
58
+ end
@@ -9,6 +9,17 @@
9
9
  module MiniTest
10
10
 
11
11
  class Chinese < MiniTest::TestCase
12
+ def test_chinese_table
13
+ assert_equal({1677=>{"iJ"=>"Ij"},
14
+ 1698=>{"jK"=>"Jk"},
15
+ 1709=>{"aB"=>"Ab", "jK"=>"Jk"},
16
+ 1727=>{"cC"=>"Cc"},
17
+ 1730=>{"Cd"=>"cD"},
18
+ 1751=>{"Jk"=>"jK"},
19
+ 1778=>{"Cd"=>"cD"},
20
+ 1841=>{"kL"=>"Kl"}}, When.Calendar('Korean').verify(When.Calendar('Chinese1645'), 1654..1911))
21
+ end
22
+
12
23
  def test_chinese_date
13
24
 
14
25
  emd = When.Resource('_c:EphemerisBasedSolar?time_basis=+09:00')
@@ -110,7 +121,7 @@ module MiniTest
110
121
  def test_chinese_epoch
111
122
  date = When.when?('天保2.10.01')
112
123
  assert_equal([2390126, "天保02(1831).10.01", "神無月"],
113
- [date.to_i, date.to_s, date.name('Month')])
124
+ [date.to_i, date.to_s, date.name('Month')/'alias'])
114
125
  assert_equal("1831-11-04", (When.Calendar('Gregorian') ^ When.when?('天保02.10.01')).to_s)
115
126
 
116
127
  #=begin
@@ -132,8 +143,8 @@ module MiniTest
132
143
  assert_raises(ArgumentError) { When.when?('天保3(0563).10.01') }
133
144
 
134
145
  date = When.when?('始皇帝26*10.01')
135
- assert_equal([1640641, "始皇帝26(-220)*10.01", "十月"],
136
- [date.to_i, date.to_s, date.name('Month')])
146
+ assert_equal([1640641, 1640641, "始皇帝26(-220)*10.01", "十月"],
147
+ [date.to_i, date.floor(When::YEAR).to_i, date.to_s, date.name('Month')])
137
148
 
138
149
  cc_221 = When.Resource('_c:Chinese_221')
139
150
  [
@@ -94,41 +94,6 @@ module MiniTest
94
94
  end
95
95
  end
96
96
 
97
- class Swedish < MiniTest::TestCase
98
- def test__swedish_date
99
-
100
- dates = []
101
- jdns = []
102
- [2342042, 2346424].each do |base|
103
- (-3..+3).each do |diff|
104
- jdn = base + diff
105
- jdate = When::Julian ^ jdn
106
- s1date = When::Swedish ^ jdn
107
- s2date = When.tm_pos(*(s1date.cal_date + [{:frame=>When::Swedish}]))
108
- dates << s1date.to_s
109
- jdns << [s1date.to_s == s2date.to_s, s1date.to_i == jdn, s2date.to_i == jdn].uniq
110
- end
111
- end
112
-
113
- assert_equal(%w(1700-02-26 1700-02-27 1700-02-28 1700-03-01 1700-03-02 1700-03-03 1700-03-04
114
- 1712-02-26 1712-02-27 1712-02-28 1712-02-29 1712-02-30 1712-03-01 1712-03-02), dates)
115
- assert_equal([[true]], jdns.uniq)
116
- end
117
-
118
- def test__swedish_easter
119
-
120
- dates = []
121
- civil = When.Calendar('Civil?old=Swedish&reform_date=1753-03-01')
122
- ((1700..1711).to_a + (1740..1752).to_a+[1802,1805,1818]).each do |year|
123
- dates << When.tm_pos(year, {:frame=>civil}).easter.to_s
124
- end
125
- assert_equal(%w(1700-04-01 1701-04-21 1702-04-06 1703-03-29 1704-04-17 1705-04-02 1706-03-25
126
- 1707-04-14 1708-04-05 1709-04-18 1710-04-10 1711-03-26 1740-04-06 1741-03-22
127
- 1742-03-14 1743-04-03 1744-03-18 1745-04-07 1746-03-30 1747-03-22 1748-04-03
128
- 1749-03-26 1750-03-18 1751-03-31 1752-03-22 1802-04-25 1805-04-21 1818-03-29), dates)
129
- end
130
- end
131
-
132
97
  class Civil < MiniTest::TestCase
133
98
  def test__border
134
99
  frame = When.Calendar('Civil?reform=1752-9-14&border=0-3-25(1753)0-1-1')
@@ -166,6 +131,22 @@ module MiniTest
166
131
  end
167
132
  end
168
133
 
134
+ def test_civil_epoch
135
+ epoch = 1001
136
+ diff = 1 - epoch
137
+ civil = When.Calendar("Civil?origin_of_MSC=#{diff}&old=(Julian?origin_of_MSC=#{diff})")
138
+ assert_equal('0582-10-04', (civil ^ When.when?('1582-10-14')).to_s)
139
+ assert_equal('0582-10-15', (civil ^ When.when?('1582-10-15')).to_s)
140
+ date = When.when?("1000-1-1", :frame=>civil)
141
+ assert_equal('1014-01-01', (date & When.Residue('甲午').to('year')).to_s)
142
+ assert_equal(%w(1000-01-01 2000-01-01), [date.to_s, (When::Gregorian^date).to_s])
143
+ 399.times do
144
+ date += When::P1Y
145
+ cal_date = date.cal_date
146
+ assert_equal((When::Gregorian^date).cal_date, [cal_date[0]-diff] + cal_date[1..2])
147
+ end
148
+ end
149
+
169
150
  def test__reform_year
170
151
  date = When.when?('1752^^Civil?reform=1752-9-14&border=(1000)0-3-25(1753)0-1-1')
171
152
  assert_equal(
@@ -0,0 +1,20 @@
1
+ # -*- coding: utf-8 -*-
2
+ =begin
3
+ Copyright (C) 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 Discordian < MiniTest::TestCase
12
+ def test_discordian
13
+ date = When.when? '2001.1.1'
14
+ 400.times do |i|
15
+ assert_equal([2001+i+1166,1,1], (When::Discordian ^ date).cal_date)
16
+ date += When::P1Y
17
+ end
18
+ end
19
+ end
20
+ end
@@ -50,8 +50,36 @@ module MiniTest
50
50
  cc = When.Calendar('HinduSolar?type=SBS')
51
51
  date = When.when?('1913-01-01', {:frame=>cc})
52
52
  assert_equal([2448361, "1913-01-01", "1991-04-14"], [date.to_i, date.to_s, date.to_date.to_s])
53
- date = When::CalendarNote::HinduNote::Dates.new(date)
54
- assert_equal(2448361, date.to_i)
53
+ dates = When::CalendarNote::HinduNote::Dates.new(date)
54
+ assert_equal(2448361, dates.to_i)
55
+ assert_equal('Prajāpati', When.CalendarNote('HinduNote').samvatsara(dates)/'en')
56
+ end
57
+
58
+ def test_indian_date_4
59
+ date = When.when? '2001.2.28'
60
+ assert_equal('1922-12-09', (When::IndianNationalSolar ^ date).to_s)
61
+ 399.times do
62
+ date += When::P1Y
63
+ assert_equal([12,9], (When::IndianNationalSolar ^ date).cal_date[-2..-1])
64
+ end
65
+ end
66
+
67
+ def test_indian_date_5
68
+ date = When.when? '2014.3.14'
69
+ assert_equal('0546-01-01', (When::Nanakshahi ^ date).to_s)
70
+ 399.times do
71
+ date += When::P1Y
72
+ assert_equal([1,1], (When::Nanakshahi ^ date).cal_date[-2..-1])
73
+ end
74
+ end
75
+
76
+ def test_indian_date_6
77
+ date = When.when? '2014.4.14'
78
+ assert_equal('1421-01-01', (When::RevisedBengali ^ date).to_s)
79
+ 399.times do
80
+ date += When::P1Y
81
+ assert_equal([1,1], (When::RevisedBengali ^ date).cal_date[-2..-1])
82
+ end
55
83
  end
56
84
  end
57
85
  end
@@ -167,6 +167,10 @@ module MiniTest
167
167
  When::CalendarNote::Japanese::SolarTerms.send(:patch=, {})
168
168
  end
169
169
  When::CalendarNote::Japanese::SolarTerms.send(:patch=, nil)
170
+
171
+ assert_equal('白露(135.375/560)',
172
+ When.when?('康和1.8.14').notes(:notes=>'廿四節気', :shoyo=>true)[:value].simplify.to_s)
173
+
170
174
  end
171
175
 
172
176
  def test__lunar_phases
@@ -201,6 +205,21 @@ module MiniTest
201
205
  end
202
206
  end
203
207
 
208
+ def test__eclipse
209
+ date = When.when?('貞観4.2.1')
210
+ assert_equal('夜日蝕七分', date.notes({:notes=>'日食'}).value)
211
+ assert_equal(nil, date.notes({:notes=>'日食', :solar_eclipse=>1}).value)
212
+
213
+ date = When.when?('貞観4.2.15')
214
+ assert_equal('(月蝕ニ分)', date.notes({:notes=>'月食'}).value)
215
+ assert_equal(nil, date.notes({:notes=>'月食', :lunar_eclipse=>3}).value)
216
+ end
217
+
218
+ def test_japanese_lunisolar
219
+ assert_equal({1850=>{"hI"=>"Hi"}, 1866=>{"cD"=>"Cd"}, 1884=>{"cD"=>"Cd"}, 1947=>{"b"=>"c"}},
220
+ When.Calendar('Japanese').verify(When.Calendar('JapaneseTwin::旧暦'), 1844..2033))
221
+ end
222
+
204
223
  def test_japanese_era
205
224
  assert_raises(RangeError) {When.TemporalPosition("正慶", 2, 11)}
206
225
  assert_equal("延元02(1337).01.08", When.when?("建武4.1.8").to_s)
@@ -216,6 +235,11 @@ module MiniTest
216
235
  弘長 文永 建治 弘安 正応 永仁 正安 乾元 嘉元 徳治
217
236
  延慶 応長 正和 文保 元応 元亨 正中 嘉暦 元徳 元弘),
218
237
  When.era('鎌倉時代')[0].map { |era| era.label.to_s})
238
+
239
+ date = When.when?('768-10-20^^Gregorian')
240
+ assert_equal('神護景雲02(0768).09.02', (date ^ When.CalendarEra('Japanese'))[0].to_s)
241
+ assert_equal('日本?V=0764::奈良時代::神護景雲02(0768).09.01', (date ^ When.CalendarEra('Japanese?V=0764'))[0].to_s)
242
+ assert_equal('日本::奈良時代::神護景雲02(0768).09.02', (date ^ When.CalendarEra('Japanese'))[0].to_s)
219
243
  end
220
244
  =begin
221
245
  def test_japanese_date