X-Git-Url: https://git.exim.org/users/heiko/exim.git/blobdiff_plain/917c116d2da00bc7acf7885f04d452ac80363bf1..436c0d208b49421d3d126f7c284bc3130b50ff14:/test/scripts/0000-Basic/0002?ds=sidebyside diff --git a/test/scripts/0000-Basic/0002 b/test/scripts/0000-Basic/0002 index 27bf70806..a8fc0bcb2 100644 --- a/test/scripts/0000-Basic/0002 +++ b/test/scripts/0000-Basic/0002 @@ -45,6 +45,44 @@ x\ +$11111111111111111111111111111111111 +${11111111111111111111111111111111111} +eval: ${eval:0} +eval: ${eval:1} +eval: ${eval:-1} +eval: ${eval:+1} +eval: ${eval:1+1} +eval: ${eval:1+2*3} +eval: ${eval:(1+2)*3} +eval: ${eval:3/2*4} +eval: ${eval:3*4/2} +eval: ${eval:42} +eval: ${eval:} +eval: ${eval:-2} +eval: ${eval:-2 - -3} +eval: ${eval:-2 - (-3)} +eval: ${eval:-2 - (-3} +eval: ${eval:-2 - -3)} +eval: ${eval:-2 --3} +eval: ${eval:-2 -+3} +eval: ${eval:-2 -+-3} +eval: ${eval:(2*(1+1))/2 + 40K} +eval: ${eval:077} +eval: ${eval:08} +eval10: ${eval10:077} +eval10: ${eval10:08} +eval10: ${eval10:0x1234} +eval: ${eval:2+42%5} +eval: ${eval:0xc&5} +eval: ${eval:0xc & 5 } +eval: ${eval:0x0c|5} +eval: ${eval:0xc^5} +eval: ${eval:0xc>>1} +eval: ${eval:0xc >> 2} +eval: ${eval:0xc >> 4 } +eval: ${eval:0xc<<1} +eval: ${eval:~255&0x1234} +eval: ${eval:~ 255&0x1234} +eval: ${eval: -(~255&0x1234)} + # List operations filter: "${filter{a:b:c}{eq{1}{1}}}" @@ -88,6 +126,15 @@ listextract: ${listextract{-5}{a:b:c:d}} listextract: ${listextract{ 5}{a:b:c:d}{}{fail}} listextract: ${listextract{ 5}{a:b:c:d}{}fail} +listquote: ${listquote{:}{abcd}} +listquote: ${listquote{:}{ab:cd}} +listquote: ${listquote{:}{:a:b:c:d:}} +listquote: ${listquote{:}{ab::cd}} +listquote: ${listquote{;}{ab:cd}} +listquote: ${listquote{;}{ab;cd}} +listquote: ${listquote{ }{ ab cd}} +listquote: <${listquote{:}{}}> + sort: ${sort{3:2:1:4}{<}{$item}} sort: ${sort {<, 3,2,1,4}{>}{$item}} sort: ${sort{c:B:a:aa}{lti}{$item}} @@ -123,8 +170,15 @@ acl: ${reduce {1:2:3:4} {} {$value ${acl {a_ret}{$item}}}} addrss: ${address:local-part@dom.ain} addrss: ${address:Exim Person (that's me)} +addrss: ${address:Exim Person (that's me)} +addrss: ${address:Exim Person (that's me)} +addrss: ${address:Exim Person (that's me)} +addrss: ${address:Exim Person (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 (that's me)} +domain: ${domain:Exim Person (that's me)} +domain: ${domain:a.b.c} addresses: ${addresses:>' 'abc@xyz, 'pqr@xyz} addresses: ${addresses:Exim Person (that's me)} @@ -138,40 +192,6 @@ addresses: ${addresses:>} escape: ${escape:B7·F2ò} excape8bit: ${escape8bit:undisturbed text\ttab\nnewline\ttab\\backslash \176tilde\177DEL\200\x81.} -eval: ${eval:1+1} -eval: ${eval:1+2*3} -eval: ${eval:(1+2)*3} -eval: ${eval:3/2*4} -eval: ${eval:3*4/2} -eval: ${eval:42} -eval: ${eval:} -eval: ${eval:-2} -eval: ${eval:-2 - -3} -eval: ${eval:-2 - (-3)} -eval: ${eval:-2 - (-3} -eval: ${eval:-2 - -3)} -eval: ${eval:-2 --3} -eval: ${eval:-2 -+3} -eval: ${eval:-2 -+-3} -eval: ${eval:(2*(1+1))/2 + 40K} -eval: ${eval:077} -eval: ${eval:08} -eval10: ${eval10:077} -eval10: ${eval10:08} -eval10: ${eval10:0x1234} -eval: ${eval:2+42%5} -eval: ${eval:0xc&5} -eval: ${eval:0xc & 5 } -eval: ${eval:0x0c|5} -eval: ${eval:0xc^5} -eval: ${eval:0xc>>1} -eval: ${eval:0xc >> 2} -eval: ${eval:0xc >> 4 } -eval: ${eval:0xc<<1} -eval: ${eval:~255&0x1234} -eval: ${eval:~ 255&0x1234} -eval: ${eval: -(~255&0x1234)} - expand: \$primary_hostname ${expand:\$primary_hostname} hash: ${hash_3:monty} ${hash_5:monty} ${hash_4_62:monty python} hash: ${hash_3:abc}X ${hash_3:ab}X ${hash_3:a}X ${hash_3:}X @@ -244,6 +264,8 @@ lc/uc: ${lc:The Quick} ${uc: Brown Fox} length: ${length_10:The quick brown fox} ${l_10:abc} lclpt: ${local_part:local-part@dom.ain} lclpt: ${local_part:Exim Person (that's me)} +lclpt: ${local_part:Exim Person (that's me)} +lclpt: ${local_part:a.b.c} quote: ${quote:aZ09_.-Q} ${quote:ab*cd} ${quote:ab\cd"ef} quote: ${quote:nl(\n)} quote: ${quote:cr(\r)} @@ -874,13 +896,62 @@ ${if ={1}{1} {true}{${if ={1}{1} {true}{${if ={1}{1}{true}fail}}}}} ${env {USER}} ${env {NO_SUCH_VARIABLE} {oops, success} {correct}} +# JSON + +${extract json {Url} \ + { \{ \"Url\": \"http://www.example.com/image/481989943\",\ + \"Height\": 125,\ + \"Width\": 100\ + \} \ + } \ + } +${extract json {Width} \ + { \{ \"Url\": \"http://www.example.com/image/481989943\",\ + \"Height\": 125,\ + \"Width\": 100\ + \} \ + } \ + } +${extract json {2} {[116, 943, 234, 38793]} } +${extract json {2} {${extract json{IDs} {\{"other":"foo", "IDs": [116, 943, 234]\} }}} } + +${extract json {2} {["red", "green", "blue", "black"]} } +${extract jsons{2} {["red", "green", "blue", "black"]} } +<${extract jsons{5} {["red", "green", "blue", "black"]} }> +expect: <> + +${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: <> +<${extract jsons{nonexistent}{ \{"id": \{"a":101, "b":102\}, "IDs": \{"1":116, "2":943, "3":234\}\} }}> +expect: <> + +${if forany_json {[1, 2, 3]}{={$item}{1}}{yes}{no}} +${if forany_jsons{["A", "B", "C"]}{eq{$item}{B}}{yes}{no}} + **** # Test "escape" with print_topbitchars exim -be -DPTBC=print_topbitchars escape: ${escape:B7·F2ò} **** # Checkout expansion debugging -exim -d-all+expand -be +exim -d-all+expand -f sndr@dom -be +primary_hostname: $primary_hostname +sender_address: $sender_address +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}} +**** +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}