aboutsummaryrefslogtreecommitdiff
path: root/testlabel.lua
diff options
context:
space:
mode:
Diffstat (limited to 'testlabel.lua')
-rw-r--r--testlabel.lua55
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)
194r, l, poserr = p:match("cab") 194r, l, poserr = p:match("cab")
195assert(r == nil and l == 'fail' and poserr == 1) 195assert(r == nil and l == 'fail' and poserr == 1)
196 196
197
198-- tests related to predicates 197-- tests related to predicates
198p = #m.T(1)
199r, l, poserr = p:match("abc")
200assert(r == nil and l == 'fail' and poserr == 1)
201
199p = #m.T(1) + m.P"a" 202p = #m.T(1) + m.P"a"
200r, l, poserr = p:match("abc") 203r, l, poserr = p:match("abc")
201assert(r == nil and l == 1 and poserr == 1) 204assert(r == 2)
205
206p = #m.T(1) * m.P"a"
207r, l, poserr = p:match("abc")
208assert(r == nil and l == 'fail' and poserr == 1)
202 209
203p = ##m.T(1) + m.P"a" 210p = ##m.T(1) + m.P"a"
204r, l, poserr = p:match("abc") 211r, l, poserr = p:match("abc")
205assert(r == nil and l == 1 and poserr == 1) 212assert(r == 2)
206 213
207p = -m.T(1) * m.P"a" 214p = -#m.T(1) + m.P"a"
208r, l, poserr = p:match("abc") 215r, l, poserr = p:match("abc")
209assert(r == nil and l == 1 and poserr == 1) 216assert(r == 1)
210 217
211p = -m.T(1) * m.P"a" 218p = -m.T(1) * m.P"a"
219r, l, poserr = p:match("abc")
220assert(r == 2)
221
222p = -m.T(1)
212r, l, poserr = p:match("bbc") 223r, l, poserr = p:match("bbc")
213assert(r == nil and l == 1 and poserr == 1) 224assert(r == 1)
225
226p = -#m.T(1)
227r, l, poserr = p:match("bbc")
228assert(r == 1)
214 229
215p = -(-m.T(1)) * m.P"a" 230p = -(-m.P'a')
216r, l, poserr = p:match("abc") 231r, l, poserr = p:match("abc")
217assert(r == nil and l == 1 and poserr == 1) 232assert(r == 1)
233
234p = -(-m.P'a')
235r, l, poserr = p:match("bbc")
236assert(r == nil and l == 'fail' and poserr == 1)
237
238p = #(m.P"a" * m.T(1))
239r, l, poserr = p:match("abc")
240assert(r == nil and l == 'fail' and poserr == 1)
241
242p = #(m.P"a" * m.P'a')
243r, l, poserr = p:match("abc")
244assert(r == nil and l == 'fail' and poserr == 1)
245
246
247p = -(-m.T(1))
248r, l, poserr = p:match("bbc")
249assert(r == nil and l == 'fail' and poserr == 1)
218 250
219p = m.P{ 251p = 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}
224r, l, poserr = p:match("abc") 256r, l, poserr = p:match("abc")
225assert(r == nil and l == 'fail' and poserr == 2) 257assert(r == 1)
226 258
227assert(p:match("bbc") == 1) 259assert(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}
234assert(p:match("abc") == 1) 266r, l, poserr = p:match("abc")
267assert(r == nil and l == 'fail' and poserr == 1)
235 268
236p = m.P{ 269p = 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}
264r, l, poserr = p:match("abc") 297r, l, poserr = p:match("abc")
265assert(r == nil and l == 15 and poserr == 2) 298assert(r == nil and l == 'fail' and poserr == 1)
266 299
267 300
268-- tests related to repetition 301-- tests related to repetition