require "vnd.stalwart.testsuite"; require "relational"; require "comparator-i;ascii-numeric"; /* * Test message */ test_set "message" text: From: stephan@example.org To: nico@frop.example.org Cc: frop@example.org CC: timo@example.org X-Spam-Score: 300 X-Nonsense: 1000 X-Nonsense: 20 X-Alpha: abcdzyx X-Count: a X-Count: b X-Count: c X-Count: d X-Count: e X-Count: f X-Count: g X-Count: h X-Count: i X-Count: j X-Count: k X-Count: l X-Count: m X-Count: n X-Count: o X-Count: p X-Count: q X-Count: r X-Count: s X-Count: t X-Count: u X-Count: v X-Count: w X-Count: x X-Count: y X-Count: z Subject: Test Comment: Test! . ; /* * Empty strings */ test "Value \"\" eq 40 (vs)" { if header :value "eq" :comparator "i;ascii-numeric" "comment" "40" { test_fail ":value matched empty string with i;ascii-numeric"; } if header :value "gt" :comparator "i;ascii-numeric" "x-spam-score" "" { test_fail ":value 300 exceeded empty string with i;ascii-numeric"; } if header :value "gt" :comparator "i;ascii-numeric" "x-spam-score" "" { test_fail ":count exceeded empty string with i;ascii-numeric"; } } /* * Match type :value */ test "Value 300 eq 2" { if header :value "eq" :comparator "i;ascii-numeric" "x-spam-score" "2" { test_fail "should not have matched"; } } test "Value 300 lt 2" { if header :value "lt" :comparator "i;ascii-numeric" "x-spam-score" "2" { test_fail "should not have matched"; } } test "Value 300 le 300" { if not header :value "le" :comparator "i;ascii-numeric" "x-spam-score" "300" { test_fail "should have matched"; } } test "Value 300 le 302" { if not header :value "le" :comparator "i;ascii-numeric" "x-spam-score" "302" { test_fail "should have matched"; } } test "Value 302 le 00302" { if not header :value "le" :comparator "i;ascii-numeric" "x-spam-score" "00302" { test_fail "should have matched"; } } test "Value {1000,20} le 300" { if not header :value "le" :comparator "i;ascii-numeric" "x-nonsense" "300" { test_fail "should have matched"; } } test "Value {1000,20} lt 3" { if header :value "lt" :comparator "i;ascii-numeric" "x-nonsense" "3" { test_fail "should not have matched"; } } test "Value {1000,20} gt 3000" { if header :value "gt" :comparator "i;ascii-numeric" "x-nonsense" "3000" { test_fail "should not have matched"; } } test "Value {1000,20} gt {3000,30}" { if not header :value "gt" :comparator "i;ascii-numeric" "x-nonsense" ["3000","30"] { test_fail "should have matched"; } } test "Value {1000,20} lt {3, 19})" { if header :value "lt" :comparator "i;ascii-numeric" "x-nonsense" ["3","19"] { test_fail "should not have matched"; } } test "Value {1000,20} gt {3000,1001}" { if header :value "gt" :comparator "i;ascii-numeric" "x-nonsense" ["3000","1001"] { test_fail "should not have matched"; } } test "Value abcdzyz gt aaaaaaa" { if not header :value "gt" :comparator "i;octet" "x-alpha" "aaaaaaa" { test_fail "should have matched"; } } /* * Match type :count */ test "Count 2 ne 2" { if header :count "ne" :comparator "i;ascii-numeric" "cc" "2" { test_fail "should not have matched"; } } test "Count 2 ge 2" { if not header :count "ge" :comparator "i;ascii-numeric" "cc" "2" { test_fail "should have matched"; } } test "Count 2 ge 002" { if not header :count "ge" :comparator "i;ascii-numeric" "cc" "002" { test_fail "should have matched"; } } test "Count 26 lt {4,5,6,10,20}" { if header :count "lt" :comparator "i;ascii-numeric" "x-count" ["4","5","6","10","20"] { test_fail "should not have matched"; } } test "Count 26 lt {4,5,6,10,20,100}" { if not header :count "lt" :comparator "i;ascii-numeric" "x-count" ["4","5","6","10","20","100"] { test_fail "should have matched"; } }