/* * Initial version copyright 2008 Lockheed Martin Corporation, except * as stated in the file entitled Licensing-Information. * * All modifications copyright 2009-2017 Data Access Technologies, Inc. * * Licensed under the Academic Free License version 3.0 * (http://www.opensource.org/licenses/afl-3.0.php), except as stated * in the file entitled Licensing-Information. */ package org.modeldriven.fuml.test.builtin.environment; import fUML.Debug; import fUML.Semantics.CommonBehaviors.BasicBehaviors.ParameterValueList; import fUML.Syntax.Classes.Kernel.*; public class TestSuite { public TestEnvironment environment = null; private ActivityFactory activityFactory = null; private ClassifierFactory classifierFactory = null; private ExecutorTest executorTest = null; public TestSuite(TestEnvironment environment) { this.environment = environment; this.activityFactory = environment.activityFactory; this.classifierFactory = environment.classifierFactory; this.executorTest = environment.executorTest; } // TestSuite public ParameterValueList testSimpleActivites() { Debug.println(""); Debug.println("[testSimpleActivites] Setting up..."); this.activityFactory.createCopier(); this.activityFactory.createCaller("Copier"); this.activityFactory.createSimpleDecision(0); this.activityFactory.createSimpleDecision(1); this.activityFactory.createForkJoin(); this.activityFactory.createDecisionJoin(); this.activityFactory.createForkMerge(); this.activityFactory.createForkMergeData(); this.activityFactory.createFlowFinal(); Debug.println("[testSimpleActivities] Testing..."); ParameterValueList output = new ParameterValueList(); output.addAll(this.executorTest.testExecute("Copier")); output.addAll(this.executorTest.testExecute("CopierCaller")); output.addAll(this.executorTest.testExecute("SimpleDecision0")); output.addAll(this.executorTest.testExecute("SimpleDecision1")); output.addAll(this.executorTest.testExecute("ForkJoin")); output.addAll(this.executorTest.testExecute("DecisionJoin")); output.addAll(this.executorTest.testExecute("ForkMerge")); output.addAll(this.executorTest.testExecute("ForkMergeData")); output.addAll(this.executorTest.testExecute("FlowFinal")); Debug.println("[testSimpleActivities] Done!"); return output; } // testSimpleActivites public ParameterValueList testSelfReader() { Debug.println(""); Debug.println("[testSelfReader] Setting up..."); this.activityFactory.createSelfReader(); Debug.println("[testSelfReader] Testing..."); ParameterValueList output = this.executorTest.testExecute("SelfReader"); Debug.println("[testSelfReader] Done!"); return output; } public void testHelloWorld() { Debug.println(""); Debug.println("[testHelloWorld] Setting up..."); this.activityFactory.createHelloWorld2(); Debug.println("[testHelloWorld] Testing..."); this.executorTest.testExecute("HelloWorld2"); Debug.println("[testHelloWorld] Done!"); } // testHelloWorld public void testPolymorphicOperationCall(String superclassMethodName, String subclassMethodName) { Debug.println(""); Debug.println("[testPolymorphicOperationCall] Setting up..."); if (activityFactory.getActivity(superclassMethodName) == null) return; if (activityFactory.getActivity(subclassMethodName) == null) return; String superclassName = "Super_" + superclassMethodName; String subclassName = "Sub_" + subclassMethodName; if (this.environment.getElement(superclassName) != null) { Debug.println("[testPolymorphicOperationCall] Replacing class " + superclassName + "."); this.environment.removeElement(superclassName); } if (this.environment.getElement(subclassName) != null) { Debug.println("[testPolymorphicOperationCall] Replacing class " + subclassName + "."); this.environment.removeElement(subclassName); } this.classifierFactory.createClass(superclassName); this.classifierFactory.addOperation(superclassName, "", "test", superclassMethodName); this.classifierFactory.createClass(subclassName); this.classifierFactory.addOperation(subclassName, superclassName, "test", subclassMethodName); this.activityFactory.createPolymorphicOperationCaller(subclassName, superclassName, "test"); Debug.println("[testPolymorphicOperationCall] Testing..."); this.executorTest.testExecute(subclassName + superclassName + "testCaller"); Debug.println("[testPolymorphicOperationCall] Done!"); } // testPolymorphicOperationCall public void testSuperCall(String superclassMethodName, String subclassMethodName) { Debug.println(""); Debug.println("[testSuperCall] Setting up..."); if (activityFactory.getActivity(superclassMethodName) == null) return; if (activityFactory.getActivity(subclassMethodName) == null) return; String superclassName = "Super_" + superclassMethodName; String subclassName = "Sub_" + subclassMethodName; if (this.environment.getElement(superclassName) != null) { Debug.println("[testSuperCall] Replacing class " + superclassName + "."); this.environment.removeElement(superclassName); } if (this.environment.getElement(subclassName) != null) { Debug.println("[testSuperCall] Replacing class " + subclassName + "."); this.environment.removeElement(subclassName); } // Debug.println("[testSuperCall] Creating class " + superclassName + // "..."); this.classifierFactory.createClass(superclassName); this.classifierFactory.addOperation(superclassName, "", "test", superclassMethodName); this.activityFactory.createSelfCaller(superclassName, "test"); // Activity callTestMethod = // (Activity)(this.environment.getElement(superclassName+"testSelfCaller")); this.classifierFactory.addOperation(superclassName, "", "callTest", superclassName + "testSelfCaller"); // Debug.println("[testSuperCall] " + superclassName + "::" + // "callTest method = " + callTestMethod.name + ", context = " + // callTestMethod.context); // Debug.println("[testSuperCall] Creating class " + subclassName + // "..."); this.classifierFactory.createClass(subclassName); this.classifierFactory.addOperation(subclassName, superclassName, "test", subclassMethodName); this.activityFactory.createMethodCaller(superclassName, "callTest"); this.classifierFactory.addOperation(subclassName, superclassName, "callTest", superclassName + "callTestMethodCaller"); // Debug.println("[testSuperCall] Adding generalization..."); this.classifierFactory.addGeneralization(subclassName, superclassName); // Debug.println("[testSuperCall] Creating operation caller activity..."); this.activityFactory.createOperationCaller(subclassName, "callTest"); Debug.println("[testSuperCall] Testing..."); this.executorTest.testExecute(subclassName + "callTestCaller"); Debug.println("[testSuperCall] Done!"); } // testSuperCall public void testSignalSend() { Debug.println("[testSignalSend] Setting up..."); classifierFactory.createSignal("TestSignal"); activityFactory.createSender("TestSignal"); Debug.println("[testSignalSend] Testing..."); executorTest.testExecute("TestSignalSender"); this.environment.printExtent("TestSignalAccepter"); Debug.println("[testSignalSend] Done!"); } // testSignalSend public void testCallSend() { Debug.println("[testCallSend] Setting up..."); classifierFactory.createSignal("ContinueSignal"); activityFactory.createCallSender("Test", "ContinueSignal"); Debug.println("[testCallSend] Testing..."); executorTest.testExecute("DoTestCallSender"); this.environment.printExtent("TestCallSender"); Debug.println("[testCallSend] Done!"); } // testCallSend public ParameterValueList testStructuredNode() { Debug.println(""); Debug.println("[testStructuredNode] Setting up..."); this.activityFactory.createStructuredNodeTester("ForkMergeInput"); Debug.println("[testStructuredNode] Testing..."); ParameterValueList output = this.executorTest.testExecute("StructuredForkMergeInput"); Debug.println("[testStructuredNode] Done!"); return output; } // testStructuredNode public ParameterValueList testConditionalNode() { Debug.println(""); Debug.println("[testConditionalNode] Setting up..."); this.activityFactory.createConditionalNodeTester(0); this.activityFactory.createConditionalNodeTester(1); this.activityFactory.createConditionalNodeTester(2); Debug.println("[testConditionalNode] Testing..."); ParameterValueList output = new ParameterValueList(); output.addAll(this.executorTest.testExecute("ConditionalNodeTester_0")); output.addAll(this.executorTest.testExecute("ConditionalNodeTester_1")); output.addAll(this.executorTest.testExecute("ConditionalNodeTester_2")); Debug.println("[testConditionalNode] Done!"); return output; } // testConditionalNode public ParameterValueList testLoopNode() { Debug.println(""); Debug.println("[testLoopNode] Setting up..."); this.activityFactory.createLoopNodeTester(0); this.activityFactory.createLoopNodeTester(1); this.activityFactory.createLoopNodeTester(2); Debug.println("[testLoopNode] Testing..."); ParameterValueList output = new ParameterValueList(); output.addAll(this.executorTest.testExecute("LoopNodeTester_0")); output.addAll(this.executorTest.testExecute("LoopNodeTester_1")); output.addAll(this.executorTest.testExecute("LoopNodeTester_2")); Debug.println("[testLoopNode] Done!"); return output; } // testLoopNode public ParameterValueList testExpansionRegion() { Debug.println(""); Debug.println("[testExpansionRegion] Setting up..."); this.activityFactory.createExpansionRegionTester(0); this.activityFactory.createExpansionRegionTester(1); this.activityFactory.createExpansionRegionTester(2); Debug.println("[testExpansionRegion] Testing..."); ParameterValueList output = new ParameterValueList(); output.addAll(this.executorTest.testExecute("ExpansionRegionTester_0")); output.addAll(this.executorTest.testExecute("ExpansionRegionTester_1")); output.addAll(this.executorTest.testExecute("ExpansionRegionTester_2")); Debug.println("[testExpansionRegion] Done!"); return output; } // testExpansionRegion public ParameterValueList testLinkCreator() { Debug.println("[testLinkCreator] Setting up..."); classifierFactory.createClass("A"); classifierFactory.createClass("B"); this.environment.removeElement("AB"); classifierFactory.createAssociation("AB"); classifierFactory.addEnd("AB", "a", "A", false); classifierFactory.addEnd("AB", "b", "B", false); activityFactory.createLinkCreator("AB"); Debug.println("[testLinkCreator] Testing..."); ParameterValueList output = executorTest.testExecute("ABLinkCreator"); this.environment.printExtent("AB"); Debug.println("[testLinkCreator] Done!"); return output; } // testLinkCreator public ParameterValueList testLinkDestroyer() { Debug.println("[testLinkDestroyer] Setting up..."); classifierFactory.createClass("A"); classifierFactory.createClass("B"); this.environment.removeElement("AB"); classifierFactory.createAssociation("AB"); classifierFactory.addEnd("AB", "a", "A", false); classifierFactory.addEnd("AB", "b", "B", false); activityFactory.createLinkDestroyer("AB"); Debug.println("[testLinkDestroyer] Testing..."); ParameterValueList output = executorTest.testExecute("ABLinkDestroyer"); this.environment.printExtent("AB"); Debug.println("[testLinkDestroyer] Done!"); return output; } // testLinkDestroyer public ParameterValueList testLinkReader() { Debug.println("[testLinkReader] Setting up..."); classifierFactory.createClass("A"); classifierFactory.createClass("B"); this.environment.removeElement("AB"); classifierFactory.createAssociation("AB"); classifierFactory.addEnd("AB", "a", "A", false); classifierFactory.addEnd("AB", "b", "B", false); ((Association) this.environment.getElement("AB")).memberEnd.getValue(1).multiplicityElement .setIsOrdered(true); activityFactory.createLinkReader("AB"); Debug.println("[testLinkReader] Testing..."); ParameterValueList output = executorTest.testExecute("ABLinkReader"); this.environment.printExtent("AB"); Debug.println("[testLinkReader] Done!"); return output; } // testLinkReader public ParameterValueList testLinkWriter() { Debug.println("[testLinkWriter] Setting up..."); classifierFactory.createClass("A"); classifierFactory.createClass("B"); this.environment.removeElement("AB"); classifierFactory.createAssociation("AB"); classifierFactory.addEnd("AB", "a", "A", false); classifierFactory.addEnd("AB", "b", "B", false); ((Association) this.environment.getElement("AB")).memberEnd.getValue(1).multiplicityElement .setIsOrdered(true); activityFactory.createLinkWriter("AB"); Debug.println("[testLinkWriter] Testing..."); ParameterValueList output = executorTest.testExecute("ABLinkWriter"); this.environment.printExtent("AB"); Debug.println("[testLinkWriter] Done!"); return output; } // testLinkWriter public ParameterValueList testLinkRemover() { Debug.println("[testLinkRemover] Setting up (unordered end)..."); classifierFactory.createClass("A"); classifierFactory.createClass("B"); this.environment.removeElement("AB"); classifierFactory.createAssociation("AB"); classifierFactory.addEnd("AB", "a", "A", false); classifierFactory.addEnd("AB", "b", "B", false); activityFactory.createLinkRemover("AB"); Debug.println("[testLinkRemover] Testing (unordered end)..."); executorTest.testExecute("ABLinkRemover"); this.environment.printExtent("AB"); Debug.println("[testLinkRemover] Setting up (ordered end)..."); this.environment.locus.extensionalValues.clear(); ((Association) this.environment.getElement("AB")).memberEnd.getValue(1).multiplicityElement .setIsOrdered(true); ((Association) this.environment.getElement("AB")).memberEnd.getValue(1).multiplicityElement .setIsUnique(false); this.environment.removeElement("ABLinkWriter"); this.environment.removeElement("ABLinkRemover"); activityFactory.createLinkRemover("AB"); Debug.println("[testLinkRemover] Testing (ordered end)..."); ParameterValueList output = executorTest.testExecute("ABLinkRemover"); this.environment.printExtent("AB"); Debug.println("[testLinkRemover] Done!"); return output; } // testLinkRemover public ParameterValueList testWriterReader() { Debug.println("[testWriterReader] Setting up..."); this.environment.removeElement("TestClass"); classifierFactory.createClass("TestClass"); classifierFactory.addAttribute("TestClass", "x", "Integer", false); activityFactory.createWriterReader("TestClass", "x"); Debug.println("[testWriterReader] Testing..."); ParameterValueList output = executorTest.testExecute("TestClass_x_WriterReader"); this.environment.printExtent("TestClass"); Debug.println("[testWriterReader] Done!"); return output; } // testWriterReader public ParameterValueList testIsClassified() { Debug.println("[testIsClassified] Setting up..."); classifierFactory.createSignal("Signal"); activityFactory.createIsClassifiedTester("Signal"); Debug.println("[testIsClassified] Testing..."); ParameterValueList output = executorTest.testExecute("TestIsSignal"); Debug.println("[testIsClassified] Done!"); return output; } // testIsClassified public ParameterValueList testFireAgain() { Debug.println("[testFireAgain] Setting up..."); activityFactory.createFireAgainTester(); Debug.println("[testFireAgain] Testing..."); ParameterValueList output = executorTest.testExecute("FireAgainTester"); Debug.println("[testFireAgain] Done!"); return output; } // testFireAgain public ParameterValueList testCentralBuffer() { Debug.println("[testCentralBuffer] Setting up..."); activityFactory.createCentralBuffer(); Debug.println("[testCentralBuffer] Testing..."); ParameterValueList output = executorTest.testExecute("CentralBuffer"); Debug.println("[testCentralBuffer] Done!"); return output; } public ParameterValueList testDataStore() { Debug.println("[testDataStore] Setting up..."); activityFactory.createDataStore(); Debug.println("[testDataStore] Testing..."); ParameterValueList output = executorTest.testExecute("DataStore"); Debug.println("[testDataStore] Done!"); return output; } } // TestSuite