void EqualMatrices(const SquareMatrix & l, const SquareMatrix & r) {
  EXPECT_EQ(l.getRows(), r.getRows());
  EXPECT_EQ(l.getCols(), r.getCols());
  for (unsigned int row = 0; row < l.getRows(); row++) {
    for (unsigned int col = 0; col < l.getCols(); col++) {
      ASSERT_NEAR(l[row][col], r[row][col], ABS_ERR);
    }
  }
}
void ValidateIdentity(const AffineTransform & t) {
  SquareMatrix m = t.GetMatrix();
  for (unsigned int row = 0; row < m.getRows(); row++) {
    for (unsigned int col = 0; col < m.getCols(); col++) {
      if (row == col) {
        ASSERT_NEAR(1, m[row][col], ABS_ERR);
      } else {
        ASSERT_NEAR(0, m[row][col], ABS_ERR);
      }
    }
  }
}