private void assertWaypointContainsExpectedData(
      String expectedNamePrefix,
      String expectedNameSuffix,
      ReferenceFrame expectedFrame,
      double expectedTime,
      FrameOrientation expectedOrientation,
      FrameVector expectedAngularVelocity,
      YoFrameSO3TrajectoryPoint testedYoFrameSO3TrajectoryPoint,
      double epsilon) {
    assertTrue(expectedFrame == testedYoFrameSO3TrajectoryPoint.getReferenceFrame());
    assertEquals(expectedTime, testedYoFrameSO3TrajectoryPoint.getTime(), epsilon);
    assertEquals(expectedNamePrefix, testedYoFrameSO3TrajectoryPoint.getNamePrefix());
    assertEquals(expectedNameSuffix, testedYoFrameSO3TrajectoryPoint.getNameSuffix());
    assertTrue(
        expectedOrientation.epsilonEquals(
            testedYoFrameSO3TrajectoryPoint.getOrientation().getFrameOrientationCopy(), epsilon));
    assertTrue(
        expectedAngularVelocity.epsilonEquals(
            testedYoFrameSO3TrajectoryPoint.getAngularVelocity().getFrameVectorCopy(), epsilon));

    FrameSO3TrajectoryPoint actualFrameSO3TrajectoryPoint = new FrameSO3TrajectoryPoint();
    testedYoFrameSO3TrajectoryPoint.getIncludingFrame(actualFrameSO3TrajectoryPoint);
    FrameSO3TrajectoryPointTest.assertTrajectoryPointContainsExpectedData(
        expectedFrame,
        expectedTime,
        expectedOrientation,
        expectedAngularVelocity,
        actualFrameSO3TrajectoryPoint,
        epsilon);
    actualFrameSO3TrajectoryPoint = new FrameSO3TrajectoryPoint(expectedFrame);
    testedYoFrameSO3TrajectoryPoint.get(actualFrameSO3TrajectoryPoint);
    FrameSO3TrajectoryPointTest.assertTrajectoryPointContainsExpectedData(
        expectedFrame,
        expectedTime,
        expectedOrientation,
        expectedAngularVelocity,
        actualFrameSO3TrajectoryPoint,
        epsilon);

    Quat4d actualOrientation = new Quat4d();
    Vector3d actualAngularVelocity = new Vector3d();

    testedYoFrameSO3TrajectoryPoint.getOrientation(actualOrientation);
    testedYoFrameSO3TrajectoryPoint.getAngularVelocity(actualAngularVelocity);

    assertTrue(expectedOrientation.epsilonEquals(actualOrientation, epsilon));
    assertTrue(expectedAngularVelocity.epsilonEquals(actualAngularVelocity, epsilon));

    FrameOrientation actualFrameOrientation = new FrameOrientation(expectedFrame);
    FrameVector actualFrameAngularVelocity = new FrameVector(expectedFrame);

    testedYoFrameSO3TrajectoryPoint.getOrientation(actualFrameOrientation);
    testedYoFrameSO3TrajectoryPoint.getAngularVelocity(actualFrameAngularVelocity);

    assertTrue(expectedOrientation.epsilonEquals(actualFrameOrientation, epsilon));
    assertTrue(expectedAngularVelocity.epsilonEquals(actualFrameAngularVelocity, epsilon));

    actualFrameOrientation = new FrameOrientation();
    actualFrameAngularVelocity = new FrameVector();

    testedYoFrameSO3TrajectoryPoint.getOrientationIncludingFrame(actualFrameOrientation);
    testedYoFrameSO3TrajectoryPoint.getAngularVelocityIncludingFrame(actualFrameAngularVelocity);

    assertTrue(expectedOrientation.epsilonEquals(actualFrameOrientation, epsilon));
    assertTrue(expectedAngularVelocity.epsilonEquals(actualFrameAngularVelocity, epsilon));
  }