<?xml version="1.0" encoding="UTF-8"?>

<!-- $Id$ -->
<!--
   Copyright 2004 The Apache Software Foundation
  
   Licensed under the Apache License, Version 2.0 (the "License");
   you may not use this file except in compliance with the License.
   You may obtain a copy of the License at
  
       http://www.apache.org/licenses/LICENSE-2.0
  
   Unless required by applicable law or agreed to in writing, software
   distributed under the License is distributed on an "AS IS" BASIS,
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   See the License for the specific language governing permissions and
   limitations under the License.
-->
<mock-test>
    <context name="mock" root="context51"/>

    <servlet name="app" class="org.apache.tapestry.ApplicationServlet">
        <init-parameter
            name="org.apache.tapestry.application-specification"
            value="/org/apache/tapestry/junit/mock/wml/Mock.application"/>
    </servlet>

    <request>
        <parameter name="service" value="page/Stale"/>
        <parameter name="context" value=""/>

        <assert-output name="Do component">
            <![CDATA[
            <do type="prev">
            ]]>
        </assert-output>

        <assert-output name="Card">
            <![CDATA[
            <card id="StaleSession">
            ]]>
        </assert-output>

        <assert-output name="DirectLink URL">
            <![CDATA[
            href="/mock/app?service=direct/0/Stale/directLink"
            ]]>
        </assert-output>


        <assert-output name="ActionLink URL">
            <![CDATA[
            href="/mock/app?service=action/0/Stale/0/actionLink"
            ]]>
        </assert-output>

        <assert-output-matches name="Go Parameter Names" subgroup="1">
            <![CDATA[
            <postfield name="(.*?)".*?/>
            ]]>
            <match>service</match>
            <match>sp</match>
            <match>Go1</match>
        </assert-output-matches>

        <assert-output-matches name="Go Parameter Values" subgroup="1">
            <![CDATA[
            <postfield .*?value="(.*?)"/>
            ]]>
            <match>direct/0/Stale/go</match>
            <match>S1</match>
            <match></match>
        </assert-output-matches>

    </request>

    <request>
        <parameter name="service" value="direct/1/Stale/directLink"/>


        <assert-output name="StaleSession (DirectLink)">
            <![CDATA[
            <card id="StaleSession" title="StaleSession">
            ]]>
        </assert-output>
    </request>

    <request>
        <parameter name="service" value="action/1/Stale/0/actionLink"/>

        <assert-output name="StaleSession (ActionLink)">
            <![CDATA[
            <card id="StaleSession" title="StaleSession">
            ]]>
        </assert-output>
    </request>

    <request>
        <parameter name="service" value="direct/1/Stale/go"/>

        <parameter name="sp" value="S1"/>
        <parameter name="Go1" value=""/>

        <assert-output name="StaleSession (Go)">
            <![CDATA[
            <card id="StaleSession" title="StaleSession">
            ]]>
        </assert-output>
    </request>

</mock-test>

