@Test
  public void testMatrix() {
    final IREXP testREXP =
        PlainJavaConnectionTestSuiteContext.getInstance()
            .acquireRConnection()
            .eval(
                new StringBuffer()
                    .append("try(")
                    .append("summary(lm(dist~speed,data=cars))$coefficients")
                    .append(")")
                    .toString());
    Assert.assertEquals("textREXP is not a matrix", IREXP.XT_MATRIX, testREXP.getType());
    final IRMatrix matrix = testREXP.asMatrix();
    Assert.assertNotNull("conversion asMatrx failed!", matrix);
    Assert.assertEquals("not 2 rows", 2, matrix.getRows());
    Assert.assertEquals("not 4 columns", 4, matrix.getColumns());

    Assert.assertEquals("row #1 name wrong", "(Intercept)", matrix.getRowNameAt(0));
    Assert.assertEquals("row #2 name wrong", "speed", matrix.getRowNameAt(1));

    Assert.assertEquals("column #1 name wrong", "Estimate", matrix.getColumnNameAt(0));
    Assert.assertEquals("column #2 name wrong", "Std. Error", matrix.getColumnNameAt(1));
    Assert.assertEquals("column #3 name wrong", "t value", matrix.getColumnNameAt(2));
    Assert.assertEquals("column #4 name wrong", "Pr(>|t|)", matrix.getColumnNameAt(3));

    // just once the values
    for (int row = 0; row < matrix.getRows(); row++) {
      for (int col = 0; col < matrix.getColumns(); col++) {
        Assert.assertEquals(
            "coeff type is wrong @(row=" + row + ",col=" + col + ")",
            matrix.getValueAt(row, col).getType(),
            IREXP.XT_DOUBLE);
      }
    }
    Assert.assertEquals(
        "coeff value is wrong @(row=0,col=0)",
        -17.579095,
        matrix.getValueAt(0, 0).asDouble(),
        PlainJavaConnectionTestSuiteContext.EPSILON);
    Assert.assertEquals(
        "coeff value is wrong @(row=0,col=1)",
        6.7584402,
        matrix.getValueAt(0, 1).asDouble(),
        PlainJavaConnectionTestSuiteContext.EPSILON);
    Assert.assertEquals(
        "coeff value is wrong @(row=0,col=2)",
        -2.601058,
        matrix.getValueAt(0, 2).asDouble(),
        PlainJavaConnectionTestSuiteContext.EPSILON);
    Assert.assertEquals(
        "coeff value is wrong @(row=0,col=3)",
        1.231882e-02,
        matrix.getValueAt(0, 3).asDouble(),
        PlainJavaConnectionTestSuiteContext.EPSILON);

    Assert.assertEquals(
        "coeff value is wrong @(row=1,col=0)",
        3.932409,
        matrix.getValueAt(1, 0).asDouble(),
        PlainJavaConnectionTestSuiteContext.EPSILON);
    Assert.assertEquals(
        "coeff value is wrong @(row=1,col=1)",
        0.4155128,
        matrix.getValueAt(1, 1).asDouble(),
        PlainJavaConnectionTestSuiteContext.EPSILON);
    Assert.assertEquals(
        "coeff value is wrong @(row=1,col=2)",
        9.463990,
        matrix.getValueAt(1, 2).asDouble(),
        PlainJavaConnectionTestSuiteContext.EPSILON);
    Assert.assertEquals(
        "coeff value is wrong @(row=1,col=3)",
        1.489836e-12,
        matrix.getValueAt(1, 3).asDouble(),
        PlainJavaConnectionTestSuiteContext.EPSILON);
  }