001: /*
002: * Copyright (c) 2002-2008 Gargoyle Software Inc. All rights reserved.
003: *
004: * Redistribution and use in source and binary forms, with or without
005: * modification, are permitted provided that the following conditions are met:
006: *
007: * 1. Redistributions of source code must retain the above copyright notice,
008: * this list of conditions and the following disclaimer.
009: * 2. Redistributions in binary form must reproduce the above copyright notice,
010: * this list of conditions and the following disclaimer in the documentation
011: * and/or other materials provided with the distribution.
012: * 3. The end-user documentation included with the redistribution, if any, must
013: * include the following acknowledgment:
014: *
015: * "This product includes software developed by Gargoyle Software Inc.
016: * (http://www.GargoyleSoftware.com/)."
017: *
018: * Alternately, this acknowledgment may appear in the software itself, if
019: * and wherever such third-party acknowledgments normally appear.
020: * 4. The name "Gargoyle Software" must not be used to endorse or promote
021: * products derived from this software without prior written permission.
022: * For written permission, please contact info@GargoyleSoftware.com.
023: * 5. Products derived from this software may not be called "HtmlUnit", nor may
024: * "HtmlUnit" appear in their name, without prior written permission of
025: * Gargoyle Software Inc.
026: *
027: * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,
028: * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
029: * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GARGOYLE
030: * SOFTWARE INC. OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
031: * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
032: * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
033: * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
034: * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
035: * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
036: * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
037: */
038: package com.gargoylesoftware.htmlunit.util;
039:
040: import java.util.Collections;
041:
042: import org.apache.commons.httpclient.HttpState;
043: import org.apache.commons.httpclient.HttpStatus;
044:
045: import com.gargoylesoftware.htmlunit.SubmitMethod;
046: import com.gargoylesoftware.htmlunit.WebClient;
047: import com.gargoylesoftware.htmlunit.WebConnection;
048: import com.gargoylesoftware.htmlunit.WebRequestSettings;
049: import com.gargoylesoftware.htmlunit.WebResponse;
050: import com.gargoylesoftware.htmlunit.WebResponseData;
051: import com.gargoylesoftware.htmlunit.WebResponseImpl;
052: import com.gargoylesoftware.htmlunit.WebTestCase;
053:
054: /**
055: * Tests for {@link WebConnectionWrapper}.
056: *
057: * @version $Revision: 2132 $
058: * @author Marc Guillemot
059: */
060: public class WebConnectionWrapperTest extends WebTestCase {
061:
062: /**
063: * Creates a new instance.
064: * @param name The name of the new instance.
065: */
066: public WebConnectionWrapperTest(final String name) {
067: super (name);
068: }
069:
070: /**
071: * @throws Exception If the test fails.
072: */
073: public void testWrapper() throws Exception {
074: final HttpState state = new HttpState();
075: final WebResponseData data = new WebResponseData(new byte[] {},
076: HttpStatus.SC_OK, "", Collections.EMPTY_LIST);
077: final WebResponse response = new WebResponseImpl(data,
078: URL_FIRST, SubmitMethod.GET, 0);
079: final WebClient webClient = new WebClient();
080: final WebRequestSettings settings = new WebRequestSettings(
081: URL_FIRST);
082: final String[] lastMethodCalled = { "" };
083:
084: final WebConnection realConnection = new WebConnection() {
085: public WebResponse getResponse(
086: final WebRequestSettings webRequestSettings) {
087: assertSame(settings, webRequestSettings);
088: lastMethodCalled[0] = "getResponse";
089: return response;
090: }
091:
092: public HttpState getState() {
093: lastMethodCalled[0] = "getState";
094: return state;
095: }
096:
097: public WebClient getWebClient() {
098: lastMethodCalled[0] = "getWebClient";
099: return webClient;
100: }
101: };
102:
103: final WebConnectionWrapper wrapper = new WebConnectionWrapper(
104: realConnection);
105:
106: assertSame(response, wrapper.getResponse(settings));
107: assertEquals("getResponse", lastMethodCalled[0]);
108: assertSame(state, wrapper.getState());
109: assertEquals("getState", lastMethodCalled[0]);
110: assertSame(webClient, wrapper.getWebClient());
111: assertEquals("getWebClient", lastMethodCalled[0]);
112: }
113:
114: }
|