addrss: ${address:local-part@dom.ain}
addrss: ${address:Exim Person <local-part@dom.ain> (that's me)}
+addrss: ${address:Exim Person <local-part(comment)@dom.ain> (that's me)}
+addrss: ${address:Exim Person <local-part@dom.ain(comment)> (that's me)}
+addrss: ${address:Exim Person <local-part(comment)@dom.ain(comment2)> (that's me)}
+addrss: ${address:Exim Person <local-part.(comment)dot-atom@dom.ain(comment2)> (that's me)}
+addrss: ${address:Exim Person <(comment)local-part@dom.ain(comment2)> (that's me)}
domain: ${domain:local-part@dom.ain}
domain: ${domain:Exim Person <local-part@dom.ain> (that's me)}
+domain: ${domain:Exim Person <local-part(foo)@(bar)dom.ain> (that's me)}
addresses: ${addresses:>' 'abc@xyz, 'pqr@xyz}
addresses: ${addresses:Exim Person <local-part@dom.ain> (that's me)}
length: ${length_10:The quick brown fox} ${l_10:abc}
lclpt: ${local_part:local-part@dom.ain}
lclpt: ${local_part:Exim Person <local-part@dom.ain> (that's me)}
+lclpt: ${local_part:Exim Person <local(comment).part@dom.(comment2)ain> (that's me)}
quote: ${quote:aZ09_.-Q} ${quote:ab*cd} ${quote:ab\cd"ef}
quote: ${quote:nl(\n)}
quote: ${quote:cr(\r)}
${extract json {seconds} { \{"hours":0, "mins":0, "seconds":59\} }}
${extract json {seconds} {${extract json {2} { ["irrelevant", \{"hours":0, "mins":0, "seconds":59\}] }}}}
+
+${extract json{IDs}{ \{"IDs": \{"1":116, "2":943, "3":234\}\} }}
+expect: {"1":116, "2":943, "3":234}
+
+${extract json{IDs}{ \{"id": \{"a":101, "b":102\}, "IDs": \{"1":116, "2":943, "3":234\}\} }}
+expect: {"1":116, "2":943, "3":234}
+
+<${extract json{nonexistent}{ \{"id": \{"a":101, "b":102\}, "IDs": \{"1":116, "2":943, "3":234\}\} }}>
+expect: <>
+
****
# Test "escape" with print_topbitchars
exim -be -DPTBC=print_topbitchars
${if eq {1}{1}{yes}{${lookup{xx}lsearch{/non/exist}}}}
match_address: ${if match_address{a.b.c}{a.b.c}{yes}{no}}
****
+exim -d-all+expand+noutf8 -be
+primary_hostname: $primary_hostname
+match: ${if match{abcd}{\N^([ab]+)(\w+)$\N}{$2$1}fail}
+match: ${if match{wxyz}{\N^([ab]+)(\w+)$\N}{$2$1}fail}
+${if eq {1}{1}{yes}{${lookup{xx}lsearch{/non/exist}}}}
+match_address: ${if match_address{a.b.c}{a.b.c}{yes}{no}}
+****
# Sender host name and address etc, all unset
exim -be
-be Sender host name and address etc, all unset