/* * Copyright (C) 2011-2015, Peter Abeles. All Rights Reserved. * * This file is part of Geometric Regression Library (GeoRegression). * * 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 georegression.struct.point; import georegression.misc.GrlConstants; import georegression.struct.GeoTuple3D_F64; import java.util.Random; import static org.junit.Assert.*; /** * @author Peter Abeles */ @SuppressWarnings({"unchecked"}) public class GenericGeoTupleTests3D_F64<T extends GeoTuple3D_F64> extends GenericGeoTupleTests_F64<T> { Random rand = new Random(234234); private T seed; public GenericGeoTupleTests3D_F64( T seed ) { super( seed ); this.seed = seed; } public void checkAll() { super.checkAll( 3 ); checkGetAndSetAxis(); checkSetAxisAll(); isIdentical_3_double(); isIdentical_tuple(); isNaN(); } public void checkGetAndSetAxis() { T a = (T) seed.createNewInstance(); assertEquals( 0, a.getX(), GrlConstants.DOUBLE_TEST_TOL ); a.setX( 1.5 ); assertEquals( 1.5, a.getX(), GrlConstants.DOUBLE_TEST_TOL ); assertEquals( 0, a.getY(), GrlConstants.DOUBLE_TEST_TOL ); a.setY( 1.5 ); assertEquals( 1.5, a.getY(), GrlConstants.DOUBLE_TEST_TOL ); assertEquals( 0, a.getZ(), GrlConstants.DOUBLE_TEST_TOL ); a.setZ( 1.5 ); assertEquals( 1.5, a.getZ(), GrlConstants.DOUBLE_TEST_TOL ); } public void checkSetAxisAll() { T a = (T) seed.createNewInstance(); a.set( 1.5, 2.5, 3.5 ); assertEquals( 1.5, a.getX(), GrlConstants.DOUBLE_TEST_TOL ); assertEquals( 2.5, a.getY(), GrlConstants.DOUBLE_TEST_TOL ); assertEquals( 3.5, a.getZ(), GrlConstants.DOUBLE_TEST_TOL ); } public void isIdentical_3_double() { T a = (T) seed.createNewInstance(); a.set( 1, 2, 3 ); assertTrue( a.isIdentical( 1, 2, 3, GrlConstants.DOUBLE_TEST_TOL ) ); } public void isIdentical_tuple() { T a = (T) seed.createNewInstance(); a.set( 1, 2, 3 ); T b = (T) a.copy(); assertTrue( a.isIdentical( b, GrlConstants.DOUBLE_TEST_TOL ) ); } public void isNaN() { T a = (T) seed.createNewInstance(); a.set( 1, 2, 3 ); assertFalse( a.isNaN() ); a.set( 1, 2, Double.NaN ); assertTrue( a.isNaN() ); a.set( 1, Double.NaN, 3 ); assertTrue( a.isNaN() ); a.set( Double.NaN, 1, 3 ); assertTrue( a.isNaN() ); } protected Vector3D_F64 randomVector() { double x = (rand.nextDouble()-0.5)*2.0; double y = (rand.nextDouble()-0.5)*2.0; double z = (rand.nextDouble()-0.5)*2.0; return new Vector3D_F64(x,y,z); } protected Point3D_F64 randomPoint() { double x = (rand.nextDouble()-0.5)*2.0; double y = (rand.nextDouble()-0.5)*2.0; double z = (rand.nextDouble()-0.5)*2.0; return new Point3D_F64(x,y,z); } }