diff --git a/tests/Main.cpp b/tests/Main.cpp index f584f8f3a933c722642d6fd43fb53573f9226c5c..6f13361abe83c2d7293529939aefacc600b8b1d6 100644 --- a/tests/Main.cpp +++ b/tests/Main.cpp @@ -1680,6 +1680,30 @@ void so3LinearTest(bool& error) { } } +void SO3serializationTest(bool &error){ + std::string fileName("fileTest"); + std::string errmsg("SO3serializationTest : curve serialized is not equivalent to the original curve."); + quaternion_t q0( 0.544,-0.002, -0.796, 0.265); + quaternion_t q1(0.7071, 0.7071, 0, 0); + SO3Linear_t so3Traj(q0, q1,0.5, 2.2); + + so3Traj.saveAsText<SO3Linear_t>(fileName+".txt"); + SO3Linear_t so3_from_txt; + so3_from_txt.loadFromText<SO3Linear_t>(fileName+".txt"); + CompareCurves<SO3Linear_t, SO3Linear_t>(so3Traj, so3_from_txt, errmsg+" For text serialization", error,1e-3); // approximations comes from the conversions quaternion->matrix->quaternion + + so3Traj.saveAsXML<SO3Linear_t>(fileName+".xml","so3Curve"); + SO3Linear_t so3_from_xml; + so3_from_xml.loadFromXML<SO3Linear_t>(fileName+".xml","so3Curve"); + CompareCurves<SO3Linear_t, SO3Linear_t>(so3Traj, so3_from_xml,errmsg+" For XML serialization", error,1e-3); + + so3Traj.saveAsBinary<SO3Linear_t>(fileName); + SO3Linear_t so3_from_binary; + so3_from_binary.loadFromBinary<SO3Linear_t>(fileName); + CompareCurves<SO3Linear_t, SO3Linear_t>(so3Traj, so3_from_binary, errmsg+" For binary serialization", error,1e-3); + +} + void se3CurveTest(bool& error) { quaternion_t q0(1, 0, 0, 0); quaternion_t q1(0., 1., 0, 0); @@ -2230,6 +2254,7 @@ int main(int /*argc*/, char** /*argv[]*/) { serializationCurvesTest(error); polynomialFromBoundaryConditions(error); so3LinearTest(error); + SO3serializationTest(error); se3CurveTest(error); BezierLinearProblemsetup_control_pointsNoConstraint(error); BezierLinearProblemsetup_control_pointsVarCombinatorialInit(error);