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
This commit is contained in:
rac..om 2013-06-08 21:47:25 +00:00
parent 96006f1383
commit 9b8060bac2
12 changed files with 256 additions and 65 deletions

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -6,6 +6,18 @@ libs.CopyLibs.classpath=\
${base}/CopyLibs-2/org-netbeans-modules-java-j2seproject-copylibstask.jar ${base}/CopyLibs-2/org-netbeans-modules-java-j2seproject-copylibstask.jar
libs.CopyLibs.displayName=CopyLibs Task libs.CopyLibs.displayName=CopyLibs Task
libs.CopyLibs.prop-version=1.0 libs.CopyLibs.prop-version=1.0
libs.EasyMock.classpath=\
${base}/EasyMock/easymock-3.1.jar:\
${base}/EasyMock/objenesis-1.3.jar:\
${base}/EasyMock/cglib-nodep-2.2.3.jar
libs.EasyMock.displayName=EasyMock
libs.EasyMock.javadoc=\
${base}/EasyMock/easymock-3.1-javadoc.jar!//:\
${base}/EasyMock/objenesis-1.3-javadoc.jar!//
libs.EasyMock.src=\
${base}/EasyMock/easymock-3.1-sources.jar!//:\
${base}/EasyMock/objenesis-1.3-sources.jar!//:\
${base}/EasyMock/cglib-src-2.2.3.jar!/src/test/
libs.jbullet.classpath=\ libs.jbullet.classpath=\
${base}/jbullet/jbullet.jar:\ ${base}/jbullet/jbullet.jar:\
${base}/jbullet/stack-alloc.jar:\ ${base}/jbullet/stack-alloc.jar:\

View File

@ -69,8 +69,8 @@ javac.source=1.5
javac.target=1.5 javac.target=1.5
javac.test.classpath=\ javac.test.classpath=\
${libs.junit_4.classpath}:\ ${libs.junit_4.classpath}:\
${libs.EasyMock.classpath}:\
${javac.classpath}:\ ${javac.classpath}:\
${build.classes.dir}:\
${file.reference.build-android}:\ ${file.reference.build-android}:\
${file.reference.build-blender}:\ ${file.reference.build-blender}:\
${file.reference.build-bullet}:\ ${file.reference.build-bullet}:\
@ -87,7 +87,8 @@ javac.test.classpath=\
${file.reference.build-networking}:\ ${file.reference.build-networking}:\
${file.reference.build-niftygui}:\ ${file.reference.build-niftygui}:\
${file.reference.build-plugins}:\ ${file.reference.build-plugins}:\
${file.reference.build-terrain} ${file.reference.build-terrain}:\
${build.classes.dir}
javadoc.additionalparam=-protected javadoc.additionalparam=-protected
javadoc.author=false javadoc.author=false
javadoc.encoding=${source.encoding} javadoc.encoding=${source.encoding}

View File

@ -0,0 +1,178 @@
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);
}
}