X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=test%2Fnet%2Fsf%2Fopenrocket%2Ffile%2Frocksim%2FBaseRocksimTest.java;fp=test%2Fnet%2Fsf%2Fopenrocket%2Ffile%2Frocksim%2FBaseRocksimTest.java;h=75ab35eda4c6e4a29224e02a00b0b44d152c372a;hb=198227dc14b96901f3105fd816b6a9b84993adef;hp=0000000000000000000000000000000000000000;hpb=759de538156bbd2810075a5fd14ce9ddb3fbd274;p=debian%2Fopenrocket diff --git a/test/net/sf/openrocket/file/rocksim/BaseRocksimTest.java b/test/net/sf/openrocket/file/rocksim/BaseRocksimTest.java new file mode 100644 index 00000000..75ab35ed --- /dev/null +++ b/test/net/sf/openrocket/file/rocksim/BaseRocksimTest.java @@ -0,0 +1,104 @@ +/* + * BaseRocksimTest.java + */ +package net.sf.openrocket.file.rocksim; + +import junit.framework.TestCase; + +import java.lang.reflect.Field; + +import net.sf.openrocket.rocketcomponent.RocketComponent; + +/** + * A base class for the Rocksim tests. Includes code from the junitx.addons project. + */ +public abstract class BaseRocksimTest extends TestCase { + + /** + * Test constructor. + * + * @param name the name of the test to run. + */ + public BaseRocksimTest(String name) { + super(name); + } + + public void assertContains (RocketComponent child, RocketComponent[] components) { + for (int i = 0; i < components.length; i++) { + if (components[i].equals(child)) { + return; + } + } + fail("Component array did not contain child."); + } + + /** + * Returns the value of the field on the specified object. The name + * parameter is a String specifying the simple name of the + * desired field.

+ * + * 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 String specifying the simple name of the + * desired field.

+ * + * 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); + } + + +}