/*
 * Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements.  See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The ASF licenses this file to You 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.
 */
package wicket.markup.html.header.inheritance;

import wicket.Request;
import wicket.Response;
import wicket.Session;
import wicket.WicketTestCase;
import wicket.markup.MarkupException;
import wicket.protocol.http.WebApplication;
import wicket.protocol.http.WebSession;
import wicket.util.tester.WicketTester;

/**
 * Tests the inclusion of the wicket:head section from a panel in a subclassed
 * page.
 * 
 * @author Martijn Dashorst
 */
public class InheritanceHeadTest extends WicketTestCase
{
	/**
	 * Construct.
	 * 
	 * @param name
	 */
	public InheritanceHeadTest(String name)
	{
		super(name);
	}

	/**
	 * 
	 * @throws Exception
	 */
	public void test_1() throws Exception
	{
		try
		{
			executeTest(ConcretePage.class, "ExpectedResult.html");
			fail("Expected an exception: <wicket:head> are not allowed after <body> tags");
		}
		catch (MarkupException ex)
		{
			// Ignore
		}
	}

	/**
	 * 
	 * @throws Exception
	 */
	public void test_2() throws Exception
	{
		executeTest(ConcretePage2.class, "ExpectedResult2.html");
	}

	/**
	 * 
	 * @throws Exception
	 */
	public void test_3() throws Exception
	{
		tester = new WicketTester(new WebApplication()
		{
			/**
			 * @see wicket.protocol.http.WebApplication#newSession(Request, Response)
			 */
			public Session newSession(Request request, Response response)
			{
				return new WebSession(this, request).setStyle("myStyle");
			}
			
			public Class getHomePage()
			{
				return ConcretePage2.class;
			}
		});
		
		executeTest(ConcretePage2.class, "ExpectedResult3.html");
	}
}

@@ -844,16 +844,64 @@
 tance;%0A%0A
+import javax.servlet.http.HttpServletResponse;%0A%0A
 import w
@@ -1070,24 +1070,65 @@
 pplication;%0A
+import wicket.protocol.http.WebResponse;%0A
 import wicke
@@ -2359,16 +2359,152 @@
 s;%0A%09%09%09%7D%0A
+%09%09%09%0A%09%09%09protected WebResponse newWebResponse(HttpServletResponse servletResponse)%0A%09%09%09%7B%0A%09%09%09%09return new WebResponse(servletResponse);%0A%09%09%09%7D%0A
 %09%09%7D);%0A%09%09

Fix unit test.