import java.io.File;
import org.opensim.modeling.*;

class TestXsensDataReader {
    public static void test_XsensDataReader() {

        // Test creation and population of XsensDataReaderSettings object 
        XsensDataReaderSettings settings = new XsensDataReaderSettings();
        ExperimentalSensor  nextSensor = new ExperimentalSensor("000_00B421AF",
            "shank");
        settings.append_ExperimentalSensors(nextSensor);
        settings.set_trial_prefix(0, "MT_012005D6_031-");

        // Test costruct XsensDataReader from a XsensDataReaderSettings object 
        XsensDataReader xsensDataReader = new XsensDataReader(settings);
        // Make sure types returned by the xsensDataReader are usable in Java
        StdMapStringAbstractDataTable tables = xsensDataReader.read("");

        // Check that custom accessors are available and return usable types
        // Only spot check of the table is done as actual testing of contents 
        // lives in the C++ tests
        TimeSeriesTableVec3 accelTableTyped = IMUDataReader.getLinearAccelerationsTable(tables);
        assert accelTableTyped.getNumRows()    == 3369;
        assert accelTableTyped.getNumColumns() == 1;
        assert accelTableTyped.
               getTableMetaDataString("DataRate").equals("100.000000");
    }

    public static void main(String[] args) {
        test_XsensDataReader();
    }
};

@@ -1294,16 +1294,965 @@
 00000%22);
+%0A%0A        TimeSeriesTableQuaternion quatsTable = IMUDataReader.getOrientationsTable(tables);%0A        TimeSeriesTableRotation rotsTable = OpenSenseUtilities.convertQuaternionsToRotations(quatsTable);%0A%0A        // Test access to TimeSeriesTableRotation methods and individual Rotation matrices%0A        rotsTable.getNumColumns();%0A        rotsTable.getNumRows();%0A        Rotation rot = rotsTable.getMatrix().getElt(0,0);%0A        System.out.println(%22Rotation Matrix at rotsTable(0,0)%5Cn=================================%22);%0A        System.out.println(rot);%0A        Vec3 angles = rot.convertRotationToBodyFixedXYZ();%0A        System.out.println(%22Body-Fixed Euler Angles (X,Y,Z)%5Cn===============================%22);%0A        System.out.println(angles);%0A%0A        //Verify that we can construct an OrientationsReference from a TimeSeriesTableRotation%0A        // Uncomment below to test.%0A        //OrientationsReference oRefs = new OrientationsReference(rotsTable);
 %0A    %7D%0A%0A

Add checks that we can access methods and elements of TimeSeriesTableRotation and that we can construct an OrientationsReference from a TimeSeriesTableRotation in Java.