blob: b427482971b3bc0e9ad1a25792224697b957de1e [file] [log] [blame]
/*********************************************************************
* Copyright (c) 2008 The University of York.
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
* which is available at https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
**********************************************************************/
package org.eclipse.epsilon.emc.simulink.test.unit;
import org.eclipse.epsilon.emc.simulink.test.util.AbstractSimulinkTest;
import org.junit.Test;
/**
* These tests no longer work in recent versions of Matlab (e.g. 2021b).
* As there are no known use-cases of using the driver to run simulations
* or relevant documentation, these tests have been commented out in AllTests
*/
public class SimulateTests extends AbstractSimulinkTest {
@Test
public void simulateAndGetWorkspaceVariableDouble() {
eol = "var constant1 = new `simulink/Sources/Constant`;" +
"constant1.Value = 2;" +
"var out1 = new `simulink/Sinks/To Workspace`;" +
"out1.SaveFormat = \"Array\";" +
"var function1 = new `simulink/User-Defined Functions/MATLAB Function`;" +
"function1.script = \"y = 5*u + 4;\";" +
"constant1.link(function1,1,1);" +
"function1.link(out1,1,1);" +
"M.simulate();" +
"var returnValue = M.parseMatlabEngineVariable(out1.VariableName);" +
"assertEquals(14.0d, returnValue.get('simout').get(0));";
}
@Test
public void simulateAndGetWorkspaceVariableInt() {
eol = "var constant1 = new `simulink/Sources/Constant`; " +
"constant1.OutDataTypeStr = \"int32\";" +
"constant1.Value = 5;" +
"var constant2 = new `simulink/Sources/Constant`;" +
"constant2.OutDataTypeStr = \"int32\";" +
"constant2.Value = 1;" +
"var out1 = new `simulink/Sinks/To Workspace`;" +
"out1.SaveFormat = \"Array\";" +
"var subtract1 = new `simulink/Math Operations/Subtract`;" +
"constant1.link(subtract1,1,1);" +
"constant2.link(subtract1,1,2);" +
"subtract1.link(out1,1,1);" +
"M.simulate();" +
"var returnValue = M.parseMatlabEngineVariable(out1.VariableName);" +
"assertEquals(4, returnValue.get('simout'));";
}
@Test
public void simulateAndGetWorkspaceVariableFloat() {
eol = "var constant1 = new `simulink/Sources/Constant`; " +
"constant1.OutDataTypeStr = \"single\";" +
"constant1.Value = 5;" +
"var constant2 = new `simulink/Sources/Constant`;" +
"constant2.OutDataTypeStr = \"single\";" +
"constant2.Value = 1;" +
"var out1 = new `simulink/Sinks/To Workspace`;" +
"out1.SaveFormat = \"Array\";" +
"var subtract1 = new `simulink/Math Operations/Subtract`;" +
"constant1.link(subtract1,1,1);" +
"constant2.link(subtract1,1,2);" +
"subtract1.link(out1,1,1);" +
"M.simulate();" +
"var returnValue = M.parseMatlabEngineVariable(out1.VariableName);" +
"assertEquals(4.0f, returnValue.get('simout'));";
}
@Test
public void simulateAndGetWorkspaceVariableShort() {
eol = "var constant1 = new `simulink/Sources/Constant`; " +
"constant1.OutDataTypeStr = \"int16\";" +
"constant1.Value = 5;" +
"var constant2 = new `simulink/Sources/Constant`;" +
"constant2.OutDataTypeStr = \"int16\";" +
"constant2.Value = 1;" +
"var out1 = new `simulink/Sinks/To Workspace`;" +
"out1.SaveFormat = \"Array\";" +
"var subtract1 = new `simulink/Math Operations/Subtract`;" +
"constant1.link(subtract1,1,1);" +
"constant2.link(subtract1,1,2);" +
"subtract1.link(out1,1,1);" +
"M.simulate();" +
"var returnValue = M.parseMatlabEngineVariable(out1.VariableName);" +
"assertEquals(4, returnValue.get('simout'));";
}
@Test
public void simulateAndGetWorkspaceVariableByte() {
eol = "var constant1 = new `simulink/Sources/Constant`; " +
"constant1.OutDataTypeStr = \"int8\"; " +
"constant1.Value = 5; " +
"var constant2 = new `simulink/Sources/Constant`;" +
"constant2.OutDataTypeStr = \"int8\";" +
"constant2.Value = 1;" +
"var out1 = new `simulink/Sinks/To Workspace`;" +
"out1.SaveFormat = \"Array\";" +
"var subtract1 = new `simulink/Math Operations/Subtract`;" +
"constant1.link(subtract1,1,1);" +
"constant2.link(subtract1,1,2);" +
"subtract1.link(out1,1,1);" +
"M.simulate();" +
"var returnValue = M.parseMatlabEngineVariable(out1.VariableName);" +
"assertEquals(4, returnValue.get('simout'));";
}
@Test
public void simulateAndGetWorkspaceVariableBoolean() {
eol = "var constant1 = new `simulink/Sources/Constant`; " +
"constant1.OutDataTypeStr = \"int8\"; " +
"constant1.Value = 5; " +
"var out1 = new `simulink/Sinks/To Workspace`;" +
"out1.SaveFormat = \"Array\";" +
"var compare1 = new `simulink/Logic and Bit Operations/Compare To Constant`;" +
"constant1.link(compare1,1,1);" +
"compare1.link(out1,1,1);" +
"M.simulate();" +
"var returnValue = M.parseMatlabEngineVariable(out1.VariableName);" +
"assertEquals(false, returnValue.get('simout'));";
}
}