<?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.
-->

<!-- Fill in some code-coverage gaps in the page service. -->

<mock-test>
    <context name="mock"/>

  	<servlet name="app" class="org.apache.tapestry.ApplicationServlet">
  		<init-parameter
  			name="org.apache.tapestry.application-specification"
  			value="/org/apache/tapestry/junit/mock/simple/Simple.application"/>
  	</servlet>
    
    <!-- Handle unknown page -->
    
    <request>
    	<parameter name="service" value="page/Qbert"/>
    	
	  	<assert-output name="Page Title">
<![CDATA[
<title>Exception</title>
]]>
		</assert-output>
				
		<assert-output>
Page 'Qbert' not found in application namespace.
		</assert-output>
	
	</request>
	
	<request>
		<parameter name="service" value="page"/>
		
	  	<assert-output name="Page Title">
<![CDATA[
<title>Exception</title>
]]>
		</assert-output>
		
<!-- Note: this doesn't seem like the correct message in this situation. -->
			
		<assert-output>
Service page requires exactly one service parameter.
		</assert-output>
	</request>		
		
</mock-test>
    	
