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 TestRectangle3 { 018 019 @Test 020 public void testGetSet() { 021 final Rectangle3 rect = new Rectangle3(); 022 assertEquals(Vector3.ZERO, rect.getA()); 023 assertEquals(Vector3.ZERO, rect.getB()); 024 assertEquals(Vector3.ZERO, rect.getC()); 025 026 rect.setA(Vector3.ONE); 027 rect.setB(Vector3.UNIT_X); 028 rect.setC(Vector3.UNIT_Z); 029 assertEquals(Vector3.ONE, rect.getA()); 030 assertEquals(Vector3.UNIT_X, rect.getB()); 031 assertEquals(Vector3.UNIT_Z, rect.getC()); 032 033 final Rectangle3 rect2 = new Rectangle3(rect); 034 assertEquals(Vector3.ONE, rect2.getA()); 035 assertEquals(Vector3.UNIT_X, rect2.getB()); 036 assertEquals(Vector3.UNIT_Z, rect2.getC()); 037 038 final Rectangle3 rect3 = new Rectangle3(Vector3.NEG_ONE, Vector3.UNIT_Z, Vector3.NEG_UNIT_Y); 039 assertEquals(Vector3.NEG_ONE, rect3.getA()); 040 assertEquals(Vector3.UNIT_Z, rect3.getB()); 041 assertEquals(Vector3.NEG_UNIT_Y, rect3.getC()); 042 } 043 044 @Test 045 public void testEquals() { 046 // couple of equals validity tests 047 final Rectangle3 rect1 = new Rectangle3(); 048 assertEquals(rect1, rect1); 049 assertFalse(rect1.equals(null)); 050 assertFalse(rect1.equals(new Vector2())); 051 052 // throw in a couple pool accesses for coverage 053 final Rectangle3 rect2 = Rectangle3.fetchTempInstance(); 054 rect2.set(rect1); 055 assertEquals(rect1, rect2); 056 assertNotSame(rect1, rect2); 057 Rectangle3.releaseTempInstance(rect2); 058 059 // cover more of equals 060 assertTrue(rect1.equals(new Rectangle3(Vector3.ZERO, Vector3.ZERO, Vector3.ZERO))); 061 assertFalse(rect1.equals(new Rectangle3(Vector3.ZERO, Vector3.ZERO, Vector3.UNIT_X))); 062 assertFalse(rect1.equals(new Rectangle3(Vector3.ZERO, Vector3.UNIT_X, Vector3.UNIT_X))); 063 assertFalse(rect1.equals(new Rectangle3(Vector3.ZERO, Vector3.UNIT_X, Vector3.ZERO))); 064 assertFalse(rect1.equals(new Rectangle3(Vector3.UNIT_X, Vector3.ZERO, Vector3.ZERO))); 065 assertFalse(rect1.equals(new Rectangle3(Vector3.UNIT_X, Vector3.ZERO, Vector3.UNIT_X))); 066 assertFalse(rect1.equals(new Rectangle3(Vector3.UNIT_X, Vector3.UNIT_X, Vector3.ZERO))); 067 assertFalse(rect1.equals(new Rectangle3(Vector3.UNIT_X, Vector3.UNIT_X, Vector3.UNIT_X))); 068 } 069 070 @Test 071 public void testSimpleHash() { 072 // Just a simple sanity check. 073 final Rectangle3 rect1 = new Rectangle3(Vector3.ZERO, Vector3.UNIT_Y, Vector3.UNIT_X); 074 final Rectangle3 rect2 = new Rectangle3(Vector3.ZERO, Vector3.UNIT_Y, Vector3.UNIT_X); 075 final Rectangle3 rect3 = new Rectangle3(Vector3.ZERO, Vector3.UNIT_Y, Vector3.UNIT_Z); 076 077 assertTrue(rect1.hashCode() == rect2.hashCode()); 078 assertTrue(rect1.hashCode() != rect3.hashCode()); 079 } 080 081 @Test 082 public void testClone() { 083 final Rectangle3 rect1 = new Rectangle3(); 084 final Rectangle3 rect2 = rect1.clone(); 085 assertEquals(rect1, rect2); 086 assertNotSame(rect1, rect2); 087 } 088 089 @Test 090 public void testRandom() { 091 MathUtils.setRandomSeed(0); 092 final Rectangle3 rect1 = new Rectangle3(); 093 final Vector3 store = rect1.random(null); 094 assertEquals(new Vector3(0.0, 0.0, 0.0), store); 095 096 rect1.setA(new Vector3(1, 0, 0)); 097 rect1.setB(new Vector3(1, 1, 0)); 098 rect1.setC(new Vector3(0, 1, 0)); 099 rect1.random(store); 100 assertEquals(new Vector3(0.39365482330322266, 0.8468815684318542, 0.0), store); 101 } 102}