> reduce: +abc
> reduce: 6
> reduce: 9
+> # Check for extract corrupting reduce's
+> reduce: a , b
>
> listnamed: *.aa.bb : ^\Nxxx(.*)
> listnamed: *.aa.bb : ^\Nxxx(.*)
>
> addrss: local-part@dom.ain
> addrss: local-part@dom.ain
+> addrss: local-part@dom.ain
+> addrss: local-part@dom.ain
+> addrss: local-part@dom.ain
+> addrss: local-part.dot-atom@dom.ain
+> addrss: local-part@dom.ain
+> domain: dom.ain
> domain: dom.ain
> domain: dom.ain
>
> addresses: local-part@dom.ain+xyz@abc
> addresses: local-part@dom.ain:xyz@abc:p@q:r@s
> addresses:
+> Failed: output separator missing in expanding ${addresses:>}
>
> escape: B7\267F2\362
> excape8bit: undisturbed text tab
> base32d: 42 42
> Failed: argument for base32d operator is "ABC", which is not a base 32 number
>
-> The base62 operator is actually a base36 operator in the Darwin and Cygwin
+> the base62 operator is actually a base36 operator in the Darwin and Cygwin
> environments. Write cunning tests that produce the same output in both cases,
> while doing a reasonable check.
>
> length: The quick abc
> lclpt: local-part
> lclpt: local-part
+> lclpt: local.part
> quote: aZ09_.-Q "ab*cd" "abcd\"ef"
> quote: "nl(\n)"
> quote: "cr(\r)"
> isip: y 1.2.3.4
> isip4: y 1.2.3.4
> isip6: n 1.2.3.4
+> isip: n ::1.2.3.256
+> isip4: n 1.2.3.256
> isip: n 1:2:3:4
> isip4: n 1:2:3:4
> isip6: n 1:2:3:4
> isip: y fe80::a00:20ff:fe86:a061
> isip4: n fe80::a00:20ff:fe86:a061
> isip6: y fe80::a00:20ff:fe86:a061
+> isip: y fe80::1.2.3.4
> isip: n rhubarb
> isip4: n rhubarb
> isip6: n rhubarb
> a.b.c: *.b.c
> ab.c: *b.c
> xyz: ^X
-> Xyz: ^X
-> Zyz: ^Z
+> .Xyz: ^X
+> .Zyz: ^Z
> a b: "^a +b"
> a b: "^a +b"
> a:b: lookup succeeded
> a.b.c: *.b.c
> ab.c: *b.c
> xyz: ^X
-> Xyz: ^X
-> Zyz: ^Z
+> .Xyz: ^X
+> .Zyz: ^Z
> a b: "^a +b"
> a b: "^a +b"
> a:b: lookup succeeded
>
> # Some tests of case-(in)dependence
>
-> MiXeD-CD: Data found for case-dependent MiXeD-CD
-> MixeD-CD: NOT FOUND
-> MiXeD-Ncd: Data found for case-independent MiXeD-nCD
-> MixeD-Ncd: Data found for case-independent MiXeD-nCD
+> .MiXeD-CD: Data found for case-dependent MiXeD-CD
+> .MixeD-CD: NOT FOUND
+> .MiXeD-Ncd: Data found for case-independent MiXeD-nCD
+> .MixeD-Ncd: Data found for case-independent MiXeD-nCD
>
> # IP address (CIDR) lookups
>
> 2
> 2
> 2
-> Empty:<>
-> Empty:<>
+> empty:<>
+> empty:<>
> <3>
> <3>
-> Empty:<>
-> Empty:<>
+> empty:<>
+> empty:<>
> no Z
> no 4
> Failed: "extract" failed and "fail" requested
> abcd abcd
> <:abcd:> =?iso-8859-8?Q?=3C=3Aabcd=3A=3E?=
> <:ab cd:> =?iso-8859-8?Q?=3C=3Aab_cd=3A=3E?=
-> Long: =?iso-8859-8?Q?_here_we_go=3A_a_string_that_is_going_to_be_encoded=3A_?= =?iso-8859-8?Q?it_will_go_over_the_75-char_limit?=
-> Long: =?iso-8859-8?Q?_here_we_go=3A_a_string_that_is_going_to_be_encoded=3A_?= =?iso-8859-8?Q?it_will_go_over_the_75-char_limit_by_a_long_way=3B_in?= =?iso-8859-8?Q?_fact_this_one_will_go_over_the_150_character_limit?=
+> long: =?iso-8859-8?Q?_here_we_go=3A_a_string_that_is_going_to_be_encoded=3A_?= =?iso-8859-8?Q?it_will_go_over_the_75-char_limit?=
+> long: =?iso-8859-8?Q?_here_we_go=3A_a_string_that_is_going_to_be_encoded=3A_?= =?iso-8859-8?Q?it_will_go_over_the_75-char_limit_by_a_long_way=3B_in?= =?iso-8859-8?Q?_fact_this_one_will_go_over_the_150_character_limit?=
>
> # RFC 2047 decode
>
> abcd
1234
-> RC=0
+> rc=0
> 1
-> RC=0
+> rc=0
> abcd
1234
-> RC=0
+> rc=0
> 2
-> RC=1
+> rc=1
> abcd
1234
-> RC=1
+> rc=1
> N
-> RC=127
+> rc=127
> >><<
-> RC=0
+> rc=0
> 1!=2
-> RC=0
+> rc=0
>
> # PRVS
>
>
> # Syntax errors
>
-> Failed: prvs second argument must be a single digit
-> Failed: prvs second argument must be a single digit
-> Failed: prvs second argument must be a single digit
+> Failed: prvs third argument must be a single digit
+> Failed: prvs third argument must be a single digit
+> Failed: prvs third argument must be a single digit
>
> # Correct checks; can't put explicit addresses in the tests, because they
> # will change over time.
> CALLER
> correct
>
+> # JSON
+>
+> "http://www.example.com/image/481989943"
+> 100
+> 943
+> 943
+>
+> 59
+> 59
+>
+> {"1":116, "2":943, "3":234}
+> expect: {"1":116, "2":943, "3":234}
+>
+> {"1":116, "2":943, "3":234}
+> expect: {"1":116, "2":943, "3":234}
+>
+> <>
+> expect: <>
+>
>
> escape: B7·F2ò
>
> yes
> match_address: no
>
+> primary_hostname: myhost.test.ex
+> match: cdab
+> Failed: "if" failed and "fail" requested
+> yes
+> match_address: no
+>
> -be Sender host name and address etc, all unset
> -oMa sender_host_address =
> sender_host_port = 0