/******************************************************************************* * Copyright (c) 2012, 2015 itemis AG and others. * * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Matthias Wienand (itemis AG) - initial API and implementation * *******************************************************************************/ package org.eclipse.gef.geometry.tests; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNotSame; import static org.junit.Assert.assertTrue; import org.eclipse.gef.geometry.internal.utils.PrecisionUtils; import org.eclipse.gef.geometry.planar.Point; import org.eclipse.gef.geometry.projective.Vector3D; import org.junit.Test; public class Vector3DTests { @Test public void test_equals() { Vector3D v0 = new Vector3D(1, 1, 1); assertFalse(v0.equals(null)); assertFalse(v0.equals(new Point())); assertEquals(v0, v0); assertEquals(v0, new Vector3D(1, 1, 1)); assertEquals(v0, new Vector3D(new Point(1, 1))); assertEquals(v0, new Vector3D(2, 2, 2)); } @Test public void test_getAdded() { Vector3D v0 = new Vector3D(1, 0, 5); Vector3D v1 = new Vector3D(0, 1, 5); assertEquals(new Vector3D(1, 0, 5), v0.getAdded(v0)); assertEquals(new Vector3D(0, 1, 5), v1.getAdded(v1)); assertEquals(new Vector3D(1, 1, 10), v0.getAdded(v1)); assertEquals(new Vector3D(1, 1, 10), v1.getAdded(v0)); assertEquals(new Vector3D(2, 2, 20), v0.getAdded(v1)); assertEquals(new Vector3D(2, 2, 20), v1.getAdded(v0)); } @Test public void test_getCopy() { Vector3D v0 = new Vector3D(1, 2, 3); Vector3D v1 = v0.getCopy(); assertEquals(v0, v1); assertNotSame(v0, v1); v0.x++; v0.y--; assertFalse(v0.equals(v1)); } @Test public void test_getCrossed() { Vector3D v0 = new Vector3D(1, 0, 1); Vector3D v1 = new Vector3D(0, 1, 1); assertEquals(new Vector3D(-1, -1, 1), v0.getCrossProduct(v1)); assertEquals(new Vector3D(1, 1, -1), v1.getCrossProduct(v0)); } @Test public void test_getDot() { Vector3D v0 = new Vector3D(1, 0, 1); Vector3D v1 = new Vector3D(0, 1, 1); assertTrue(PrecisionUtils.equal(1, v0.getDotProduct(v1))); assertTrue(PrecisionUtils.equal(1, v1.getDotProduct(v0))); v0 = new Vector3D(1, 2, 3); v1 = new Vector3D(3, 2, 1); assertTrue(PrecisionUtils.equal(10, v0.getDotProduct(v1))); assertTrue(PrecisionUtils.equal(10, v1.getDotProduct(v0))); } @Test public void test_getRatio() { Vector3D v0 = new Vector3D(0, 0, 1); Vector3D v1 = new Vector3D(10, 10, 1); assertEquals(new Vector3D(5, 5, 1), v0.getRatio(v1, 0.5)); assertEquals(new Vector3D(5, 5, 1), v1.getRatio(v0, 0.5)); } @Test public void test_getScaled() { Vector3D v0 = new Vector3D(1, 2, 3); for (double s = -1.1; s <= 1.1; s += 0.2) { assertEquals(new Vector3D(1, 2, 3), v0.getScaled(s)); } } @Test public void test_getSubtracted() { Vector3D v0 = new Vector3D(10, 5, 1); Vector3D v1 = new Vector3D(5, 10, 1); assertEquals(new Vector3D(0, 0, 0), v0.getSubtracted(v0)); assertEquals(new Vector3D(0, 0, 0), v1.getSubtracted(v1)); assertFalse(v0.getSubtracted(v1).equals(new Vector3D(0, 0, 1))); assertEquals(new Vector3D(5, -5, 0), v0.getSubtracted(v1)); assertEquals(new Vector3D(5, -5, 0), v1.getSubtracted(v0)); assertEquals(new Vector3D(1, -1, 1 / 5), v0.getSubtracted(v1)); assertEquals(new Vector3D(1, -1, 1 / 5), v1.getSubtracted(v0)); } @Test public void test_toString() { Vector3D v0 = new Vector3D(1, 2, 3); assertEquals("Vector3D(1.0, 2.0, 3.0)", v0.toString()); } }