Merge branch 'acl'
[users/heiko/exim.git] / test / scripts / 0000-Basic / 0002
index bf604477b9a02c6587aaf7c4532ceccba7c945e4..3e2421b1e0051c718791680cf1acbc145e35826d 100644 (file)
@@ -4,6 +4,7 @@
 # be present in the basic Exim binary which we require in order to run these
 # tests at all. Specialized expansion tests also exist for optional features
 # in other test scripts.
+munge dnssec
 
 exim -be
 
@@ -59,6 +60,21 @@ reduce: ${reduce{a:b:c}{+}{$value$item}}
 reduce: ${reduce {<, 1,2,3}{0}{${eval:$value+$item}}}
 reduce: ${reduce {3:0:9:4:6}{0}{${if >{$item}{$value}{$item}{$value}}}}
 
+listnamed: ${listnamed:dlist}
+listnamed: ${listnamed:+dlist}
+listnamed: ${listnamed:hlist}
+listnamed: ${listnamed:elist}
+listnamed: ${listnamed:flist}
+listnamed: ${listnamed:nolist}
+listnamed: ${listnamed_d:dlist}
+listnamed: ${listnamed_d:hlist}
+listnamed: ${listnamed_z:dlist}
+
+listcount: ${listcount:a:b:c}
+listcount: ${listcount:}
+listcount: ${listcount:<;a;b;c}
+listcount: ${listcount:${listnamed:dlist}}
+
 # Tests with iscntrl() and illegal separators
 
 map: ${map{<\n a\n\nb\nc}{'$item'}}
@@ -70,6 +86,21 @@ reduce: ${reduce {<\x7f 1\x7f2\177 3}{0}{${eval:$value+$item}}}
 
 # Operators
 
