package org.apache.maven.struts;

/* ====================================================================
 * The Apache Software License, Version 1.1
 *
 * Copyright (c) 2002 The Apache Software Foundation.  All rights
 * reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 *
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 *
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in
 *    the documentation and/or other materials provided with the
 *    distribution.
 *
 * 3. The end-user documentation included with the redistribution,
 *    if any, must include the following acknowledgment:
 *       "This product includes software developed by the
 *        Apache Software Foundation (http://www.apache.org/)."
 *    Alternately, this acknowledgment may appear in the software itself,
 *    if and wherever such third-party acknowledgments normally appear.
 *
 * 4. The names "Apache" and "Apache Software Foundation" and
 *    "Apache Maven" must not be used to endorse or promote products
 *    derived from this software without prior written permission. For
 *    written permission, please contact apache@apache.org.
 *
 * 5. Products derived from this software may not be called "Apache",
 *    "Apache Maven", nor may "Apache" appear in their name, without
 *    prior written permission of the Apache Software Foundation.
 *
 * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
 * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
 * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
 * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
 * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 * SUCH DAMAGE.
 * ====================================================================
 *
 * This software consists of voluntary contributions made by many
 * individuals on behalf of the Apache Software Foundation.  For more
 * information on the Apache Software Foundation, please see
 * <http://www.apache.org/>.
 */

import junit.framework.TestCase;

/**
 * Unit tests for {@link Action}
 * @author dion
 * @version $Id: ActionTest.java,v 1.1 2003/01/24 03:45:53 jvanzyl Exp $
 */
public class ActionTest extends TestCase
{
    /** the instance being tested */
    private Action instance;
    
    /** Creates a new instance of ActionTest 
     * @param testName the name of the test
     */
    public ActionTest(String testName)
    {
        super(testName);
    }   
    
    /**
     * Initialize per test data
     * @throws Exception when there is an unexpected problem
     */
    public void setUp() throws Exception
    {
        instance = new Action();
    }

    /** test the constructor sets all properties to null
     * @throws Exception when any error occurs
     */
    public void testConstructor() throws Exception
    {
        assertNotNull("Instance wasn't created", instance);
        assertNull("ClassName property isn't null", instance.getClassName());
        assertNull("Name property isn't null", instance.getName());
        assertNull("Scope property isn't null", instance.getScope());
        assertNull("Type property isn't null", instance.getType());
        assertNull("Unknown property isn't null", instance.getUnknown());
        assertNull("Validate property isn't null", instance.getValidate());
    }
    
    /** test the className property is working
     * @throws Exception when any error occurs
     */
    public void testClassName() throws Exception
    {
        testConstructor();
        String className = "dummyClassName";
        instance.setClassName(className);
        assertEquals("ClassName property setter or getter failed", className,
            instance.getClassName());
    }
    
    /** test the name property is working
     * @throws Exception when any error occurs
     */
    public void testName() throws Exception
    {
        testConstructor();
        String name = "dummyName";
        instance.setName(name);
        assertEquals("Name property setter or getter failed", name,
            instance.getName());
    }
    
    /** test the name property is working
     * @throws Exception when any error occurs
     */
    public void testPath() throws Exception
    {
        testConstructor();
        String path = "/dummy";
        instance.setPath(path);
        assertEquals("Path property setter or getter failed", path,
            instance.getPath());
    }
    
    /** test the scope property is working
     * @throws Exception when any error occurs
     */
    public void testScope() throws Exception
    {
        testConstructor();
        String scope = "dummyScope";
        instance.setScope(scope);
        assertEquals("Scope property setter or getter failed", scope,
            instance.getScope());
    }
    
    /** test the type property is working
     * @throws Exception when any error occurs
     */
    public void testType() throws Exception
    {
        testConstructor();
        String type = "dummyType";
        instance.setType(type);
        assertEquals("Type property setter or getter failed", type,
            instance.getType());
    }
    
    /** test the unknown property is working
     * @throws Exception when any error occurs
     */
    public void testUnknown() throws Exception
    {
        testConstructor();
        String unknown = "true";
        instance.setUnknown(unknown);
        assertEquals("Unknown property setter or getter failed", unknown,
            instance.getUnknown());
    }
    
    /** test the unknown property is working
     * @throws Exception when any error occurs
     */
    public void testValidate() throws Exception
    {
        testConstructor();
        String validate = "true";
        instance.setValidate(validate);
        assertEquals("Validate property setter or getter failed", validate,
            instance.getValidate());
    }

}
