/** * Copyright (C) 2014 - present by OpenGamma Inc. and the OpenGamma group of companies * * Please see distribution for license. */ package com.opengamma; import static org.testng.AssertJUnit.assertTrue; import static org.testng.AssertJUnit.fail; import java.lang.reflect.Constructor; import java.lang.reflect.InvocationTargetException; /** * */ public abstract class AnalyticsTestBase { /** * @param clazz The class to test * @param variables The variables * @param variableClasses The variable classes * @param notNull Indicates which variables can be null * @throws Exception If the object cannot be constructed successfully */ public AnalyticsTestBase(final Class<?> clazz, final Object[] variables, final Class<?>[] variableClasses, final boolean[] notNull) throws Exception { testNullInputs(clazz, variables, variableClasses, notNull); } /** * Tests attempted construction with null values for non-nullable parameters fails. * @param clazz The class to test * @param variables The variables * @param variableClasses The variable classes * @param notNull Indicates whether a variable can be nullable * @throws NoSuchMethodException * @throws IllegalAccessException * @throws InstantiationException */ public void testNullInputs(final Class<?> clazz, final Object[] variables, final Class<?>[] variableClasses, final boolean[] notNull) throws NoSuchMethodException, IllegalAccessException, InstantiationException { final Constructor<?> constructor = clazz.getConstructor(variableClasses); final int length = variables.length; for (int i = 0; i < length; i++) { if (notNull[i]) { final Object[] variablesWithNull = new Object[length]; System.arraycopy(variables, 0, variablesWithNull, 0, length); variablesWithNull[i] = null; try { constructor.newInstance(variablesWithNull); } catch (final InvocationTargetException e) { assertTrue(e.getCause() instanceof IllegalArgumentException); continue; } fail(); } } } }