when_exe 0.2.100 → 0.3.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (193) hide show
  1. data/LICENSE.ja.txt +25 -25
  2. data/LICENSE.txt +31 -31
  3. data/bin/irb.rc +5 -0
  4. data/bin/locales.rb +2 -2
  5. data/bin/when.rb +16 -0
  6. data/bin/when.rb.config +7 -0
  7. data/lib/when_exe.rb +616 -14
  8. data/lib/when_exe/basictypes.rb +615 -0
  9. data/lib/when_exe/calendartypes.rb +1700 -0
  10. data/lib/when_exe/coordinates.rb +1936 -0
  11. data/lib/when_exe/core/compatibility.rb +54 -0
  12. data/lib/when_exe/core/duration.rb +72 -72
  13. data/lib/when_exe/core/extension.rb +382 -0
  14. data/lib/when_exe/ephemeris.rb +1845 -0
  15. data/lib/when_exe/googlecalendar.rb +140 -0
  16. data/lib/when_exe/icalendar.rb +1587 -0
  17. data/lib/when_exe/inspect.rb +1237 -0
  18. data/lib/when_exe/locales/af.rb +90 -0
  19. data/lib/when_exe/locales/ar.rb +145 -0
  20. data/lib/when_exe/locales/az.rb +90 -0
  21. data/lib/when_exe/locales/bg.rb +90 -0
  22. data/lib/when_exe/locales/bn.rb +94 -0
  23. data/lib/when_exe/locales/bs.rb +121 -0
  24. data/lib/when_exe/locales/ca.rb +92 -0
  25. data/lib/when_exe/locales/cs.rb +107 -0
  26. data/lib/when_exe/locales/cy.rb +150 -0
  27. data/lib/when_exe/locales/da.rb +84 -0
  28. data/lib/when_exe/locales/de.rb +92 -0
  29. data/lib/when_exe/locales/de_AT.rb +92 -0
  30. data/lib/when_exe/locales/de_CH.rb +92 -0
  31. data/lib/when_exe/locales/el.rb +93 -0
  32. data/lib/when_exe/locales/en.rb +88 -0
  33. data/lib/when_exe/locales/en_AU.rb +88 -0
  34. data/lib/when_exe/locales/en_CA.rb +88 -0
  35. data/lib/when_exe/locales/en_GB.rb +88 -0
  36. data/lib/when_exe/locales/en_IN.rb +88 -0
  37. data/lib/when_exe/locales/en_NZ.rb +88 -0
  38. data/lib/when_exe/locales/eo.rb +89 -0
  39. data/lib/when_exe/locales/es.rb +84 -0
  40. data/lib/when_exe/locales/es_419.rb +84 -0
  41. data/lib/when_exe/locales/es_AR.rb +84 -0
  42. data/lib/when_exe/locales/es_CL.rb +84 -0
  43. data/lib/when_exe/locales/es_CO.rb +84 -0
  44. data/lib/when_exe/locales/es_MX.rb +84 -0
  45. data/lib/when_exe/locales/es_PE.rb +85 -0
  46. data/lib/when_exe/locales/es_VE.rb +84 -0
  47. data/lib/when_exe/locales/et.rb +94 -0
  48. data/lib/when_exe/locales/eu.rb +95 -0
  49. data/lib/when_exe/locales/fa.rb +80 -0
  50. data/lib/when_exe/locales/fi.rb +89 -0
  51. data/lib/when_exe/locales/fr.rb +88 -0
  52. data/lib/when_exe/locales/fr_CA.rb +88 -0
  53. data/lib/when_exe/locales/fr_CH.rb +88 -0
  54. data/lib/when_exe/locales/gl.rb +81 -0
  55. data/lib/when_exe/locales/he.rb +84 -0
  56. data/lib/when_exe/locales/hi.rb +80 -0
  57. data/lib/when_exe/locales/hi_IN.rb +84 -0
  58. data/lib/when_exe/locales/hr.rb +128 -0
  59. data/lib/when_exe/locales/hu.rb +84 -0
  60. data/lib/when_exe/locales/id.rb +89 -0
  61. data/lib/when_exe/locales/is.rb +89 -0
  62. data/lib/when_exe/locales/it.rb +87 -0
  63. data/lib/when_exe/locales/it_CH.rb +87 -0
  64. data/lib/when_exe/locales/ja.rb +78 -0
  65. data/lib/when_exe/locales/kn.rb +86 -0
  66. data/lib/when_exe/locales/ko.rb +78 -0
  67. data/lib/when_exe/locales/links.rb +2342 -0
  68. data/lib/when_exe/locales/lo.rb +123 -0
  69. data/lib/when_exe/locales/locales.rb +91 -0
  70. data/lib/when_exe/locales/lt.rb +111 -0
  71. data/lib/when_exe/locales/lv.rb +118 -0
  72. data/lib/when_exe/locales/mk.rb +93 -0
  73. data/lib/when_exe/locales/mn.rb +80 -0
  74. data/lib/when_exe/locales/nb.rb +81 -0
  75. data/lib/when_exe/locales/ne.rb +81 -0
  76. data/lib/when_exe/locales/nl.rb +92 -0
  77. data/lib/when_exe/locales/nn.rb +73 -0
  78. data/lib/when_exe/locales/or.rb +84 -0
  79. data/lib/when_exe/locales/pl.rb +128 -0
  80. data/lib/when_exe/locales/pt.rb +88 -0
  81. data/lib/when_exe/locales/pt_BR.rb +88 -0
  82. data/lib/when_exe/locales/rm.rb +143 -0
  83. data/lib/when_exe/locales/ro.rb +105 -0
  84. data/lib/when_exe/locales/ru.rb +128 -0
  85. data/lib/when_exe/locales/sk.rb +109 -0
  86. data/lib/when_exe/locales/sl.rb +122 -0
  87. data/lib/when_exe/locales/sr.rb +122 -0
  88. data/lib/when_exe/locales/sv.rb +83 -0
  89. data/lib/when_exe/locales/sw.rb +89 -0
  90. data/lib/when_exe/locales/th.rb +78 -0
  91. data/lib/when_exe/locales/tl.rb +99 -0
  92. data/lib/when_exe/locales/tr.rb +96 -0
  93. data/lib/when_exe/locales/uk.rb +128 -0
  94. data/lib/when_exe/locales/uz.rb +128 -0
  95. data/lib/when_exe/locales/vi.rb +94 -0
  96. data/lib/when_exe/locales/wo.rb +82 -0
  97. data/lib/when_exe/locales/zh_CN.rb +77 -0
  98. data/lib/when_exe/locales/zh_HK.rb +77 -0
  99. data/lib/when_exe/locales/zh_TW.rb +77 -0
  100. data/lib/when_exe/mini_application.rb +252 -0
  101. data/lib/when_exe/parts/enumerator.rb +472 -0
  102. data/lib/when_exe/parts/geometric_complex.rb +379 -0
  103. data/lib/when_exe/parts/locale.rb +513 -0
  104. data/lib/when_exe/parts/method_cash.rb +207 -0
  105. data/lib/when_exe/parts/resource.rb +806 -0
  106. data/lib/when_exe/parts/timezone.rb +182 -0
  107. data/lib/when_exe/region/bahai.rb +145 -0
  108. data/lib/when_exe/region/balinese.rb +627 -0
  109. data/lib/when_exe/region/chinese.rb +896 -0
  110. data/lib/when_exe/region/chinese_calendar.rb +919 -0
  111. data/lib/when_exe/region/chinese_epoch.rb +1245 -0
  112. data/lib/when_exe/region/christian.rb +644 -0
  113. data/lib/when_exe/region/far_east.rb +192 -0
  114. data/lib/when_exe/region/french.rb +66 -0
  115. data/lib/when_exe/region/geologicalage.rb +639 -0
  116. data/lib/when_exe/region/indian.rb +1066 -0
  117. data/lib/when_exe/region/iranian.rb +66 -0
  118. data/lib/when_exe/region/islamic.rb +105 -0
  119. data/lib/when_exe/region/japanese.rb +851 -0
  120. data/lib/when_exe/region/japanese_notes.rb +964 -0
  121. data/lib/when_exe/region/japanese_residues.rb +1149 -0
  122. data/lib/when_exe/region/javanese.rb +228 -0
  123. data/lib/when_exe/region/jewish.rb +127 -0
  124. data/lib/when_exe/region/korean.rb +267 -0
  125. data/lib/when_exe/region/m17n.rb +115 -0
  126. data/lib/when_exe/region/martian.rb +215 -0
  127. data/lib/when_exe/region/mayan.rb +122 -0
  128. data/lib/when_exe/region/moon.rb +333 -0
  129. data/lib/when_exe/region/nihon_shoki.rb +73 -0
  130. data/lib/when_exe/region/planets.rb +585 -0
  131. data/lib/when_exe/region/pope.rb +298 -0
  132. data/lib/when_exe/region/residue.rb +229 -0
  133. data/lib/when_exe/region/roman.rb +325 -0
  134. data/lib/when_exe/region/ryukyu.rb +98 -0
  135. data/lib/when_exe/region/shire.rb +254 -0
  136. data/lib/when_exe/region/sun.rb +210 -0
  137. data/lib/when_exe/region/thai.rb +227 -0
  138. data/lib/when_exe/region/tibetan.rb +233 -0
  139. data/lib/when_exe/region/v50.rb +111 -0
  140. data/lib/when_exe/region/vietnamese.rb +173 -0
  141. data/lib/when_exe/region/world.rb +197 -0
  142. data/lib/when_exe/timestandard.rb +547 -0
  143. data/lib/when_exe/tmduration.rb +330 -330
  144. data/lib/when_exe/tmobjects.rb +1295 -0
  145. data/lib/when_exe/tmposition.rb +1955 -0
  146. data/lib/when_exe/tmreference.rb +1547 -0
  147. data/lib/when_exe/version.rb +10 -3
  148. data/link_to_online_documents +4 -0
  149. data/test/examples/JapanHolidays.ics +456 -0
  150. data/test/examples/Millennium.ics +17 -0
  151. data/test/examples/NewYork.ics +61 -0
  152. data/test/examples/Residue.m17n +135 -0
  153. data/test/examples/Spatial.m17n +179 -0
  154. data/test/examples/Terms.m17n +39 -0
  155. data/test/examples/Test.ics +53 -0
  156. data/test/examples/USA-DST.ics +61 -0
  157. data/test/examples/geometric_complex.rb +41 -0
  158. data/test/examples/sample.xml +14 -0
  159. data/test/examples/today.rb +61 -0
  160. data/test/test.rb +54 -19
  161. data/test/test.rb.config +1 -0
  162. data/test/test/basictypes.rb +368 -0
  163. data/test/test/calendartypes.rb +57 -0
  164. data/test/test/coordinates.rb +380 -0
  165. data/test/test/ephemeris.rb +127 -0
  166. data/test/test/googlecalendar.rb +167 -0
  167. data/test/test/icalendar.rb +848 -0
  168. data/test/test/inspect.rb +115 -0
  169. data/test/test/parts.rb +480 -0
  170. data/test/test/region/chinese.rb +161 -0
  171. data/test/test/region/french.rb +33 -0
  172. data/test/test/region/geologicalage.rb +14 -0
  173. data/test/test/region/indian.rb +55 -0
  174. data/test/test/region/iran.rb +54 -0
  175. data/test/test/region/islamic.rb +18 -0
  176. data/test/test/region/japanese.rb +62 -0
  177. data/test/test/region/jewish.rb +61 -0
  178. data/test/test/region/m17n.rb +181 -0
  179. data/test/test/region/mayan.rb +78 -0
  180. data/test/test/region/moon.rb +14 -0
  181. data/test/test/region/planets.rb +14 -0
  182. data/test/test/region/residue.rb +123 -0
  183. data/test/test/region/sun.rb +14 -0
  184. data/test/test/region/thai.rb +94 -0
  185. data/test/test/region/tibetan.rb +30 -0
  186. data/test/test/tmobjects.rb +356 -57
  187. data/test/test/tmposition.rb +237 -0
  188. data/test/test/tmreference.rb +95 -0
  189. data/when_exe.gemspec +2 -2
  190. metadata +187 -7
  191. data/doc/COPYING +0 -31
  192. data/doc/COPYING.ja +0 -25
  193. data/doc/document_url +0 -1
