blob: 1a85700dbdad4e5944c4f54b9346a60994503262 [file] [log] [blame]
package org.apache.fulcrum.factory;
/*
* 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.
*/
import java.util.ArrayList;
import org.apache.fulcrum.testcontainer.BaseUnitTest;
import org.junit.Before;
import org.junit.Test;
/**
* Basic tests of the fulcrum factory service
*
* @author <a href="mailto:epugh@upstate.com">Eric Pugh</a>
* @author <a href="mailto:mcconnell@apache.org">Stephen McConnell</a>
*
* @version $Id$
*/
public class FactoryServiceTest extends BaseUnitTest
{
private FactoryService factoryService = null;
/**
* Defines the testcase name for JUnit.
*
* @param name the testcase's name.
*/
public FactoryServiceTest(String name)
{
super(name);
}
@Before
public void setUp() throws Exception
{
super.setUp();
factoryService = (FactoryService) this.resolve( FactoryService.class.getName() );
}
/**
* Class to test for Object getInstance(String)
* @throws Exception if factory fails to generate object
*/
@Test
public void testGetInstanceString() throws Exception
{
Object object = factoryService.getInstance("java.lang.StringBuilder");
assertTrue(object instanceof StringBuilder);
}
/**
* Class to test for Object getInstance(String, ClassLoader)
*
* @throws Exception Generic exception
*/
@Test
public void testGetInstanceStringClassLoader() throws Exception
{
Object object = factoryService.getInstance("java.lang.StringBuilder", StringBuilder.class.getClassLoader());
assertTrue(object instanceof StringBuilder);
}
/**
* Class to test for Object getInstance(String, Object[], String[])
* @throws Exception Generic exception
*/
@Test
public void testGetInstanceStringObjectArrayStringArray() throws Exception
{
String sourceValue = "testing";
Object params[] = new Object[] { sourceValue };
String signature[] = new String[] { "java.lang.String" };
Object object = factoryService.getInstance("java.lang.StringBuilder", params, signature);
assertTrue(object instanceof StringBuilder);
assertEquals(sourceValue, object.toString());
}
/**
* Class to test for Object getInstance(String, ClassLoader, Object[], String[])
*
* @throws Exception Generic exception
*/
@Test
public void testGetInstanceStringClassLoaderObjectArrayStringArray() throws Exception
{
String sourceValue = "testing";
Object params[] = new Object[] { sourceValue };
String signature[] = new String[] { "java.lang.String" };
Object object =
factoryService.getInstance(
"java.lang.StringBuilder",
StringBuilder.class.getClassLoader(),
params,
signature);
assertTrue(object instanceof StringBuilder);
assertEquals(sourceValue, object.toString());
}
/**
* Test if the loader is supported
*
* @throws Exception Generic exception
*/
@Test
public void testIsLoaderSupported() throws Exception
{
// TODO Need to run a test where the loader is NOT supported.
assertTrue(factoryService.isLoaderSupported("java.lang.String"));
}
/**
* Test get signature
*
* @throws Exception Generic exception
*/
@Test
public void testGetSignature() throws Exception
{
String sourceValue = "testing";
Object params[] = new Object[] { sourceValue };
String signature[] = new String[] { "java.lang.String" };
Class<?>[] results = factoryService.getSignature(StringBuilder.class, params, signature);
assertEquals(1, results.length);
assertTrue(results[0].equals(String.class));
Integer sourceValueInteger = new Integer(10);
params[0] = sourceValueInteger;
signature[0] = "java.lang.Integer";
results = factoryService.getSignature(ArrayList.class, params, signature);
assertEquals(1, results.length);
assertTrue("Result:" + results[0].getName(),results[0].equals(Integer.class));
}
}