public void testTranslateGlobal2_m3_0RotateGlobal0_0_m30RotateLocal0_m40_0TranslateLocal4_0_0() {

		double[][] matrix = HoneyBee.createTransformForOrigin();

		matrix = HoneyBee.translateAlongGlobalAxes(matrix, 2, -3, 0);

		matrix = HoneyBee.rotateAroundGlobalAxes(matrix, 0, 0, -30);

		matrix = HoneyBee.rotateAroundLocalAxes(matrix, 0, -40, 0);

		matrix = HoneyBee.translateAlongLocalAxes(matrix, 4, 0, 0);

		double[] actualTranslation = HoneyBee
				.getTranslationFromTransform(matrix);

		double[] expectedTranslation = new double[] {
				2 + 4 - (8 * SIN15 * SIN15) - (8 * SIN20 * SIN20 * COS30),
				-3 + (-8 * SIN15 * COS15) + (8 * SIN20 * SIN20 * SIN30),
				8 * SIN20 * COS20 };

		boolean passed = HoneyBee.assertVectorsEqual(expectedTranslation,
				actualTranslation, SCALE);

		assertTrue(passed);

		double[][] actualRotation = HoneyBee.getRotationFromTransform(matrix);

		double[][] expectedRotation = new double[][] {
				new double[] { 0.663414001465, -0.383022248745, 0.642787575722 },
				new double[] { 0.5, 0.866025388241, 0.0 },
				new double[] { -0.556670367718, 0.321393787861, 0.76604449749 } };

		passed = HoneyBee.assertMatricesEqual(expectedRotation, actualRotation,
				SCALE);

		assertTrue(passed);

	}