texp 0.0.3 → 0.0.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/ChangeLog +36 -2
- data/README +92 -0
- data/Rakefile +26 -1
- data/TAGS +369 -0
- data/lib/texp.rb +6 -1
- data/lib/texp/base.rb +139 -10
- data/lib/texp/builder.rb +254 -0
- data/lib/texp/day_interval.rb +19 -15
- data/lib/texp/day_of_month.rb +1 -7
- data/lib/texp/day_of_week.rb +1 -7
- data/lib/texp/dsl.rb +338 -0
- data/lib/texp/errors.rb +18 -0
- data/lib/texp/every_day.rb +1 -5
- data/lib/texp/logic.rb +16 -40
- data/lib/texp/month.rb +1 -6
- data/lib/texp/operators.rb +53 -0
- data/lib/texp/parse.rb +9 -27
- data/lib/texp/time_ext.rb +7 -0
- data/lib/texp/version.rb +3 -0
- data/lib/texp/week.rb +1 -7
- data/lib/texp/window.rb +30 -12
- data/lib/texp/year.rb +1 -6
- data/test/texp/base_test.rb +82 -0
- data/test/texp/day_interval_test.rb +24 -12
- data/test/texp/day_of_month_test.rb +10 -10
- data/test/texp/day_of_week_test.rb +14 -14
- data/test/texp/dsl_test.rb +288 -0
- data/test/texp/every_day_test.rb +1 -1
- data/test/texp/ext_test.rb +3 -3
- data/test/texp/logic_test.rb +18 -18
- data/test/texp/month_test.rb +3 -3
- data/test/texp/operators_test.rb +52 -0
- data/test/texp/parse_test.rb +39 -39
- data/test/texp/time_ext_test.rb +8 -0
- data/test/texp/week_test.rb +19 -19
- data/test/texp/window_test.rb +41 -12
- data/test/texp/year_test.rb +7 -7
- data/test/texp_tests.rb +27 -0
- metadata +14 -6
- data/lib/texp/core.rb +0 -41
- data/lib/texp/hash_builder.rb +0 -44
- data/test/texp/hash_test.rb +0 -26
- data/test/texp/logic_text_test.rb +0 -0
@@ -1,22 +1,34 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
|
3
|
-
require 'test/
|
4
|
-
require 'date'
|
5
|
-
require 'texp'
|
3
|
+
require 'test/texp_tests'
|
6
4
|
|
7
5
|
class DayIntervalTest < Test::Unit::TestCase
|
8
6
|
|
9
7
|
def test_day_interval
|
10
8
|
te = TExp::DayInterval.new(Date.parse("Feb 10, 2008"), 3)
|
11
|
-
assert te.
|
12
|
-
assert ! te.
|
13
|
-
assert ! te.
|
14
|
-
assert te.
|
15
|
-
assert ! te.
|
16
|
-
assert ! te.
|
17
|
-
assert te.
|
18
|
-
assert ! te.
|
19
|
-
assert ! te.
|
9
|
+
assert te.includes?(Date.parse("Feb 10, 2008"))
|
10
|
+
assert ! te.includes?(Date.parse("Feb 11, 2008"))
|
11
|
+
assert ! te.includes?(Date.parse("Feb 12, 2008"))
|
12
|
+
assert te.includes?(Date.parse("Feb 13, 2008"))
|
13
|
+
assert ! te.includes?(Date.parse("Feb 14, 2008"))
|
14
|
+
assert ! te.includes?(Date.parse("Feb 15, 2008"))
|
15
|
+
assert te.includes?(Date.parse("Feb 16, 2008"))
|
16
|
+
assert ! te.includes?(Date.parse("Feb 17, 2008"))
|
17
|
+
assert ! te.includes?(Date.parse("Feb 18, 2008"))
|
18
|
+
end
|
19
|
+
|
20
|
+
def test_day_interval_without_start_date
|
21
|
+
te = TExp::DayInterval.new(0, 3)
|
22
|
+
assert ! te.includes?(Date.parse("Feb 10, 2008"))
|
23
|
+
assert_equal "0,3i", te.to_s
|
24
|
+
assert_equal "0,3i", TExp.parse("0,3i").to_s
|
25
|
+
end
|
26
|
+
|
27
|
+
def test_day_interval_excludes_dates_before_start
|
28
|
+
date = d("Mar 1, 2008")
|
29
|
+
te = TExp::DayInterval.new(date, 3)
|
30
|
+
|
31
|
+
assert_not_includes te, date-3, date-2, date-1
|
20
32
|
end
|
21
33
|
end
|
22
34
|
|
@@ -8,20 +8,20 @@ class DayOfMonthTest < Test::Unit::TestCase
|
|
8
8
|
|
9
9
|
def test_day_of_month_with_single_arg
|
10
10
|
te = TExp::DayOfMonth.new(14)
|
11
|
-
assert te.
|
12
|
-
assert te.
|
13
|
-
assert ! te.
|
11
|
+
assert te.includes?(Date.parse("Dec 14, 2006"))
|
12
|
+
assert te.includes?(Date.parse("Feb 14, 2008"))
|
13
|
+
assert ! te.includes?(Date.parse("Feb 15, 2008"))
|
14
14
|
end
|
15
15
|
|
16
16
|
def test_day_of_include_with_one_day
|
17
17
|
te = TExp::DayOfMonth.new([10, 14, 16])
|
18
|
-
assert te.
|
19
|
-
assert ! te.
|
20
|
-
assert ! te.
|
21
|
-
assert ! te.
|
22
|
-
assert te.
|
23
|
-
assert ! te.
|
24
|
-
assert te.
|
18
|
+
assert te.includes?(Date.parse("Feb 10, 2008"))
|
19
|
+
assert ! te.includes?(Date.parse("Feb 11, 2008"))
|
20
|
+
assert ! te.includes?(Date.parse("Feb 12, 2008"))
|
21
|
+
assert ! te.includes?(Date.parse("Feb 13, 2008"))
|
22
|
+
assert te.includes?(Date.parse("Feb 14, 2008"))
|
23
|
+
assert ! te.includes?(Date.parse("Feb 15, 2008"))
|
24
|
+
assert te.includes?(Date.parse("Feb 16, 2008"))
|
25
25
|
end
|
26
26
|
end
|
27
27
|
|
@@ -8,24 +8,24 @@ class DayOfWeekTest < Test::Unit::TestCase
|
|
8
8
|
|
9
9
|
def test_day_of_week_include_with_one_day
|
10
10
|
te = TExp::DayOfWeek.new([1])
|
11
|
-
assert ! te.
|
12
|
-
assert te.
|
13
|
-
assert ! te.
|
14
|
-
assert ! te.
|
15
|
-
assert ! te.
|
16
|
-
assert ! te.
|
17
|
-
assert ! te.
|
11
|
+
assert ! te.includes?(Date.parse("Feb 10, 2008"))
|
12
|
+
assert te.includes?(Date.parse("Feb 11, 2008"))
|
13
|
+
assert ! te.includes?(Date.parse("Feb 12, 2008"))
|
14
|
+
assert ! te.includes?(Date.parse("Feb 13, 2008"))
|
15
|
+
assert ! te.includes?(Date.parse("Feb 14, 2008"))
|
16
|
+
assert ! te.includes?(Date.parse("Feb 15, 2008"))
|
17
|
+
assert ! te.includes?(Date.parse("Feb 16, 2008"))
|
18
18
|
end
|
19
19
|
|
20
20
|
def test_day_of_week_include_with_several_days
|
21
21
|
te = TExp::DayOfWeek.new([1, 3, 5])
|
22
|
-
assert ! te.
|
23
|
-
assert te.
|
24
|
-
assert ! te.
|
25
|
-
assert te.
|
26
|
-
assert ! te.
|
27
|
-
assert te.
|
28
|
-
assert ! te.
|
22
|
+
assert ! te.includes?(Date.parse("Feb 10, 2008"))
|
23
|
+
assert te.includes?(Date.parse("Feb 11, 2008"))
|
24
|
+
assert ! te.includes?(Date.parse("Feb 12, 2008"))
|
25
|
+
assert te.includes?(Date.parse("Feb 13, 2008"))
|
26
|
+
assert ! te.includes?(Date.parse("Feb 14, 2008"))
|
27
|
+
assert te.includes?(Date.parse("Feb 15, 2008"))
|
28
|
+
assert ! te.includes?(Date.parse("Feb 16, 2008"))
|
29
29
|
end
|
30
30
|
end
|
31
31
|
|
@@ -0,0 +1,288 @@
|
|
1
|
+
require 'test/texp_tests'
|
2
|
+
require 'texp'
|
3
|
+
|
4
|
+
class BuilderTest < Test::Unit::TestCase
|
5
|
+
def test_day_builder
|
6
|
+
date = d("Mar 12, 2008")
|
7
|
+
te = TExp.day(12)
|
8
|
+
|
9
|
+
assert_includes te, date, date+31, date+365
|
10
|
+
assert_not_includes te, date+1, date-1
|
11
|
+
end
|
12
|
+
|
13
|
+
def test_day_builder_with_lists
|
14
|
+
date = d("Mar 12, 2008")
|
15
|
+
te = TExp.day(12, 13)
|
16
|
+
|
17
|
+
assert_includes te, date, date+1, date+31, date+32, date+365, date+366
|
18
|
+
assert_not_includes te, date+2, date-1
|
19
|
+
end
|
20
|
+
|
21
|
+
def test_week_builder
|
22
|
+
date = d("Mar 12, 2008")
|
23
|
+
te = TExp.week(2)
|
24
|
+
|
25
|
+
assert_includes te, date, date+1
|
26
|
+
assert_not_includes te, date+7, date-7
|
27
|
+
end
|
28
|
+
|
29
|
+
def test_week_builder_with_lists
|
30
|
+
date = d("Mar 12, 2008")
|
31
|
+
te = TExp.week(2,-1)
|
32
|
+
|
33
|
+
assert_includes te, date, date+1, d("Mar 28, 2008")
|
34
|
+
assert_not_includes te, date+7, date-7
|
35
|
+
end
|
36
|
+
|
37
|
+
def test_week_builder_with_symbol_weeks
|
38
|
+
date = d("Mar 12, 2008")
|
39
|
+
te = TExp.week(:second, :last)
|
40
|
+
|
41
|
+
assert_includes te, date, date+1, d("Mar 28, 2008")
|
42
|
+
assert_not_includes te, date+7, date-7
|
43
|
+
end
|
44
|
+
|
45
|
+
def test_month_builder
|
46
|
+
date = d("Mar 12, 2008")
|
47
|
+
te = TExp.month(3)
|
48
|
+
|
49
|
+
assert_includes te, date, date+1
|
50
|
+
assert_not_includes te, date+31
|
51
|
+
end
|
52
|
+
|
53
|
+
def test_month_builder_with_lists
|
54
|
+
date = d("Mar 12, 2008")
|
55
|
+
te = TExp.month(3,4)
|
56
|
+
|
57
|
+
assert_includes te, date, date+1, date+31
|
58
|
+
assert_not_includes te, date+62
|
59
|
+
end
|
60
|
+
|
61
|
+
def test_month_builder_with_string_months
|
62
|
+
date = d("Jan 1, 2008")
|
63
|
+
te = TExp.month("January", :feb)
|
64
|
+
|
65
|
+
assert_includes te, date, date+1, date+32
|
66
|
+
assert_not_includes te, date+60
|
67
|
+
end
|
68
|
+
|
69
|
+
def test_year_builder
|
70
|
+
date = d("Mar 12, 2008")
|
71
|
+
te = TExp.year(2008)
|
72
|
+
|
73
|
+
assert_includes te, date, date+1
|
74
|
+
assert_not_includes te, date+365
|
75
|
+
end
|
76
|
+
|
77
|
+
def test_year_builder_with_list
|
78
|
+
date = d("Mar 12, 2008")
|
79
|
+
te = TExp.year(2008, 2009)
|
80
|
+
|
81
|
+
assert_includes te, date, date+1, date+365
|
82
|
+
assert_not_includes te, date-365, date + 2*365
|
83
|
+
end
|
84
|
+
|
85
|
+
def test_on_builder_with_day_month
|
86
|
+
date = d("Mar 12, 2008")
|
87
|
+
te = TExp.on(12, 3)
|
88
|
+
|
89
|
+
assert_includes te, date, date+365
|
90
|
+
assert_not_includes te, date-1, date+1, date+31
|
91
|
+
end
|
92
|
+
|
93
|
+
def test_on_builder_with_day_and_string_month
|
94
|
+
date = d("Mar 12, 2008")
|
95
|
+
te = TExp.on(12, "Mar")
|
96
|
+
|
97
|
+
assert_includes te, date, date+365
|
98
|
+
assert_not_includes te, date-1, date+1, date+31
|
99
|
+
end
|
100
|
+
|
101
|
+
def test_on_builder_with_string_date
|
102
|
+
date = d("Mar 12, 2008")
|
103
|
+
te = TExp.on("Mar 12, 2008")
|
104
|
+
|
105
|
+
assert_includes te, date
|
106
|
+
assert_not_includes te, date-1, date+1, date+31, date+365
|
107
|
+
end
|
108
|
+
|
109
|
+
def test_on_builder_with_date
|
110
|
+
date = d("Mar 12, 2008")
|
111
|
+
te = TExp.on(date)
|
112
|
+
|
113
|
+
assert_includes te, date
|
114
|
+
assert_not_includes te, date-1, date+1, date+31, date+365
|
115
|
+
end
|
116
|
+
|
117
|
+
def test_on_builder_with_day_month_year
|
118
|
+
date = d("Mar 12, 2008")
|
119
|
+
te = TExp.on(12, 3, 2008)
|
120
|
+
|
121
|
+
assert_includes te, date
|
122
|
+
assert_not_includes te, date-1, date+1, date+31, date+365
|
123
|
+
end
|
124
|
+
|
125
|
+
def test_on_builder_with_day_string_month_and_year
|
126
|
+
date = d("Mar 12, 2008")
|
127
|
+
te = TExp.on(12, "March", 2008)
|
128
|
+
|
129
|
+
assert_includes te, date
|
130
|
+
assert_not_includes te, date-1, date+1, date+31, date+365
|
131
|
+
end
|
132
|
+
|
133
|
+
def test_on_builder_with_time
|
134
|
+
date = Date.today
|
135
|
+
te = TExp.on(Time.now)
|
136
|
+
|
137
|
+
assert_includes te, date
|
138
|
+
assert_not_includes te, date-1, date+1, date+31, date+365
|
139
|
+
end
|
140
|
+
|
141
|
+
def test_on_builder_arbitrary_to_string
|
142
|
+
obj = Object.new
|
143
|
+
def obj.to_s
|
144
|
+
"Nov 18, 1956"
|
145
|
+
end
|
146
|
+
|
147
|
+
date = d("Nov 18, 1956")
|
148
|
+
te = TExp.on(obj)
|
149
|
+
|
150
|
+
assert_includes te, date
|
151
|
+
assert_not_includes te, date-1, date+1, date+31, date+365
|
152
|
+
end
|
153
|
+
|
154
|
+
def test_on_builder_with_invalid_arguments
|
155
|
+
assert_raise(ArgumentError) do TExp.on(1) end
|
156
|
+
assert_raise(ArgumentError) do TExp.on(1,2,3,4) end
|
157
|
+
assert_raise(ArgumentError) do TExp.on(nil, nil) end
|
158
|
+
assert_raise(ArgumentError) do TExp.on(0, 1) end
|
159
|
+
assert_raise(ArgumentError) do TExp.on(1, 0) end
|
160
|
+
assert_raise(ArgumentError) do TExp.on(32, 1) end
|
161
|
+
assert_raise(ArgumentError) do TExp.on(1, 13) end
|
162
|
+
assert_raise(ArgumentError) do TExp.on(0, 1, 2008) end
|
163
|
+
assert_raise(ArgumentError) do TExp.on(1, 0, 2008) end
|
164
|
+
assert_raise(ArgumentError) do TExp.on(32, 1, 2008) end
|
165
|
+
assert_raise(ArgumentError) do TExp.on(1, 13, 2008) end
|
166
|
+
assert_raise(ArgumentError) do TExp.on(1, 'nox') end
|
167
|
+
assert_raise(ArgumentError) do TExp.on(1, 'nox', 2008) end
|
168
|
+
end
|
169
|
+
|
170
|
+
def test_dow_builder
|
171
|
+
date = d("Mar 4, 2008")
|
172
|
+
[
|
173
|
+
TExp.dow(2),
|
174
|
+
TExp.dow("Tue"),
|
175
|
+
TExp.dow(:tuesday)
|
176
|
+
].each do |te|
|
177
|
+
assert_includes te, date, date+7
|
178
|
+
assert_not_includes te, date-1, date+1
|
179
|
+
end
|
180
|
+
end
|
181
|
+
|
182
|
+
def test_dow_builder_with_lists
|
183
|
+
date = d("Mar 3, 2008")
|
184
|
+
[
|
185
|
+
TExp.dow(1, 3, 5),
|
186
|
+
TExp.dow("Mon", "we", "FRIDAY"),
|
187
|
+
TExp.dow(:mon, :wed, :fr)
|
188
|
+
].each do |te|
|
189
|
+
assert_includes te, date, date+2, date+4
|
190
|
+
assert_not_includes te, date-1, date+1, date+3, date+5
|
191
|
+
end
|
192
|
+
end
|
193
|
+
|
194
|
+
def test_interval_builder_with_days
|
195
|
+
date = d("Mar 1, 2008")
|
196
|
+
te = TExp.every(3, :days).reanchor(date)
|
197
|
+
|
198
|
+
assert_includes te, date, date+3, date+6
|
199
|
+
assert_not_includes te, date-3, date-2, date-1, date+1, date+2, date+4
|
200
|
+
end
|
201
|
+
|
202
|
+
def test_interval_builder_with_weeks
|
203
|
+
date = d("Mar 1, 2008")
|
204
|
+
te = TExp.every(3, :weeks).reanchor(date)
|
205
|
+
|
206
|
+
assert_includes te, date, date+3*7, date+6*7
|
207
|
+
assert_not_includes te, date-3, date-2, date-1, date+1, date+2, date+3, date+4
|
208
|
+
assert_not_includes te, date+1*7, date+2*7, date+4*7
|
209
|
+
end
|
210
|
+
|
211
|
+
def test_interval_builder_with_months
|
212
|
+
date = d("Mar 1, 2008")
|
213
|
+
te = TExp.every(3, :months).reanchor(date)
|
214
|
+
|
215
|
+
assert_includes te, date, date+3*30, date+6*30
|
216
|
+
assert_not_includes te, date-3, date-2, date-1, date+1, date+2, date+3, date+4
|
217
|
+
assert_not_includes te, date+1*30, date+2*30, date+4*30
|
218
|
+
end
|
219
|
+
|
220
|
+
def test_interval_builder_with_years
|
221
|
+
date = d("Mar 1, 2008")
|
222
|
+
te = TExp.every(3, :years).reanchor(date)
|
223
|
+
|
224
|
+
assert_includes te, date, date+3*365, date+6*365
|
225
|
+
assert_not_includes te, date-3, date-2, date-1, date+1, date+2, date+3, date+4
|
226
|
+
assert_not_includes te, date+1*365, date+2*365, date+4*365
|
227
|
+
end
|
228
|
+
|
229
|
+
def test_window_builder
|
230
|
+
date = Date.today
|
231
|
+
te = TExp.on(date).window(1,2)
|
232
|
+
|
233
|
+
assert_includes te, date-1, date, date+1, date+2
|
234
|
+
assert_not_includes te, date-2, date+3
|
235
|
+
end
|
236
|
+
|
237
|
+
def test_window_builder_with_symetrical_sides
|
238
|
+
date = Date.today
|
239
|
+
te = TExp.on(date).window(2)
|
240
|
+
|
241
|
+
assert_includes te, date-2, date-1, date, date+1, date+2
|
242
|
+
assert_not_includes te, date-3, date+3
|
243
|
+
end
|
244
|
+
|
245
|
+
def test_window_builder_with_units
|
246
|
+
date = Date.today
|
247
|
+
te = TExp.on(date).window(1, :week)
|
248
|
+
|
249
|
+
assert_includes te, date-7, date-2, date-1, date, date+1, date+2, date+7
|
250
|
+
assert_not_includes te, date-8, date+8
|
251
|
+
end
|
252
|
+
|
253
|
+
def test_window_builder_with_asymetrical_units
|
254
|
+
date = Date.today
|
255
|
+
te = TExp.on(date).window(1, :week, 3, :days)
|
256
|
+
|
257
|
+
assert_includes te, date-7, date-2, date-1, date, date+1, date+2, date+3
|
258
|
+
assert_not_includes te, date-8, date+4
|
259
|
+
end
|
260
|
+
|
261
|
+
def test_window_builder_with_bad_units
|
262
|
+
assert_raise ArgumentError do
|
263
|
+
te = TExp.on(Date.today).window(1, nil)
|
264
|
+
end
|
265
|
+
end
|
266
|
+
|
267
|
+
def test_eval
|
268
|
+
te = texp {
|
269
|
+
dow(:mon) * month(:feb)
|
270
|
+
}
|
271
|
+
date = d("Feb 4, 2008")
|
272
|
+
assert_includes te, date, date+7
|
273
|
+
assert_not_includes te, date+1
|
274
|
+
end
|
275
|
+
|
276
|
+
def test_eval_with_eternal_references
|
277
|
+
te = texp {
|
278
|
+
dow(:mon) * month(favorite_month)
|
279
|
+
}
|
280
|
+
date = d("Feb 4, 2008")
|
281
|
+
assert_includes te, date, date+7
|
282
|
+
assert_not_includes te, date+1
|
283
|
+
end
|
284
|
+
|
285
|
+
def favorite_month
|
286
|
+
:feb
|
287
|
+
end
|
288
|
+
end
|
data/test/texp/every_day_test.rb
CHANGED
data/test/texp/ext_test.rb
CHANGED
@@ -29,7 +29,7 @@ module TExp
|
|
29
29
|
|
30
30
|
# Define how your temporal expression class handles dates.
|
31
31
|
# Our example is easy because we always return false.
|
32
|
-
def
|
32
|
+
def includes?(date)
|
33
33
|
false
|
34
34
|
end
|
35
35
|
|
@@ -67,12 +67,12 @@ end # module TExp
|
|
67
67
|
class ExtensionsTest < Test::Unit::TestCase
|
68
68
|
def test_never
|
69
69
|
te = TExp::Extensions::MyExt::Never.new
|
70
|
-
assert ! te.
|
70
|
+
assert ! te.includes?(Date.today)
|
71
71
|
end
|
72
72
|
|
73
73
|
def test_parse_never
|
74
74
|
te = TExp.parse("<MyExt::never>")
|
75
|
-
assert ! te.
|
75
|
+
assert ! te.includes?(Date.today)
|
76
76
|
end
|
77
77
|
|
78
78
|
def test_parsing_round_trip
|
data/test/texp/logic_test.rb
CHANGED
@@ -15,36 +15,36 @@ class LogicTest < Test::Unit::TestCase
|
|
15
15
|
FF = DATE+1
|
16
16
|
|
17
17
|
def test_constants
|
18
|
-
assert LEFT.
|
19
|
-
assert LEFT.
|
20
|
-
assert ! LEFT.
|
21
|
-
assert ! LEFT.
|
22
|
-
assert RIGHT.
|
23
|
-
assert RIGHT.
|
24
|
-
assert ! RIGHT.
|
25
|
-
assert ! RIGHT.
|
18
|
+
assert LEFT.includes?(TT)
|
19
|
+
assert LEFT.includes?(TF)
|
20
|
+
assert ! LEFT.includes?(FT)
|
21
|
+
assert ! LEFT.includes?(FF)
|
22
|
+
assert RIGHT.includes?(TT)
|
23
|
+
assert RIGHT.includes?(FT)
|
24
|
+
assert ! RIGHT.includes?(TF)
|
25
|
+
assert ! RIGHT.includes?(FF)
|
26
26
|
end
|
27
27
|
|
28
28
|
def test_and
|
29
29
|
te = TExp::And.new(LEFT, RIGHT, LEFT, RIGHT)
|
30
|
-
assert te.
|
31
|
-
assert ! te.
|
32
|
-
assert ! te.
|
33
|
-
assert ! te.
|
30
|
+
assert te.includes?(TT)
|
31
|
+
assert ! te.includes?(FT)
|
32
|
+
assert ! te.includes?(TF)
|
33
|
+
assert ! te.includes?(FF)
|
34
34
|
end
|
35
35
|
|
36
36
|
def test_or
|
37
37
|
te = TExp::Or.new(LEFT, RIGHT, LEFT, RIGHT)
|
38
|
-
assert te.
|
39
|
-
assert te.
|
40
|
-
assert te.
|
41
|
-
assert ! te.
|
38
|
+
assert te.includes?(TT)
|
39
|
+
assert te.includes?(FT)
|
40
|
+
assert te.includes?(TF)
|
41
|
+
assert ! te.includes?(FF)
|
42
42
|
end
|
43
43
|
|
44
44
|
def test_not
|
45
45
|
te = TExp::Not.new(LEFT)
|
46
|
-
assert ! te.
|
47
|
-
assert te.
|
46
|
+
assert ! te.includes?(TT)
|
47
|
+
assert te.includes?(FF)
|
48
48
|
end
|
49
49
|
|
50
50
|
end
|