package org.apache.maven.struts;

/* ====================================================================
 *   Copyright 2001-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.
 * ====================================================================
 */

import junit.framework.TestCase;

/**
 * Unit tests for {@link Action}
 * @author dion
 * @version $Id: ActionTest.java,v 1.2 2004/03/02 15:36:14 evenisse 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());
    }

}
