when_exe 0.4.2 → 0.5.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (144) hide show
  1. checksums.yaml +5 -5
  2. data/LICENSE.ja.txt +8 -21
  3. data/LICENSE.txt +5 -27
  4. data/README.md +25 -79
  5. data/bin/.pryrc +9 -0
  6. data/bin/make_ttl.rb +3 -2
  7. data/bin/make_ttl.rb.config +3 -3
  8. data/lib/when_exe.rb +101 -5
  9. data/lib/when_exe/basictypes.rb +47 -16
  10. data/lib/when_exe/calendarnote.rb +27 -18
  11. data/lib/when_exe/calendartypes.rb +12 -50
  12. data/lib/when_exe/coordinates.rb +37 -391
  13. data/lib/when_exe/ephemeris.rb +53 -14
  14. data/lib/when_exe/ephemeris/eclipse.rb +8 -8
  15. data/lib/when_exe/ephemeris/moon.rb +333 -333
  16. data/lib/when_exe/ephemeris/notes.rb +29 -17
  17. data/lib/when_exe/ephemeris/phase_table.rb +825 -0
  18. data/lib/when_exe/ephemeris/term_table.rb +603 -0
  19. data/lib/when_exe/events.rb +1888 -0
  20. data/lib/when_exe/google_api.rb +26 -31
  21. data/lib/when_exe/icalendar.rb +129 -12
  22. data/lib/when_exe/inspect.rb +5 -5
  23. data/lib/when_exe/linkeddata.rb +43 -23
  24. data/lib/when_exe/locales/akt.rb +63 -0
  25. data/lib/when_exe/locales/encoding_conversion.rb +134 -134
  26. data/lib/when_exe/locales/iast.rb +90 -90
  27. data/lib/when_exe/locales/locale.rb +88 -18
  28. data/lib/when_exe/locales/transliteration_table.rb +62 -62
  29. data/lib/when_exe/mini_application.rb +14 -8
  30. data/lib/when_exe/namespace.rb +42 -0
  31. data/lib/when_exe/parts/enumerator.rb +16 -5
  32. data/lib/when_exe/parts/geometric_complex.rb +52 -2
  33. data/lib/when_exe/parts/method_cash.rb +229 -224
  34. data/lib/when_exe/parts/resource.rb +65 -35
  35. data/lib/when_exe/parts/timezone.rb +25 -34
  36. data/lib/when_exe/region/balinese.rb +5 -3
  37. data/lib/when_exe/region/chinese.rb +39 -11
  38. data/lib/when_exe/region/chinese/calendars.rb +1016 -1016
  39. data/lib/when_exe/region/chinese/epochs.rb +7 -7
  40. data/lib/when_exe/region/chinese/notes.rb +3 -3
  41. data/lib/when_exe/region/chinese/twins.rb +134 -11
  42. data/lib/when_exe/region/dee.rb +4 -4
  43. data/lib/when_exe/region/discordian.rb +1 -1
  44. data/lib/when_exe/region/geologicalage.rb +139 -128
  45. data/lib/when_exe/region/hanke_henry.rb +4 -4
  46. data/lib/when_exe/region/indian.rb +77 -8
  47. data/lib/when_exe/region/international_fixed.rb +3 -3
  48. data/lib/when_exe/region/islamic.rb +1 -1
  49. data/lib/when_exe/region/japanese.rb +12 -8
  50. data/lib/when_exe/region/japanese/calendars.rb +397 -397
  51. data/lib/when_exe/region/japanese/eclipses.rb +1194 -1194
  52. data/lib/when_exe/region/japanese/epochs.rb +8 -4
  53. data/lib/when_exe/region/japanese/location.rb +93 -0
  54. data/lib/when_exe/region/japanese/nihon_shoki.rb +70 -70
  55. data/lib/when_exe/region/japanese/notes.rb +57 -18
  56. data/lib/when_exe/region/japanese/residues.rb +33 -11
  57. data/lib/when_exe/region/japanese/twins.rb +27 -14
  58. data/lib/when_exe/region/japanese/weeks.rb +7 -7
  59. data/lib/when_exe/region/korean.rb +384 -384
  60. data/lib/when_exe/region/location.rb +40 -0
  61. data/lib/when_exe/region/martian.rb +1 -1
  62. data/lib/when_exe/region/mayan.rb +2 -2
  63. data/lib/when_exe/region/roman.rb +2 -2
  64. data/lib/when_exe/region/ryukyu.rb +101 -101
  65. data/lib/when_exe/region/saudi_arabian.rb +57 -0
  66. data/lib/when_exe/region/shire.rb +1 -1
  67. data/lib/when_exe/region/world.rb +3 -3
  68. data/lib/when_exe/region/zoroastrian.rb +1 -1
  69. data/lib/when_exe/spatial.rb +611 -0
  70. data/lib/when_exe/timestandard.rb +9 -7
  71. data/lib/when_exe/tmobjects.rb +34 -2
  72. data/lib/when_exe/tmposition.rb +225 -1322
  73. data/lib/when_exe/tmptypes.rb +1279 -0
  74. data/lib/when_exe/tmreference.rb +42 -7
  75. data/lib/when_exe/version.rb +3 -3
  76. data/test/events/example-datasets +6 -0
  77. data/test/events/history-dataset.csv +22 -0
  78. data/test/events/japanese-holiday-index.csv +28 -0
  79. data/test/events/japanese-holiday.csv +94 -0
  80. data/test/events/japanese-holiday.ttl +948 -0
  81. data/test/events/make_events_ttl.rb +18 -0
  82. data/test/events/mori_wikichoshi.csv +14 -0
  83. data/test/events/ndl_koyomi.csv +220 -0
  84. data/test/events/ndl_koyomi_index.csv +44 -0
  85. data/test/events/primeminister-dataset.csv +19 -0
  86. data/test/events/shogun-dataset.csv +22 -0
  87. data/test/events/test-history-dataset-edge-sparql.csv +26 -0
  88. data/test/events/test-history-dataset-edge.csv +27 -0
  89. data/test/events/test-history-dataset-sparql.csv +22 -0
  90. data/test/events/test-history-dataset.csv +23 -0
  91. data/test/events/test-history-events-edge.ttl +89 -0
  92. data/test/events/test-history-events.csv +6 -0
  93. data/test/examples/JapanHolidays.ics +2 -2
  94. data/test/examples/JapanHolidaysRFC6350.ics +3 -3
  95. data/test/examples/Residue.m17n +2 -2
  96. data/test/examples/Spatial.m17n +3 -3
  97. data/test/examples/Terms.m17n +3 -3
  98. data/test/scripts/8.ext.rb +6 -6
  99. data/test/scripts/8.rb +6 -6
  100. data/test/scripts/geometric_complex.rb +41 -41
  101. data/test/scripts/korea.rb +59 -59
  102. data/test/scripts/thai.rb +36 -36
  103. data/test/test.rb +6 -0
  104. data/test/test/basictypes.rb +431 -431
  105. data/test/test/calendarnote.rb +86 -86
  106. data/test/test/calendartypes.rb +97 -97
  107. data/test/test/coordinates.rb +399 -397
  108. data/test/test/ephemeris.rb +115 -115
  109. data/test/test/ephemeris/moon.rb +14 -14
  110. data/test/test/ephemeris/planets.rb +14 -14
  111. data/test/test/ephemeris/sun.rb +14 -14
  112. data/test/test/events.rb +32 -0
  113. data/test/test/google_api.rb +45 -32
  114. data/test/test/inspect.rb +153 -153
  115. data/test/test/parts.rb +488 -488
  116. data/test/test/region/armenian.rb +20 -20
  117. data/test/test/region/bahai.rb +58 -58
  118. data/test/test/region/balinese.rb +34 -34
  119. data/test/test/region/chinese.rb +229 -229
  120. data/test/test/region/christian.rb +226 -226
  121. data/test/test/region/coptic.rb +27 -27
  122. data/test/test/region/discordian.rb +20 -20
  123. data/test/test/region/french.rb +33 -33
  124. data/test/test/region/geologicalage.rb +17 -17
  125. data/test/test/region/indian.rb +14 -1
  126. data/test/test/region/iran.rb +54 -54
  127. data/test/test/region/islamic.rb +64 -54
  128. data/test/test/region/japanese.rb +281 -261
  129. data/test/test/region/jewish.rb +63 -63
  130. data/test/test/region/m17n.rb +21 -21
  131. data/test/test/region/mayan.rb +17 -16
  132. data/test/test/region/reforms.rb +2 -2
  133. data/test/test/region/residue.rb +7 -7
  134. data/test/test/region/shire.rb +58 -58
  135. data/test/test/region/swedish.rb +45 -45
  136. data/test/test/region/thai.rb +116 -116
  137. data/test/test/region/tibetan.rb +30 -30
  138. data/test/test/region/vietnamese.rb +102 -102
  139. data/test/test/region/zoroastrian.rb +58 -58
  140. data/test/test/timestandard.rb +81 -81
  141. data/test/test/tmobjects.rb +402 -402
  142. data/test/test/tmposition.rb +66 -4
  143. data/test/test/tmreference.rb +157 -157
  144. metadata +36 -93
