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.
@@ -1,22 +1,34 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
- require 'test/unit'
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.include?(Date.parse("Feb 10, 2008"))
12
- assert ! te.include?(Date.parse("Feb 11, 2008"))
13
- assert ! te.include?(Date.parse("Feb 12, 2008"))
14
- assert te.include?(Date.parse("Feb 13, 2008"))
15
- assert ! te.include?(Date.parse("Feb 14, 2008"))
16
- assert ! te.include?(Date.parse("Feb 15, 2008"))
17
- assert te.include?(Date.parse("Feb 16, 2008"))
18
- assert ! te.include?(Date.parse("Feb 17, 2008"))
19
- assert ! te.include?(Date.parse("Feb 18, 2008"))
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.include?(Date.parse("Dec 14, 2006"))
12
- assert te.include?(Date.parse("Feb 14, 2008"))
13
- assert ! te.include?(Date.parse("Feb 15, 2008"))
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.include?(Date.parse("Feb 10, 2008"))
19
- assert ! te.include?(Date.parse("Feb 11, 2008"))
20
- assert ! te.include?(Date.parse("Feb 12, 2008"))
21
- assert ! te.include?(Date.parse("Feb 13, 2008"))
22
- assert te.include?(Date.parse("Feb 14, 2008"))
23
- assert ! te.include?(Date.parse("Feb 15, 2008"))
24
- assert te.include?(Date.parse("Feb 16, 2008"))
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.include?(Date.parse("Feb 10, 2008"))
12
- assert te.include?(Date.parse("Feb 11, 2008"))
13
- assert ! te.include?(Date.parse("Feb 12, 2008"))
14
- assert ! te.include?(Date.parse("Feb 13, 2008"))
15
- assert ! te.include?(Date.parse("Feb 14, 2008"))
16
- assert ! te.include?(Date.parse("Feb 15, 2008"))
17
- assert ! te.include?(Date.parse("Feb 16, 2008"))
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.include?(Date.parse("Feb 10, 2008"))
23
- assert te.include?(Date.parse("Feb 11, 2008"))
24
- assert ! te.include?(Date.parse("Feb 12, 2008"))
25
- assert te.include?(Date.parse("Feb 13, 2008"))
26
- assert ! te.include?(Date.parse("Feb 14, 2008"))
27
- assert te.include?(Date.parse("Feb 15, 2008"))
28
- assert ! te.include?(Date.parse("Feb 16, 2008"))
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
@@ -9,7 +9,7 @@ class EveryDayTest < Test::Unit::TestCase
9
9
 
10
10
  def test_every_day
11
11
  te = TExp::EveryDay.new
12
- assert te.include?(Date.parse("Feb 15, 2008"))
12
+ assert te.includes?(Date.parse("Feb 15, 2008"))
13
13
  end
14
14
  end
15
15
 
@@ -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 include?(date)
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.include?(Date.today)
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.include?(Date.today)
75
+ assert ! te.includes?(Date.today)
76
76
  end
77
77
 
78
78
  def test_parsing_round_trip
@@ -15,36 +15,36 @@ class LogicTest < Test::Unit::TestCase
15
15
  FF = DATE+1
16
16
 
17
17
  def test_constants
18
- assert LEFT.include?(TT)
19
- assert LEFT.include?(TF)
20
- assert ! LEFT.include?(FT)
21
- assert ! LEFT.include?(FF)
22
- assert RIGHT.include?(TT)
23
- assert RIGHT.include?(FT)
24
- assert ! RIGHT.include?(TF)
25
- assert ! RIGHT.include?(FF)
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.include?(TT)
31
- assert ! te.include?(FT)
32
- assert ! te.include?(TF)
33
- assert ! te.include?(FF)
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.include?(TT)
39
- assert te.include?(FT)
40
- assert te.include?(TF)
41
- assert ! te.include?(FF)
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.include?(TT)
47
- assert te.include?(FF)
46
+ assert ! te.includes?(TT)
47
+ assert te.includes?(FF)
48
48
  end
49
49
 
50
50
  end