@Test
public void testMultiply() {

  final Transform trans1 = new Transform();
  final Transform trans2 = new Transform();
  assertEquals(Transform.IDENTITY, trans1.multiply(trans2, null));
  trans1.setTranslation(1, 2, 3);
  final Transform trans3 = trans1.multiply(trans2, null);
  assertEquals(trans1, trans3);
  trans2.setTranslation(-1, -2, -3);
  trans1.multiply(trans2, trans3);
  assertEquals(Transform.IDENTITY, trans3);
  assertTrue(trans3.isRotationMatrix());
  assertTrue(trans3.isIdentity());
  assertTrue(trans3.isUniformScale());
  trans2.setScale(1, 2, 1);
  trans1.multiply(trans2, trans3);
  assertEquals(new Transform().setScale(1, 2, 1), trans3);
  assertTrue(trans3.isRotationMatrix());
  assertFalse(trans3.isIdentity());
  assertFalse(trans3.isUniformScale());
  trans1.setScale(1, 2, 1);
  trans1.multiply(trans2, trans3);
  assertEquals(new Transform().setRotation(new Matrix3(1, 0, 0, 0, 4, 0, 0, 0, 1)).setTranslation(0, -2, 0), trans3);
  assertFalse(trans3.isRotationMatrix());
  assertFalse(trans3.isIdentity());
  assertFalse(trans3.isUniformScale());
}