jmonkeyengine/engine/test/com/jme3/scene/GeometryTest.java
rac..om 9b8060bac2 first set of tests for the Geometry. There's 18 tests in total, covering roughly 40% of the total number of methods in the geometry class.
To get all the tests to run, I needed to add EasyMock and some related jar files. This enables me to mock classes other the the one actually being tested to get a better test isolation.

git-svn-id: https://jmonkeyengine.googlecode.com/svn/trunk@10646 75d07b2b-3a1a-0410-a2c5-0572b91ccdca
2013-06-08 21:47:25 +00:00

179 lines
5.4 KiB
Java

package com.jme3.scene;
import com.jme3.bounding.BoundingVolume;
import com.jme3.material.Material;
import com.jme3.math.Quaternion;
import com.jme3.math.Transform;
import com.jme3.math.Vector3f;
import org.junit.Test;
import static org.easymock.EasyMock.*;
import static org.junit.Assert.*;
public class GeometryTest {
@Test
public void testConstructorNameNull() {
Geometry geom = new Geometry(null);
assertNull(geom.getName());
}
@Test
public void testConstructorName() {
Geometry geom = new Geometry("TestGeometry");
assertEquals("TestGeometry", geom.getName());
}
@Test(expected = NullPointerException.class)
public void testConstructorNameMeshNullMesh() {
Geometry geom = new Geometry("TestGeometry", null);
}
@Test
public void testConstructorNameMesh() {
Mesh m = new Mesh();
Geometry geom = new Geometry("TestGeometry", m);
assertEquals("TestGeometry", geom.getName());
assertEquals(m, geom.getMesh());
}
@Test(expected = IllegalStateException.class)
public void testSetLodLevelMeshLodZero() {
Mesh m = new Mesh();
Geometry geom = new Geometry("TestGeometry", m);
geom.setLodLevel(0);
}
@Test(expected = IllegalArgumentException.class)
public void testSetLodLevelLodLessZero() {
Mesh m = new Mesh();
VertexBuffer lodLevels = new VertexBuffer(VertexBuffer.Type.Size);
m.setLodLevels(new VertexBuffer[]{lodLevels});
Geometry geom = new Geometry("TestGeometry", m);
geom.setLodLevel(-1);
}
@Test(expected = IllegalArgumentException.class)
public void testSetLodLevelLodGreaterMeshLod() {
Mesh m = new Mesh();
VertexBuffer lodLevel = new VertexBuffer(VertexBuffer.Type.Size);
m.setLodLevels(new VertexBuffer[]{lodLevel});
Geometry geom = new Geometry("TestGeometry", m);
geom.setLodLevel(5);
}
@Test
public void testSetLodLevel() {
Mesh m = new Mesh();
VertexBuffer lodLevel = new VertexBuffer(VertexBuffer.Type.Size);
m.setLodLevels(new VertexBuffer[]{lodLevel, lodLevel, lodLevel});
Geometry geom = new Geometry("TestGeometry", m);
geom.setLodLevel(2);
assertEquals(2, geom.getLodLevel());
}
@Test(expected = IllegalArgumentException.class)
public void testSetMeshNull() {
Geometry geom = new Geometry();
geom.setMesh(null);
}
@Test(expected = UnsupportedOperationException.class)
public void testSetMeshBatched() {
Mesh m = new Mesh();
Geometry geom = new Geometry();
BatchNode bn = new BatchNode();
geom.batch(bn, 1);
geom.setMesh(m);
}
@Test
public void testSetMesh() {
Mesh m = new Mesh();
Geometry geom = new Geometry();
geom.setMesh(m);
assertEquals(m, geom.getMesh());
}
@Test(expected = UnsupportedOperationException.class)
public void testSetMaterialBatched() {
Material m = new Material();
Geometry geom = new Geometry();
BatchNode bn = new BatchNode();
geom.batch(bn, 1);
geom.setMaterial(m);
}
@Test
public void testSetMaterial() {
Material m = new Material();
Geometry geom = new Geometry();
geom.setMaterial(m);
assertEquals(m, geom.getMaterial());
}
@Test
public void testUpdateModelBound() {
Mesh mockedMesh = createMock(Mesh.class);
mockedMesh.updateBound();
expectLastCall();
replay(mockedMesh);
Geometry geom = new Geometry();
geom.setMesh(mockedMesh);
geom.updateModelBound();
verify(mockedMesh);
}
@Test(expected = NullPointerException.class)
public void testUpdateWorldBoundNoMesh() {
Geometry geom = new Geometry();
geom.updateWorldBound();
}
@Test
public void testUpdateWorlBoundNoBoundingVolume() {
Mesh mockedMesh = createMock(Mesh.class);
expect(mockedMesh.getBound()).andReturn(null);
replay(mockedMesh);
Geometry geom = new Geometry();
geom.setMesh(mockedMesh);
geom.updateWorldBound();
verify(mockedMesh);
}
@Test
public void testUpdateWorlBoundIgnoreTransform() {
Mesh mockedMesh = createMock(Mesh.class);
BoundingVolume mockedBoundingVolume = createMock(BoundingVolume.class);
expect(mockedMesh.getBound()).andReturn(mockedBoundingVolume).times(2);
expect(mockedBoundingVolume.clone(null)).andReturn(null);
replay(mockedMesh, mockedBoundingVolume);
Geometry geom = new Geometry();
geom.setMesh(mockedMesh);
geom.setIgnoreTransform(true);
geom.updateWorldBound();
verify(mockedMesh, mockedBoundingVolume);
}
@Test
public void testUpdateWorlBoundTransform() {
Mesh mockedMesh = createMock(Mesh.class);
BoundingVolume mockedBoundingVolume = createMock(BoundingVolume.class);
expect(mockedMesh.getBound()).andReturn(mockedBoundingVolume).times(2);
expect(mockedBoundingVolume.transform(anyObject(Transform.class), same((BoundingVolume) null))).andReturn(null);
replay(mockedMesh, mockedBoundingVolume);
Geometry geom = new Geometry();
geom.setMesh(mockedMesh);
geom.setIgnoreTransform(false);
geom.updateWorldBound();
verify(mockedMesh, mockedBoundingVolume);
}
}