Add unit tests for file version 1.7 (simulation extensions)
This commit is contained in:
		
							parent
							
								
									a6c2092379
								
							
						
					
					
						commit
						8c00dbf159
					
				@ -48,6 +48,7 @@ import net.sf.openrocket.rocketcomponent.TubeCoupler;
 | 
				
			|||||||
import net.sf.openrocket.simulation.SimulationOptions;
 | 
					import net.sf.openrocket.simulation.SimulationOptions;
 | 
				
			||||||
import net.sf.openrocket.simulation.customexpression.CustomExpression;
 | 
					import net.sf.openrocket.simulation.customexpression.CustomExpression;
 | 
				
			||||||
import net.sf.openrocket.simulation.exception.SimulationException;
 | 
					import net.sf.openrocket.simulation.exception.SimulationException;
 | 
				
			||||||
 | 
					import net.sf.openrocket.simulation.extension.impl.ScriptingExtension;
 | 
				
			||||||
import net.sf.openrocket.simulation.listeners.AbstractSimulationListener;
 | 
					import net.sf.openrocket.simulation.listeners.AbstractSimulationListener;
 | 
				
			||||||
import net.sf.openrocket.simulation.listeners.SimulationListener;
 | 
					import net.sf.openrocket.simulation.listeners.SimulationListener;
 | 
				
			||||||
import net.sf.openrocket.startup.Application;
 | 
					import net.sf.openrocket.startup.Application;
 | 
				
			||||||
