diff --git a/Applications/Analyze/test/testAnalyzeTool.cpp b/Applications/Analyze/test/testAnalyzeTool.cpp index 9ade583765..d229fbdbc1 100644 --- a/Applications/Analyze/test/testAnalyzeTool.cpp +++ b/Applications/Analyze/test/testAnalyzeTool.cpp @@ -30,11 +30,13 @@ #include #include #include +#include using namespace OpenSim; using namespace std; void testTutorialOne(); +void testAnalyses(); // Test different default activations are respected when activation // states are not provided. @@ -44,6 +46,11 @@ int main() { SimTK::Array_ failures; + try { testAnalyses(); } + catch (const std::exception& e) { + cout << e.what() << endl; failures.push_back("testAnalyses"); + } + try { testTutorialOne(); } catch (const std::exception& e) { cout << e.what() << endl; failures.push_back("testTutorialOne"); @@ -79,6 +86,46 @@ int main() return 0; } + +void testAnalyses() { + + Kinematics* temp = new Kinematics(); + + // Get all the Analyses + AnalysisSet availableAnalyses; + AnalysisSet::getAvailableAnalyses(availableAnalyses); + + const std::string original{ "original" }; + const std::string modified{ "modified" }; + + + for (int i = 0; i < availableAnalyses.getSize(); ++i) { + Analysis* analysis = &availableAnalyses.get(i); + cout << "Testing clone and assignment of " + << analysis->getConcreteClassName() << "." << endl; + + randomize(analysis); + analysis->setName(original); + Analysis* clone = analysis->clone(); + + // perform an edit on the original + analysis->setName(modified); + + // restore analysis to its unedited state + analysis->assign( *clone ); + + ASSERT(*analysis == *clone); + + delete clone; + + ASSERT(analysis->getName() == original); + + cout << "PASSED clone and assignment for " + << analysis->getConcreteClassName() << "." << endl; + } +} + + void testTutorialOne() { AnalyzeTool analyze1("PlotterTool.xml"); analyze1.getModel().print("testAnalyzeTutorialOne.osim"); diff --git a/Bindings/Java/tests/TestBasics.java b/Bindings/Java/tests/TestBasics.java index ccdd4395e1..d51f7773a5 100644 --- a/Bindings/Java/tests/TestBasics.java +++ b/Bindings/Java/tests/TestBasics.java @@ -99,12 +99,33 @@ public static void testScaleToolUtils() { ModelScaler ms = new ModelScaler(); Scale s = new Scale(); ms.addScale(s); - } + } + + public static void testAnalyses() { + // Get all the Analyses + AnalysisSet availableAnalyses = new AnalysisSet(); + AnalysisSet.getAvailableAnalyses(availableAnalyses); + + for (int i = 0; i < availableAnalyses.getSize(); ++i) { + Analysis analysis = availableAnalyses.get(i); + + OpenSimObject clone = analysis.clone(); + + // restore analysis to its unedited state + analysis.assign( clone ); + + System.out.println(analysis.dump()); + System.out.println(clone.dump()); + } +} + + public static void main(String[] args) { testBasics(); testMuscleList(); testToyReflexController(); testScaleToolUtils(); + testAnalyses(); System.out.println("Test finished!"); // TODO to cause test to fail: System.exit(-1);