/* * BaseRocksimTest.java */ package net.sf.openrocket.file.rocksim.importt; import java.lang.reflect.Field; import java.util.List; import net.sf.openrocket.rocketcomponent.RocketComponent; import net.sf.openrocket.util.BaseTestCase.BaseTestCase; import org.junit.Assert; /** * A base class for the Rocksim tests. Includes code from the junitx.addons project. */ public abstract class RocksimTestBase extends BaseTestCase { public void assertContains(RocketComponent child, List<RocketComponent> components) { Assert.assertTrue("Components did not contain child", components.contains(child)); } /** * Returns the value of the field on the specified object. The name * parameter is a <code>String</code> specifying the simple name of the * desired field.<p> * * The object is first searched for any matching field. If no matching * field is found, the superclasses are recursively searched. * * @exception NoSuchFieldException if a field with the specified name is * not found. */ public static Object getField(Object object, String name) throws NoSuchFieldException { if (object == null) { throw new IllegalArgumentException("Invalid null object argument"); } for (Class<?> cls = object.getClass(); cls != null; cls = cls.getSuperclass()) { try { Field field = cls.getDeclaredField(name); field.setAccessible(true); return field.get(object); } catch (Exception ex) { /* in case of an exception, we will throw a new * NoSuchFieldException object */ ; } } throw new NoSuchFieldException("Could get value for field " + object.getClass().getName() + "." + name); } /** * Returns the value of the field on the specified class. The name * parameter is a <code>String</code> specifying the simple name of the * desired field.<p> * * The class is first searched for any matching field. If no matching * field is found, the superclasses are recursively searched. * * @exception NoSuchFieldException if a field with the specified name is * not found. */ public static Object getField(Class<?> cls, String name) throws NoSuchFieldException { if (cls == null) { throw new IllegalArgumentException("Invalid null cls argument"); } Class<?> base = cls; while (base != null) { try { Field field = base.getDeclaredField(name); field.setAccessible(true); return field.get(base); } catch (Exception ex) { /* in case of an exception, we will throw a new * NoSuchFieldException object */ ; } base = base.getSuperclass(); } throw new NoSuchFieldException("Could get value for static field " + cls.getName() + "." + name); } }