@ -241,7 +242,7 @@ public class TestRockets {
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
	public Rocket makeSmallFlyable() {
 | 
						public static Rocket makeSmallFlyable() {
 | 
				
			||||||
		double noseconeLength = 0.10, noseconeRadius = 0.01;
 | 
							double noseconeLength = 0.10, noseconeRadius = 0.01;
 | 
				
			||||||
		double bodytubeLength = 0.20, bodytubeRadius = 0.01, bodytubeThickness = 0.001;
 | 
							double bodytubeLength = 0.20, bodytubeRadius = 0.01, bodytubeThickness = 0.001;
 | 
				
			||||||
		
 | 
							
 | 
				
			||||||
@ -281,8 +282,12 @@ public class TestRockets {
 | 
				
			|||||||
		String id = rocket.newFlightConfigurationID();
 | 
							String id = rocket.newFlightConfigurationID();
 | 
				
			||||||
		bodytube.setMotorMount(true);
 | 
							bodytube.setMotorMount(true);
 | 
				
			||||||
		
 | 
							
 | 
				
			||||||
		Motor m = Application.getMotorSetDatabase().findMotors(null, null, "B4", Double.NaN, Double.NaN).get(0);
 | 
							MotorConfiguration motorConfig = new MotorConfiguration();
 | 
				
			||||||
		bodytube.getMotorConfiguration().get(id).setMotor(m);
 | 
							ThrustCurveMotor motor = getTestMotor();
 | 
				
			||||||
 | 
							motorConfig.setMotor(motor);
 | 
				
			||||||
 | 
							motorConfig.setEjectionDelay(5);
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							bodytube.getMotorConfiguration().set(id, motorConfig);
 | 
				
			||||||
		bodytube.setMotorOverhang(0.005);
 | 
							bodytube.setMotorOverhang(0.005);
 | 
				
			||||||
		rocket.getDefaultConfiguration().setFlightConfigurationID(id);
 | 
							rocket.getDefaultConfiguration().setFlightConfigurationID(id);
 | 
				
			||||||
		
 | 
							
 | 
				
			||||||
@ -643,11 +648,7 @@ public class TestRockets {
 | 
				
			|||||||
		
 | 
							
 | 
				
			||||||
		// create motor config and add a motor to it
 | 
							// create motor config and add a motor to it
 | 
				
			||||||
		MotorConfiguration motorConfig = new MotorConfiguration();
 | 
							MotorConfiguration motorConfig = new MotorConfiguration();
 | 
				
			||||||
		ThrustCurveMotor motor = new ThrustCurveMotor(
 | 
							ThrustCurveMotor motor = getTestMotor();
 | 
				
			||||||
				Manufacturer.getManufacturer("A"),
 | 
					 | 
				
			||||||
				"F12X", "Desc", Motor.Type.UNKNOWN, new double[] {},
 | 
					 | 
				
			||||||
				0.024, 0.07, new double[] { 0, 1, 2 }, new double[] { 0, 1, 0 },
 | 
					 | 
				
			||||||
				new Coordinate[] { Coordinate.NUL, Coordinate.NUL, Coordinate.NUL }, "digestA");
 | 
					 | 
				
			||||||
		motorConfig.setMotor(motor);
 | 
							motorConfig.setMotor(motor);
 | 
				
			||||||
		motorConfig.setEjectionDelay(5);
 | 
							motorConfig.setEjectionDelay(5);
 | 
				
			||||||
		
 | 
							
 | 
				
			||||||
@ -685,11 +686,7 @@ public class TestRockets {
 | 
				
			|||||||
		
 | 
							
 | 
				
			||||||
		// create motor config and add a motor to it
 | 
							// create motor config and add a motor to it
 | 
				
			||||||
		MotorConfiguration motorConfig = new MotorConfiguration();
 | 
							MotorConfiguration motorConfig = new MotorConfiguration();
 | 
				
			||||||
		ThrustCurveMotor motor = new ThrustCurveMotor(
 | 
							ThrustCurveMotor motor = getTestMotor();
 | 
				
			||||||
				Manufacturer.getManufacturer("A"),
 | 
					 | 
				
			||||||
				"F12X", "Desc", Motor.Type.UNKNOWN, new double[] {},
 | 
					 | 
				
			||||||
				0.024, 0.07, new double[] { 0, 1, 2 }, new double[] { 0, 1, 0 },
 | 
					 | 
				
			||||||
				new Coordinate[] { Coordinate.NUL, Coordinate.NUL, Coordinate.NUL }, "digestA");
 | 
					 | 
				
			||||||
		motorConfig.setMotor(motor);
 | 
							motorConfig.setMotor(motor);
 | 
				
			||||||
		motorConfig.setEjectionDelay(5);
 | 
							motorConfig.setEjectionDelay(5);
 | 
				
			||||||
		
 | 
							
 | 
				
			||||||
@ -918,6 +915,20 @@ public class TestRockets {
 | 
				
			|||||||
		return OpenRocketDocumentFactory.createDocumentFromRocket(rocket);
 | 
							return OpenRocketDocumentFactory.createDocumentFromRocket(rocket);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						public static OpenRocketDocument makeTestRocket_v107_withSimulationExtension(String script) {
 | 
				
			||||||
 | 
							Rocket rocket = makeSmallFlyable();
 | 
				
			||||||
 | 
							OpenRocketDocument document = OpenRocketDocumentFactory.createDocumentFromRocket(rocket);
 | 
				
			||||||
 | 
							Simulation sim = new Simulation(rocket);
 | 
				
			||||||
 | 
							ScriptingExtension ext = new ScriptingExtension();
 | 
				
			||||||
 | 
							ext.setEnabled(true);
 | 
				
			||||||
 | 
							ext.setLanguage("JavaScript");
 | 
				
			||||||
 | 
							ext.setScript(script);
 | 
				
			||||||
 | 
							sim.getSimulationExtensions().add(ext);
 | 
				
			||||||
 | 
							document.addSimulation(sim);
 | 
				
			||||||
 | 
							return document;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						
 | 
				
			||||||
	/*
 | 
						/*
 | 
				
			||||||
	 * Create a new test rocket for testing OpenRocketSaver.estimateFileSize()
 | 
						 * Create a new test rocket for testing OpenRocketSaver.estimateFileSize()
 | 
				
			||||||
	 */
 | 
						 */
 | 
				
			||||||
@ -991,4 +1002,15 @@ public class TestRockets {
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						private static ThrustCurveMotor getTestMotor() {
 | 
				
			||||||
 | 
							return new ThrustCurveMotor(
 | 
				
			||||||
 | 
									Manufacturer.getManufacturer("A"),
 | 
				
			||||||
 | 
									"F12X", "Desc", Motor.Type.UNKNOWN, new double[] {},
 | 
				
			||||||
 | 
									0.024, 0.07, new double[] { 0, 1, 2 }, new double[] { 0, 1, 0 },
 | 
				
			||||||
 | 
									new Coordinate[] { Coordinate.NUL, Coordinate.NUL, Coordinate.NUL }, "digestA");
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
@ -4,6 +4,7 @@ import java.util.Collections;
 | 
				
			|||||||
import java.util.Locale;
 | 
					import java.util.Locale;
 | 
				
			||||||
import java.util.Set;
 | 
					import java.util.Set;
 | 
				
			||||||
import java.util.concurrent.atomic.AtomicReference;
 | 
					import java.util.concurrent.atomic.AtomicReference;
 | 
				
			||||||
 | 
					import java.util.prefs.BackingStoreException;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import net.sf.openrocket.formatting.RocketDescriptor;
 | 
					import net.sf.openrocket.formatting.RocketDescriptor;
 | 
				
			||||||
import net.sf.openrocket.formatting.RocketDescriptorImpl;
 | 
					import net.sf.openrocket.formatting.RocketDescriptorImpl;
 | 
				
			||||||
@ -62,6 +63,8 @@ public class ServicesForTesting extends AbstractModule {
 | 
				
			|||||||
	
 | 
						
 | 
				
			||||||
	public static class PreferencesForTesting extends Preferences {
 | 
						public static class PreferencesForTesting extends Preferences {
 | 
				
			||||||
		
 | 
							
 | 
				
			||||||
 | 
							private static java.util.prefs.Preferences root = null;
 | 
				
			||||||
 | 
							
 | 
				
			||||||
		@Override
 | 
							@Override
 | 
				
			||||||
		public boolean getBoolean(String key, boolean defaultValue) {
 | 
							public boolean getBoolean(String key, boolean defaultValue) {
 | 
				
			||||||
			// TODO Auto-generated method stub
 | 
								// TODO Auto-generated method stub
 | 
				
			||||||
@ -153,8 +156,25 @@ public class ServicesForTesting extends AbstractModule {
 | 
				
			|||||||
		
 | 
							
 | 
				
			||||||
		@Override
 | 
							@Override
 | 
				
			||||||
		public java.util.prefs.Preferences getNode(String nodeName) {
 | 
							public java.util.prefs.Preferences getNode(String nodeName) {
 | 
				
			||||||
			// TODO Auto-generated method stub
 | 
								return getBaseNode().node(nodeName);
 | 
				
			||||||
			return null;
 | 
							}
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							private java.util.prefs.Preferences getBaseNode() {
 | 
				
			||||||
 | 
								if (root == null) {
 | 
				
			||||||
 | 
									final String name = "OpenRocket-unittest-" + System.currentTimeMillis();
 | 
				
			||||||
 | 
									root = java.util.prefs.Preferences.userRoot().node(name);
 | 
				
			||||||
 | 
									Runtime.getRuntime().addShutdownHook(new Thread() {
 | 
				
			||||||
 | 
										@Override
 | 
				
			||||||
 | 
										public void run() {
 | 
				
			||||||
 | 
											try {
 | 
				
			||||||
 | 
												root.removeNode();
 | 
				
			||||||
 | 
											} catch (BackingStoreException e) {
 | 
				
			||||||
 | 
												e.printStackTrace();
 | 
				
			||||||
 | 
											}
 | 
				
			||||||
 | 
										}
 | 
				
			||||||
 | 
									});
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
								return root;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		
 | 
							
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
				
			|||||||
@ -28,6 +28,8 @@ import net.sf.openrocket.l10n.Translator;
 | 
				
			|||||||
import net.sf.openrocket.motor.Motor;
 | 
					import net.sf.openrocket.motor.Motor;
 | 
				
			||||||
import net.sf.openrocket.motor.ThrustCurveMotor;
 | 
					import net.sf.openrocket.motor.ThrustCurveMotor;
 | 
				
			||||||
import net.sf.openrocket.plugin.PluginModule;
 | 
					import net.sf.openrocket.plugin.PluginModule;
 | 
				
			||||||
 | 
					import net.sf.openrocket.simulation.extension.impl.ScriptingExtension;
 | 
				
			||||||
 | 
					import net.sf.openrocket.simulation.extension.impl.ScriptingUtil;
 | 
				
			||||||
import net.sf.openrocket.startup.Application;
 | 
					import net.sf.openrocket.startup.Application;
 | 
				
			||||||
import net.sf.openrocket.util.TestRockets;
 | 
					import net.sf.openrocket.util.TestRockets;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -47,6 +49,10 @@ public class OpenRocketSaverTest {
 | 
				
			|||||||
	private OpenRocketSaver saver = new OpenRocketSaver();
 | 
						private OpenRocketSaver saver = new OpenRocketSaver();
 | 
				
			||||||
	private static final String TMP_DIR = "./tmp/";
 | 
						private static final String TMP_DIR = "./tmp/";
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
 | 
						public static final String SIMULATION_EXTENSION_SCRIPT = "// Test <  &\n// >\n// <![CDATA[";
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						private static Injector injector;
 | 
				
			||||||
 | 
						
 | 
				
			||||||
	@BeforeClass
 | 
						@BeforeClass
 | 
				
			||||||
	public static void setup() {
 | 
						public static void setup() {
 | 
				
			||||||
		Module applicationModule = new ServicesForTesting();
 | 
							Module applicationModule = new ServicesForTesting();
 | 
				
			||||||
@ -61,7 +67,7 @@ public class OpenRocketSaverTest {
 | 
				
			|||||||
			}
 | 
								}
 | 
				
			||||||
		};
 | 
							};
 | 
				
			||||||
		
 | 
							
 | 
				
			||||||
		Injector injector = Guice.createInjector(Modules.override(applicationModule).with(dbOverrides), pluginModule);
 | 
							injector = Guice.createInjector(Modules.override(applicationModule).with(dbOverrides), pluginModule);
 | 
				
			||||||
		Application.setInjector(injector);
 | 
							Application.setInjector(injector);
 | 
				
			||||||
		
 | 
							
 | 
				
			||||||
		File tmpDir = new File("./tmp");
 | 
							File tmpDir = new File("./tmp");
 | 
				
			||||||
@ -122,6 +128,7 @@ public class OpenRocketSaverTest {
 | 
				
			|||||||
		rocketDocs.add(TestRockets.makeTestRocket_v106_withMotorMountIgnitionConfig());
 | 
							rocketDocs.add(TestRockets.makeTestRocket_v106_withMotorMountIgnitionConfig());
 | 
				
			||||||
		rocketDocs.add(TestRockets.makeTestRocket_v106_withRecoveryDeviceDeploymentConfig());
 | 
							rocketDocs.add(TestRockets.makeTestRocket_v106_withRecoveryDeviceDeploymentConfig());
 | 
				
			||||||
		rocketDocs.add(TestRockets.makeTestRocket_v106_withStageSeparationConfig());
 | 
							rocketDocs.add(TestRockets.makeTestRocket_v106_withStageSeparationConfig());
 | 
				
			||||||
 | 
							rocketDocs.add(TestRockets.makeTestRocket_v107_withSimulationExtension(SIMULATION_EXTENSION_SCRIPT));
 | 
				
			||||||
		rocketDocs.add(TestRockets.makeTestRocket_for_estimateFileSize());
 | 
							rocketDocs.add(TestRockets.makeTestRocket_for_estimateFileSize());
 | 
				
			||||||
		
 | 
							
 | 
				
			||||||
		StorageOptions options = new StorageOptions();
 | 
							StorageOptions options = new StorageOptions();
 | 
				
			||||||
@ -135,6 +142,35 @@ public class OpenRocketSaverTest {
 | 
				
			|||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
 | 
						@Test
 | 
				
			||||||
 | 
						public void testUntrustedScriptDisabledOnLoad() {
 | 
				
			||||||
 | 
							OpenRocketDocument rocketDoc = TestRockets.makeTestRocket_v107_withSimulationExtension(SIMULATION_EXTENSION_SCRIPT);
 | 
				
			||||||
 | 
							StorageOptions options = new StorageOptions();
 | 
				
			||||||
 | 
							File file = saveRocket(rocketDoc, options);
 | 
				
			||||||
 | 
							OpenRocketDocument rocketDocLoaded = loadRocket(file.getPath());
 | 
				
			||||||
 | 
							assertEquals(1, rocketDocLoaded.getSimulations().size());
 | 
				
			||||||
 | 
							assertEquals(1, rocketDocLoaded.getSimulations().get(0).getSimulationExtensions().size());
 | 
				
			||||||
 | 
							ScriptingExtension ext = (ScriptingExtension) rocketDocLoaded.getSimulations().get(0).getSimulationExtensions().get(0);
 | 
				
			||||||
 | 
							assertEquals(false, ext.isEnabled());
 | 
				
			||||||
 | 
							assertEquals(SIMULATION_EXTENSION_SCRIPT, ext.getScript());
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						@Test
 | 
				
			||||||
 | 
						public void testTrustedScriptEnabledOnLoad() {
 | 
				
			||||||
 | 
							OpenRocketDocument rocketDoc = TestRockets.makeTestRocket_v107_withSimulationExtension("TESTING");
 | 
				
			||||||
 | 
							injector.getInstance(ScriptingUtil.class).setTrustedScript("JavaScript", "TESTING", true);
 | 
				
			||||||
 | 
							StorageOptions options = new StorageOptions();
 | 
				
			||||||
 | 
							File file = saveRocket(rocketDoc, options);
 | 
				
			||||||
 | 
							OpenRocketDocument rocketDocLoaded = loadRocket(file.getPath());
 | 
				
			||||||
 | 
							assertEquals(1, rocketDocLoaded.getSimulations().size());
 | 
				
			||||||
 | 
							assertEquals(1, rocketDocLoaded.getSimulations().get(0).getSimulationExtensions().size());
 | 
				
			||||||
 | 
							ScriptingExtension ext = (ScriptingExtension) rocketDocLoaded.getSimulations().get(0).getSimulationExtensions().get(0);
 | 
				
			||||||
 | 
							assertEquals(true, ext.isEnabled());
 | 
				
			||||||
 | 
							assertEquals("TESTING", ext.getScript());
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						
 | 
				
			||||||
	/*
 | 
						/*
 | 
				
			||||||
	 * Test how accurate estimatedFileSize is.
 | 
						 * Test how accurate estimatedFileSize is.
 | 
				
			||||||
	 * 
 | 
						 * 
 | 
				
			||||||
@ -258,6 +294,17 @@ public class OpenRocketSaverTest {
 | 
				
			|||||||
		assertEquals(106, getCalculatedFileVersion(rocketDoc));
 | 
							assertEquals(106, getCalculatedFileVersion(rocketDoc));
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
 | 
						////////////////////////////////
 | 
				
			||||||
 | 
						// Tests for File Version 1.7 // 
 | 
				
			||||||
 | 
						////////////////////////////////
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						@Test
 | 
				
			||||||
 | 
						public void testFileVersion107_withSimulationExtension() {
 | 
				
			||||||
 | 
							OpenRocketDocument rocketDoc = TestRockets.makeTestRocket_v107_withSimulationExtension(SIMULATION_EXTENSION_SCRIPT);
 | 
				
			||||||
 | 
							assertEquals(107, getCalculatedFileVersion(rocketDoc));
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						
 | 
				
			||||||
	/*
 | 
						/*
 | 
				
			||||||
	 * Utility Functions
 | 
						 * Utility Functions
 | 
				
			||||||
	 */
 | 
						 */
 | 
				
			||||||
@ -273,6 +320,7 @@ public class OpenRocketSaverTest {
 | 
				
			|||||||
		try {
 | 
							try {
 | 
				
			||||||
			rocketDoc = loader.load();
 | 
								rocketDoc = loader.load();
 | 
				
			||||||
		} catch (RocketLoadException e) {
 | 
							} catch (RocketLoadException e) {
 | 
				
			||||||
 | 
								e.printStackTrace();
 | 
				
			||||||
			fail("RocketLoadException while loading file " + fileName + " : " + e.getMessage());
 | 
								fail("RocketLoadException while loading file " + fileName + " : " + e.getMessage());
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		return rocketDoc;
 | 
							return rocketDoc;
 | 
				
			||||||
 | 
				
			|||||||
@ -25,7 +25,7 @@ public class DocumentConfigTest extends BaseTestCase {
 | 
				
			|||||||
	public void testAllVersionsTested() {
 | 
						public void testAllVersionsTested() {
 | 
				
			||||||
		
 | 
							
 | 
				
			||||||
		// Update this after creating new unit tests in OpenRocketSaver for a new OR file version
 | 
							// Update this after creating new unit tests in OpenRocketSaver for a new OR file version
 | 
				
			||||||
		String[] testedVersionsStr = { "1.0", "1.1", "1.2", "1.3", "1.4", "1.5", "1.6" };
 | 
							String[] testedVersionsStr = { "1.0", "1.1", "1.2", "1.3", "1.4", "1.5", "1.6", "1.7" };
 | 
				
			||||||
		
 | 
							
 | 
				
			||||||
		List<String> supportedVersions = Arrays.asList(DocumentConfig.SUPPORTED_VERSIONS);
 | 
							List<String> supportedVersions = Arrays.asList(DocumentConfig.SUPPORTED_VERSIONS);
 | 
				
			||||||
		List<String> testedVersions = Arrays.asList(testedVersionsStr);
 | 
							List<String> testedVersions = Arrays.asList(testedVersionsStr);
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user