awips2/edexOsgi/com.raytheon.uf.common.util/unit-test/com/raytheon/uf/common/util/ReflectionUtilTest.java
Steve Harris cd4185ef5c 13.1.2-2 baseline
Former-commit-id: 51208e5515 [formerly c0c1d56f3a] [formerly 4ba416aeb3 [formerly 221d0aaf0e19a054387134e72a76a278159bf4d0]]
Former-commit-id: 4ba416aeb3
Former-commit-id: 941337c553
2013-01-06 14:32:24 -06:00

132 lines
4.1 KiB
Java

/**
* This software was developed and / or modified by Raytheon Company,
* pursuant to Contract DG133W-05-CQ-1067 with the US Government.
*
* U.S. EXPORT CONTROLLED TECHNICAL DATA
* This software product contains export-restricted data whose
* export/transfer/disclosure is restricted by U.S. law. Dissemination
* to non-U.S. persons whether in the United States or abroad requires
* an export license or other authorization.
*
* Contractor Name: Raytheon Company
* Contractor Address: 6825 Pine Street, Suite 340
* Mail Stop B8
* Omaha, NE 68106
* 402.291.0100
*
* See the AWIPS II Master Rights File ("Master Rights File.pdf") for
* further licensing information.
**/
package com.raytheon.uf.common.util;
import static org.junit.Assert.assertArrayEquals;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashSet;
import java.util.List;
import org.junit.Test;
/**
* Test {@link ReflectionUtil}.
*
* <pre>
*
* SOFTWARE HISTORY
*
* Date Ticket# Engineer Description
* ------------ ---------- ----------- --------------------------
* Jul 10, 2012 634 djohnson Initial creation
*
* </pre>
*
* @author djohnson
* @version 1.0
*/
public class ReflectionUtilTest {
private static final String NON_EXISTANT = "nonExistant";
@Test
public void testNewInstanceOfAssignableTypeWithInterface() {
List<?> list = ReflectionUtil.newInstanceOfAssignableType(List.class,
ArrayList.class.getName());
assertTrue(list instanceof ArrayList<?>);
}
@Test(expected = ReflectionException.class)
public void testNewInstanceOfAssignableTypeThrowsReflectionExceptionOnIncompatibleCast() {
ReflectionUtil.newInstanceOfAssignableType(List.class,
HashSet.class.getName());
}
@Test(expected = ReflectionException.class)
public void testNewInstanceOfAssignableTypeThrowsReflectionExceptionOnInvalidClassname() {
ReflectionUtil.newInstanceOfAssignableType(List.class, NON_EXISTANT);
}
@Test
public void testGetterRetrievesGetPrefixedValue() {
byte[] expected = new byte[] { 't', 'e', 's', 't' };
String value = new String(expected);
byte[] actual = (byte[]) ReflectionUtil.getter(value, "bytes");
assertArrayEquals(
"Did not receive the expected value from the getter!",
expected, actual);
}
@Test
public void testGetterWithCastResult() {
byte[] expected = new byte[] { 't', 'e', 's', 't' };
String value = new String(expected);
byte[] actual = ReflectionUtil.getter(byte[].class, value, "bytes");
assertArrayEquals(
"Did not receive the expected value from the getter!",
expected, actual);
}
@Test
public void testGetterRetrievesIsPrefixedValue() {
List<String> list = Collections.emptyList();
boolean value = (Boolean) ReflectionUtil.getter(list, "empty");
assertTrue(
"Incorrect value retrieved from the getter using an is prefix!",
value);
}
@Test(expected = ReflectionException.class)
public void testGetterThrowsReflectionExceptionOnNoSuchMethod() {
byte[] expected = new byte[] { 't', 'e', 's', 't' };
String value = new String(expected);
ReflectionUtil.getter(value, NON_EXISTANT);
}
@Test
public void testSetterCanSetValueOnProperlyNamedMethod() {
final String name = "blah";
Thread thread = new Thread();
ReflectionUtil.setter(thread, "name", name);
assertEquals("Setter did not set the correct value!", name,
thread.getName());
}
@Test(expected = ReflectionException.class)
public void testSetterThrowsReflectionExceptionOnNoSuchMethod() {
String string = "blah";
Thread thread = new Thread();
ReflectionUtil.setter(thread, string, NON_EXISTANT);
}
}