+acl: ${acl
+acl: ${acl}
+acl: ${acl {a_nosuch}}
+acl: ${acl {a_ret}}
+acl: ${acl {a_ret}{person@dom.ain}}
+acl: ${acl {a_ret}{firstarg}{secondarg}}
+acl: ${acl {a_ret}{arg with spaces}}
+acl: ${acl {a_none}}
+acl: ${acl {a_none}{person@dom.ain}}
+acl: ${acl {a_deny}}
+acl: ${acl {a_deny}{person@dom.ain}}
+acl: ${acl {a_defer}}
+acl: ${acl {a_sub}{top_arg_1}{top_arg_2}{top_arg_3}}
+acl: ${reduce {1:2:3:4} {} {$value ${acl {a_ret}{$item}}}}
+
 addrss: ${address:local-part@dom.ain}
 addrss: ${address:Exim Person <local-part@dom.ain> (that's me)}
 domain: ${domain:local-part@dom.ain}
@@ -238,10 +269,19 @@ hash:   ${if eq {1}{2}{${hash_3:invalid}}{NO}}
 md5:    ${if eq {1}{2}{${md5:invalid}}{NO}}
 mask:   ${if eq {1}{2}{${mask:invalid}}{NO}}
 
+# Number suffixes in conditions
+1k: ${if >{1}{1k}{n}{y}}
+1K: ${if >{1}{1K}{n}{y}}
+1M: ${if >{1}{1M}{n}{y}}
+1G: ${if >{1}{1G}{n}{y}}
+
 # Numeric overflow
+# >32b should work, >64b not
 
 4096M      ${if >{1}{4096M}{y}{n}}
 4096000000 ${if >{1}{4096000000}{y}{n}}
+4611686018427387904  ${if >{1}{4611686018427387904} {y}{n}}
+46116860184273879040 ${if >{1}{46116860184273879040}{y}{n}}
 
 # Conditions
 
@@ -383,6 +423,12 @@ first_delivery: ${if first_delivery{y}{n}}
 queue_running after or: ${if or{{eq {0}{0}}{queue_running}}{y}{n}}
 first_delivery after or: ${if or{{eq {0}{0}}{first_delivery}}{y}{n}}
 
+# acl expansion condition
+acl if: ${if acl {{a_ret}}               {Y:$value}{N:$value}}
+acl if: ${if acl {{a_ret}{argY}}         {Y:$value}{N:$value}}
+acl if: ${if acl {{a_deny}{argN}{arg2}}  {Y:$value}{N:$value}}
+acl if: ${if acl {{a_defer}{argN}{arg2}} {Y:$value}{N:$value}}
+
 # Default values for both if strings
 
 \${if eq{1}{1}}  >${if eq{1}{1}}<
@@ -532,6 +578,49 @@ abcdea a   z   ${tr{abcdea}{a}{z}}
 abcdea a       ${tr{abcdea}{a}{}}
 abcdea abc z   ${tr{abcdea}{abc}{z}}
 
+# Boolean
+"TrUe"                ${if bool{TrUe}{true}{false}}      EXPECT: true
+"FALSE"               ${if bool{FALSE}{true}{false}}     EXPECT: false
+" yes"                ${if bool{ yes}{true}{false}}      EXPECT: true
+" no"                 ${if bool{ no}{true}{false}}     EXPECT: false
+"yes "                ${if bool{yes }{true}{false}}      EXPECT: true
+"-1"                  ${if bool{-1}{true}{false}}     EXPECT: error
+"0"                   ${if bool{0}{true}{false}}     EXPECT: false
+"1"                   ${if bool{1}{true}{false}}      EXPECT: true
+" 0 "                 ${if bool{ 0 }{true}{false}}     EXPECT: false
+" 1 "                 ${if bool{ 1 }{true}{false}}      EXPECT: true
+"1111111111111111111" ${if bool{1111111111111111111}{true}{false}}      EXPECT: true
+"9"                   ${if bool{9}{true}{false}}      EXPECT: true
+" "                   ${if bool{ }{true}{false}}     EXPECT: false
+"text"                ${if bool{text}{true}{false}}     EXPECT: error
+" text"               ${if bool{ text}{true}{false}}     EXPECT: error
+"text "               ${if bool{text }{true}{false}}     EXPECT: error
+" text "              ${if bool{ text }{true}{false}}     EXPECT: error
+"00"                  ${if bool{00}{true}{false}}     EXPECT: false
+"!true"               ${if !bool{true}{true}{false}}     EXPECT: false
+"!false"              ${if !bool{false}{true}{false}}      EXPECT: true
+
+"TrUe"                ${if bool_lax{TrUe}{true}{false}}      EXPECT: true
+"FALSE"               ${if bool_lax{FALSE}{true}{false}}     EXPECT: false
+" yes"                ${if bool_lax{ yes}{true}{false}}      EXPECT: true
+" no"                 ${if bool_lax{ no}{true}{false}}     EXPECT: false
+"yes "                ${if bool_lax{yes }{true}{false}}      EXPECT: true
+"-1"                  ${if bool_lax{-1}{true}{false}}      EXPECT: true
+"0"                   ${if bool_lax{0}{true}{false}}     EXPECT: false
+"1"                   ${if bool_lax{1}{true}{false}}      EXPECT: true
+" 0 "                 ${if bool_lax{ 0 }{true}{false}}     EXPECT: false
+" 1 "                 ${if bool_lax{ 1 }{true}{false}}      EXPECT: true
+"1111111111111111111" ${if bool_lax{1111111111111111111}{true}{false}}      EXPECT: true
+"9"                   ${if bool_lax{9}{true}{false}}      EXPECT: true
+" "                   ${if bool_lax{ }{true}{false}}     EXPECT: false
+"text"                ${if bool_lax{text}{true}{false}}      EXPECT: true
+" text"               ${if bool_lax{ text}{true}{false}}      EXPECT: true
+"text "               ${if bool_lax{text }{true}{false}}      EXPECT: true
+" text "              ${if bool_lax{ text }{true}{false}}      EXPECT: true
+"00"                  ${if bool_lax{00}{true}{false}}      EXPECT: true
+"!true"               ${if !bool_lax{true}{true}{false}}     EXPECT: false
+"!false"              ${if !bool_lax{false}{true}{false}}      EXPECT: true
+
 # RFC 2047
 
 abcd      ${rfc2047:abcd}