X-Git-Url: http://git.megacz.com/?p=sbp.git;a=blobdiff_plain;f=tests%2Fregression.tc;h=f13accf654f6c51ff79ee8af64f7d32a849357a3;hp=863f8d80957a1fa9bb22298a63db6065c8a393e6;hb=22a2ca7685dcf29e9ddcc6e26443ea0277385fca;hpb=e84029a8b861075d6d0ed5040f919b2e4da4c98f diff --git a/tests/regression.tc b/tests/regression.tc index 863f8d8..f13accf 100644 --- a/tests/regression.tc +++ b/tests/regression.tc @@ -341,14 +341,6 @@ testcase { x = [123] } -testcase { - input "aaaaaaaa"; - output ""; - s = As & AAs - As = () | As "a" - AAs = () | AAs "aa" -} - // make sure follow restrictions are honored // when a string matches the empty string testcase { @@ -370,3 +362,34 @@ testcase { B = b:: "b" C = c:: "c" } + +testcase { + input "aaaaaaaaaaaaaaaaaaaa"; + output ""; + s = As & AAs + As = () | As "a" + AAs = () | AAs "aa" +} + +// pathological O(n^2) behavior +testcase { + input "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"; + output "x"; + s = x:: ManyA! + ManyA = () + | x:: A ManyA + A = ()! ("a" & ManyAB) + ManyAB = () + | "a" ManyAB + | "b" ManyAB + +} + +// another O(n^2) example, tickles different epsilon behaviors +testcase { + input "aaaa"; + output "x:{x:{x:{x}}}"; + s = x:: s A! | () + A = "a" & B + B = () | B "a" +}