data/test/test/inspect.rb CHANGED
@@ -1,153 +1,153 @@
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 Inspect < MiniTest::TestCase
12
-
13
- def test__strftime_1
14
- ns = 'ISO, jwiki=http://ja.wikipedia.org/wiki/, ewiki=http://en.wikipedia.org/wiki/'
15
- locale = '=jwiki:, en=ewiki:'
16
- term1 = When::BasicTypes::M17n.new('[月曜, Monday]', ns, locale)
17
- term2 = When::BasicTypes::M17n.new('[です, It is]', ns, locale)
18
- form = When::BasicTypes::M17n.new('[%s%s%2d:, %2$s %1$s%3$2d-]', ns, locale)
19
- assert_equal(["月曜です 1%", "It is Monday 1%"],
20
- ['ja_JP', 'en_US'].map {|c| (form % [term1, term2, When::Coordinates::Pair.new(1,-2)]).translate(c)})
21
-
22
- pair11 = When::Coordinates::Pair.new(1,1)
23
- assert_equal("2:", "%d:" % pair11)
24
- assert_equal("2=", "%d=" % pair11)
25
- assert_equal("1=", When.m17n("%d:") % pair11)
26
-
27
- date = When.when?('2011-02-28T12:34:56+09:00')
28
- assert_equal(["February", {""=>"February", "ja"=>"2月"}], [date.name(-1).to_s, date.name(-1).names])
29
- assert_equal("Mon Feb 28 12:34:56 +0900 2011", date.strftime('%+'))
30
-
31
- date = When.when?('2011-05-17T12:34:56', {:clock=>'+09:00'})
32
- # assert_equal("5月", date.strftime('%.2b').translate('ja'))
33
- assert_equal("05", date.strftime('%m'))
34
- assert_equal("Tue May 17 12:34:56 +0900 2011", date.strftime('%+'))
35
- # assert_equal("火 5月 17 12:34:56 +0900 2011", date.strftime('%+').translate('ja'))
36
-
37
- clock = When.Clock('+09:00')
38
- #pp clock.to_s
39
- assert_equal("+09:00", clock.label.to_s)
40
- assert_equal(nil, clock.referenceEvent)
41
- assert_equal("T00+09:00", clock.referenceTime.to_s)
42
- assert_equal("T*15:00:00Z", clock.utcReference.to_s)
43
- end
44
-
45
- def test__strftime_2
46
- [['%c', 'ja', '2012/04/03 10:14:00'], ['%c', 'fr', '03 avril 2012 10:14:00'],
47
- ['%x', 'ja', '2012/04/03' ], ['%x', 'fr', '03/04/2012' ],
48
- ['%X', 'ja', '10:14:00' ], ['%X', 'fr', '10:14:00' ]
49
- ].each do |sample|
50
- assert_equal(sample[2], When.when?('2012-4-3T10:14:00').
51
- strftime(sample[0], sample[1]))
52
- end
53
- end
54
-
55
- def test__strftime_3
56
- [['DateTime', 'ja', '2012/04/03 10:14:00' ], ['DateTime', 'fr', '03 avril 2012 10:14:00' ],
57
- ['DateTimeLong', 'ja', '2012年04月03日(火) 10時14分00秒 +0000'], ['DateTimeLong', 'fr', 'mardi 03 avril 2012 10:14'],
58
- ['DateTimeShort', 'ja', '12/04/03 10:14' ], ['DateTimeShort', 'fr', '03 avr 10:14' ],
59
- ['Date', 'ja', '2012/04/03' ], ['Date', 'fr', '03/04/2012' ],
60
- ['DateLong', 'ja', '2012年04月03日(火)' ], ['DateLong', 'fr', ' 3 avril 2012' ],
61
- ['DateShort', 'ja', '04/03' ], ['DateShort', 'fr', ' 3 avr' ],
62
- ['Time', 'ja', '10:14:00' ], ['Time', 'fr', '10:14:00' ]
63
- ].each do |sample|
64
- assert_equal(sample[2], When.when?('2012-4-3T10:14:00').
65
- strftime(When.Resource('_m:CalendarFormats::'+sample[0]), sample[1]))
66
- end
67
- end
68
-
69
- def test__name
70
- month = When.when?('AP1393.1.1T12:34:56').name('month')
71
- assert_equal("فروردین", month.translate('ar'))
72
- end
73
-
74
- def test__coordinates
75
- date = When.when?('2012.3=16T12:34:56', {:frame=>When::CalendarTypes::ChineseLuniSolar.new({'time_basis'=>'+09:00'})})
76
- assert_equal(2012, date.year )
77
- assert_equal(When::Coordinates::Pair.new(3,1), date.month)
78
- assert_equal( 16, date.day )
79
- assert_equal( 12, date.hour )
80
- assert_equal( 34, date.minute)
81
- assert_equal( 56, date.second)
82
- assert_equal( 4, date.ymon )
83
- assert_equal( 105, date.yday )
84
- assert_equal( 16, date.mday )
85
- assert_equal( 0, date.wday )
86
- end
87
-
88
- def mweek(dow, day)
89
- dow = (dow + 1) % 7
90
- w,d = (day - 1).divmod(7)
91
- (d < dow) ? w : w+1
92
- end
93
-
94
- def test__term
95
- # [13,14,15].each do |d|
96
- # 7.times do |i|
97
- # p [d, i, mweek(i, d)]
98
- # end
99
- # end
100
- # raise
101
- format = ['%U %w %W %j', '%G-W%V-%u']
102
- 7.times do |i|
103
- 2.times do |k|
104
- [ '1-1' , '1-2' , '1-3' , '1-4' , '1-5' , '1-6' , '1-7' , '1-8' ,
105
- '12-24','12-25','12-26','12-27','12-28','12-29','12-30','12-31',].each do |m|
106
- date1 = When.when?("#{2000+4*i+k}-#{m}")
107
- expr0 = format.map {|f| date1.to_date.strftime(f)}
108
- date2 = When.when?(expr0[1])
109
- expr1 = format.map {|f| date1.strftime(f)}
110
- expr2 = format.map {|f| date2.strftime(f)}
111
- assert_equal([expr0,expr0,mweek(date1.to_i % 7, date1.day)], [expr1,expr2,date1.mweek])
112
- end
113
- end
114
- 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
152
- end
153
- end
1
+ # -*- coding: utf-8 -*-
2
+ =begin
3
+ Copyright (C) 2011-2020 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 Inspect < MiniTest::TestCase
12
+
13
+ def test__strftime_1
14
+ ns = 'ISO, jwiki=https://ja.wikipedia.org/wiki/, ewiki=https://en.wikipedia.org/wiki/'
15
+ locale = '=jwiki:, en=ewiki:'
16
+ term1 = When::BasicTypes::M17n.new('[月曜, Monday]', ns, locale)
17
+ term2 = When::BasicTypes::M17n.new('[です, It is]', ns, locale)
18
+ form = When::BasicTypes::M17n.new('[%s%s%2d:, %2$s %1$s%3$2d-]', ns, locale)
19
+ assert_equal(["月曜です 1%", "It is Monday 1%"],
20
+ ['ja_JP', 'en_US'].map {|c| (form % [term1, term2, When::Coordinates::Pair.new(1,-2)]).translate(c)})
21
+
22
+ pair11 = When::Coordinates::Pair.new(1,1)
23
+ assert_equal("2:", "%d:" % pair11)
24
+ assert_equal("2=", "%d=" % pair11)
25
+ assert_equal("1=", When.m17n("%d:") % pair11)
26
+
27
+ date = When.when?('2011-02-28T12:34:56+09:00')
28
+ assert_equal(["February", {""=>"February", "ja"=>"2月"}], [date.name(-1).to_s, date.name(-1).names])
29
+ assert_equal("Mon Feb 28 12:34:56 +0900 2011", date.strftime('%+'))
30
+
31
+ date = When.when?('2011-05-17T12:34:56', {:clock=>'+09:00'})
32
+ # assert_equal("5月", date.strftime('%.2b').translate('ja'))
33
+ assert_equal("05", date.strftime('%m'))
34
+ assert_equal("Tue May 17 12:34:56 +0900 2011", date.strftime('%+'))
35
+ # assert_equal("火 5月 17 12:34:56 +0900 2011", date.strftime('%+').translate('ja'))
36
+
37
+ clock = When.Clock('+09:00')
38
+ #pp clock.to_s
39
+ assert_equal("+09:00", clock.label.to_s)
40
+ assert_nil(clock.referenceEvent)
41
+ assert_equal("T00+09:00", clock.referenceTime.to_s)
42
+ assert_equal("T*15:00:00Z", clock.utcReference.to_s)
43
+ end
44
+
45
+ def test__strftime_2
46
+ [['%c', 'ja', '2012/04/03 10:14:00'], ['%c', 'fr', '03 avril 2012 10:14:00'],
47
+ ['%x', 'ja', '2012/04/03' ], ['%x', 'fr', '03/04/2012' ],
48
+ ['%X', 'ja', '10:14:00' ], ['%X', 'fr', '10:14:00' ]
49
+ ].each do |sample|
50
+ assert_equal(sample[2], When.when?('2012-4-3T10:14:00').
51
+ strftime(sample[0], sample[1]))
52
+ end
53
+ end
54
+
55
+ def test__strftime_3
56
+ [['DateTime', 'ja', '2012/04/03 10:14:00' ], ['DateTime', 'fr', '03 avril 2012 10:14:00' ],
57
+ ['DateTimeLong', 'ja', '2012年04月03日(火) 10時14分00秒 +0000'], ['DateTimeLong', 'fr', 'mardi 03 avril 2012 10:14'],
58
+ ['DateTimeShort', 'ja', '12/04/03 10:14' ], ['DateTimeShort', 'fr', '03 avr 10:14' ],
59
+ ['Date', 'ja', '2012/04/03' ], ['Date', 'fr', '03/04/2012' ],
60
+ ['DateLong', 'ja', '2012年04月03日(火)' ], ['DateLong', 'fr', ' 3 avril 2012' ],
61
+ ['DateShort', 'ja', '04/03' ], ['DateShort', 'fr', ' 3 avr' ],
62
+ ['Time', 'ja', '10:14:00' ], ['Time', 'fr', '10:14:00' ]
63
+ ].each do |sample|
64
+ assert_equal(sample[2], When.when?('2012-4-3T10:14:00').
65
+ strftime(When.Resource('_m:CalendarFormats::'+sample[0]), sample[1]))
66
+ end
67
+ end
68
+
69
+ def test__name
70
+ month = When.when?('AP1393.1.1T12:34:56').name('month')
71
+ assert_equal("فروردین", month.translate('ar'))
72
+ end
73
+
74
+ def test__coordinates
75
+ date = When.when?('2012.3=16T12:34:56', {:frame=>When::CalendarTypes::ChineseLuniSolar.new({'time_basis'=>'+09:00'})})
76
+ assert_equal(2012, date.year )
77
+ assert_equal(When::Coordinates::Pair.new(3,1), date.month)
78
+ assert_equal( 16, date.day )
79
+ assert_equal( 12, date.hour )
80
+ assert_equal( 34, date.minute)
81
+ assert_equal( 56, date.second)
82
+ assert_equal( 4, date.ymon )
83
+ assert_equal( 105, date.yday )
84
+ assert_equal( 16, date.mday )
85
+ assert_equal( 0, date.wday )
86
+ end
87
+
88
+ def mweek(dow, day)
89
+ dow = (dow + 1) % 7
90
+ w,d = (day - 1).divmod(7)
91
+ (d < dow) ? w : w+1
92
+ end
93
+
94
+ def test__term
95
+ # [13,14,15].each do |d|
96
+ # 7.times do |i|
97
+ # p [d, i, mweek(i, d)]
98
+ # end
99
+ # end
100
+ # raise
101
+ format = ['%U %w %W %j', '%G-W%V-%u']
102
+ 7.times do |i|
103
+ 2.times do |k|
104
+ [ '1-1' , '1-2' , '1-3' , '1-4' , '1-5' , '1-6' , '1-7' , '1-8' ,
105
+ '12-24','12-25','12-26','12-27','12-28','12-29','12-30','12-31',].each do |m|
106
+ date1 = When.when?("#{2000+4*i+k}-#{m}")
107
+ expr0 = format.map {|f| date1.to_date.strftime(f)}
108
+ date2 = When.when?(expr0[1])
109
+ expr1 = format.map {|f| date1.strftime(f)}
110
+ expr2 = format.map {|f| date2.strftime(f)}
111
+ assert_equal([expr0,expr0,mweek(date1.to_i % 7, date1.day)], [expr1,expr2,date1.mweek])
112
+ end
113
+ end
114
+ 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
152
+ end
153
+ end
data/test/test/parts.rb CHANGED
@@ -1,488 +1,488 @@
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 When::Parts
10
- class GeometricComplex
11
- def ==(other)
12
- return false unless other.kind_of?(self.class)
13
- return self.node == other.node && self.reverse == other.reverse
14
- end
15
- end
16
- end
17
-
18
- module MiniTest::Parts
19
-
20
- class MethodCash < MiniTest::TestCase
21
- class A
22
- include When::Parts::MethodCash
23
-
24
- def func_0_(x)
25
- #pp ['--0--',x]
26
- return x**2
27
- end
28
-
29
- def func_0_setup(k, x)
30
- #pp ['-0-setup-',k,x]
31
- @_m_cash_["func_0"][k] ||= x**2
32
- end
33
-
34
- def func_1_(x)
35
- #pp ['--1--',x]
36
- return x**4
37
- end
38
-
39
- def _from_to_to_(x,y)
40
- #pp ['--2--',x, y]
41
- return 10 * x + y
42
- end
43
-
44
- def _to_to_from_(x)
45
- #pp ['--3--',x]
46
- return x.divmod(10)
47
- end
48
-
49
- def cash
50
- @_m_cash_
51
- end
52
- end
53
-
54
- class B < A
55
- def initialize
56
- @_m_cash_lock_ = Mutex.new
57
- end
58
- end
59
-
60
- def test__method_cash
61
- [A, B].each do |klass|
62
- c = klass.new
63
- assert_equal(4, c.func_0(2))
64
- assert_equal(4, c.func_0(2))
65
- assert_equal({"func_0"=>{2=>4}}, c.cash)
66
- assert_equal(16, c.func_1(2))
67
- assert_equal(16, c.func_1(2))
68
- assert_equal({"func_1"=>{2=>16}, "func_0"=>{2=>4}}, c.cash)
69
- assert_equal(34, c._from_to_to(3,4))
70
- assert_equal([3, 4], c._to_to_from(34))
71
- assert_equal([3, 3], c._to_to_from(33))
72
- assert_equal({"func_1"=>{2=>16}, "func_0"=>{2=>4},
73
- "_from_to_to"=>{[3, 3]=>[33], [3, 4]=>34}, "_to_to_from"=>{33=>[3, 3], 34=>[3, 4]}}, c.cash)
74
- end
75
- end
76
- end
77
-
78
- class Locale < MiniTest::TestCase
79
- Term1 = When.m17n('Tokyo', 'zip')
80
- Term2 = When.m17n(<<LABEL, <<NS, <<LOCALE)
81
- [
82
- Getsuyou
83
- Monday
84
- ]
85
- LABEL
86
- ISO, jwiki=http://ja.wikipedia.org/wiki/, ewiki=http://en.wikipedia.org/wiki/
87
- NS
88
- =jwiki:, en=ewiki:
89
- LOCALE
90
- Term3 = When.Resource('_co:Common::Week::Monday::Monday')
91
-
92
- def test__locale
93
- assert_equal("Tokyo", Term1.translate('en_US'))
94
- assert_equal("Monday", Term2.translate('en_US'))
95
- assert_equal("Monday", Term3.translate('en_US'))
96
- end
97
-
98
- def test__reference
99
- assert_equal(nil, Term1.reference('ja_JP'))
100
- assert_equal(nil, Term1.reference('en_US'))
101
- assert_equal("http://ja.wikipedia.org/wiki/Getsuyou", Term2.reference('ja_JP'))
102
- assert_equal("http://en.wikipedia.org/wiki/Monday", Term2.reference('en_US'))
103
- assert_equal("http://ja.wikipedia.org/wiki/%E6%9C%88%E6%9B%9C%E6%97%A5", Term3.reference('ja_JP'))
104
- end
105
-
106
- def test__labels
107
- assert_equal({""=>"Tokyo"}, Term1.names)
108
- assert_equal({""=>"Getsuyou", "en"=>"Monday"}, Term2.names)
109
- # assert_equal({""=>"Monday", "ja"=>"月曜日"}, Term3.names)
110
- end
111
-
112
- def test__link
113
- assert_equal({},Term1.link)
114
- assert_equal({""=>"http://ja.wikipedia.org/wiki/Getsuyou",
115
- "en"=>"http://en.wikipedia.org/wiki/Monday"}, Term2.link)
116
- assert_equal({"ja"=>"http://ja.wikipedia.org/wiki/%E6%9C%88%E6%9B%9C%E6%97%A5",
117
- ""=>"http://en.wikipedia.org/wiki/Monday"}, Term3.link)
118
- end
119
-
120
- def test__prefix
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])
124
- assert_equal("http://ja.wikipedia.org/wiki/%E9%96%8F", date.name('Month').reference('ja'))
125
- assert_equal("閏九月", date.name('Month').translate('日本語'))
126
- assert_equal("閏長月", date.name('Month').translate('alias'))
127
- assert_equal("Intercalary Month 9", date.name('Month').translate('en_US'))
128
- end
129
-
130
- def test__split
131
- assert_equal(['' ], When::Locale._split(''))
132
- assert_equal(['3.14' ], When::Locale._split('3.14'))
133
- assert_equal(['3.14', ''], When::Locale._split('3.14,'))
134
- assert_equal(['', '3.14'], When::Locale._split(',3.14'))
135
- assert_equal(['3.14', ' "3.14,159"'], When::Locale._split('3.14, "3.14,159"'))
136
- assert_equal(['3.14', ' "3.14\\"159"'], When::Locale._split('3.14, "3.14\\"159"'))
137
- end
138
- end
139
-
140
- class Resource < MiniTest::TestCase
141
- def test_nothing
142
- end
143
- end
144
-
145
- class Enumerator < MiniTest::TestCase
146
-
147
- def test_nothing
148
- end
149
-
150
- class Array < MiniTest::TestCase
151
- def test_nothing
152
- end
153
- end
154
-
155
- class Integrated < MiniTest::TestCase
156
- def test_nothing
157
- end
158
- end
159
- end
160
-
161
- class GeometricComplex < MiniTest::TestCase
162
-
163
- def test__include
164
-
165
- sample = [false, false, false, false, false]
166
- complex = When::Parts::GeometricComplex.new(false)
167
- assert_equal(nil, complex.exclude_end?)
168
- (1..5).each do |i|
169
- assert_equal(sample.shift, complex.include?(i))
170
- end
171
-
172
- sample = [true, true, true, true, true]
173
- complex = When::Parts::GeometricComplex.new(true)
174
- assert_equal(nil, complex.exclude_end?)
175
- (1..5).each do |i|
176
- assert_equal(sample.shift, complex.include?(i))
177
- end
178
-
179
- sample = [false, true, true, true, false]
180
- complex = When::Parts::GeometricComplex.new(2..4)
181
- assert_equal(false, complex.exclude_end?)
182
- (1..5).each do |i|
183
- assert_equal(sample.shift, complex.include?(i))
184
- end
185
-
186
- sample = [false, true, true, false, false]
187
- complex = When::Parts::GeometricComplex.new(2...4)
188
- assert_equal(true, complex.exclude_end?)
189
- (1..5).each do |i|
190
- assert_equal(sample.shift, complex.include?(i))
191
- end
192
-
193
- sample = [true, false, false, false, true]
194
- complex = -When::Parts::GeometricComplex.new(2..4)
195
- assert_equal(true, complex.exclude_end?)
196
- (1..5).each do |i|
197
- assert_equal(sample.shift, complex.include?(i))
198
- end
199
-
200
- sample = [true, false, false, true, true]
201
- complex = -When::Parts::GeometricComplex.new(2...4)
202
- assert_equal(false, complex.exclude_end?)
203
- (1..5).each do |i|
204
- assert_equal(sample.shift, complex.include?(i))
205
- end
206
-
207
- period_1_2 = When::Parts::GeometricComplex.new(1..2)
208
- period_2_3 = When::Parts::GeometricComplex.new(2..3)
209
- period_3_4 = When::Parts::GeometricComplex.new(3..4)
210
- period_4_5 = When::Parts::GeometricComplex.new(4..5)
211
- period_5_6 = When::Parts::GeometricComplex.new(5..6)
212
-
213
- period_2_4 = When::Parts::GeometricComplex.new(2..4)
214
- period_3_6 = When::Parts::GeometricComplex.new(3..6)
215
- period_4_6 = When::Parts::GeometricComplex.new(4..6)
216
- period_1_6 = When::Parts::GeometricComplex.new(1..6)
217
-
218
- [[false, period_1_2, period_4_6],
219
- [false, period_1_2, period_2_4],
220
- [false, period_2_4, period_3_6],
221
- [false, period_2_3, period_2_4],
222
- [true, period_2_4, period_2_3],
223
-
224
- [false, period_2_4, period_1_6],
225
- [true, period_1_6, period_2_4],
226
- [true, period_2_4, period_2_4],
227
-
228
- [false, period_3_6, period_2_4],
229
- [false, period_3_4, period_2_4],
230
- [true, period_2_4, period_3_4],
231
- [false, period_4_5, period_2_4],
232
- [false, period_5_6, period_2_4]].each do |sample|
233
- assert_equal(sample[0], sample[1].include?(sample[2]))
234
- end
235
-
236
- period_1_2 = When::Parts::GeometricComplex.new(1...2)
237
- period_2_3 = When::Parts::GeometricComplex.new(2...3)
238
- period_3_4 = When::Parts::GeometricComplex.new(3...4)
239
- period_4_5 = When::Parts::GeometricComplex.new(4...5)
240
- period_5_6 = When::Parts::GeometricComplex.new(5...6)
241
-
242
- period_2_4 = When::Parts::GeometricComplex.new(2...4)
243
- period_3_6 = When::Parts::GeometricComplex.new(3...6)
244
- period_4_6 = When::Parts::GeometricComplex.new(4...6)
245
- period_1_6 = When::Parts::GeometricComplex.new(1...6)
246
-
247
- [[false, period_1_2, period_4_6],
248
- [false, period_1_2, period_2_4],
249
- [false, period_2_4, period_3_6],
250
- [false, period_2_3, period_2_4],
251
- [true, period_2_4, period_2_3],
252
-
253
- [false, period_2_4, period_1_6],
254
- [true, period_1_6, period_2_4],
255
- [true, period_2_4, period_2_4],
256
-
257
- [false, period_3_6, period_2_4],
258
- [false, period_3_4, period_2_4],
259
- [true, period_2_4, period_3_4],
260
- [false, period_4_5, period_2_4],
261
- [false, period_5_6, period_2_4]].each do |sample|
262
- assert_equal(sample[0], sample[1].include?(sample[2]))
263
- end
264
-
265
- period_1_2 = -When::Parts::GeometricComplex.new(1..2)
266
- period_2_3 = -When::Parts::GeometricComplex.new(2..3)
267
- period_3_4 = -When::Parts::GeometricComplex.new(3..4)
268
- period_4_5 = -When::Parts::GeometricComplex.new(4..5)
269
- period_5_6 = -When::Parts::GeometricComplex.new(5..6)
270
-
271
- period_2_4 = -When::Parts::GeometricComplex.new(2..4)
272
- period_3_6 = -When::Parts::GeometricComplex.new(3..6)
273
- period_4_6 = -When::Parts::GeometricComplex.new(4..6)
274
- period_1_6 = -When::Parts::GeometricComplex.new(1..6)
275
-
276
- [[false, period_4_6, period_1_2],
277
- [false, period_2_4, period_1_2],
278
- [false, period_3_6, period_2_4],
279
- [false, period_2_4, period_2_3],
280
- [true, period_2_3, period_2_4],
281
-
282
- [false, period_1_6, period_2_4],
283
- [true, period_2_4, period_1_6],
284
- [true, period_2_4, period_2_4],
285
-
286
- [false, period_2_4, period_3_6],
287
- [false, period_2_4, period_3_4],
288
- [true, period_3_4, period_2_4],
289
- [false, period_2_4, period_4_5],
290
- [false, period_2_4, period_5_6]].each do |sample|
291
- assert_equal(sample[0], sample[1].include?(sample[2]))
292
- end
293
-
294
- period_1_2 = -When::Parts::GeometricComplex.new(1...2)
295
- period_2_3 = -When::Parts::GeometricComplex.new(2...3)
296
- period_3_4 = -When::Parts::GeometricComplex.new(3...4)
297
- period_4_5 = -When::Parts::GeometricComplex.new(4...5)
298
- period_5_6 = -When::Parts::GeometricComplex.new(5...6)
299
-
300
- period_2_4 = -When::Parts::GeometricComplex.new(2...4)
301
- period_3_6 = -When::Parts::GeometricComplex.new(3...6)
302
- period_4_6 = -When::Parts::GeometricComplex.new(4...6)
303
- period_1_6 = -When::Parts::GeometricComplex.new(1...6)
304
-
305
- [[false, period_4_6, period_1_2],
306
- [false, period_2_4, period_1_2],
307
- [false, period_3_6, period_2_4],
308
- [false, period_2_4, period_2_3],
309
- [true, period_2_3, period_2_4],
310
-
311
- [false, period_1_6, period_2_4],
312
- [true, period_2_4, period_1_6],
313
- [true, period_2_4, period_2_4],
314
-
315
- [false, period_2_4, period_3_6],
316
- [false, period_2_4, period_3_4],
317
- [true, period_3_4, period_2_4],
318
- [false, period_2_4, period_4_5],
319
- [false, period_2_4, period_5_6]].each do |sample|
320
- assert_equal(sample[0], sample[1].include?(sample[2]))
321
- end
322
- end
323
-
324
- def test__union
325
-
326
- sample = [false, true, false, true, true, false]
327
- complex = When::Parts::GeometricComplex.new(3..4)
328
- complex |= 1
329
- (0..5).each do |i|
330
- assert_equal(sample.shift, complex.include?(i))
331
- end
332
-
333
- sample = [true, false, true, false, false, true]
334
- complex = When::Parts::GeometricComplex.new(3..4)
335
- complex |= 1
336
- complex = -complex
337
- (0..5).each do |i|
338
- assert_equal(sample.shift, complex.include?(i))
339
- end
340
-
341
- sample = [false, true, false, true, false, false]
342
- complex = When::Parts::GeometricComplex.new(3...4)
343
- complex |= 1
344
- (0..5).each do |i|
345
- assert_equal(sample.shift, complex.include?(i))
346
- end
347
-
348
- sample = [true, false, true, false, true, true]
349
- complex = When::Parts::GeometricComplex.new(3...4)
350
- complex |= 1
351
- complex = -complex
352
- (0..5).each do |i|
353
- assert_equal(sample.shift, complex.include?(i))
354
- end
355
-
356
- complex = When::Parts::GeometricComplex.new(3..5)
357
- (3..5).each do |i|
358
- union = complex | i
359
- assert_equal(complex, union)
360
- end
361
-
362
- assert_equal(When::Parts::GeometricComplex.new(3..5),
363
- When::Parts::GeometricComplex.new(3...5) | 5)
364
-
365
- null = When::Parts::GeometricComplex.new(false)
366
- all = When::Parts::GeometricComplex.new(true)
367
- period_1_2 = When::Parts::GeometricComplex.new(1..2)
368
- period_2_3 = When::Parts::GeometricComplex.new(2..3)
369
- period_3_4 = When::Parts::GeometricComplex.new(3..4)
370
- period_4_5 = When::Parts::GeometricComplex.new(4..5)
371
- period_5_6 = When::Parts::GeometricComplex.new(5..6)
372
-
373
- period_1_4 = When::Parts::GeometricComplex.new(1..4)
374
- period_2_4 = When::Parts::GeometricComplex.new(2..4)
375
- period_2_5 = When::Parts::GeometricComplex.new(2..5)
376
- period_2_6 = When::Parts::GeometricComplex.new(2..6)
377
- period_3_6 = When::Parts::GeometricComplex.new(3..6)
378
- period_4_6 = When::Parts::GeometricComplex.new(4..6)
379
- period_1_6 = When::Parts::GeometricComplex.new(1..6)
380
-
381
- period_1_2_4_6 = When::Parts::GeometricComplex.new([[1,true],[2,true],[4,true],[6,true]])
382
- period_2_4_5_6 = When::Parts::GeometricComplex.new([[2,true],[4,true],[5,true],[6,true]])
383
-
384
- [[period_1_2_4_6, null, period_1_2_4_6],
385
- [period_1_2_4_6, period_1_2_4_6, null],
386
- [all, all, period_1_2_4_6],
387
- [all, period_1_2_4_6, all],
388
- [period_1_2_4_6, period_1_2, period_4_6],
389
- [period_1_4, period_1_2, period_2_4],
390
- [period_2_6, period_2_4, period_3_6],
391
- [period_2_4, period_2_3, period_2_4],
392
- [period_2_4, period_2_4, period_2_3],
393
-
394
- [period_1_6, period_2_4, period_1_6],
395
- [period_1_6, period_1_6, period_2_4],
396
- [period_2_4, period_2_4, period_2_4],
397
-
398
- [period_2_6, period_3_6, period_2_4],
399
- [period_2_4, period_3_4, period_2_4],
400
- [period_2_4, period_2_4, period_3_4],
401
- [period_2_5, period_4_5, period_2_4],
402
- [period_2_4_5_6, period_5_6, period_2_4]].each do |sample|
403
- assert_equal(sample[0], sample[1] | sample[2])
404
- end
405
-
406
- period_1_2 = When::Parts::GeometricComplex.new(1...2)
407
- period_2_3 = When::Parts::GeometricComplex.new(2...3)
408
- period_3_4 = When::Parts::GeometricComplex.new(3...4)
409
- period_4_5 = When::Parts::GeometricComplex.new(4...5)
410
- period_5_6 = When::Parts::GeometricComplex.new(5...6)
411
-
412
- period_1_4 = When::Parts::GeometricComplex.new(1...4)
413
- period_2_4 = When::Parts::GeometricComplex.new(2...4)
414
- period_2_5 = When::Parts::GeometricComplex.new(2...5)
415
- period_2_6 = When::Parts::GeometricComplex.new(2...6)
416
- period_3_6 = When::Parts::GeometricComplex.new(3...6)
417
- period_4_6 = When::Parts::GeometricComplex.new(4...6)
418
- period_1_6 = When::Parts::GeometricComplex.new(1...6)
419
-
420
- period_1_2_4_6 = When::Parts::GeometricComplex.new([[1,true],[2,false],[4,true],[6,false]])
421
- period_2_4_5_6 = When::Parts::GeometricComplex.new([[2,true],[4,false],[5,true],[6,false]])
422
-
423
- [[period_1_2_4_6, null, period_1_2_4_6],
424
- [period_1_2_4_6, period_1_2_4_6, null],
425
- [all, all, period_1_2_4_6],
426
- [all, period_1_2_4_6, all],
427
- [period_1_2_4_6, period_1_2, period_4_6],
428
- [period_1_4, period_1_2, period_2_4],
429
- [period_2_6, period_2_4, period_3_6],
430
- [period_2_4, period_2_3, period_2_4],
431
- [period_2_4, period_2_4, period_2_3],
432
-
433
- [period_1_6, period_2_4, period_1_6],
434
- [period_1_6, period_1_6, period_2_4],
435
- [period_2_4, period_2_4, period_2_4],
436
-
437
- [period_2_6, period_3_6, period_2_4],
438
- [period_2_4, period_3_4, period_2_4],
439
- [period_2_4, period_2_4, period_3_4],
440
- [period_2_5, period_4_5, period_2_4],
441
- [period_2_4_5_6, period_5_6, period_2_4]].each do |sample|
442
- assert_equal(sample[0], sample[1] | sample[2])
443
- end
444
- end
445
-
446
- def test__include_in_sample
447
- range_1_4 = When::Parts::GeometricComplex.new(1,4)
448
- range_2_2 = When::Parts::GeometricComplex.new(2)
449
- range_2_3 = When::Parts::GeometricComplex.new(2,3)
450
- range_2_5 = When::Parts::GeometricComplex.new(2,5)
451
- range_4_4 = When::Parts::GeometricComplex.new(4)
452
- assert_equal(true, range_1_4.include?(range_2_2))
453
- assert_equal(true, range_1_4.include?(range_2_3))
454
- assert_equal(false, range_1_4.include?(range_2_5))
455
- assert_equal(false, range_1_4.include?(range_4_4))
456
- end
457
-
458
- def test__union_in_sample
459
- #range_null = When::Parts::GeometricComplex.new()
460
- #range_1_1 = When::Parts::GeometricComplex.new(1)
461
- range_1_4 = When::Parts::GeometricComplex.new(1,4)
462
- range_2_2 = When::Parts::GeometricComplex.new(2)
463
- range_2_3 = When::Parts::GeometricComplex.new(2,3)
464
- range_2_5 = When::Parts::GeometricComplex.new(2,5)
465
- range_4_4 = When::Parts::GeometricComplex.new(4)
466
- assert_equal("1...4", range_1_4.to_s)
467
- assert_equal("2...3", range_2_3.to_s)
468
- sample = [1, 2, 3]
469
- range_1_4.each {|x| assert_equal(sample.shift, x)}
470
- assert_equal("4..4", range_4_4.to_s)
471
- assert_equal("1...4", (range_1_4 | range_2_3).to_s)
472
- range_1_5 = range_1_4 | range_2_5
473
- assert_equal("1...5", range_1_5.to_s)
474
- assert_equal("1..4", (range_1_4 | range_4_4).to_s)
475
- reverse_all = When::Parts::GeometricComplex.new(true)
476
- reverse_1_4 = When::Parts::GeometricComplex.new(1,4, true)
477
- reverse_2_3 = When::Parts::GeometricComplex.new(2,3, true)
478
- reverse_2_5 = When::Parts::GeometricComplex.new(2,5, true)
479
- assert_equal("1..4", reverse_1_4.to_s)
480
- assert_equal("2..3", reverse_2_3.to_s)
481
- unless Float::INFINITY == Float::MAX
482
- assert_equal("-Infinity..Infinity", reverse_all.to_s)
483
- assert_equal("-Infinity..Infinity", (reverse_2_3 | range_2_3).to_s)
484
- end
485
- assert_equal("1..2", (reverse_1_4 | range_2_5).to_s)
486
- end
487
- end
488
- end
1
+ # -*- coding: utf-8 -*-
2
+ =begin
3
+ Copyright (C) 2011-2020 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 When::Parts
10
+ class GeometricComplex
11
+ def ==(other)
12
+ return false unless other.kind_of?(self.class)
13
+ return self.node == other.node && self.reverse == other.reverse
14
+ end
15
+ end
16
+ end
17
+
18
+ module MiniTest::Parts
19
+
20
+ class MethodCash < MiniTest::TestCase
21
+ class A
22
+ include When::Parts::MethodCash
23
+
24
+ def func_0_(x)
25
+ #pp ['--0--',x]
26
+ return x**2
27
+ end
28
+
29
+ def func_0_setup(k, x)
30
+ #pp ['-0-setup-',k,x]
31
+ @_m_cash_["func_0"][k] ||= x**2
32
+ end
33
+
34
+ def func_1_(x)
35
+ #pp ['--1--',x]
36
+ return x**4
37
+ end
38
+
39
+ def _from_to_to_(x,y)
40
+ #pp ['--2--',x, y]
41
+ return 10 * x + y
42
+ end
43
+
44
+ def _to_to_from_(x)
45
+ #pp ['--3--',x]
46
+ return x.divmod(10)
47
+ end
48
+
49
+ def cash
50
+ @_m_cash_
51
+ end
52
+ end
53
+
54
+ class B < A
55
+ def initialize
56
+ @_m_cash_lock_ = Mutex.new
57
+ end
58
+ end
59
+
60
+ def test__method_cash
61
+ [A, B].each do |klass|
62
+ c = klass.new
63
+ assert_equal(4, c.func_0(2))
64
+ assert_equal(4, c.func_0(2))
65
+ assert_equal({"func_0"=>{2=>4}}, c.cash)
66
+ assert_equal(16, c.func_1(2))
67
+ assert_equal(16, c.func_1(2))
68
+ assert_equal({"func_1"=>{2=>16}, "func_0"=>{2=>4}}, c.cash)
69
+ assert_equal(34, c._from_to_to(3,4))
70
+ assert_equal([3, 4], c._to_to_from(34))
71
+ assert_equal([3, 3], c._to_to_from(33))
72
+ assert_equal({"func_1"=>{2=>16}, "func_0"=>{2=>4},
73
+ "_from_to_to"=>{[3, 3]=>[33], [3, 4]=>34}, "_to_to_from"=>{33=>[3, 3], 34=>[3, 4]}}, c.cash)
74
+ end
75
+ end
76
+ end
77
+
78
+ class Locale < MiniTest::TestCase
79
+ Term1 = When.m17n('Tokyo', 'zip')
80
+ Term2 = When.m17n(<<LABEL, <<NS, <<LOCALE)
81
+ [
82
+ Getsuyou
83
+ Monday
84
+ ]
85
+ LABEL
86
+ ISO, jwiki=https://ja.wikipedia.org/wiki/, ewiki=https://en.wikipedia.org/wiki/
87
+ NS
88
+ =jwiki:, en=ewiki:
89
+ LOCALE
90
+ Term3 = When.Resource('_co:Common::Week::Monday::Monday')
91
+
92
+ def test__locale
93
+ assert_equal("Tokyo", Term1.translate('en_US'))
94
+ assert_equal("Monday", Term2.translate('en_US'))
95
+ assert_equal("Monday", Term3.translate('en_US'))
96
+ end
97
+
98
+ def test__reference
99
+ assert_nil(Term1.reference('ja_JP'))
100
+ assert_nil(Term1.reference('en_US'))
101
+ assert_equal("https://ja.wikipedia.org/wiki/Getsuyou", Term2.reference('ja_JP'))
102
+ assert_equal("https://en.wikipedia.org/wiki/Monday", Term2.reference('en_US'))
103
+ assert_equal("https://ja.wikipedia.org/wiki/%E6%9C%88%E6%9B%9C%E6%97%A5", Term3.reference('ja_JP'))
104
+ end
105
+
106
+ def test__labels
107
+ assert_equal({""=>"Tokyo"}, Term1.names)
108
+ assert_equal({""=>"Getsuyou", "en"=>"Monday"}, Term2.names)
109
+ # assert_equal({""=>"Monday", "ja"=>"月曜日"}, Term3.names)
110
+ end
111
+
112
+ def test__link
113
+ assert_equal({},Term1.link)
114
+ assert_equal({""=>"https://ja.wikipedia.org/wiki/Getsuyou",
115
+ "en"=>"https://en.wikipedia.org/wiki/Monday"}, Term2.link)
116
+ assert_equal({"ja"=>"https://ja.wikipedia.org/wiki/%E6%9C%88%E6%9B%9C%E6%97%A5",
117
+ ""=>"https://en.wikipedia.org/wiki/Monday"}, Term3.link)
118
+ end
119
+
120
+ def test__prefix
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])
124
+ assert_equal("https://ja.wikipedia.org/wiki/%E9%96%8F", date.name('Month').reference('ja'))
125
+ assert_equal("閏九月", date.name('Month').translate('日本語'))
126
+ assert_equal("閏長月", date.name('Month').translate('alias'))
127
+ assert_equal("Intercalary Month 9", date.name('Month').translate('en_US'))
128
+ end
129
+
130
+ def test__split
131
+ assert_equal(['' ], When::Locale._split(''))
132
+ assert_equal(['3.14' ], When::Locale._split('3.14'))
133
+ assert_equal(['3.14', ''], When::Locale._split('3.14,'))
134
+ assert_equal(['', '3.14'], When::Locale._split(',3.14'))
135
+ assert_equal(['3.14', ' "3.14,159"'], When::Locale._split('3.14, "3.14,159"'))
136
+ assert_equal(['3.14', ' "3.14\\"159"'], When::Locale._split('3.14, "3.14\\"159"'))
137
+ end
138
+ end
139
+
140
+ class Resource < MiniTest::TestCase
141
+ def test_nothing
142
+ end
143
+ end
144
+
145
+ class Enumerator < MiniTest::TestCase
146
+
147
+ def test_nothing
148
+ end
149
+
150
+ class Array < MiniTest::TestCase
151
+ def test_nothing
152
+ end
153
+ end
154
+
155
+ class Integrated < MiniTest::TestCase
156
+ def test_nothing
157
+ end
158
+ end
159
+ end
160
+
161
+ class GeometricComplex < MiniTest::TestCase
162
+
163
+ def test__include
164
+
165
+ sample = [false, false, false, false, false]
166
+ complex = When::Parts::GeometricComplex.new(false)
167
+ assert_nil(complex.exclude_end?)
168
+ (1..5).each do |i|
169
+ assert_equal(sample.shift, complex.include?(i))
170
+ end
171
+
172
+ sample = [true, true, true, true, true]
173
+ complex = When::Parts::GeometricComplex.new(true)
174
+ assert_nil(complex.exclude_end?)
175
+ (1..5).each do |i|
176
+ assert_equal(sample.shift, complex.include?(i))
177
+ end
178
+
179
+ sample = [false, true, true, true, false]
180
+ complex = When::Parts::GeometricComplex.new(2..4)
181
+ assert_equal(false, complex.exclude_end?)
182
+ (1..5).each do |i|
183
+ assert_equal(sample.shift, complex.include?(i))
184
+ end
185
+
186
+ sample = [false, true, true, false, false]
187
+ complex = When::Parts::GeometricComplex.new(2...4)
188
+ assert_equal(true, complex.exclude_end?)
189
+ (1..5).each do |i|
190
+ assert_equal(sample.shift, complex.include?(i))
191
+ end
192
+
193
+ sample = [true, false, false, false, true]
194
+ complex = -When::Parts::GeometricComplex.new(2..4)
195
+ assert_equal(true, complex.exclude_end?)
196
+ (1..5).each do |i|
197
+ assert_equal(sample.shift, complex.include?(i))
198
+ end
199
+
200
+ sample = [true, false, false, true, true]
201
+ complex = -When::Parts::GeometricComplex.new(2...4)
202
+ assert_equal(false, complex.exclude_end?)
203
+ (1..5).each do |i|
204
+ assert_equal(sample.shift, complex.include?(i))
205
+ end
206
+
207
+ period_1_2 = When::Parts::GeometricComplex.new(1..2)
208
+ period_2_3 = When::Parts::GeometricComplex.new(2..3)
209
+ period_3_4 = When::Parts::GeometricComplex.new(3..4)
210
+ period_4_5 = When::Parts::GeometricComplex.new(4..5)
211
+ period_5_6 = When::Parts::GeometricComplex.new(5..6)
212
+
213
+ period_2_4 = When::Parts::GeometricComplex.new(2..4)
214
+ period_3_6 = When::Parts::GeometricComplex.new(3..6)
215
+ period_4_6 = When::Parts::GeometricComplex.new(4..6)
216
+ period_1_6 = When::Parts::GeometricComplex.new(1..6)
217
+
218
+ [[false, period_1_2, period_4_6],
219
+ [false, period_1_2, period_2_4],
220
+ [false, period_2_4, period_3_6],
221
+ [false, period_2_3, period_2_4],
222
+ [true, period_2_4, period_2_3],
223
+
224
+ [false, period_2_4, period_1_6],
225
+ [true, period_1_6, period_2_4],
226
+ [true, period_2_4, period_2_4],
227
+
228
+ [false, period_3_6, period_2_4],
229
+ [false, period_3_4, period_2_4],
230
+ [true, period_2_4, period_3_4],
231
+ [false, period_4_5, period_2_4],
232
+ [false, period_5_6, period_2_4]].each do |sample|
233
+ assert_equal(sample[0], sample[1].include?(sample[2]))
234
+ end
235
+
236
+ period_1_2 = When::Parts::GeometricComplex.new(1...2)
237
+ period_2_3 = When::Parts::GeometricComplex.new(2...3)
238
+ period_3_4 = When::Parts::GeometricComplex.new(3...4)
239
+ period_4_5 = When::Parts::GeometricComplex.new(4...5)
240
+ period_5_6 = When::Parts::GeometricComplex.new(5...6)
241
+
242
+ period_2_4 = When::Parts::GeometricComplex.new(2...4)
243
+ period_3_6 = When::Parts::GeometricComplex.new(3...6)
244
+ period_4_6 = When::Parts::GeometricComplex.new(4...6)
245
+ period_1_6 = When::Parts::GeometricComplex.new(1...6)
246
+
247
+ [[false, period_1_2, period_4_6],
248
+ [false, period_1_2, period_2_4],
249
+ [false, period_2_4, period_3_6],
250
+ [false, period_2_3, period_2_4],
251
+ [true, period_2_4, period_2_3],
252
+
253
+ [false, period_2_4, period_1_6],
254
+ [true, period_1_6, period_2_4],
255
+ [true, period_2_4, period_2_4],
256
+
257
+ [false, period_3_6, period_2_4],
258
+ [false, period_3_4, period_2_4],
259
+ [true, period_2_4, period_3_4],
260
+ [false, period_4_5, period_2_4],
261
+ [false, period_5_6, period_2_4]].each do |sample|
262
+ assert_equal(sample[0], sample[1].include?(sample[2]))
263
+ end
264
+
265
+ period_1_2 = -When::Parts::GeometricComplex.new(1..2)
266
+ period_2_3 = -When::Parts::GeometricComplex.new(2..3)
267
+ period_3_4 = -When::Parts::GeometricComplex.new(3..4)
268
+ period_4_5 = -When::Parts::GeometricComplex.new(4..5)
269
+ period_5_6 = -When::Parts::GeometricComplex.new(5..6)
270
+
271
+ period_2_4 = -When::Parts::GeometricComplex.new(2..4)
272
+ period_3_6 = -When::Parts::GeometricComplex.new(3..6)
273
+ period_4_6 = -When::Parts::GeometricComplex.new(4..6)
274
+ period_1_6 = -When::Parts::GeometricComplex.new(1..6)
275
+
276
+ [[false, period_4_6, period_1_2],
277
+ [false, period_2_4, period_1_2],
278
+ [false, period_3_6, period_2_4],
279
+ [false, period_2_4, period_2_3],
280
+ [true, period_2_3, period_2_4],
281
+
282
+ [false, period_1_6, period_2_4],
283
+ [true, period_2_4, period_1_6],
284
+ [true, period_2_4, period_2_4],
285
+
286
+ [false, period_2_4, period_3_6],
287
+ [false, period_2_4, period_3_4],
288
+ [true, period_3_4, period_2_4],
289
+ [false, period_2_4, period_4_5],
290
+ [false, period_2_4, period_5_6]].each do |sample|
291
+ assert_equal(sample[0], sample[1].include?(sample[2]))
292
+ end
293
+
294
+ period_1_2 = -When::Parts::GeometricComplex.new(1...2)
295
+ period_2_3 = -When::Parts::GeometricComplex.new(2...3)
296
+ period_3_4 = -When::Parts::GeometricComplex.new(3...4)
297
+ period_4_5 = -When::Parts::GeometricComplex.new(4...5)
298
+ period_5_6 = -When::Parts::GeometricComplex.new(5...6)
299
+
300
+ period_2_4 = -When::Parts::GeometricComplex.new(2...4)
301
+ period_3_6 = -When::Parts::GeometricComplex.new(3...6)
302
+ period_4_6 = -When::Parts::GeometricComplex.new(4...6)
303
+ period_1_6 = -When::Parts::GeometricComplex.new(1...6)
304
+
305
+ [[false, period_4_6, period_1_2],
306
+ [false, period_2_4, period_1_2],
307
+ [false, period_3_6, period_2_4],
308
+ [false, period_2_4, period_2_3],
309
+ [true, period_2_3, period_2_4],
310
+
311
+ [false, period_1_6, period_2_4],
312
+ [true, period_2_4, period_1_6],
313
+ [true, period_2_4, period_2_4],
314
+
315
+ [false, period_2_4, period_3_6],
316
+ [false, period_2_4, period_3_4],
317
+ [true, period_3_4, period_2_4],
318
+ [false, period_2_4, period_4_5],
319
+ [false, period_2_4, period_5_6]].each do |sample|
320
+ assert_equal(sample[0], sample[1].include?(sample[2]))
321
+ end
322
+ end
323
+
324
+ def test__union
325
+
326
+ sample = [false, true, false, true, true, false]
327
+ complex = When::Parts::GeometricComplex.new(3..4)
328
+ complex |= 1
329
+ (0..5).each do |i|
330
+ assert_equal(sample.shift, complex.include?(i))
331
+ end
332
+
333
+ sample = [true, false, true, false, false, true]
334
+ complex = When::Parts::GeometricComplex.new(3..4)
335
+ complex |= 1
336
+ complex = -complex
337
+ (0..5).each do |i|
338
+ assert_equal(sample.shift, complex.include?(i))
339
+ end
340
+
341
+ sample = [false, true, false, true, false, false]
342
+ complex = When::Parts::GeometricComplex.new(3...4)
343
+ complex |= 1
344
+ (0..5).each do |i|
345
+ assert_equal(sample.shift, complex.include?(i))
346
+ end
347
+
348
+ sample = [true, false, true, false, true, true]
349
+ complex = When::Parts::GeometricComplex.new(3...4)
350
+ complex |= 1
351
+ complex = -complex
352
+ (0..5).each do |i|
353
+ assert_equal(sample.shift, complex.include?(i))
354
+ end
355
+
356
+ complex = When::Parts::GeometricComplex.new(3..5)
357
+ (3..5).each do |i|
358
+ union = complex | i
359
+ assert_equal(complex, union)
360
+ end
361
+
362
+ assert_equal(When::Parts::GeometricComplex.new(3..5),
363
+ When::Parts::GeometricComplex.new(3...5) | 5)
364
+
365
+ null = When::Parts::GeometricComplex.new(false)
366
+ all = When::Parts::GeometricComplex.new(true)
367
+ period_1_2 = When::Parts::GeometricComplex.new(1..2)
368
+ period_2_3 = When::Parts::GeometricComplex.new(2..3)
369
+ period_3_4 = When::Parts::GeometricComplex.new(3..4)
370
+ period_4_5 = When::Parts::GeometricComplex.new(4..5)
371
+ period_5_6 = When::Parts::GeometricComplex.new(5..6)
372
+
373
+ period_1_4 = When::Parts::GeometricComplex.new(1..4)
374
+ period_2_4 = When::Parts::GeometricComplex.new(2..4)
375
+ period_2_5 = When::Parts::GeometricComplex.new(2..5)
376
+ period_2_6 = When::Parts::GeometricComplex.new(2..6)
377
+ period_3_6 = When::Parts::GeometricComplex.new(3..6)
378
+ period_4_6 = When::Parts::GeometricComplex.new(4..6)
379
+ period_1_6 = When::Parts::GeometricComplex.new(1..6)
380
+
381
+ period_1_2_4_6 = When::Parts::GeometricComplex.new([[1,true],[2,true],[4,true],[6,true]])
382
+ period_2_4_5_6 = When::Parts::GeometricComplex.new([[2,true],[4,true],[5,true],[6,true]])
383
+
384
+ [[period_1_2_4_6, null, period_1_2_4_6],
385
+ [period_1_2_4_6, period_1_2_4_6, null],
386
+ [all, all, period_1_2_4_6],
387
+ [all, period_1_2_4_6, all],
388
+ [period_1_2_4_6, period_1_2, period_4_6],
389
+ [period_1_4, period_1_2, period_2_4],
390
+ [period_2_6, period_2_4, period_3_6],
391
+ [period_2_4, period_2_3, period_2_4],
392
+ [period_2_4, period_2_4, period_2_3],
393
+
394
+ [period_1_6, period_2_4, period_1_6],
395
+ [period_1_6, period_1_6, period_2_4],
396
+ [period_2_4, period_2_4, period_2_4],
397
+
398
+ [period_2_6, period_3_6, period_2_4],
399
+ [period_2_4, period_3_4, period_2_4],
400
+ [period_2_4, period_2_4, period_3_4],
401
+ [period_2_5, period_4_5, period_2_4],
402
+ [period_2_4_5_6, period_5_6, period_2_4]].each do |sample|
403
+ assert_equal(sample[0], sample[1] | sample[2])
404
+ end
405
+
406
+ period_1_2 = When::Parts::GeometricComplex.new(1...2)
407
+ period_2_3 = When::Parts::GeometricComplex.new(2...3)
408
+ period_3_4 = When::Parts::GeometricComplex.new(3...4)
409
+ period_4_5 = When::Parts::GeometricComplex.new(4...5)
410
+ period_5_6 = When::Parts::GeometricComplex.new(5...6)
411
+
412
+ period_1_4 = When::Parts::GeometricComplex.new(1...4)
413
+ period_2_4 = When::Parts::GeometricComplex.new(2...4)
414
+ period_2_5 = When::Parts::GeometricComplex.new(2...5)
415
+ period_2_6 = When::Parts::GeometricComplex.new(2...6)
416
+ period_3_6 = When::Parts::GeometricComplex.new(3...6)
417
+ period_4_6 = When::Parts::GeometricComplex.new(4...6)
418
+ period_1_6 = When::Parts::GeometricComplex.new(1...6)
419
+
420
+ period_1_2_4_6 = When::Parts::GeometricComplex.new([[1,true],[2,false],[4,true],[6,false]])
421
+ period_2_4_5_6 = When::Parts::GeometricComplex.new([[2,true],[4,false],[5,true],[6,false]])
422
+
423
+ [[period_1_2_4_6, null, period_1_2_4_6],
424
+ [period_1_2_4_6, period_1_2_4_6, null],
425
+ [all, all, period_1_2_4_6],
426
+ [all, period_1_2_4_6, all],
427
+ [period_1_2_4_6, period_1_2, period_4_6],
428
+ [period_1_4, period_1_2, period_2_4],
429
+ [period_2_6, period_2_4, period_3_6],
430
+ [period_2_4, period_2_3, period_2_4],
431
+ [period_2_4, period_2_4, period_2_3],
432
+
433
+ [period_1_6, period_2_4, period_1_6],
434
+ [period_1_6, period_1_6, period_2_4],
435
+ [period_2_4, period_2_4, period_2_4],
436
+
437
+ [period_2_6, period_3_6, period_2_4],
438
+ [period_2_4, period_3_4, period_2_4],
439
+ [period_2_4, period_2_4, period_3_4],
440
+ [period_2_5, period_4_5, period_2_4],
441
+ [period_2_4_5_6, period_5_6, period_2_4]].each do |sample|
442
+ assert_equal(sample[0], sample[1] | sample[2])
443
+ end
444
+ end
445
+
446
+ def test__include_in_sample
447
+ range_1_4 = When::Parts::GeometricComplex.new(1,4)
448
+ range_2_2 = When::Parts::GeometricComplex.new(2)
449
+ range_2_3 = When::Parts::GeometricComplex.new(2,3)
450
+ range_2_5 = When::Parts::GeometricComplex.new(2,5)
451
+ range_4_4 = When::Parts::GeometricComplex.new(4)
452
+ assert_equal(true, range_1_4.include?(range_2_2))
453
+ assert_equal(true, range_1_4.include?(range_2_3))
454
+ assert_equal(false, range_1_4.include?(range_2_5))
455
+ assert_equal(false, range_1_4.include?(range_4_4))
456
+ end
457
+
458
+ def test__union_in_sample
459
+ #range_null = When::Parts::GeometricComplex.new()
460
+ #range_1_1 = When::Parts::GeometricComplex.new(1)
461
+ range_1_4 = When::Parts::GeometricComplex.new(1,4)
462
+ range_2_2 = When::Parts::GeometricComplex.new(2)
463
+ range_2_3 = When::Parts::GeometricComplex.new(2,3)
464
+ range_2_5 = When::Parts::GeometricComplex.new(2,5)
465
+ range_4_4 = When::Parts::GeometricComplex.new(4)
466
+ assert_equal("1...4", range_1_4.to_s)
467
+ assert_equal("2...3", range_2_3.to_s)
468
+ sample = [1, 2, 3]
469
+ range_1_4.each {|x| assert_equal(sample.shift, x)}
470
+ assert_equal("4..4", range_4_4.to_s)
471
+ assert_equal("1...4", (range_1_4 | range_2_3).to_s)
472
+ range_1_5 = range_1_4 | range_2_5
473
+ assert_equal("1...5", range_1_5.to_s)
474
+ assert_equal("1..4", (range_1_4 | range_4_4).to_s)
475
+ reverse_all = When::Parts::GeometricComplex.new(true)
476
+ reverse_1_4 = When::Parts::GeometricComplex.new(1,4, true)
477
+ reverse_2_3 = When::Parts::GeometricComplex.new(2,3, true)
478
+ reverse_2_5 = When::Parts::GeometricComplex.new(2,5, true)
479
+ assert_equal("1..4", reverse_1_4.to_s)
480
+ assert_equal("2..3", reverse_2_3.to_s)
481
+ unless Float::INFINITY == Float::MAX
482
+ assert_equal("-Infinity..Infinity", reverse_all.to_s)
483
+ assert_equal("-Infinity..Infinity", (reverse_2_3 | range_2_3).to_s)
484
+ end
485
+ assert_equal("1..2", (reverse_1_4 | range_2_5).to_s)
486
+ end
487
+ end
488
+ end