require "vnd.stalwart.testsuite"; require "relational"; require "comparator-i;ascii-numeric"; test_set "message" text: Received: ... Received: ... Subject: example To: foo@example.com, baz@example.com CC: qux@example.com RFC Example . ; test "Example 1" { # The test: if not address :count "ge" :comparator "i;ascii-numeric" ["to", "cc"] ["3"] { test_fail "should have counted three addresses"; } # would evaluate to true, and the test if anyof ( address :count "ge" :comparator "i;ascii-numeric" ["to"] ["3"], address :count "ge" :comparator "i;ascii-numeric" ["cc"] ["3"] ) { test_fail "should not have counted three addresses"; } # would evaluate to false. # To check the number of received fields in the header, the following # test may be used: if header :count "ge" :comparator "i;ascii-numeric" ["received"] ["3"] { test_fail "should not have counted three received headers"; } # This would evaluate to false. But if not header :count "ge" :comparator "i;ascii-numeric" ["received", "subject"] ["3"] { test_fail "should have counted three headers"; } # would evaluate to true. # The test: if header :count "ge" :comparator "i;ascii-numeric" ["to", "cc"] ["3"] { test_fail "should not have counted three to or cc headers"; } # will always evaluate to false on an RFC 2822 compliant message # [RFC2822], since a message can have at most one "to" field and at # most one "cc" field. This test counts the number of fields, not the # number of addresses. }