001/** 002 * Copyright (c) 2008-2014 Ardor Labs, Inc. 003 * 004 * This file is part of Ardor3D. 005 * 006 * Ardor3D is free software: you can redistribute it and/or modify it 007 * under the terms of its license which may be found in the accompanying 008 * LICENSE file or at <http://www.ardor3d.com/LICENSE>. 009 */ 010 011package com.ardor3d.math; 012 013import static org.junit.Assert.*; 014 015import org.junit.Test; 016 017public class TestLine3 { 018 019 @Test 020 public void testGetSet() { 021 final Line3 line1 = new Line3(); 022 assertEquals(Vector3.ZERO, line1.getOrigin()); 023 assertEquals(Vector3.UNIT_Z, line1.getDirection()); 024 025 line1.setOrigin(Vector3.NEG_ONE); 026 line1.setDirection(Vector3.UNIT_X); 027 assertEquals(Vector3.NEG_ONE, line1.getOrigin()); 028 assertEquals(Vector3.UNIT_X, line1.getDirection()); 029 030 final Line3 line2 = new Line3(line1); 031 assertEquals(Vector3.NEG_ONE, line2.getOrigin()); 032 assertEquals(Vector3.UNIT_X, line2.getDirection()); 033 034 final Line3 line3 = new Line3(Vector3.ONE, Vector3.UNIT_Y); 035 assertEquals(Vector3.ONE, line3.getOrigin()); 036 assertEquals(Vector3.UNIT_Y, line3.getDirection()); 037 } 038 039 @Test 040 public void testEquals() { 041 // couple of equals validity tests 042 final Line3 line1 = new Line3(); 043 assertEquals(line1, line1); 044 assertFalse(line1.equals(null)); 045 assertFalse(line1.equals(new Vector2())); 046 047 // throw in a couple pool accesses for coverage 048 final Line3 line2 = Line3.fetchTempInstance(); 049 line2.set(line1); 050 assertEquals(line1, line2); 051 assertNotSame(line1, line2); 052 Line3.releaseTempInstance(line2); 053 054 // cover more of equals 055 assertFalse(line1.equals(new Line3(Vector3.ZERO, Vector3.UNIT_X))); 056 } 057 058 @Test 059 public void testSimpleHash() { 060 // Just a simple sanity check. 061 final Line3 line1 = new Line3(Vector3.ZERO, Vector3.UNIT_Y); 062 final Line3 line2 = new Line3(Vector3.ZERO, Vector3.UNIT_Y); 063 final Line3 line3 = new Line3(Vector3.ZERO, Vector3.UNIT_Z); 064 065 assertTrue(line1.hashCode() == line2.hashCode()); 066 assertTrue(line1.hashCode() != line3.hashCode()); 067 } 068 069 @Test 070 public void testClone() { 071 final Line3 line1 = new Line3(); 072 final Line3 line2 = line1.clone(); 073 assertEquals(line1, line2); 074 assertNotSame(line1, line2); 075 } 076 077 @Test 078 public void testValid() { 079 final Line3 line1 = new Line3(); 080 final Line3 line2 = new Line3(new Vector3(Double.NaN, 0, 0), Vector3.UNIT_Z); 081 final Line3 line3 = new Line3(Vector3.ZERO, new Vector3(Double.NaN, 0, 0)); 082 083 assertTrue(Line3.isValid(line1)); 084 assertFalse(Line3.isValid(line2)); 085 assertFalse(Line3.isValid(line3)); 086 087 line2.setOrigin(Vector3.ZERO); 088 assertTrue(Line3.isValid(line2)); 089 090 assertFalse(Line3.isValid(null)); 091 } 092 093 @Test 094 public void testDistance() { 095 final Line3 line1 = new Line3(Vector3.ZERO, Vector3.UNIT_Z); 096 final Vector3 store = new Vector3(); 097 assertTrue(0.0 == line1.distanceSquared(new Vector3(0, 0, 5), store)); 098 assertTrue(16.0 == line1.distanceSquared(new Vector3(0, 4, 1), store)); 099 assertEquals(Vector3.UNIT_Z, store); 100 assertTrue(9.0 == line1.distanceSquared(new Vector3(0, -3, -1), store)); 101 assertEquals(Vector3.NEG_UNIT_Z, store); 102 assertTrue(1.0 == line1.distanceSquared(Vector3.NEG_UNIT_X, null)); 103 } 104 105}