require "vnd.stalwart.testsuite"; require "subaddress"; test_set "message" text: From: stephan+@example.org To: timo+spam@example.net CC: nico@example.com Subject: fetch my spam Mouhahahaha... Spam! . ; /* * The ":user" argument specifies the user sub-part of the local-part of * an address. If the address is not encoded to contain a detail sub- * part, then ":user" specifies the entire left side of the address * (equivalent to ":localpart"). */ test "User sub-part" { if not address :user "cc" "nico" { test_fail "wrong :user part extracted (1)"; } if not address :user "to" "timo" { test_fail "wrong :user part extracted (2)"; } if not address :user "from" "stephan" { test_fail "wrong :user part extracted (3)"; } } /* The ":detail" argument specifies the detail sub-part of the local- * part of an address. If the address is not encoded to contain a * detail sub-part, then the address fails to match any of the specified * keys. If a zero-length string is encoded as the detail sub-part, * then ":detail" resolves to the empty value (""). */ test "Detail sub-part" { if not address :detail "to" "spam" { test_fail "wrong :detail part extracted"; } if anyof ( address :detail :matches "cc" ["*", "?"], address :detail :contains "cc" "", address :detail :is "cc" "" ) { test_fail ":detail inappropriately matched missing detail sub-part"; } if not address :detail "from" "" { test_fail "wrong empty :detail part extracted"; } }