/*
* $Id$
* This file is a part of the Arakhne Foundation Classes, http://www.arakhne.org/afc
*
* Copyright (c) 2000-2012 Stephane GALLAND.
* Copyright (c) 2005-10, Multiagent Team, Laboratoire Systemes et Transports,
* Universite de Technologie de Belfort-Montbeliard.
* Copyright (c) 2013-2016 The original authors, and other authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.arakhne.afc.math.geometry.d3;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNotSame;
import static org.junit.Assert.assertTrue;
import org.junit.After;
import org.junit.Assume;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import org.arakhne.afc.math.AbstractMathTestCase;
import org.arakhne.afc.math.geometry.coordinatesystem.CoordinateSystem3DTestRule;
import org.arakhne.afc.math.geometry.d3.d.Tuple3d;
@SuppressWarnings("all")
public abstract class AbstractTuple3DTest<TT extends Tuple3D> extends AbstractMathTestCase {
@Rule
public CoordinateSystem3DTestRule csTestRule = new CoordinateSystem3DTestRule();
protected TT t;
public TT getT() {
return this.t;
}
@Before
public void setUp() {
this.t = createTuple(1, -2, 0);
}
@After
public void tearDown() {
this.t = null;
}
public abstract TT createTuple(double x, double y, double z);
public abstract boolean isIntCoordinates();
@Test
public final void getX() {
assertEpsilonEquals(1., getT().getX());
}
@Test
public final void ix() {
assertEquals(1, getT().ix());
}
@Test
public final void getY() {
assertEpsilonEquals(-2., getT().getY());
}
@Test
public final void iy() {
assertEquals(-2, getT().iy());
}
@Test
public final void getZ() {
assertEpsilonEquals(0., getT().getZ());
}
@Test
public final void iz() {
assertEquals(0, getT().iz());
}
@Test
public final void equals_notEquals() {
Tuple3D c = new Tuple3d();
assertFalse(getT().equals(c));
}
@Test
public final void equals_equals() {
Tuple3D c = new Tuple3d(1, -2, 0);
assertTrue(getT().equals(c));
}
@Test
public final void equals_same() {
assertTrue(getT().equals(getT()));
}
@Test
public final void equals_null() {
assertFalse(getT().equals(null));
}
@Test
public final void testCloneTuple() {
Tuple3D clone = getT().clone();
assertNotNull(clone);
assertNotSame(getT(), clone);
assertEpsilonEquals(getT().getX(), clone.getX());
assertEpsilonEquals(getT().getY(), clone.getY());
assertEpsilonEquals(getT().getZ(), clone.getZ());
}
@Test
public void absolute() {
getT().absolute();
assertEpsilonEquals(1, getT().getX());
assertEpsilonEquals(2, getT().getY());
assertEpsilonEquals(0, getT().getZ());
}
@Test
public void absoluteT() {
Tuple3D c = new Tuple3d();
getT().absolute(c);
assertEpsilonEquals(1, getT().getX());
assertEpsilonEquals(-2, getT().getY());
assertEpsilonEquals(0, getT().getZ());
assertEpsilonEquals(1, c.getX());
assertEpsilonEquals(2, c.getY());
assertEpsilonEquals(0, c.getZ());
}
@Test
public void addIntIntInt() {
getT().add(6, 7, 1);
assertEpsilonEquals(7, getT().getX());
assertEpsilonEquals(5, getT().getY());
assertEpsilonEquals(1, getT().getZ());
}
@Test
public void addDoubleDouble_iffp() {
Assume.assumeFalse(isIntCoordinates());
getT().add(6.5, 7.5, 5.5);
assertEpsilonEquals(7.5, getT().getX());
assertEpsilonEquals(5.5, getT().getY());
assertEpsilonEquals(5.5, getT().getY());
}
@Test
public void addDoubleDouble_ifi() {
Assume.assumeTrue(isIntCoordinates());
getT().add(6.5, 7.5, 5.5);
assertEquals(8, getT().ix());
assertEquals(6, getT().iy());
assertEquals(11, getT().iz());
}
@Test
public void addXInt() {
getT().addX(6);
assertEpsilonEquals(7, getT().getX());
assertEpsilonEquals(-2, getT().getY());
assertEpsilonEquals(0, getT().getZ());
}
@Test
public void addXDouble_iffp() {
Assume.assumeFalse(isIntCoordinates());
getT().addX(6.5);
assertEpsilonEquals(7.5, getT().getX());
assertEpsilonEquals(-2, getT().getY());
assertEpsilonEquals(0, getT().getZ());
}
@Test
public void addXDouble_ifi() {
Assume.assumeTrue(isIntCoordinates());
getT().addX(6.5);
assertEquals(8, getT().ix());
assertEquals(-2, getT().iy());
assertEquals(0, getT().iz());
}
@Test
public void addYInt() {
getT().addY(6);
assertEpsilonEquals(1, getT().getX());
assertEpsilonEquals(4, getT().getY());
assertEpsilonEquals(0, getT().getZ());
}
@Test
public void addYDouble_iffp() {
Assume.assumeFalse(isIntCoordinates());
getT().addY(6.5);
assertEpsilonEquals(1, getT().getX());
assertEpsilonEquals(4.5, getT().getY());
assertEpsilonEquals(0, getT().getZ());
}
@Test
public void addYDouble_ifi() {
Assume.assumeTrue(isIntCoordinates());
getT().addY(6.5);
assertEquals(1, getT().ix());
assertEquals(5, getT().iy());
assertEquals(0, getT().iz());
}
@Test
public void addZInt() {
getT().addZ(5);
assertEpsilonEquals(1, getT().getX());
assertEpsilonEquals(-2, getT().getY());
assertEpsilonEquals(5, getT().getZ());
}
@Test
public void addZDouble_iffp() {
Assume.assumeFalse(isIntCoordinates());
getT().addZ(5.5);
assertEpsilonEquals(1, getT().getX());
assertEpsilonEquals(-2, getT().getY());
assertEpsilonEquals(5.5, getT().getZ());
}
@Test
public void addZDouble_ifi() {
Assume.assumeTrue(isIntCoordinates());
getT().addZ(5.5);
assertEquals(1, getT().ix());
assertEquals(-2, getT().iy());
assertEquals(6, getT().iz());
}
@Test
public void negateT() {
Tuple3D c = new Tuple3d();
getT().negate(c);
assertEpsilonEquals(0, getT().getX());
assertEpsilonEquals(0, getT().getY());
assertEpsilonEquals(0, getT().getZ());
c = new Tuple3d(25, -45, -17);
getT().negate(c);
assertEpsilonEquals(-25, getT().getX());
assertEpsilonEquals(45, getT().getY());
assertEpsilonEquals(17, getT().getZ());
}
@Test
public void negate() {
getT().negate();
assertEpsilonEquals(-1, getT().getX());
assertEpsilonEquals(2, getT().getY());
assertEpsilonEquals(-0, getT().getZ());
}
@Test
public void scaleIntT() {
Tuple3D c = new Tuple3d(2, -1, -2);
getT().scale(4, c);
assertEpsilonEquals(8, getT().getX());
assertEpsilonEquals(-4, getT().getY());
assertEpsilonEquals(-8, getT().getZ());
}
@Test
public void scaleDoubleT_iffp() {
Assume.assumeFalse(isIntCoordinates());
Tuple3D c = new Tuple3d(2, -1, 0);
getT().scale(4.5, c);
assertEpsilonEquals(9, getT().getX());
assertEpsilonEquals(-4.5, getT().getY());
assertEpsilonEquals(0, getT().getZ());
}
@Test
public void scaleDoubleT_ifi() {
Assume.assumeTrue(isIntCoordinates());
Tuple3D c = new Tuple3d(2, -1, 0);
getT().scale(4.5, c);
assertEquals(9, getT().ix());
assertEquals(-4, getT().iy());
assertEquals(0, getT().iz());
}
@Test
public void scaleInt() {
getT().scale(4);
assertEpsilonEquals(4, getT().getX());
assertEpsilonEquals(-8, getT().getY());
assertEpsilonEquals(0, getT().getZ());
}
@Test
public void scaleDouble_iffp() {
Assume.assumeFalse(isIntCoordinates());
getT().scale(4.5);
assertEpsilonEquals(4.5, getT().getX());
assertEpsilonEquals(-9, getT().getY());
assertEpsilonEquals(0, getT().getZ());
}
@Test
public void scaleDouble_ifi() {
Assume.assumeTrue(isIntCoordinates());
getT().scale(4.5);
assertEquals(5, getT().ix());
assertEquals(-9, getT().iy());
assertEquals(0, getT().iz());
}
@Test
public void setTuple3D() {
Tuple3D c = new Tuple3d(-45, 78, 1);
getT().set(c);
assertEpsilonEquals(-45, getT().getX());
assertEpsilonEquals(78, getT().getY());
assertEpsilonEquals(1, getT().getZ());
}
@Test
public void setIntIntInt() {
getT().set(-45, 78, 1);
assertEpsilonEquals(-45, getT().getX());
assertEpsilonEquals(78, getT().getY());
assertEpsilonEquals(1, getT().getZ());
}
@Test
public void setDoubleDouble_iffp() {
Assume.assumeFalse(isIntCoordinates());
getT().set(-45.5, 78.5, 1.1);
assertEpsilonEquals(-45.5, getT().getX());
assertEpsilonEquals(78.5, getT().getY());
assertEpsilonEquals(1.1, getT().getZ());
}
@Test
public void setDoubleDouble_ifi() {
Assume.assumeTrue(isIntCoordinates());
getT().set(-45.5, 78.5, 1.1);
assertEquals(-45, getT().ix());
assertEquals(79, getT().iy());
assertEquals(1, getT().iz());
}
@Test
public void setIntArray() {
getT().set(new int[]{-45, 78, 1});
assertEpsilonEquals(-45, getT().getX());
assertEpsilonEquals(78, getT().getY());
}
@Test
public void setDoubleArray_iffp() {
Assume.assumeFalse(isIntCoordinates());
getT().set(new double[]{-45.5, 78.5, 1.1});
assertEpsilonEquals(-45.5, getT().getX());
assertEpsilonEquals(78.5, getT().getY());
assertEpsilonEquals(1.1, getT().getZ());
}
@Test
public void setDoubleArray_ifi() {
Assume.assumeTrue(isIntCoordinates());
getT().set(new double[]{-45.5, 78.5, 1.1});
assertEquals(-45, getT().ix());
assertEquals(79, getT().iy());
assertEquals(1, getT().iz());
}
@Test
public void setXInt() {
getT().setX(45);
assertEpsilonEquals(45, getT().getX());
assertEpsilonEquals(-2, getT().getY());
assertEpsilonEquals(0, getT().getZ());
}
@Test
public void setXDouble_iffp() {
Assume.assumeFalse(isIntCoordinates());
getT().setX(45.5);
assertEpsilonEquals(45.5, getT().getX());
assertEpsilonEquals(-2, getT().getY());
assertEpsilonEquals(0, getT().getZ());
}
@Test
public void setXDouble_ifi() {
Assume.assumeTrue(isIntCoordinates());
getT().setX(45.5);
assertEquals(46, getT().ix());
assertEquals(-2, getT().iy());
assertEquals(0, getT().iz());
}
@Test
public void setYInt() {
getT().setY(45);
assertEpsilonEquals(1, getT().getX());
assertEpsilonEquals(45, getT().getY());
}
@Test
public void setYDouble_ifi() {
Assume.assumeTrue(isIntCoordinates());
getT().setY(45.5);
assertEquals(1, getT().ix());
assertEquals(46, getT().iy());
}
@Test
public void setYDouble_iffp() {
Assume.assumeFalse(isIntCoordinates());
getT().setY(45.5);
assertEpsilonEquals(1, getT().getX());
assertEpsilonEquals(45.5, getT().getY());
}
@Test
public void subIntIntInt() {
getT().sub(45, 78, 0);
assertEpsilonEquals(-44, getT().getX());
assertEpsilonEquals(-80, getT().getY());
}
@Test
public void subXInt() {
getT().subX(45);
assertEpsilonEquals(-44, getT().getX());
assertEpsilonEquals(-2, getT().getY());
}
@Test
public void subYInt() {
getT().subY(78);
assertEpsilonEquals(1, getT().getX());
assertEpsilonEquals(-80, getT().getY());
}
@Test
public void subDoubleDouble_iffp() {
Assume.assumeFalse(isIntCoordinates());
getT().sub(45.5, 78.5, 0);
assertEpsilonEquals(-44.5, getT().getX());
assertEpsilonEquals(-80.5, getT().getY());
}
@Test
public void subDoubleDouble_ifi() {
Assume.assumeTrue(isIntCoordinates());
getT().sub(45.5, 78.5, 0);
assertEquals(-44, getT().ix());
assertEquals(-80, getT().iy());
}
@Test
public void subXDouble_iffp() {
Assume.assumeFalse(isIntCoordinates());
getT().subX(45.5);
assertEpsilonEquals(-44.5, getT().getX());
assertEpsilonEquals(-2, getT().getY());
}
@Test
public void subXDouble_ifi() {
Assume.assumeTrue(isIntCoordinates());
getT().subX(45.5);
assertEquals(-44, getT().ix());
assertEquals(-2, getT().iy());
}
@Test
public void subYDouble_iffp() {
Assume.assumeFalse(isIntCoordinates());
getT().subY(78.5);
assertEpsilonEquals(1, getT().getX());
assertEpsilonEquals(-80.5, getT().getY());
}
@Test
public void subYDouble_ifi() {
Assume.assumeTrue(isIntCoordinates());
getT().subY(78.5);
assertEquals(1, getT().ix());
assertEquals(-80, getT().iy());
}
}