when_exe 0.3.7 → 0.3.8

Sign up to get free protection for your applications and to get access to all the features.
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