<expr>
  <define name="pi">3.14</define>

  <define name="times-two" args="x">
    <multiply><get name="x"/>2</multiply>
  </define>

  <and>
    <if>
      <eq>
	<pi/>
	<float>3.14</float>
      </eq>
      <print newline="true">PASS</print>
      <expr>
	<print newline="true">FAIL</print>
	<false/>
      </expr>
    </if>

    <if>
      <eq>
	<times-two>10</times-two>
	<integer>20</integer>
      </eq>
      <print newline="true">PASS</print>
      <expr>
	<print newline="true">FAIL</print>
	<false/>
      </expr>
    </if>

    <if>
      <eq>
	<times-two>
	  2
	  <set name="x">4</set>
	</times-two>
	<integer>8</integer>
      </eq>
      <print newline="true">PASS</print>
      <expr>
	<print newline="true">FAIL</print>
	<false/>
      </expr>
    </if>

    <print newline="true">
	<string>Times two returns: </string>
	<times-two>
	  2
	  <define name="x">5</define>
	</times-two>
    </print>

    <if>
      <eq>
	<times-two>
	  2
	  <define name="x">5</define>
	</times-two>
	<integer>10</integer>
      </eq>
      <print newline="true">PASS</print>
      <expr>
	<print newline="true">FAIL</print>
	<false/>
      </expr>
    </if>
  </and>
</expr>
