Browse Source

Add tests for com.jme3/scene.mesh.VirtualIndexBuffer

James Adam 6 years ago
parent
commit
67b32790ee
1 changed files with 203 additions and 0 deletions
  1. 203 0
      jme3-core/src/test/java/com/jme3/scene/mesh/VirtualIndexBufferTest.java

+ 203 - 0
jme3-core/src/test/java/com/jme3/scene/mesh/VirtualIndexBufferTest.java

@@ -0,0 +1,203 @@
+package com.jme3.scene.mesh;
+
+import com.jme3.scene.Mesh.Mode;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.rules.ExpectedException;
+
+import java.nio.IntBuffer;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertArrayEquals;
+
+public class VirtualIndexBufferTest {
+
+    @Rule public ExpectedException thrown = ExpectedException.none();
+
+    @Test
+    public void testHybrid() {
+        thrown.expect(UnsupportedOperationException.class);
+        new VirtualIndexBuffer(8, Mode.Hybrid);
+    }
+
+    @Test
+    public void testRemaining() {
+        final VirtualIndexBuffer bufferPoints = new VirtualIndexBuffer(8, Mode.Points);
+        assertEquals(8, bufferPoints.remaining());
+        bufferPoints.get();
+        assertEquals(7, bufferPoints.remaining());
+
+        final VirtualIndexBuffer bufferLineLoop = new VirtualIndexBuffer(8, Mode.LineLoop);
+        assertEquals(15, bufferLineLoop.remaining());
+
+        final VirtualIndexBuffer bufferLineStrip = new VirtualIndexBuffer(8, Mode.LineStrip);
+        assertEquals(14, bufferLineStrip.remaining());
+
+        final VirtualIndexBuffer bufferLines = new VirtualIndexBuffer(8, Mode.Lines);
+        assertEquals(8, bufferLines.remaining());
+
+        final VirtualIndexBuffer bufferTriangleFan = new VirtualIndexBuffer(8, Mode.TriangleFan);
+        assertEquals(18, bufferTriangleFan.remaining());
+
+        final VirtualIndexBuffer bufferTriangleStrip = new VirtualIndexBuffer(8, Mode.TriangleStrip);
+        assertEquals(18, bufferTriangleStrip.remaining());
+
+        final VirtualIndexBuffer bufferTriangles = new VirtualIndexBuffer(8, Mode.Triangles);
+        assertEquals(8, bufferTriangles.remaining());
+
+        final VirtualIndexBuffer bufferPatch = new VirtualIndexBuffer(8, Mode.Patch);
+        assertEquals(0, bufferPatch.remaining());
+    }
+
+    @Test
+    public void testRewind() {
+        final VirtualIndexBuffer buffer = new VirtualIndexBuffer(5, Mode.Points);
+
+        assertEquals(5, buffer.remaining());
+        buffer.get();
+        assertEquals(4, buffer.remaining());
+        buffer.rewind();
+        assertEquals(5, buffer.remaining());
+    }
+
+    @Test
+    public void testGet() {
+        IntBuffer ib = IntBuffer.allocate(27);
+
+        final VirtualIndexBuffer bufferPoints = new VirtualIndexBuffer(27, Mode.Points);
+        for (int i=0; i<27; i++) {ib.put(bufferPoints.get());}
+        assertArrayEquals(new int[]{
+                0, 1, 2,
+                3, 4, 5,
+                6, 7, 8,
+                9, 10, 11,
+                12, 13, 14,
+                15, 16, 17,
+                18, 19, 20,
+                21, 22, 23,
+                24, 25, 26}, ib.array());
+        ib.clear();
+        assertEquals(0, bufferPoints.remaining());
+
+        final VirtualIndexBuffer bufferLines = new VirtualIndexBuffer(27, Mode.Lines);
+        for (int i=0; i<27; i++) {ib.put(bufferLines.get());}
+        assertArrayEquals(new int[]{
+                0, 1, 2,
+                3, 4, 5,
+                6, 7, 8,
+                9, 10, 11,
+                12, 13, 14,
+                15, 16, 17,
+                18, 19, 20,
+                21, 22, 23,
+                24, 25, 26}, ib.array());
+        assertEquals(0, bufferLines.remaining());
+        ib.clear();
+
+        final VirtualIndexBuffer bufferTriangles = new VirtualIndexBuffer(27, Mode.Triangles);
+        for (int i=0; i<27; i++) {ib.put(bufferTriangles.get());}
+        assertArrayEquals(new int[]{
+                0, 1, 2,
+                3, 4, 5,
+                6, 7, 8,
+                9, 10, 11,
+                12, 13, 14,
+                15, 16, 17,
+                18, 19, 20,
+                21, 22, 23,
+                24, 25, 26}, ib.array());
+        assertEquals(0, bufferTriangles.remaining());
+        ib.clear();
+
+        final VirtualIndexBuffer bufferLineStrip = new VirtualIndexBuffer(27, Mode.LineStrip);
+        for (int i=0; i<27; i++) {ib.put(bufferLineStrip.get());}
+        assertArrayEquals(new int[]{
+                0, 1, 1,
+                2, 2, 3,
+                3, 4, 4,
+                5, 5, 6,
+                6, 7, 7,
+                8, 8, 9,
+                9, 10, 10,
+                11, 11, 12,
+                12, 13, 13}, ib.array());
+        assertEquals(25, bufferLineStrip.remaining());
+        ib.clear();
+
+        final VirtualIndexBuffer bufferLineLoop = new VirtualIndexBuffer(27, Mode.LineLoop);
+        for (int i=0; i<27; i++) {ib.put(bufferLineLoop.get());}
+        assertArrayEquals(new int[]{
+                0, 1, 1,
+                2, 2, 3,
+                3, 4, 4,
+                5, 5, 6,
+                6, 7, 7,
+                8, 8, 9,
+                9, 10, 10,
+                11, 11, 12,
+                12, 13, 0}, ib.array());
+        assertEquals(26, bufferLineLoop.remaining());
+        ib.clear();
+
+        final VirtualIndexBuffer bufferTriangleStrip = new VirtualIndexBuffer(27, Mode.TriangleStrip);
+        for (int i=0; i<27; i++) {ib.put(bufferTriangleStrip.get());}
+        assertArrayEquals(new int[]{
+                0, 1, 2,
+                2, 1, 3,
+                2, 3, 4,
+                4, 3, 5,
+                4, 5, 6,
+                6, 5, 7,
+                6, 7, 8,
+                8, 7, 9,
+                8, 9, 10}, ib.array());
+        assertEquals(48, bufferTriangleStrip.remaining());
+        ib.clear();
+
+        final VirtualIndexBuffer bufferTriangleFan = new VirtualIndexBuffer(27, Mode.TriangleFan);
+        for (int i=0; i<27; i++) {ib.put(bufferTriangleFan.get());}
+        assertArrayEquals(new int[]{
+                0, 1, 2,
+                0, 2, 3,
+                0, 3, 4,
+                0, 4, 5,
+                0, 5, 6,
+                0, 6, 7,
+                0, 7, 8,
+                0, 8, 9,
+                0, 9, 10}, ib.array());
+        assertEquals(48, bufferTriangleFan.remaining());
+        ib.clear();
+    }
+
+    @Test
+    public void testGet_Patch() {
+        final VirtualIndexBuffer bufferPatch = new VirtualIndexBuffer(27, Mode.Patch);
+        thrown.expect(UnsupportedOperationException.class);
+        bufferPatch.get();
+    }
+
+    @Test
+    public void testSize() {
+        final VirtualIndexBuffer bufferTriangleFan = new VirtualIndexBuffer(5, Mode.TriangleFan);
+        assertEquals(9, bufferTriangleFan.size());
+
+        final VirtualIndexBuffer bufferLineLoop = new VirtualIndexBuffer(8, Mode.LineLoop);
+        assertEquals(15, bufferLineLoop.size());
+
+        final VirtualIndexBuffer bufferPoints = new VirtualIndexBuffer(8, Mode.Points);
+        assertEquals(8, bufferPoints.size());
+
+        final VirtualIndexBuffer bufferLines = new VirtualIndexBuffer(8, Mode.Lines);
+        assertEquals(8, bufferLines.size());
+
+        final VirtualIndexBuffer bufferLineStrip = new VirtualIndexBuffer(8, Mode.LineStrip);
+        assertEquals(14, bufferLineStrip.size());
+
+        final VirtualIndexBuffer bufferTriangles = new VirtualIndexBuffer(8, Mode.Triangles);
+        assertEquals(8, bufferTriangles.size());
+
+        final VirtualIndexBuffer bufferTriangleStrip = new VirtualIndexBuffer(8, Mode.TriangleStrip);
+        assertEquals(18, bufferTriangleStrip.size());
+    }
+}