diff options
Diffstat (limited to 'testlabel.lua')
-rw-r--r-- | testlabel.lua | 55 |
1 files changed, 44 insertions, 11 deletions
diff --git a/testlabel.lua b/testlabel.lua index b834be3..7461206 100644 --- a/testlabel.lua +++ b/testlabel.lua | |||
@@ -194,27 +194,59 @@ assert(p:match("bac") == 3) | |||
194 | r, l, poserr = p:match("cab") | 194 | r, l, poserr = p:match("cab") |
195 | assert(r == nil and l == 'fail' and poserr == 1) | 195 | assert(r == nil and l == 'fail' and poserr == 1) |
196 | 196 | ||
197 | |||
198 | -- tests related to predicates | 197 | -- tests related to predicates |
198 | p = #m.T(1) | ||
199 | r, l, poserr = p:match("abc") | ||
200 | assert(r == nil and l == 'fail' and poserr == 1) | ||
201 | |||
199 | p = #m.T(1) + m.P"a" | 202 | p = #m.T(1) + m.P"a" |
200 | r, l, poserr = p:match("abc") | 203 | r, l, poserr = p:match("abc") |
201 | assert(r == nil and l == 1 and poserr == 1) | 204 | assert(r == 2) |
205 | |||
206 | p = #m.T(1) * m.P"a" | ||
207 | r, l, poserr = p:match("abc") | ||
208 | assert(r == nil and l == 'fail' and poserr == 1) | ||
202 | 209 | ||
203 | p = ##m.T(1) + m.P"a" | 210 | p = ##m.T(1) + m.P"a" |
204 | r, l, poserr = p:match("abc") | 211 | r, l, poserr = p:match("abc") |
205 | assert(r == nil and l == 1 and poserr == 1) | 212 | assert(r == 2) |
206 | 213 | ||
207 | p = -m.T(1) * m.P"a" | 214 | p = -#m.T(1) + m.P"a" |
208 | r, l, poserr = p:match("abc") | 215 | r, l, poserr = p:match("abc") |
209 | assert(r == nil and l == 1 and poserr == 1) | 216 | assert(r == 1) |
210 | 217 | ||
211 | p = -m.T(1) * m.P"a" | 218 | p = -m.T(1) * m.P"a" |
219 | r, l, poserr = p:match("abc") | ||
220 | assert(r == 2) | ||
221 | |||
222 | p = -m.T(1) | ||
212 | r, l, poserr = p:match("bbc") | 223 | r, l, poserr = p:match("bbc") |
213 | assert(r == nil and l == 1 and poserr == 1) | 224 | assert(r == 1) |
225 | |||
226 | p = -#m.T(1) | ||
227 | r, l, poserr = p:match("bbc") | ||
228 | assert(r == 1) | ||
214 | 229 | ||
215 | p = -(-m.T(1)) * m.P"a" | 230 | p = -(-m.P'a') |
216 | r, l, poserr = p:match("abc") | 231 | r, l, poserr = p:match("abc") |
217 | assert(r == nil and l == 1 and poserr == 1) | 232 | assert(r == 1) |
233 | |||
234 | p = -(-m.P'a') | ||
235 | r, l, poserr = p:match("bbc") | ||
236 | assert(r == nil and l == 'fail' and poserr == 1) | ||
237 | |||
238 | p = #(m.P"a" * m.T(1)) | ||
239 | r, l, poserr = p:match("abc") | ||
240 | assert(r == nil and l == 'fail' and poserr == 1) | ||
241 | |||
242 | p = #(m.P"a" * m.P'a') | ||
243 | r, l, poserr = p:match("abc") | ||
244 | assert(r == nil and l == 'fail' and poserr == 1) | ||
245 | |||
246 | |||
247 | p = -(-m.T(1)) | ||
248 | r, l, poserr = p:match("bbc") | ||
249 | assert(r == nil and l == 'fail' and poserr == 1) | ||
218 | 250 | ||
219 | p = m.P{ | 251 | p = m.P{ |
220 | "S", | 252 | "S", |
@@ -222,7 +254,7 @@ p = m.P{ | |||
222 | ["22"] = m.P"a" | 254 | ["22"] = m.P"a" |
223 | } | 255 | } |
224 | r, l, poserr = p:match("abc") | 256 | r, l, poserr = p:match("abc") |
225 | assert(r == nil and l == 'fail' and poserr == 2) | 257 | assert(r == 1) |
226 | 258 | ||
227 | assert(p:match("bbc") == 1) | 259 | assert(p:match("bbc") == 1) |
228 | 260 | ||
@@ -231,7 +263,8 @@ p = m.P{ | |||
231 | S = #m.T(22), | 263 | S = #m.T(22), |
232 | ["22"] = m.P"a" | 264 | ["22"] = m.P"a" |
233 | } | 265 | } |
234 | assert(p:match("abc") == 1) | 266 | r, l, poserr = p:match("abc") |
267 | assert(r == nil and l == 'fail' and poserr == 1) | ||
235 | 268 | ||
236 | p = m.P{ | 269 | p = m.P{ |
237 | "S", | 270 | "S", |
@@ -262,7 +295,7 @@ p = m.P{ | |||
262 | ["22"] = m.T(15) | 295 | ["22"] = m.T(15) |
263 | } | 296 | } |
264 | r, l, poserr = p:match("abc") | 297 | r, l, poserr = p:match("abc") |
265 | assert(r == nil and l == 15 and poserr == 2) | 298 | assert(r == nil and l == 'fail' and poserr == 1) |
266 | 299 | ||
267 | 300 | ||
268 | -- tests related to repetition | 301 | -- tests related to repetition |