require "vnd.dovecot.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";
}
}