#### 5.2.4 Tests and Conditions ¶

Tests are Sieve commands that return boolean value. E.g. the test

    header :contains "from" "coyote"

returns true only if the header “From” of the current message contains substring “coyote”.

The tests shipped with the GNU Sieve are described in Tests.

Condition is a Sieve expression that evaluates to `true` or `false`. In its simplest form, condition is just a Sieve test.

To reverse the sense of a condition use keyword `not`, e.g.:

    not header :contains "from" "coyote"

The results of several conditions may be joined together by logical `and` and `or` operations. The special form `allof` takes several tests as its arguments and computes the logical `and` of their results. Similarly, the form `anyof` performs logical `or` over the results of its arguments. E.g.:

    if anyof (not exists ["From", "Date"],
              header :contains "from" "fool@example.edu")
      {
        discard;
      }