summaryrefslogtreecommitdiff
path: root/www/wiki/extensions/AbuseFilter/tests/parserTests
diff options
context:
space:
mode:
Diffstat (limited to 'www/wiki/extensions/AbuseFilter/tests/parserTests')
-rw-r--r--www/wiki/extensions/AbuseFilter/tests/parserTests/almost-empty.r1
-rw-r--r--www/wiki/extensions/AbuseFilter/tests/parserTests/almost-empty.t1
-rw-r--r--www/wiki/extensions/AbuseFilter/tests/parserTests/arith.r1
-rw-r--r--www/wiki/extensions/AbuseFilter/tests/parserTests/arith.t27
-rw-r--r--www/wiki/extensions/AbuseFilter/tests/parserTests/arrays.r1
-rw-r--r--www/wiki/extensions/AbuseFilter/tests/parserTests/arrays.t12
-rw-r--r--www/wiki/extensions/AbuseFilter/tests/parserTests/bool-assoc.r1
-rw-r--r--www/wiki/extensions/AbuseFilter/tests/parserTests/bool-assoc.t1
-rw-r--r--www/wiki/extensions/AbuseFilter/tests/parserTests/bug25373.r1
-rw-r--r--www/wiki/extensions/AbuseFilter/tests/parserTests/bug25373.t1
-rw-r--r--www/wiki/extensions/AbuseFilter/tests/parserTests/cast.r1
-rw-r--r--www/wiki/extensions/AbuseFilter/tests/parserTests/cast.t1
-rw-r--r--www/wiki/extensions/AbuseFilter/tests/parserTests/ccnorm-contains-all.r1
-rw-r--r--www/wiki/extensions/AbuseFilter/tests/parserTests/ccnorm-contains-all.t1
-rw-r--r--www/wiki/extensions/AbuseFilter/tests/parserTests/ccnorm-contains-any.r1
-rw-r--r--www/wiki/extensions/AbuseFilter/tests/parserTests/ccnorm-contains-any.t1
-rw-r--r--www/wiki/extensions/AbuseFilter/tests/parserTests/ccnorm.r1
-rw-r--r--www/wiki/extensions/AbuseFilter/tests/parserTests/ccnorm.t1
-rw-r--r--www/wiki/extensions/AbuseFilter/tests/parserTests/comment.r1
-rw-r--r--www/wiki/extensions/AbuseFilter/tests/parserTests/comment.t4
-rw-r--r--www/wiki/extensions/AbuseFilter/tests/parserTests/contains-all.r1
-rw-r--r--www/wiki/extensions/AbuseFilter/tests/parserTests/contains-all.t1
-rw-r--r--www/wiki/extensions/AbuseFilter/tests/parserTests/contains-any.r1
-rw-r--r--www/wiki/extensions/AbuseFilter/tests/parserTests/contains-any.t1
-rw-r--r--www/wiki/extensions/AbuseFilter/tests/parserTests/contains.r1
-rw-r--r--www/wiki/extensions/AbuseFilter/tests/parserTests/contains.t1
-rw-r--r--www/wiki/extensions/AbuseFilter/tests/parserTests/count.r1
-rw-r--r--www/wiki/extensions/AbuseFilter/tests/parserTests/count.t6
-rw-r--r--www/wiki/extensions/AbuseFilter/tests/parserTests/empty.r1
-rw-r--r--www/wiki/extensions/AbuseFilter/tests/parserTests/empty.t0
-rw-r--r--www/wiki/extensions/AbuseFilter/tests/parserTests/eq.r1
-rw-r--r--www/wiki/extensions/AbuseFilter/tests/parserTests/eq.t1
-rw-r--r--www/wiki/extensions/AbuseFilter/tests/parserTests/expn.r1
-rw-r--r--www/wiki/extensions/AbuseFilter/tests/parserTests/expn.t2
-rw-r--r--www/wiki/extensions/AbuseFilter/tests/parserTests/float.r1
-rw-r--r--www/wiki/extensions/AbuseFilter/tests/parserTests/float.t1
-rw-r--r--www/wiki/extensions/AbuseFilter/tests/parserTests/get-matches.r1
-rw-r--r--www/wiki/extensions/AbuseFilter/tests/parserTests/get-matches.t4
-rw-r--r--www/wiki/extensions/AbuseFilter/tests/parserTests/ifthen.r1
-rw-r--r--www/wiki/extensions/AbuseFilter/tests/parserTests/ifthen.t1
-rw-r--r--www/wiki/extensions/AbuseFilter/tests/parserTests/in.r1
-rw-r--r--www/wiki/extensions/AbuseFilter/tests/parserTests/in.t1
-rw-r--r--www/wiki/extensions/AbuseFilter/tests/parserTests/lcase.r1
-rw-r--r--www/wiki/extensions/AbuseFilter/tests/parserTests/lcase.t1
-rw-r--r--www/wiki/extensions/AbuseFilter/tests/parserTests/length.r1
-rw-r--r--www/wiki/extensions/AbuseFilter/tests/parserTests/length.t1
-rw-r--r--www/wiki/extensions/AbuseFilter/tests/parserTests/like.r1
-rw-r--r--www/wiki/extensions/AbuseFilter/tests/parserTests/like.t1
-rw-r--r--www/wiki/extensions/AbuseFilter/tests/parserTests/list-assignment.r1
-rw-r--r--www/wiki/extensions/AbuseFilter/tests/parserTests/list-assignment.t6
-rw-r--r--www/wiki/extensions/AbuseFilter/tests/parserTests/list-comparisons.r1
-rw-r--r--www/wiki/extensions/AbuseFilter/tests/parserTests/list-comparisons.t11
-rw-r--r--www/wiki/extensions/AbuseFilter/tests/parserTests/mwexamples-arithmetic.r1
-rw-r--r--www/wiki/extensions/AbuseFilter/tests/parserTests/mwexamples-arithmetic.t8
-rw-r--r--www/wiki/extensions/AbuseFilter/tests/parserTests/mwexamples-bools.r1
-rw-r--r--www/wiki/extensions/AbuseFilter/tests/parserTests/mwexamples-bools.t13
-rw-r--r--www/wiki/extensions/AbuseFilter/tests/parserTests/mwexamples-comparisons.r1
-rw-r--r--www/wiki/extensions/AbuseFilter/tests/parserTests/mwexamples-comparisons.t20
-rw-r--r--www/wiki/extensions/AbuseFilter/tests/parserTests/mwexamples-functions.r1
-rw-r--r--www/wiki/extensions/AbuseFilter/tests/parserTests/mwexamples-functions.t22
-rw-r--r--www/wiki/extensions/AbuseFilter/tests/parserTests/mwexamples-keywords.r1
-rw-r--r--www/wiki/extensions/AbuseFilter/tests/parserTests/mwexamples-keywords.t9
-rw-r--r--www/wiki/extensions/AbuseFilter/tests/parserTests/mwexamples-lists.r1
-rw-r--r--www/wiki/extensions/AbuseFilter/tests/parserTests/mwexamples-lists.t10
-rw-r--r--www/wiki/extensions/AbuseFilter/tests/parserTests/norm.r1
-rw-r--r--www/wiki/extensions/AbuseFilter/tests/parserTests/norm.t1
-rw-r--r--www/wiki/extensions/AbuseFilter/tests/parserTests/numbers.r1
-rw-r--r--www/wiki/extensions/AbuseFilter/tests/parserTests/numbers.t1
-rw-r--r--www/wiki/extensions/AbuseFilter/tests/parserTests/ord.r1
-rw-r--r--www/wiki/extensions/AbuseFilter/tests/parserTests/ord.t8
-rw-r--r--www/wiki/extensions/AbuseFilter/tests/parserTests/prec.r1
-rw-r--r--www/wiki/extensions/AbuseFilter/tests/parserTests/prec.t1
-rw-r--r--www/wiki/extensions/AbuseFilter/tests/parserTests/regex.r1
-rw-r--r--www/wiki/extensions/AbuseFilter/tests/parserTests/regex.t1
-rw-r--r--www/wiki/extensions/AbuseFilter/tests/parserTests/rmdoubles.r1
-rw-r--r--www/wiki/extensions/AbuseFilter/tests/parserTests/rmdoubles.t1
-rw-r--r--www/wiki/extensions/AbuseFilter/tests/parserTests/rmspecials.r1
-rw-r--r--www/wiki/extensions/AbuseFilter/tests/parserTests/rmspecials.t1
-rw-r--r--www/wiki/extensions/AbuseFilter/tests/parserTests/shortcircuit-and.r1
-rw-r--r--www/wiki/extensions/AbuseFilter/tests/parserTests/shortcircuit-and.t2
-rw-r--r--www/wiki/extensions/AbuseFilter/tests/parserTests/shortcircuit-or.r1
-rw-r--r--www/wiki/extensions/AbuseFilter/tests/parserTests/shortcircuit-or.t2
-rw-r--r--www/wiki/extensions/AbuseFilter/tests/parserTests/specialratio.r1
-rw-r--r--www/wiki/extensions/AbuseFilter/tests/parserTests/specialratio.t1
-rw-r--r--www/wiki/extensions/AbuseFilter/tests/parserTests/string.r1
-rw-r--r--www/wiki/extensions/AbuseFilter/tests/parserTests/string.t1
-rw-r--r--www/wiki/extensions/AbuseFilter/tests/parserTests/tern.r1
-rw-r--r--www/wiki/extensions/AbuseFilter/tests/parserTests/tern.t1
-rw-r--r--www/wiki/extensions/AbuseFilter/tests/parserTests/ucase.r1
-rw-r--r--www/wiki/extensions/AbuseFilter/tests/parserTests/ucase.t1
-rw-r--r--www/wiki/extensions/AbuseFilter/tests/parserTests/utf8.r1
-rw-r--r--www/wiki/extensions/AbuseFilter/tests/parserTests/utf8.t1
-rw-r--r--www/wiki/extensions/AbuseFilter/tests/parserTests/vars.r1
-rw-r--r--www/wiki/extensions/AbuseFilter/tests/parserTests/vars.t5
-rw-r--r--www/wiki/extensions/AbuseFilter/tests/parserTests/whitespace1.r1
-rw-r--r--www/wiki/extensions/AbuseFilter/tests/parserTests/whitespace1.t1
-rw-r--r--www/wiki/extensions/AbuseFilter/tests/parserTests/wptest1.r1
-rw-r--r--www/wiki/extensions/AbuseFilter/tests/parserTests/wptest1.t9
-rw-r--r--www/wiki/extensions/AbuseFilter/tests/parserTests/wptest2.r1
-rw-r--r--www/wiki/extensions/AbuseFilter/tests/parserTests/wptest2.t21
-rw-r--r--www/wiki/extensions/AbuseFilter/tests/parserTests/wptest3.r1
-rw-r--r--www/wiki/extensions/AbuseFilter/tests/parserTests/wptest3.t28
102 files changed, 309 insertions, 0 deletions
diff --git a/www/wiki/extensions/AbuseFilter/tests/parserTests/almost-empty.r b/www/wiki/extensions/AbuseFilter/tests/parserTests/almost-empty.r
new file mode 100644
index 00000000..8093d2ab
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/tests/parserTests/almost-empty.r
@@ -0,0 +1 @@
+NOT_MATCH
diff --git a/www/wiki/extensions/AbuseFilter/tests/parserTests/almost-empty.t b/www/wiki/extensions/AbuseFilter/tests/parserTests/almost-empty.t
new file mode 100644
index 00000000..e57b08b4
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/tests/parserTests/almost-empty.t
@@ -0,0 +1 @@
+;;;;
diff --git a/www/wiki/extensions/AbuseFilter/tests/parserTests/arith.r b/www/wiki/extensions/AbuseFilter/tests/parserTests/arith.r
new file mode 100644
index 00000000..4736e080
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/tests/parserTests/arith.r
@@ -0,0 +1 @@
+MATCH
diff --git a/www/wiki/extensions/AbuseFilter/tests/parserTests/arith.t b/www/wiki/extensions/AbuseFilter/tests/parserTests/arith.t
new file mode 100644
index 00000000..1f88e9df
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/tests/parserTests/arith.t
@@ -0,0 +1,27 @@
+(1 + 1 === 2) &
+(1.5 + 1.5 === 3.0) &
+(2.5 + 1 === 3.5) &
+(0 + 1 === 1) &
+(2.5 + 0 === 2.5) &
+(5 - 3 === 2) &
+(5 - 3.5 === 1.5) &
+(5.5 - 3.5 === 2.0) &
+(1 - 0 === 1) &
+(2.5 - 0 === 2.5) &
+(2 * 3 === 6) &
+(2 * 3.5 === 7.0) &
+(2.5 * 3.5 === 8.75) &
+(2.5 * 0 === 0.0) &
+(10 / 2 === 5) &
+(10 / 2.5 === 4.0) &
+(18 / 36 === 0.5) &
+(0 / 36 === 0) &
+(12.5 / 2.5 === 5.0) &
+(10.5 / 2.5 === 4.2) &
+(10 % 7 === 3) &
+(10.48762 % 7 === 3) &
+(10 % 7.123576 === 3) &
+(2 ** 4 === 16) &
+(2.5 ** 2 === 6.25) &
+(2.5 ** 0 === 1.0) &
+(1000 ** 0 === 1) \ No newline at end of file
diff --git a/www/wiki/extensions/AbuseFilter/tests/parserTests/arrays.r b/www/wiki/extensions/AbuseFilter/tests/parserTests/arrays.r
new file mode 100644
index 00000000..4736e080
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/tests/parserTests/arrays.r
@@ -0,0 +1 @@
+MATCH
diff --git a/www/wiki/extensions/AbuseFilter/tests/parserTests/arrays.t b/www/wiki/extensions/AbuseFilter/tests/parserTests/arrays.t
new file mode 100644
index 00000000..479dd3b0
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/tests/parserTests/arrays.t
@@ -0,0 +1,12 @@
+array1 := [ 'a', 'b', 'c', ];
+array2 := [];
+array2[] := 'd';
+array2[] := 'g';
+array2[] := 'f';
+array2[1] := 'e';
+
+array3 := array1 + array2;
+array4 := [ [ 1, 2, 3 ], [ 4, 5, 6 ] ];
+
+(string(array3) == "a\nb\nc\nd\ne\nf\n" & !('b' in array2) & array1 contains 'c' & [ false, !(1;0), null ][1] & length(array3) == 6 &
+ array4[1][1] == 5 )
diff --git a/www/wiki/extensions/AbuseFilter/tests/parserTests/bool-assoc.r b/www/wiki/extensions/AbuseFilter/tests/parserTests/bool-assoc.r
new file mode 100644
index 00000000..4736e080
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/tests/parserTests/bool-assoc.r
@@ -0,0 +1 @@
+MATCH
diff --git a/www/wiki/extensions/AbuseFilter/tests/parserTests/bool-assoc.t b/www/wiki/extensions/AbuseFilter/tests/parserTests/bool-assoc.t
new file mode 100644
index 00000000..4b236bd2
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/tests/parserTests/bool-assoc.t
@@ -0,0 +1 @@
+!(true | false & false)
diff --git a/www/wiki/extensions/AbuseFilter/tests/parserTests/bug25373.r b/www/wiki/extensions/AbuseFilter/tests/parserTests/bug25373.r
new file mode 100644
index 00000000..4736e080
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/tests/parserTests/bug25373.r
@@ -0,0 +1 @@
+MATCH
diff --git a/www/wiki/extensions/AbuseFilter/tests/parserTests/bug25373.t b/www/wiki/extensions/AbuseFilter/tests/parserTests/bug25373.t
new file mode 100644
index 00000000..99e5c80e
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/tests/parserTests/bug25373.t
@@ -0,0 +1 @@
+(1 == 1) ? (true) : (false)
diff --git a/www/wiki/extensions/AbuseFilter/tests/parserTests/cast.r b/www/wiki/extensions/AbuseFilter/tests/parserTests/cast.r
new file mode 100644
index 00000000..4736e080
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/tests/parserTests/cast.r
@@ -0,0 +1 @@
+MATCH
diff --git a/www/wiki/extensions/AbuseFilter/tests/parserTests/cast.t b/www/wiki/extensions/AbuseFilter/tests/parserTests/cast.t
new file mode 100644
index 00000000..c0bc317c
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/tests/parserTests/cast.t
@@ -0,0 +1 @@
+(string(1) === "1") & (int("1") === 1) & (float(1) === 1.0) & bool(1) & !bool(0)
diff --git a/www/wiki/extensions/AbuseFilter/tests/parserTests/ccnorm-contains-all.r b/www/wiki/extensions/AbuseFilter/tests/parserTests/ccnorm-contains-all.r
new file mode 100644
index 00000000..4736e080
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/tests/parserTests/ccnorm-contains-all.r
@@ -0,0 +1 @@
+MATCH
diff --git a/www/wiki/extensions/AbuseFilter/tests/parserTests/ccnorm-contains-all.t b/www/wiki/extensions/AbuseFilter/tests/parserTests/ccnorm-contains-all.t
new file mode 100644
index 00000000..9a8635c8
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/tests/parserTests/ccnorm-contains-all.t
@@ -0,0 +1 @@
+ccnorm_contains_all("the f00 is on the b4r", "foo", "is on", "bar")
diff --git a/www/wiki/extensions/AbuseFilter/tests/parserTests/ccnorm-contains-any.r b/www/wiki/extensions/AbuseFilter/tests/parserTests/ccnorm-contains-any.r
new file mode 100644
index 00000000..4736e080
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/tests/parserTests/ccnorm-contains-any.r
@@ -0,0 +1 @@
+MATCH
diff --git a/www/wiki/extensions/AbuseFilter/tests/parserTests/ccnorm-contains-any.t b/www/wiki/extensions/AbuseFilter/tests/parserTests/ccnorm-contains-any.t
new file mode 100644
index 00000000..6aeac35c
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/tests/parserTests/ccnorm-contains-any.t
@@ -0,0 +1 @@
+ccnorm_contains_any("like 4ny0ne else", "foo", "aNyon3") & ccnorm_contains_any("street f1ghter","F1ght")
diff --git a/www/wiki/extensions/AbuseFilter/tests/parserTests/ccnorm.r b/www/wiki/extensions/AbuseFilter/tests/parserTests/ccnorm.r
new file mode 100644
index 00000000..4736e080
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/tests/parserTests/ccnorm.r
@@ -0,0 +1 @@
+MATCH
diff --git a/www/wiki/extensions/AbuseFilter/tests/parserTests/ccnorm.t b/www/wiki/extensions/AbuseFilter/tests/parserTests/ccnorm.t
new file mode 100644
index 00000000..f233e42e
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/tests/parserTests/ccnorm.t
@@ -0,0 +1 @@
+ccnorm("aany0ne") = "AANYONE"
diff --git a/www/wiki/extensions/AbuseFilter/tests/parserTests/comment.r b/www/wiki/extensions/AbuseFilter/tests/parserTests/comment.r
new file mode 100644
index 00000000..4736e080
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/tests/parserTests/comment.r
@@ -0,0 +1 @@
+MATCH
diff --git a/www/wiki/extensions/AbuseFilter/tests/parserTests/comment.t b/www/wiki/extensions/AbuseFilter/tests/parserTests/comment.t
new file mode 100644
index 00000000..3252b87a
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/tests/parserTests/comment.t
@@ -0,0 +1,4 @@
+1 /* a */ == /* b */ "1" /* c */ /* &
+
+1/0
+*/
diff --git a/www/wiki/extensions/AbuseFilter/tests/parserTests/contains-all.r b/www/wiki/extensions/AbuseFilter/tests/parserTests/contains-all.r
new file mode 100644
index 00000000..4736e080
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/tests/parserTests/contains-all.r
@@ -0,0 +1 @@
+MATCH
diff --git a/www/wiki/extensions/AbuseFilter/tests/parserTests/contains-all.t b/www/wiki/extensions/AbuseFilter/tests/parserTests/contains-all.t
new file mode 100644
index 00000000..f8b81b24
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/tests/parserTests/contains-all.t
@@ -0,0 +1 @@
+contains_all("the foo is on the bar", "foo", "is on", "bar") & !(contains_all(['foo', 'bar', 'hey'], 'foo', 'bar', 'sup')) & contains_all([1, 2, 3], '1', '2', '3') \ No newline at end of file
diff --git a/www/wiki/extensions/AbuseFilter/tests/parserTests/contains-any.r b/www/wiki/extensions/AbuseFilter/tests/parserTests/contains-any.r
new file mode 100644
index 00000000..4736e080
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/tests/parserTests/contains-any.r
@@ -0,0 +1 @@
+MATCH
diff --git a/www/wiki/extensions/AbuseFilter/tests/parserTests/contains-any.t b/www/wiki/extensions/AbuseFilter/tests/parserTests/contains-any.t
new file mode 100644
index 00000000..56f1c8bd
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/tests/parserTests/contains-any.t
@@ -0,0 +1 @@
+contains_any("like anyone else", "else", "someone") & contains_any("street fighter", "fight") & !(contains_any('My foo is cute', 'bar', 'wtf')) & contains_any([[1], [2,3]], 1)
diff --git a/www/wiki/extensions/AbuseFilter/tests/parserTests/contains.r b/www/wiki/extensions/AbuseFilter/tests/parserTests/contains.r
new file mode 100644
index 00000000..f629599c
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/tests/parserTests/contains.r
@@ -0,0 +1 @@
+MATCH \ No newline at end of file
diff --git a/www/wiki/extensions/AbuseFilter/tests/parserTests/contains.t b/www/wiki/extensions/AbuseFilter/tests/parserTests/contains.t
new file mode 100644
index 00000000..cac43d24
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/tests/parserTests/contains.t
@@ -0,0 +1 @@
+"quux" contains "ux" & ['1', 'foo'] contains '1' & !('fo obar' contains 'foo') & ['foo'] contains 'f' \ No newline at end of file
diff --git a/www/wiki/extensions/AbuseFilter/tests/parserTests/count.r b/www/wiki/extensions/AbuseFilter/tests/parserTests/count.r
new file mode 100644
index 00000000..4736e080
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/tests/parserTests/count.r
@@ -0,0 +1 @@
+MATCH
diff --git a/www/wiki/extensions/AbuseFilter/tests/parserTests/count.t b/www/wiki/extensions/AbuseFilter/tests/parserTests/count.t
new file mode 100644
index 00000000..5733b0b2
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/tests/parserTests/count.t
@@ -0,0 +1,6 @@
+count("a,b,c,d") = 4 &
+count(",", "a,b,c,d") = 3 &
+count("", "abcd") = 0 &
+count("a", "abab") = 2 &
+count("ab", "abab") = 2 &
+count("aa", "aaaaa") = 2
diff --git a/www/wiki/extensions/AbuseFilter/tests/parserTests/empty.r b/www/wiki/extensions/AbuseFilter/tests/parserTests/empty.r
new file mode 100644
index 00000000..8093d2ab
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/tests/parserTests/empty.r
@@ -0,0 +1 @@
+NOT_MATCH
diff --git a/www/wiki/extensions/AbuseFilter/tests/parserTests/empty.t b/www/wiki/extensions/AbuseFilter/tests/parserTests/empty.t
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/tests/parserTests/empty.t
diff --git a/www/wiki/extensions/AbuseFilter/tests/parserTests/eq.r b/www/wiki/extensions/AbuseFilter/tests/parserTests/eq.r
new file mode 100644
index 00000000..4736e080
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/tests/parserTests/eq.r
@@ -0,0 +1 @@
+MATCH
diff --git a/www/wiki/extensions/AbuseFilter/tests/parserTests/eq.t b/www/wiki/extensions/AbuseFilter/tests/parserTests/eq.t
new file mode 100644
index 00000000..25df4e69
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/tests/parserTests/eq.t
@@ -0,0 +1 @@
+(1 == 1) & (1 != 2) & (1 === 1) & (1 == "1") & (1 !== "1")
diff --git a/www/wiki/extensions/AbuseFilter/tests/parserTests/expn.r b/www/wiki/extensions/AbuseFilter/tests/parserTests/expn.r
new file mode 100644
index 00000000..4736e080
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/tests/parserTests/expn.r
@@ -0,0 +1 @@
+MATCH
diff --git a/www/wiki/extensions/AbuseFilter/tests/parserTests/expn.t b/www/wiki/extensions/AbuseFilter/tests/parserTests/expn.t
new file mode 100644
index 00000000..17849182
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/tests/parserTests/expn.t
@@ -0,0 +1,2 @@
+/* In filter language, the exponentiation is left-associative */
+(2 ** 3 ** 2) === 64
diff --git a/www/wiki/extensions/AbuseFilter/tests/parserTests/float.r b/www/wiki/extensions/AbuseFilter/tests/parserTests/float.r
new file mode 100644
index 00000000..4736e080
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/tests/parserTests/float.r
@@ -0,0 +1 @@
+MATCH
diff --git a/www/wiki/extensions/AbuseFilter/tests/parserTests/float.t b/www/wiki/extensions/AbuseFilter/tests/parserTests/float.t
new file mode 100644
index 00000000..e31067e0
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/tests/parserTests/float.t
@@ -0,0 +1 @@
+(5 / 2 === 2.5) & (int(5 / 2) === 2) & (5. / 2 === 2.5) & (5 / 2. === 2.5) & (int(.5) === 0)
diff --git a/www/wiki/extensions/AbuseFilter/tests/parserTests/get-matches.r b/www/wiki/extensions/AbuseFilter/tests/parserTests/get-matches.r
new file mode 100644
index 00000000..f629599c
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/tests/parserTests/get-matches.r
@@ -0,0 +1 @@
+MATCH \ No newline at end of file
diff --git a/www/wiki/extensions/AbuseFilter/tests/parserTests/get-matches.t b/www/wiki/extensions/AbuseFilter/tests/parserTests/get-matches.t
new file mode 100644
index 00000000..88e163b4
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/tests/parserTests/get-matches.t
@@ -0,0 +1,4 @@
+/* More complete tests for get_matches are in AbuseFilterParserTest.php */
+a := get_matches('I am a (dog|cat)', 'What did you say?');
+get_matches('The (truth|pineapple) is (?:rarely)? pure and (nee*v(ah|er) sh?imple)', 'The truth is rarely pure and never simple, Wilde said') == ['The truth is rarely pure and never simple', 'truth', 'never simple', 'er'] &
+a === [false, false] \ No newline at end of file
diff --git a/www/wiki/extensions/AbuseFilter/tests/parserTests/ifthen.r b/www/wiki/extensions/AbuseFilter/tests/parserTests/ifthen.r
new file mode 100644
index 00000000..4736e080
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/tests/parserTests/ifthen.r
@@ -0,0 +1 @@
+MATCH
diff --git a/www/wiki/extensions/AbuseFilter/tests/parserTests/ifthen.t b/www/wiki/extensions/AbuseFilter/tests/parserTests/ifthen.t
new file mode 100644
index 00000000..160d1ab8
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/tests/parserTests/ifthen.t
@@ -0,0 +1 @@
+(if 1 then 2 else 3 end) == 2
diff --git a/www/wiki/extensions/AbuseFilter/tests/parserTests/in.r b/www/wiki/extensions/AbuseFilter/tests/parserTests/in.r
new file mode 100644
index 00000000..4736e080
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/tests/parserTests/in.r
@@ -0,0 +1 @@
+MATCH
diff --git a/www/wiki/extensions/AbuseFilter/tests/parserTests/in.t b/www/wiki/extensions/AbuseFilter/tests/parserTests/in.t
new file mode 100644
index 00000000..73d480d3
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/tests/parserTests/in.t
@@ -0,0 +1 @@
+"foo" in "foobar" & '1' in ['1', 'foo'] & !('foo' in 'fo obar') & 'f' in ['foo']
diff --git a/www/wiki/extensions/AbuseFilter/tests/parserTests/lcase.r b/www/wiki/extensions/AbuseFilter/tests/parserTests/lcase.r
new file mode 100644
index 00000000..4736e080
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/tests/parserTests/lcase.r
@@ -0,0 +1 @@
+MATCH
diff --git a/www/wiki/extensions/AbuseFilter/tests/parserTests/lcase.t b/www/wiki/extensions/AbuseFilter/tests/parserTests/lcase.t
new file mode 100644
index 00000000..6995baf7
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/tests/parserTests/lcase.t
@@ -0,0 +1 @@
+lcase("FÁmí") = "fámí"
diff --git a/www/wiki/extensions/AbuseFilter/tests/parserTests/length.r b/www/wiki/extensions/AbuseFilter/tests/parserTests/length.r
new file mode 100644
index 00000000..4736e080
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/tests/parserTests/length.r
@@ -0,0 +1 @@
+MATCH
diff --git a/www/wiki/extensions/AbuseFilter/tests/parserTests/length.t b/www/wiki/extensions/AbuseFilter/tests/parserTests/length.t
new file mode 100644
index 00000000..064b22fa
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/tests/parserTests/length.t
@@ -0,0 +1 @@
+length("foobar") == 6
diff --git a/www/wiki/extensions/AbuseFilter/tests/parserTests/like.r b/www/wiki/extensions/AbuseFilter/tests/parserTests/like.r
new file mode 100644
index 00000000..4736e080
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/tests/parserTests/like.r
@@ -0,0 +1 @@
+MATCH
diff --git a/www/wiki/extensions/AbuseFilter/tests/parserTests/like.t b/www/wiki/extensions/AbuseFilter/tests/parserTests/like.t
new file mode 100644
index 00000000..74396f19
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/tests/parserTests/like.t
@@ -0,0 +1 @@
+"f+oo-bér" like "f+oo-b?r" & "quux" matches "qu*x"
diff --git a/www/wiki/extensions/AbuseFilter/tests/parserTests/list-assignment.r b/www/wiki/extensions/AbuseFilter/tests/parserTests/list-assignment.r
new file mode 100644
index 00000000..4736e080
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/tests/parserTests/list-assignment.r
@@ -0,0 +1 @@
+MATCH
diff --git a/www/wiki/extensions/AbuseFilter/tests/parserTests/list-assignment.t b/www/wiki/extensions/AbuseFilter/tests/parserTests/list-assignment.t
new file mode 100644
index 00000000..c055541b
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/tests/parserTests/list-assignment.t
@@ -0,0 +1,6 @@
+test_list := [ [1, 2], [3, 4] ];
+
+test_list[1] := 42;
+test_list[] := 17;
+
+test_list[0][0] == 1 & test_list[0][1] == 2 & test_list[1] == 42 & test_list[2] == 17
diff --git a/www/wiki/extensions/AbuseFilter/tests/parserTests/list-comparisons.r b/www/wiki/extensions/AbuseFilter/tests/parserTests/list-comparisons.r
new file mode 100644
index 00000000..4736e080
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/tests/parserTests/list-comparisons.r
@@ -0,0 +1 @@
+MATCH
diff --git a/www/wiki/extensions/AbuseFilter/tests/parserTests/list-comparisons.t b/www/wiki/extensions/AbuseFilter/tests/parserTests/list-comparisons.t
new file mode 100644
index 00000000..db431573
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/tests/parserTests/list-comparisons.t
@@ -0,0 +1,11 @@
+a := [1, 2, 3];
+b := [1, 2, 3];
+c := [2, 3, 4];
+d := [1, 2, 3, 4];
+e := ['1', '2', '3'];
+f := [[['1']]];
+g := [[[1]]];
+h := [[1, 2], 3];
+i := [['1', 2], '3'];
+
+a == b & a === b & a != c & b != d & a == e & a !== e & f == g & f !== g & h == i & h !== i & e != i
diff --git a/www/wiki/extensions/AbuseFilter/tests/parserTests/mwexamples-arithmetic.r b/www/wiki/extensions/AbuseFilter/tests/parserTests/mwexamples-arithmetic.r
new file mode 100644
index 00000000..f629599c
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/tests/parserTests/mwexamples-arithmetic.r
@@ -0,0 +1 @@
+MATCH \ No newline at end of file
diff --git a/www/wiki/extensions/AbuseFilter/tests/parserTests/mwexamples-arithmetic.t b/www/wiki/extensions/AbuseFilter/tests/parserTests/mwexamples-arithmetic.t
new file mode 100644
index 00000000..7cfaf4af
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/tests/parserTests/mwexamples-arithmetic.t
@@ -0,0 +1,8 @@
+/* Examples from [[mw:Extension:AbuseFilter/Rules format#Arithmetic]] */
+
+1 + 1 === 2 &
+2 * 2 === 4 &
+12 / 24 === 0.5 &
+24 / 12 === 2 &
+9 ** 2 === 81 &
+6 % 5 === 1 \ No newline at end of file
diff --git a/www/wiki/extensions/AbuseFilter/tests/parserTests/mwexamples-bools.r b/www/wiki/extensions/AbuseFilter/tests/parserTests/mwexamples-bools.r
new file mode 100644
index 00000000..f629599c
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/tests/parserTests/mwexamples-bools.r
@@ -0,0 +1 @@
+MATCH \ No newline at end of file
diff --git a/www/wiki/extensions/AbuseFilter/tests/parserTests/mwexamples-bools.t b/www/wiki/extensions/AbuseFilter/tests/parserTests/mwexamples-bools.t
new file mode 100644
index 00000000..a8e88539
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/tests/parserTests/mwexamples-bools.t
@@ -0,0 +1,13 @@
+/* Examples from [[mw:Extension:AbuseFilter/Rules format#Boolean operations]] */
+
+(1 | 1) &
+(1 | 0) &
+!(0 | 0) &
+(1 & 1) &
+!(1 & 0) &
+!(0 & 0) &
+!(1 ^ 1) &
+(1 ^ 0) &
+!(0 ^ 0) &
+!(!1)
+
diff --git a/www/wiki/extensions/AbuseFilter/tests/parserTests/mwexamples-comparisons.r b/www/wiki/extensions/AbuseFilter/tests/parserTests/mwexamples-comparisons.r
new file mode 100644
index 00000000..f629599c
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/tests/parserTests/mwexamples-comparisons.r
@@ -0,0 +1 @@
+MATCH \ No newline at end of file
diff --git a/www/wiki/extensions/AbuseFilter/tests/parserTests/mwexamples-comparisons.t b/www/wiki/extensions/AbuseFilter/tests/parserTests/mwexamples-comparisons.t
new file mode 100644
index 00000000..7d0ada0d
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/tests/parserTests/mwexamples-comparisons.t
@@ -0,0 +1,20 @@
+/* Examples from [[mw:Extension:AbuseFilter/Rules format#Simple comparisons]] */
+
+!(1 == 2) &
+(1 <= 2) &
+!(1 >= 2) &
+(1 != 2) &
+(1 < 2) &
+!(1 > 2) &
+(2 = 2) &
+('' == false) &
+!('' === false) &
+(1 == true) &
+!(1 === true) &
+(['1','2','3'] == ['1','2','3']) &
+([1,2,3] === [1,2,3]) &
+(['1','2','3'] == [1,2,3]) &
+!(['1','2','3'] === [1,2,3]) &
+([1,1,''] == [true, true, false]) &
+!(['1'] == '1')
+
diff --git a/www/wiki/extensions/AbuseFilter/tests/parserTests/mwexamples-functions.r b/www/wiki/extensions/AbuseFilter/tests/parserTests/mwexamples-functions.r
new file mode 100644
index 00000000..f629599c
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/tests/parserTests/mwexamples-functions.r
@@ -0,0 +1 @@
+MATCH \ No newline at end of file
diff --git a/www/wiki/extensions/AbuseFilter/tests/parserTests/mwexamples-functions.t b/www/wiki/extensions/AbuseFilter/tests/parserTests/mwexamples-functions.t
new file mode 100644
index 00000000..ea5bf1b1
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/tests/parserTests/mwexamples-functions.t
@@ -0,0 +1,22 @@
+/* Examples from [[mw:Extension:AbuseFilter/Rules format#Functions]] */
+
+length( "Wikipedia" ) === 9 &
+lcase( "WikiPedia" ) === 'wikipedia' &
+ccnorm( "w1k1p3d14" ) === 'WIKIPEDIA' &
+ccnorm( "ωɨƙɩᑭƐƉ1α" ) === 'WIKIPEDIA' &
+ccnorm_contains_any( "w1k1p3d14", "wiKiP3D1A", "foo", "bar" ) === true &
+ccnorm_contains_any( "w1k1p3d14", "foo", "bar", "baz" ) === false &
+ccnorm_contains_any( "w1k1p3d14 is 4w3s0me", "bar", "baz", "some" ) === true &
+ccnorm( "ìíîïĩїį!ľ₤ĺľḷĿ" ) === 'IIIIIII!LLLLLL' &
+norm( "!!ω..ɨ..ƙ..ɩ..ᑭᑭ..Ɛ.Ɖ@@1%%α!!" ) === 'WIKIPEDAIA' &
+norm( "F00 B@rr" ) === 'FOBAR' &
+rmdoubles( "foobybboo" ) === 'fobybo' &
+specialratio( "Wikipedia!" ) === 0.1 &
+count( "foo", "foofooboofoo" ) === 3 &
+count( "foo,bar,baz" ) === 3 &
+rmspecials( "FOOBAR!!1" ) === 'FOOBAR1' &
+rescape( "abc* (def)" ) === 'abc\* \(def\)' &
+str_replace( "foobarbaz", "bar", "-" ) === 'foo-baz' &
+ip_in_range( "127.0.10.0", "127.0.0.0/12" ) === true &
+contains_any( "foobar", "x", "y", "f" ) === true &
+get_matches( "(foo?ba+r) is (so+ good)", "fobaaar is soooo good to eat" ) === ['fobaaar is soooo good', 'fobaaar', 'soooo good'] \ No newline at end of file
diff --git a/www/wiki/extensions/AbuseFilter/tests/parserTests/mwexamples-keywords.r b/www/wiki/extensions/AbuseFilter/tests/parserTests/mwexamples-keywords.r
new file mode 100644
index 00000000..f629599c
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/tests/parserTests/mwexamples-keywords.r
@@ -0,0 +1 @@
+MATCH \ No newline at end of file
diff --git a/www/wiki/extensions/AbuseFilter/tests/parserTests/mwexamples-keywords.t b/www/wiki/extensions/AbuseFilter/tests/parserTests/mwexamples-keywords.t
new file mode 100644
index 00000000..d6ca07d4
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/tests/parserTests/mwexamples-keywords.t
@@ -0,0 +1,9 @@
+/* Examples from [[mw:Extension:AbuseFilter/Rules format#Keywords]] */
+
+("1234" like "12?4") &
+("1234" like "12*") &
+("foo" in "foobar") &
+("o" in ["foo", "bar"]) &
+("foo" regex "\w+") &
+("a\b" regex "a\\\\b") &
+("a\b" regex "a\x5C\x5Cb") \ No newline at end of file
diff --git a/www/wiki/extensions/AbuseFilter/tests/parserTests/mwexamples-lists.r b/www/wiki/extensions/AbuseFilter/tests/parserTests/mwexamples-lists.r
new file mode 100644
index 00000000..f629599c
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/tests/parserTests/mwexamples-lists.r
@@ -0,0 +1 @@
+MATCH \ No newline at end of file
diff --git a/www/wiki/extensions/AbuseFilter/tests/parserTests/mwexamples-lists.t b/www/wiki/extensions/AbuseFilter/tests/parserTests/mwexamples-lists.t
new file mode 100644
index 00000000..904413b3
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/tests/parserTests/mwexamples-lists.t
@@ -0,0 +1,10 @@
+/* Examples from [[mw:Extension:AbuseFilter/Rules format#Lists]] */
+
+a_list := [ 5, 6, 7, 10];
+a_list[0] == 5 &
+length(a_list) == 4 &
+string(a_list) == "5\n6\n7\n10\n" &
+5 in a_list == true &
+'5' in a_list == true &
+'5\n6' in a_list == true &
+1 in a_list == true \ No newline at end of file
diff --git a/www/wiki/extensions/AbuseFilter/tests/parserTests/norm.r b/www/wiki/extensions/AbuseFilter/tests/parserTests/norm.r
new file mode 100644
index 00000000..4736e080
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/tests/parserTests/norm.r
@@ -0,0 +1 @@
+MATCH
diff --git a/www/wiki/extensions/AbuseFilter/tests/parserTests/norm.t b/www/wiki/extensions/AbuseFilter/tests/parserTests/norm.t
new file mode 100644
index 00000000..ed2d442a
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/tests/parserTests/norm.t
@@ -0,0 +1 @@
+norm("foo") = "FO" & norm("any0ne") = "ANYONE"
diff --git a/www/wiki/extensions/AbuseFilter/tests/parserTests/numbers.r b/www/wiki/extensions/AbuseFilter/tests/parserTests/numbers.r
new file mode 100644
index 00000000..4736e080
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/tests/parserTests/numbers.r
@@ -0,0 +1 @@
+MATCH
diff --git a/www/wiki/extensions/AbuseFilter/tests/parserTests/numbers.t b/www/wiki/extensions/AbuseFilter/tests/parserTests/numbers.t
new file mode 100644
index 00000000..1959a0fe
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/tests/parserTests/numbers.t
@@ -0,0 +1 @@
+ax = 10 & Fx = 15 & 10o = 8 & 10b = 2
diff --git a/www/wiki/extensions/AbuseFilter/tests/parserTests/ord.r b/www/wiki/extensions/AbuseFilter/tests/parserTests/ord.r
new file mode 100644
index 00000000..4736e080
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/tests/parserTests/ord.r
@@ -0,0 +1 @@
+MATCH
diff --git a/www/wiki/extensions/AbuseFilter/tests/parserTests/ord.t b/www/wiki/extensions/AbuseFilter/tests/parserTests/ord.t
new file mode 100644
index 00000000..6c94f4b6
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/tests/parserTests/ord.t
@@ -0,0 +1,8 @@
+1 > 0 &
+0 < 1 &
+2 >= 2 &
+2 <= 2 &
+0.1 < 0.2 &
+0.001 <= 0.001 &
+-0.01 < 0.01 &
+0 >= -0.0001
diff --git a/www/wiki/extensions/AbuseFilter/tests/parserTests/prec.r b/www/wiki/extensions/AbuseFilter/tests/parserTests/prec.r
new file mode 100644
index 00000000..4736e080
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/tests/parserTests/prec.r
@@ -0,0 +1 @@
+MATCH
diff --git a/www/wiki/extensions/AbuseFilter/tests/parserTests/prec.t b/www/wiki/extensions/AbuseFilter/tests/parserTests/prec.t
new file mode 100644
index 00000000..3aff6ab1
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/tests/parserTests/prec.t
@@ -0,0 +1 @@
+(1 + 2 * 3 = 7) & (2 ** 2 * 2 = 8) & (1 - 1 - 1 = -1)
diff --git a/www/wiki/extensions/AbuseFilter/tests/parserTests/regex.r b/www/wiki/extensions/AbuseFilter/tests/parserTests/regex.r
new file mode 100644
index 00000000..4736e080
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/tests/parserTests/regex.r
@@ -0,0 +1 @@
+MATCH
diff --git a/www/wiki/extensions/AbuseFilter/tests/parserTests/regex.t b/www/wiki/extensions/AbuseFilter/tests/parserTests/regex.t
new file mode 100644
index 00000000..706da02d
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/tests/parserTests/regex.t
@@ -0,0 +1 @@
+"foobér" rlike "^[fq]o{2}\\S.r$" & "foo" regex "^f..?.$"
diff --git a/www/wiki/extensions/AbuseFilter/tests/parserTests/rmdoubles.r b/www/wiki/extensions/AbuseFilter/tests/parserTests/rmdoubles.r
new file mode 100644
index 00000000..4736e080
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/tests/parserTests/rmdoubles.r
@@ -0,0 +1 @@
+MATCH
diff --git a/www/wiki/extensions/AbuseFilter/tests/parserTests/rmdoubles.t b/www/wiki/extensions/AbuseFilter/tests/parserTests/rmdoubles.t
new file mode 100644
index 00000000..7a0a3f8f
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/tests/parserTests/rmdoubles.t
@@ -0,0 +1 @@
+rmdoubles("foobarééqq") = "fobaréq"
diff --git a/www/wiki/extensions/AbuseFilter/tests/parserTests/rmspecials.r b/www/wiki/extensions/AbuseFilter/tests/parserTests/rmspecials.r
new file mode 100644
index 00000000..4736e080
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/tests/parserTests/rmspecials.r
@@ -0,0 +1 @@
+MATCH
diff --git a/www/wiki/extensions/AbuseFilter/tests/parserTests/rmspecials.t b/www/wiki/extensions/AbuseFilter/tests/parserTests/rmspecials.t
new file mode 100644
index 00000000..a4df5cd5
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/tests/parserTests/rmspecials.t
@@ -0,0 +1 @@
+rmspecials("foo;bar!") = "foobar"
diff --git a/www/wiki/extensions/AbuseFilter/tests/parserTests/shortcircuit-and.r b/www/wiki/extensions/AbuseFilter/tests/parserTests/shortcircuit-and.r
new file mode 100644
index 00000000..33a8a805
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/tests/parserTests/shortcircuit-and.r
@@ -0,0 +1 @@
+NOT_MATCH \ No newline at end of file
diff --git a/www/wiki/extensions/AbuseFilter/tests/parserTests/shortcircuit-and.t b/www/wiki/extensions/AbuseFilter/tests/parserTests/shortcircuit-and.t
new file mode 100644
index 00000000..d87746de
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/tests/parserTests/shortcircuit-and.t
@@ -0,0 +1,2 @@
+/* The division by zero should not be executed and not crash the filter */
+false & 1/0 \ No newline at end of file
diff --git a/www/wiki/extensions/AbuseFilter/tests/parserTests/shortcircuit-or.r b/www/wiki/extensions/AbuseFilter/tests/parserTests/shortcircuit-or.r
new file mode 100644
index 00000000..4736e080
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/tests/parserTests/shortcircuit-or.r
@@ -0,0 +1 @@
+MATCH
diff --git a/www/wiki/extensions/AbuseFilter/tests/parserTests/shortcircuit-or.t b/www/wiki/extensions/AbuseFilter/tests/parserTests/shortcircuit-or.t
new file mode 100644
index 00000000..bec088f6
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/tests/parserTests/shortcircuit-or.t
@@ -0,0 +1,2 @@
+/* The division by zero should not be executed and not crash the filter */
+true | 1/0
diff --git a/www/wiki/extensions/AbuseFilter/tests/parserTests/specialratio.r b/www/wiki/extensions/AbuseFilter/tests/parserTests/specialratio.r
new file mode 100644
index 00000000..4736e080
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/tests/parserTests/specialratio.r
@@ -0,0 +1 @@
+MATCH
diff --git a/www/wiki/extensions/AbuseFilter/tests/parserTests/specialratio.t b/www/wiki/extensions/AbuseFilter/tests/parserTests/specialratio.t
new file mode 100644
index 00000000..c4a3565a
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/tests/parserTests/specialratio.t
@@ -0,0 +1 @@
+specialratio("foó;") = 0.25
diff --git a/www/wiki/extensions/AbuseFilter/tests/parserTests/string.r b/www/wiki/extensions/AbuseFilter/tests/parserTests/string.r
new file mode 100644
index 00000000..4736e080
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/tests/parserTests/string.r
@@ -0,0 +1 @@
+MATCH
diff --git a/www/wiki/extensions/AbuseFilter/tests/parserTests/string.t b/www/wiki/extensions/AbuseFilter/tests/parserTests/string.t
new file mode 100644
index 00000000..f6036cef
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/tests/parserTests/string.t
@@ -0,0 +1 @@
+"a\tb" = "a b" & "a\qb" = "a\qb"
diff --git a/www/wiki/extensions/AbuseFilter/tests/parserTests/tern.r b/www/wiki/extensions/AbuseFilter/tests/parserTests/tern.r
new file mode 100644
index 00000000..4736e080
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/tests/parserTests/tern.r
@@ -0,0 +1 @@
+MATCH
diff --git a/www/wiki/extensions/AbuseFilter/tests/parserTests/tern.t b/www/wiki/extensions/AbuseFilter/tests/parserTests/tern.t
new file mode 100644
index 00000000..a9f11586
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/tests/parserTests/tern.t
@@ -0,0 +1 @@
+1 ? 0 ? 3 : 4 : 5 == 4
diff --git a/www/wiki/extensions/AbuseFilter/tests/parserTests/ucase.r b/www/wiki/extensions/AbuseFilter/tests/parserTests/ucase.r
new file mode 100644
index 00000000..4736e080
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/tests/parserTests/ucase.r
@@ -0,0 +1 @@
+MATCH
diff --git a/www/wiki/extensions/AbuseFilter/tests/parserTests/ucase.t b/www/wiki/extensions/AbuseFilter/tests/parserTests/ucase.t
new file mode 100644
index 00000000..be058b8b
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/tests/parserTests/ucase.t
@@ -0,0 +1 @@
+ucase("FÁmí") = "FÁMÍ"
diff --git a/www/wiki/extensions/AbuseFilter/tests/parserTests/utf8.r b/www/wiki/extensions/AbuseFilter/tests/parserTests/utf8.r
new file mode 100644
index 00000000..4736e080
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/tests/parserTests/utf8.r
@@ -0,0 +1 @@
+MATCH
diff --git a/www/wiki/extensions/AbuseFilter/tests/parserTests/utf8.t b/www/wiki/extensions/AbuseFilter/tests/parserTests/utf8.t
new file mode 100644
index 00000000..051be509
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/tests/parserTests/utf8.t
@@ -0,0 +1 @@
+length("áéý") == 3
diff --git a/www/wiki/extensions/AbuseFilter/tests/parserTests/vars.r b/www/wiki/extensions/AbuseFilter/tests/parserTests/vars.r
new file mode 100644
index 00000000..4736e080
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/tests/parserTests/vars.r
@@ -0,0 +1 @@
+MATCH
diff --git a/www/wiki/extensions/AbuseFilter/tests/parserTests/vars.t b/www/wiki/extensions/AbuseFilter/tests/parserTests/vars.t
new file mode 100644
index 00000000..3c3a0023
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/tests/parserTests/vars.t
@@ -0,0 +1,5 @@
+/* Variables test */
+test_var1 := test_var2 := "aa";
+set( 'ResulT', set_var( 'TV3', "bb" ) );
+
+str_replace( test_var1, test_var2, tv3 ) == result; \ No newline at end of file
diff --git a/www/wiki/extensions/AbuseFilter/tests/parserTests/whitespace1.r b/www/wiki/extensions/AbuseFilter/tests/parserTests/whitespace1.r
new file mode 100644
index 00000000..4736e080
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/tests/parserTests/whitespace1.r
@@ -0,0 +1 @@
+MATCH
diff --git a/www/wiki/extensions/AbuseFilter/tests/parserTests/whitespace1.t b/www/wiki/extensions/AbuseFilter/tests/parserTests/whitespace1.t
new file mode 100644
index 00000000..bc1bf519
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/tests/parserTests/whitespace1.t
@@ -0,0 +1 @@
+1 == length("a")
diff --git a/www/wiki/extensions/AbuseFilter/tests/parserTests/wptest1.r b/www/wiki/extensions/AbuseFilter/tests/parserTests/wptest1.r
new file mode 100644
index 00000000..4736e080
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/tests/parserTests/wptest1.r
@@ -0,0 +1 @@
+MATCH
diff --git a/www/wiki/extensions/AbuseFilter/tests/parserTests/wptest1.t b/www/wiki/extensions/AbuseFilter/tests/parserTests/wptest1.t
new file mode 100644
index 00000000..0d81aee3
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/tests/parserTests/wptest1.t
@@ -0,0 +1,9 @@
+/* Filter 30 from English Wikipedia (large deletion from article by new editors) */
+user_groups_test := ["*"];
+new_size_test := 100;
+article_namespace_test := 0;
+edit_delta_test := -5000;
+added_lines_test := '';
+
+!("autoconfirmed" in user_groups_test) & (new_size_test > 50) & (article_namespace_test == 0) &
+ (edit_delta_test < -2000) & !("#redirect" in lcase(added_lines_test))
diff --git a/www/wiki/extensions/AbuseFilter/tests/parserTests/wptest2.r b/www/wiki/extensions/AbuseFilter/tests/parserTests/wptest2.r
new file mode 100644
index 00000000..4736e080
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/tests/parserTests/wptest2.r
@@ -0,0 +1 @@
+MATCH
diff --git a/www/wiki/extensions/AbuseFilter/tests/parserTests/wptest2.t b/www/wiki/extensions/AbuseFilter/tests/parserTests/wptest2.t
new file mode 100644
index 00000000..0e137503
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/tests/parserTests/wptest2.t
@@ -0,0 +1,21 @@
+/* Filter 61 from English Wikipedia (new user removing references) */
+user_groups_test := ["*"];
+new_size_test := 100;
+article_namespace_test := 0;
+edit_delta_test := -22;
+added_lines_test := ['<ref name="bah">test</ref> test2!'];
+removed_lines_test := ['<ref name="bah">test</ref><ref name="wah">test2</ref>'];
+
+!("autoconfirmed" in user_groups_test)
+/* this edit_delta ignores large blankings that are treated by another filter */
+& edit_delta_test >= -1000
+& article_namespace_test == 0
+/* No added lines usually mean a blanking which is dealt with by other filter */
+& length(added_lines_test) != 0
+& !("#redirect" in lcase(added_lines_test))
+/*Counts of more reference tags are removed than added */
+& (rcount("(<ref>|<ref\sname|</ref>)",removed_lines_test) > rcount("(<ref>|<ref\sname|</ref>)",added_lines_test))
+/*Excludes changing to the named reference format and removing closing tags attached to formerly named refs. Unequality is to account for closing the first named tag */
+& !(rcount("<ref>",removed_lines_test) = rcount("<ref\sname",added_lines_test) | rcount("</ref>",removed_lines_test) <= rcount("<ref\sname",added_lines_test))
+/*Excludes removal of references to Wikipedia itself */
+& !(count("http://en.wikipedia.org",string(removed_lines_test)) > count("http://en.wikipedia.org",string(added_lines_test)))
diff --git a/www/wiki/extensions/AbuseFilter/tests/parserTests/wptest3.r b/www/wiki/extensions/AbuseFilter/tests/parserTests/wptest3.r
new file mode 100644
index 00000000..4736e080
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/tests/parserTests/wptest3.r
@@ -0,0 +1 @@
+MATCH
diff --git a/www/wiki/extensions/AbuseFilter/tests/parserTests/wptest3.t b/www/wiki/extensions/AbuseFilter/tests/parserTests/wptest3.t
new file mode 100644
index 00000000..342ba7e5
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/tests/parserTests/wptest3.t
@@ -0,0 +1,28 @@
+/* Filter 18 from English Wikipedia (test type edits from clicking on edit bar) */
+user_groups_test := ["*"];
+article_namespace_test := 0;
+added_lines_test := ["Hello world! '''Bold text''' [http://www.example.com link title]"];
+
+(article_namespace_test == 0) &
+!("autoconfirmed" in user_groups_test) &
+(contains_any(string(added_lines_test),
+ "'''Bold text'''",
+ "''Italic text''",
+ "[[Link title]]",
+ "[http://www.example.com link title]",
+ "== Headline text ==",
+ "[[File:Example.jpg]]",
+ "[[Media:Example.ogg]]",
+ "<math>Insert formula here</math>",
+ "<nowiki>Insert non-formatted text here</nowiki>",
+ "#REDIRECT [[Target page name]]",
+ "<s>Strike-through text</s>",
+ "<sup>Superscript text</sup>",
+ "<sub>Subscript text</sub>",
+ "<small>Small Text</small>",
+ "<!-- Comment -->",
+ "Image:Example.jpg|Caption",
+ "<ref>Insert footnote text here</ref>",
+ "Ǣ ǣ ǖ ǘ ǚ ǜ Ă"
+))
+