@@ -0,0 +1,115 @@
1
+ # -*- coding: utf-8 -*-
2
+ =begin
3
+ Copyright (C) 2011-2013 Takashi SUGA
4
+
5
+ You may use and/or modify this file according to the license
6
+ described in the LICENSE.txt file included in this archive.
7
+ =end
8
+
9
+ module Test
10
+
11
+ class Inspect < Test::Unit::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
+ assert_equal("2:", "%d:" % When::Coordinates::Pair.new(1,1))
23
+ assert_equal("1=", When.m17n("%d:") % When::Coordinates::Pair.new(1,1))
24
+
25
+ date = When.when?('2011-02-28T12:34:56+09:00')
26
+ assert_equal(["February", {""=>"February", "ja"=>"2月"}], [date.name(-1).to_s, date.name(-1).names])
27
+ assert_equal("Mon Feb 28 12:34:56 +0900 2011", date.strftime('%+'))
28
+
29
+ date = When.when?('2011-05-17T12:34:56', {:clock=>'+09:00'})
30
+ # assert_equal("5月", date.strftime('%.2b').translate('ja'))
31
+ assert_equal("05", date.strftime('%m'))
32
+ assert_equal("Tue May 17 12:34:56 +0900 2011", date.strftime('%+'))
33
+ # assert_equal("火 5月 17 12:34:56 +0900 2011", date.strftime('%+').translate('ja'))
34
+
35
+ clock = When.Clock('+09:00')
36
+ #pp clock.to_s
37
+ assert_equal("+09:00", clock.label.to_s)
38
+ assert_equal(nil, clock.referenceEvent)
39
+ assert_equal("T00+09:00", clock.referenceTime.to_s)
40
+ assert_equal("T*15:00:00Z", clock.utcReference.to_s)
41
+ end
42
+
43
+ def test__strftime_2
44
+ [['%c', 'ja', '2012/04/03 10:14:00'], ['%c', 'fr', '03 avril 2012 10:14:00'],
45
+ ['%x', 'ja', '2012/04/03' ], ['%x', 'fr', '03/04/2012' ],
46
+ ['%X', 'ja', '10:14:00' ], ['%X', 'fr', '10:14:00' ]
47
+ ].each do |sample|
48
+ assert_equal(sample[2], When.when?('2012-4-3T10:14:00').
49
+ strftime(sample[0], sample[1]))
50
+ end
51
+ end
52
+
53
+ def test__strftime_3
54
+ [['DateTime', 'ja', '2012/04/03 10:14:00' ], ['DateTime', 'fr', '03 avril 2012 10:14:00' ],
55
+ ['DateTimeLong', 'ja', '2012年04月03日(火) 10時14分00秒 +0000'], ['DateTimeLong', 'fr', 'mardi 03 avril 2012 10:14'],
56
+ ['DateTimeShort', 'ja', '12/04/03 10:14' ], ['DateTimeShort', 'fr', '03 avr 10:14' ],
57
+ ['Date', 'ja', '2012/04/03' ], ['Date', 'fr', '03/04/2012' ],
58
+ ['DateLong', 'ja', '2012年04月03日(火)' ], ['DateLong', 'fr', ' 3 avril 2012' ],
59
+ ['DateShort', 'ja', '04/03' ], ['DateShort', 'fr', ' 3 avr' ],
60
+ ['Time', 'ja', '10:14:00' ], ['Time', 'fr', '10:14:00' ]
61
+ ].each do |sample|
62
+ assert_equal(sample[2], When.when?('2012-4-3T10:14:00').
63
+ strftime(When.Resource('_m:CalendarFormats::'+sample[0]), sample[1]))
64
+ end
65
+ end
66
+
67
+ def test__name
68
+ month = When.when?('AP1393.1.1T12:34:56').name('month')
69
+ assert_equal("فروردین", month.translate('ar'))
70
+ end
71
+
72
+ def test__coordinates
73
+ date = When.when?('2012.3=16T12:34:56', {:frame=>When::CalendarTypes::ChineseLuniSolar.new({'timezone'=>9})})
74
+ assert_equal(2012, date.year )
75
+ assert_equal(When::Coordinates::Pair.new(3,1), date.month)
76
+ assert_equal( 16, date.day )
77
+ assert_equal( 12, date.hour )
78
+ assert_equal( 34, date.minute)
79
+ assert_equal( 56, date.second)
80
+ assert_equal( 4, date.ymon )
81
+ assert_equal( 105, date.yday )
82
+ assert_equal( 16, date.mday )
83
+ assert_equal( 0, date.wday )
84
+ end
85
+
86
+ def mweek(dow, day)
87
+ dow = (dow + 1) % 7
88
+ w,d = (day - 1).divmod(7)
89
+ (d < dow) ? w : w+1
90
+ end
91
+
92
+ def test__term
93
+ # [13,14,15].each do |d|
94
+ # 7.times do |i|
95
+ # p [d, i, mweek(i, d)]
96
+ # end
97
+ # end
98
+ # raise
99
+ format = ['%U %w %W %j', '%G-W%V-%u']
100
+ 7.times do |i|
101
+ 2.times do |k|
102
+ [ '1-1' , '1-2' , '1-3' , '1-4' , '1-5' , '1-6' , '1-7' , '1-8' ,
103
+ '12-24','12-25','12-26','12-27','12-28','12-29','12-30','12-31',].each do |m|
104
+ date1 = When.when?("#{2000+4*i+k}-#{m}")
105
+ expr0 = format.map {|f| date1.to_date.strftime(f)}
106
+ date2 = When.when?(expr0[1])
107
+ expr1 = format.map {|f| date1.strftime(f)}
108
+ expr2 = format.map {|f| date2.strftime(f)}
109
+ assert_equal([expr0,expr0,mweek(date1.to_i % 7, date1.day)], [expr1,expr2,date1.mweek])
110
+ end
111
+ end
112
+ end
113
+ end
114
+ end
115
+ end
@@ -0,0 +1,480 @@
1
+ # -*- coding: utf-8 -*-
2
+ =begin
3
+ Copyright (C) 2011-2012 Takashi SUGA
4
+
5
+ You may use and/or modify this file according to the license
6
+ described in the LICENSE.txt file included in this archive.
7
+ =end
8
+
9
+ module 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 Test::Parts
19
+
20
+ class MethodCash < Test::Unit::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 SnapShot < Test::Unit::TestCase
79
+ def test_nothing
80
+ end
81
+ end
82
+
83
+ class Locale < Test::Unit::TestCase
84
+ Term1 = When.m17n('Tokyo', 'zip')
85
+ Term2 = When.m17n(<<LABEL, <<NS, <<LOCALE)
86
+ [
87
+ Getsuyou
88
+ Monday
89
+ ]
90
+ LABEL
91
+ ISO, jwiki=http://ja.wikipedia.org/wiki/, ewiki=http://en.wikipedia.org/wiki/
92
+ NS
93
+ =jwiki:, en=ewiki:
94
+ LOCALE
95
+ Term3 = When.Resource('_co:CommonResidue::Week::Monday::Monday')
96
+
97
+ def test__locale
98
+ assert_equal("Tokyo", Term1.translate('en_US'))
99
+ assert_equal("Monday", Term2.translate('en_US'))
100
+ assert_equal("Monday", Term3.translate('en_US'))
101
+ end
102
+
103
+ def test__reference
104
+ assert_equal(nil, Term1.reference('ja_JP'))
105
+ assert_equal(nil, Term1.reference('en_US'))
106
+ assert_equal("http://ja.wikipedia.org/wiki/Getsuyou", Term2.reference('ja_JP'))
107
+ assert_equal("http://en.wikipedia.org/wiki/Monday", Term2.reference('en_US'))
108
+ assert_equal("http://ja.wikipedia.org/wiki/%E6%9C%88%E6%9B%9C%E6%97%A5", Term3.reference('ja_JP'))
109
+ end
110
+
111
+ def test__labels
112
+ assert_equal({""=>"Tokyo"}, Term1.names)
113
+ assert_equal({""=>"Getsuyou", "en"=>"Monday"}, Term2.names)
114
+ # assert_equal({""=>"Monday", "ja"=>"月曜日"}, Term3.names)
115
+ end
116
+
117
+ def test__link
118
+ assert_equal({},Term1.link)
119
+ assert_equal({""=>"http://ja.wikipedia.org/wiki/Getsuyou",
120
+ "en"=>"http://en.wikipedia.org/wiki/Monday"}, Term2.link)
121
+ assert_equal({"ja"=>"http://ja.wikipedia.org/wiki/%E6%9C%88%E6%9B%9C%E6%97%A5",
122
+ ""=>"http://en.wikipedia.org/wiki/Monday"}, Term3.link)
123
+ end
124
+
125
+ def test__prefix
126
+ date = When.when?('0594-09=12^Japanese')
127
+ assert_equal(["閏長月", String], [date.name('Month').label, date.name('Month').label.class])
128
+ assert_equal(["閏長月", String], [date.name('Month').to_s, date.name('Month').to_s.class])
129
+ assert_equal("閏長月", date.name('Month').translate('日本語'))
130
+ assert_equal("Intercalary 9th Month", date.name('Month').translate('en_US'))
131
+ end
132
+ end
133
+
134
+ class IRI < Test::Unit::TestCase
135
+ def test_nothing
136
+ end
137
+ end
138
+
139
+ class Enumerator < Test::Unit::TestCase
140
+
141
+ def test_nothing
142
+ end
143
+
144
+ class Array < Test::Unit::TestCase
145
+ def test_nothing
146
+ end
147
+ end
148
+
149
+ class Integrated < Test::Unit::TestCase
150
+ def test_nothing
151
+ end
152
+ end
153
+ end
154
+
155
+ class GeometricComplex < Test::Unit::TestCase
156
+
157
+ def test__include
158
+
159
+ sample = [false, false, false, false, false]
160
+ complex = When::Parts::GeometricComplex.new(false)
161
+ assert_equal(nil, complex.exclude_end?)
162
+ (1..5).each do |i|
163
+ assert_equal(sample.shift, complex.include?(i))
164
+ end
165
+
166
+ sample = [true, true, true, true, true]
167
+ complex = When::Parts::GeometricComplex.new(true)
168
+ assert_equal(nil, complex.exclude_end?)
169
+ (1..5).each do |i|
170
+ assert_equal(sample.shift, complex.include?(i))
171
+ end
172
+
173
+ sample = [false, true, true, true, false]
174
+ complex = When::Parts::GeometricComplex.new(2..4)
175
+ assert_equal(false, complex.exclude_end?)
176
+ (1..5).each do |i|
177
+ assert_equal(sample.shift, complex.include?(i))
178
+ end
179
+
180
+ sample = [false, true, true, false, false]
181
+ complex = When::Parts::GeometricComplex.new(2...4)
182
+ assert_equal(true, complex.exclude_end?)
183
+ (1..5).each do |i|
184
+ assert_equal(sample.shift, complex.include?(i))
185
+ end
186
+
187
+ sample = [true, false, false, false, true]
188
+ complex = -When::Parts::GeometricComplex.new(2..4)
189
+ assert_equal(true, complex.exclude_end?)
190
+ (1..5).each do |i|
191
+ assert_equal(sample.shift, complex.include?(i))
192
+ end
193
+
194
+ sample = [true, false, false, true, true]
195
+ complex = -When::Parts::GeometricComplex.new(2...4)
196
+ assert_equal(false, complex.exclude_end?)
197
+ (1..5).each do |i|
198
+ assert_equal(sample.shift, complex.include?(i))
199
+ end
200
+
201
+ period_1_2 = When::Parts::GeometricComplex.new(1..2)
202
+ period_2_3 = When::Parts::GeometricComplex.new(2..3)
203
+ period_3_4 = When::Parts::GeometricComplex.new(3..4)
204
+ period_4_5 = When::Parts::GeometricComplex.new(4..5)
205
+ period_5_6 = When::Parts::GeometricComplex.new(5..6)
206
+
207
+ period_2_4 = When::Parts::GeometricComplex.new(2..4)
208
+ period_3_6 = When::Parts::GeometricComplex.new(3..6)
209
+ period_4_6 = When::Parts::GeometricComplex.new(4..6)
210
+ period_1_6 = When::Parts::GeometricComplex.new(1..6)
211
+
212
+ [[false, period_1_2, period_4_6],
213
+ [false, period_1_2, period_2_4],
214
+ [false, period_2_4, period_3_6],
215
+ [false, period_2_3, period_2_4],
216
+ [true, period_2_4, period_2_3],
217
+
218
+ [false, period_2_4, period_1_6],
219
+ [true, period_1_6, period_2_4],
220
+ [true, period_2_4, period_2_4],
221
+
222
+ [false, period_3_6, period_2_4],
223
+ [false, period_3_4, period_2_4],
224
+ [true, period_2_4, period_3_4],
225
+ [false, period_4_5, period_2_4],
226
+ [false, period_5_6, period_2_4]].each do |sample|
227
+ assert_equal(sample[0], sample[1].include?(sample[2]))
228
+ end
229
+
230
+ period_1_2 = When::Parts::GeometricComplex.new(1...2)
231
+ period_2_3 = When::Parts::GeometricComplex.new(2...3)
232
+ period_3_4 = When::Parts::GeometricComplex.new(3...4)
233
+ period_4_5 = When::Parts::GeometricComplex.new(4...5)
234
+ period_5_6 = When::Parts::GeometricComplex.new(5...6)
235
+
236
+ period_2_4 = When::Parts::GeometricComplex.new(2...4)
237
+ period_3_6 = When::Parts::GeometricComplex.new(3...6)
238
+ period_4_6 = When::Parts::GeometricComplex.new(4...6)
239
+ period_1_6 = When::Parts::GeometricComplex.new(1...6)
240
+
241
+ [[false, period_1_2, period_4_6],
242
+ [false, period_1_2, period_2_4],
243
+ [false, period_2_4, period_3_6],
244
+ [false, period_2_3, period_2_4],
245
+ [true, period_2_4, period_2_3],
246
+
247
+ [false, period_2_4, period_1_6],
248
+ [true, period_1_6, period_2_4],
249
+ [true, period_2_4, period_2_4],
250
+
251
+ [false, period_3_6, period_2_4],
252
+ [false, period_3_4, period_2_4],
253
+ [true, period_2_4, period_3_4],
254
+ [false, period_4_5, period_2_4],
255
+ [false, period_5_6, period_2_4]].each do |sample|
256
+ assert_equal(sample[0], sample[1].include?(sample[2]))
257
+ end
258
+
259
+ period_1_2 = -When::Parts::GeometricComplex.new(1..2)
260
+ period_2_3 = -When::Parts::GeometricComplex.new(2..3)
261
+ period_3_4 = -When::Parts::GeometricComplex.new(3..4)
262
+ period_4_5 = -When::Parts::GeometricComplex.new(4..5)
263
+ period_5_6 = -When::Parts::GeometricComplex.new(5..6)
264
+
265
+ period_2_4 = -When::Parts::GeometricComplex.new(2..4)
266
+ period_3_6 = -When::Parts::GeometricComplex.new(3..6)
267
+ period_4_6 = -When::Parts::GeometricComplex.new(4..6)
268
+ period_1_6 = -When::Parts::GeometricComplex.new(1..6)
269
+
270
+ [[false, period_4_6, period_1_2],
271
+ [false, period_2_4, period_1_2],
272
+ [false, period_3_6, period_2_4],
273
+ [false, period_2_4, period_2_3],
274
+ [true, period_2_3, period_2_4],
275
+
276
+ [false, period_1_6, period_2_4],
277
+ [true, period_2_4, period_1_6],
278
+ [true, period_2_4, period_2_4],
279
+
280
+ [false, period_2_4, period_3_6],
281
+ [false, period_2_4, period_3_4],
282
+ [true, period_3_4, period_2_4],
283
+ [false, period_2_4, period_4_5],
284
+ [false, period_2_4, period_5_6]].each do |sample|
285
+ assert_equal(sample[0], sample[1].include?(sample[2]))
286
+ end
287
+
288
+ period_1_2 = -When::Parts::GeometricComplex.new(1...2)
289
+ period_2_3 = -When::Parts::GeometricComplex.new(2...3)
290
+ period_3_4 = -When::Parts::GeometricComplex.new(3...4)
291
+ period_4_5 = -When::Parts::GeometricComplex.new(4...5)
292
+ period_5_6 = -When::Parts::GeometricComplex.new(5...6)
293
+
294
+ period_2_4 = -When::Parts::GeometricComplex.new(2...4)
295
+ period_3_6 = -When::Parts::GeometricComplex.new(3...6)
296
+ period_4_6 = -When::Parts::GeometricComplex.new(4...6)
297
+ period_1_6 = -When::Parts::GeometricComplex.new(1...6)
298
+
299
+ [[false, period_4_6, period_1_2],
300
+ [false, period_2_4, period_1_2],
301
+ [false, period_3_6, period_2_4],
302
+ [false, period_2_4, period_2_3],
303
+ [true, period_2_3, period_2_4],
304
+
305
+ [false, period_1_6, period_2_4],
306
+ [true, period_2_4, period_1_6],
307
+ [true, period_2_4, period_2_4],
308
+
309
+ [false, period_2_4, period_3_6],
310
+ [false, period_2_4, period_3_4],
311
+ [true, period_3_4, period_2_4],
312
+ [false, period_2_4, period_4_5],
313
+ [false, period_2_4, period_5_6]].each do |sample|
314
+ assert_equal(sample[0], sample[1].include?(sample[2]))
315
+ end
316
+ end
317
+
318
+ def test__union
319
+
320
+ sample = [false, true, false, true, true, false]
321
+ complex = When::Parts::GeometricComplex.new(3..4)
322
+ complex |= 1
323
+ (0..5).each do |i|
324
+ assert_equal(sample.shift, complex.include?(i))
325
+ end
326
+
327
+ sample = [true, false, true, false, false, true]
328
+ complex = When::Parts::GeometricComplex.new(3..4)
329
+ complex |= 1
330
+ complex = -complex
331
+ (0..5).each do |i|
332
+ assert_equal(sample.shift, complex.include?(i))
333
+ end
334
+
335
+ sample = [false, true, false, true, false, false]
336
+ complex = When::Parts::GeometricComplex.new(3...4)
337
+ complex |= 1
338
+ (0..5).each do |i|
339
+ assert_equal(sample.shift, complex.include?(i))
340
+ end
341
+
342
+ sample = [true, false, true, false, true, true]
343
+ complex = When::Parts::GeometricComplex.new(3...4)
344
+ complex |= 1
345
+ complex = -complex
346
+ (0..5).each do |i|
347
+ assert_equal(sample.shift, complex.include?(i))
348
+ end
349
+
350
+ complex = When::Parts::GeometricComplex.new(3..5)
351
+ (3..5).each do |i|
352
+ union = complex | i
353
+ assert_equal(complex, union)
354
+ end
355
+
356
+ assert_equal(When::Parts::GeometricComplex.new(3..5),
357
+ When::Parts::GeometricComplex.new(3...5) | 5)
358
+
359
+ null = When::Parts::GeometricComplex.new(false)
360
+ all = When::Parts::GeometricComplex.new(true)
361
+ period_1_2 = When::Parts::GeometricComplex.new(1..2)
362
+ period_2_3 = When::Parts::GeometricComplex.new(2..3)
363
+ period_3_4 = When::Parts::GeometricComplex.new(3..4)
364
+ period_4_5 = When::Parts::GeometricComplex.new(4..5)
365
+ period_5_6 = When::Parts::GeometricComplex.new(5..6)
366
+
367
+ period_1_4 = When::Parts::GeometricComplex.new(1..4)
368
+ period_2_4 = When::Parts::GeometricComplex.new(2..4)
369
+ period_2_5 = When::Parts::GeometricComplex.new(2..5)
370
+ period_2_6 = When::Parts::GeometricComplex.new(2..6)
371
+ period_3_6 = When::Parts::GeometricComplex.new(3..6)
372
+ period_4_6 = When::Parts::GeometricComplex.new(4..6)
373
+ period_1_6 = When::Parts::GeometricComplex.new(1..6)
374
+
375
+ period_1_2_4_6 = When::Parts::GeometricComplex.new([[1,true],[2,true],[4,true],[6,true]])
376
+ period_2_4_5_6 = When::Parts::GeometricComplex.new([[2,true],[4,true],[5,true],[6,true]])
377
+
378
+ [[period_1_2_4_6, null, period_1_2_4_6],
379
+ [period_1_2_4_6, period_1_2_4_6, null],
380
+ [all, all, period_1_2_4_6],
381
+ [all, period_1_2_4_6, all],
382
+ [period_1_2_4_6, period_1_2, period_4_6],
383
+ [period_1_4, period_1_2, period_2_4],
384
+ [period_2_6, period_2_4, period_3_6],
385
+ [period_2_4, period_2_3, period_2_4],
386
+ [period_2_4, period_2_4, period_2_3],
387
+
388
+ [period_1_6, period_2_4, period_1_6],
389
+ [period_1_6, period_1_6, period_2_4],
390
+ [period_2_4, period_2_4, period_2_4],
391
+
392
+ [period_2_6, period_3_6, period_2_4],
393
+ [period_2_4, period_3_4, period_2_4],
394
+ [period_2_4, period_2_4, period_3_4],
395
+ [period_2_5, period_4_5, period_2_4],
396
+ [period_2_4_5_6, period_5_6, period_2_4]].each do |sample|
397
+ assert_equal(sample[0], sample[1] | sample[2])
398
+ end
399
+
400
+ period_1_2 = When::Parts::GeometricComplex.new(1...2)
401
+ period_2_3 = When::Parts::GeometricComplex.new(2...3)
402
+ period_3_4 = When::Parts::GeometricComplex.new(3...4)
403
+ period_4_5 = When::Parts::GeometricComplex.new(4...5)
404
+ period_5_6 = When::Parts::GeometricComplex.new(5...6)
405
+
406
+ period_1_4 = When::Parts::GeometricComplex.new(1...4)
407
+ period_2_4 = When::Parts::GeometricComplex.new(2...4)
408
+ period_2_5 = When::Parts::GeometricComplex.new(2...5)
409
+ period_2_6 = When::Parts::GeometricComplex.new(2...6)
410
+ period_3_6 = When::Parts::GeometricComplex.new(3...6)
411
+ period_4_6 = When::Parts::GeometricComplex.new(4...6)
412
+ period_1_6 = When::Parts::GeometricComplex.new(1...6)
413
+
414
+ period_1_2_4_6 = When::Parts::GeometricComplex.new([[1,true],[2,false],[4,true],[6,false]])
415
+ period_2_4_5_6 = When::Parts::GeometricComplex.new([[2,true],[4,false],[5,true],[6,false]])
416
+
417
+ [[period_1_2_4_6, null, period_1_2_4_6],
418
+ [period_1_2_4_6, period_1_2_4_6, null],
419
+ [all, all, period_1_2_4_6],
420
+ [all, period_1_2_4_6, all],
421
+ [period_1_2_4_6, period_1_2, period_4_6],
422
+ [period_1_4, period_1_2, period_2_4],
423
+ [period_2_6, period_2_4, period_3_6],
424
+ [period_2_4, period_2_3, period_2_4],
425
+ [period_2_4, period_2_4, period_2_3],
426
+
427
+ [period_1_6, period_2_4, period_1_6],
428
+ [period_1_6, period_1_6, period_2_4],
429
+ [period_2_4, period_2_4, period_2_4],
430
+
431
+ [period_2_6, period_3_6, period_2_4],
432
+ [period_2_4, period_3_4, period_2_4],
433
+ [period_2_4, period_2_4, period_3_4],
434
+ [period_2_5, period_4_5, period_2_4],
435
+ [period_2_4_5_6, period_5_6, period_2_4]].each do |sample|
436
+ assert_equal(sample[0], sample[1] | sample[2])
437
+ end
438
+ end
439
+
440
+ def test__include_in_sample
441
+ range_1_4 = When::Parts::GeometricComplex.new(1,4)
442
+ range_2_2 = When::Parts::GeometricComplex.new(2)
443
+ range_2_3 = When::Parts::GeometricComplex.new(2,3)
444
+ range_2_5 = When::Parts::GeometricComplex.new(2,5)
445
+ range_4_4 = When::Parts::GeometricComplex.new(4)
446
+ assert_equal(true, range_1_4.include?(range_2_2))
447
+ assert_equal(true, range_1_4.include?(range_2_3))
448
+ assert_equal(false, range_1_4.include?(range_2_5))
449
+ assert_equal(false, range_1_4.include?(range_4_4))
450
+ end
451
+
452
+ def test__union_in_sample
453
+ #range_null = When::Parts::GeometricComplex.new()
454
+ #range_1_1 = When::Parts::GeometricComplex.new(1)
455
+ range_1_4 = When::Parts::GeometricComplex.new(1,4)
456
+ range_2_2 = When::Parts::GeometricComplex.new(2)
457
+ range_2_3 = When::Parts::GeometricComplex.new(2,3)
458
+ range_2_5 = When::Parts::GeometricComplex.new(2,5)
459
+ range_4_4 = When::Parts::GeometricComplex.new(4)
460
+ assert_equal("1...4", range_1_4.to_s)
461
+ assert_equal("2...3", range_2_3.to_s)
462
+ sample = [1, 2, 3]
463
+ range_1_4.each {|x| assert_equal(sample.shift, x)}
464
+ assert_equal("4..4", range_4_4.to_s)
465
+ assert_equal("1...4", (range_1_4 | range_2_3).to_s)
466
+ range_1_5 = range_1_4 | range_2_5
467
+ assert_equal("1...5", range_1_5.to_s)
468
+ assert_equal("1..4", (range_1_4 | range_4_4).to_s)
469
+ reverse_all = When::Parts::GeometricComplex.new(true)
470
+ reverse_1_4 = When::Parts::GeometricComplex.new(1,4, true)
471
+ reverse_2_3 = When::Parts::GeometricComplex.new(2,3, true)
472
+ reverse_2_5 = When::Parts::GeometricComplex.new(2,5, true)
473
+ assert_equal("..", reverse_all.to_s)
474
+ assert_equal("1..4", reverse_1_4.to_s)
475
+ assert_equal("2..3", reverse_2_3.to_s)
476
+ assert_equal("..", (reverse_2_3 | range_2_3).to_s)
477
+ assert_equal("1..2", (reverse_1_4 | range_2_5).to_s)
478
+ end
479
+ end
480
+ end