Skip to content

Commit cfe5944

Browse files
committed
add render batch tests
1 parent 5e044cc commit cfe5944

File tree

19 files changed

+149
-29
lines changed

19 files changed

+149
-29
lines changed

src/main/kotlin/solve/rendering/canvas/SceneCanvas.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ package solve.rendering.canvas
22

33
import org.joml.Vector2f
44
import org.joml.Vector2i
5-
import solve.rendering.engine.rendering.renderers.FramesRenderer
5+
import solve.rendering.engine.core.renderers.FramesRenderer
66
import solve.rendering.engine.scene.Scene
77
import solve.rendering.engine.utils.minus
88
import solve.rendering.engine.utils.times

src/main/kotlin/solve/rendering/engine/components/Sprite.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package solve.rendering.engine.components
22

33
import org.joml.Vector2f
4-
import solve.rendering.engine.rendering.texture.Texture2D
4+
import solve.rendering.engine.core.texture.Texture2D
55

66
class Sprite(val texture: Texture2D, uvCoordinates: List<Vector2f> = defaultUVCoordinates) {
77
val uvCoordinates: List<Vector2f>

src/main/kotlin/solve/rendering/engine/components/SpriteRenderer.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package solve.rendering.engine.components
22

3-
import solve.rendering.engine.rendering.texture.Texture2D
3+
import solve.rendering.engine.core.texture.Texture2D
44
import solve.rendering.engine.structures.Color
55

66
class SpriteRenderer() : Component() {

src/main/kotlin/solve/rendering/engine/rendering/batch/PrimitiveType.kt renamed to src/main/kotlin/solve/rendering/engine/core/batch/PrimitiveType.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package solve.rendering.engine.rendering.batch
1+
package solve.rendering.engine.core.batch
22

33
import org.lwjgl.opengl.GL11.GL_LINES
44
import org.lwjgl.opengl.GL11.GL_POINTS

src/main/kotlin/solve/rendering/engine/rendering/batch/RenderBatch.kt renamed to src/main/kotlin/solve/rendering/engine/core/batch/RenderBatch.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package solve.rendering.engine.rendering.batch
1+
package solve.rendering.engine.core.batch
22

33
import org.joml.Vector2f
44
import org.joml.Vector3f
@@ -18,7 +18,7 @@ import org.lwjgl.opengl.GL20.glVertexAttribPointer
1818
import org.lwjgl.opengl.GL30.glBindVertexArray
1919
import org.lwjgl.opengl.GL30.glDeleteVertexArrays
2020
import org.lwjgl.opengl.GL30.glGenVertexArrays
21-
import solve.rendering.engine.rendering.texture.Texture2D
21+
import solve.rendering.engine.core.texture.Texture2D
2222
import solve.rendering.engine.shader.ShaderAttributeType
2323
import solve.rendering.engine.utils.toList
2424

@@ -113,7 +113,7 @@ open class RenderBatch(
113113
}
114114

115115
private fun checkIfFull() {
116-
if (verticesDataBufferIndexPointer == verticesDataBufferSize) {
116+
if (verticesDataBufferIndexPointer >= verticesDataBufferSize) {
117117
isFull = true
118118
}
119119
}

src/main/kotlin/solve/rendering/engine/rendering/renderers/FramesRenderer.kt renamed to src/main/kotlin/solve/rendering/engine/core/renderers/FramesRenderer.kt

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package solve.rendering.engine.rendering.renderers
1+
package solve.rendering.engine.core.renderers
22

33
import kotlinx.coroutines.CoroutineScope
44
import kotlinx.coroutines.Dispatchers
@@ -10,12 +10,12 @@ import solve.constants.ShadersFrameFragmentPath
1010
import solve.constants.ShadersFrameGeometryPath
1111
import solve.constants.ShadersFrameVertexPath
1212
import solve.rendering.engine.Window
13-
import solve.rendering.engine.rendering.batch.PrimitiveType
14-
import solve.rendering.engine.rendering.batch.RenderBatch
15-
import solve.rendering.engine.rendering.texture.ArrayTexture
16-
import solve.rendering.engine.rendering.texture.Texture2D
17-
import solve.rendering.engine.rendering.texture.Texture2DData
18-
import solve.rendering.engine.rendering.texture.TextureChannelsType
13+
import solve.rendering.engine.core.batch.PrimitiveType
14+
import solve.rendering.engine.core.batch.RenderBatch
15+
import solve.rendering.engine.core.texture.ArrayTexture
16+
import solve.rendering.engine.core.texture.Texture2D
17+
import solve.rendering.engine.core.texture.Texture2DData
18+
import solve.rendering.engine.core.texture.TextureChannelsType
1919
import solve.rendering.engine.shader.ShaderAttributeType
2020
import solve.rendering.engine.shader.ShaderProgram
2121
import solve.rendering.engine.shader.ShaderType

src/main/kotlin/solve/rendering/engine/rendering/renderers/LandmarkRenderer.kt renamed to src/main/kotlin/solve/rendering/engine/core/renderers/LandmarkRenderer.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
1-
package solve.rendering.engine.rendering.renderers
1+
package solve.rendering.engine.core.renderers
22

33
import org.joml.Matrix4f
44
import org.joml.Vector2f
55
import solve.constants.ShadersDefaultFragmentPath
66
import solve.constants.ShadersDefaultVertexPath
77
import solve.rendering.engine.Window
88
import solve.rendering.engine.components.SpriteRenderer
9-
import solve.rendering.engine.rendering.batch.PrimitiveType
10-
import solve.rendering.engine.rendering.batch.RenderBatch
9+
import solve.rendering.engine.core.batch.PrimitiveType
10+
import solve.rendering.engine.core.batch.RenderBatch
1111
import solve.rendering.engine.scene.RenderObject
1212
import solve.rendering.engine.shader.ShaderAttributeType
1313
import solve.rendering.engine.shader.ShaderProgram

src/main/kotlin/solve/rendering/engine/rendering/renderers/Renderer.kt renamed to src/main/kotlin/solve/rendering/engine/core/renderers/Renderer.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
1-
package solve.rendering.engine.rendering.renderers
1+
package solve.rendering.engine.core.renderers
22

33
import org.lwjgl.opengl.GL11.GL_UNSIGNED_INT
44
import org.lwjgl.opengl.GL11.glDrawElements
55
import solve.rendering.engine.Window
6-
import solve.rendering.engine.rendering.batch.RenderBatch
7-
import solve.rendering.engine.rendering.texture.Texture2D
6+
import solve.rendering.engine.core.batch.RenderBatch
7+
import solve.rendering.engine.core.texture.Texture2D
88
import solve.rendering.engine.scene.RenderObject
99
import solve.rendering.engine.shader.ShaderProgram
1010

src/main/kotlin/solve/rendering/engine/rendering/texture/ArrayTexture.kt renamed to src/main/kotlin/solve/rendering/engine/core/texture/ArrayTexture.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package solve.rendering.engine.rendering.texture
1+
package solve.rendering.engine.core.texture
22

33
import org.lwjgl.opengl.GL11.GL_LINEAR
44
import org.lwjgl.opengl.GL11.GL_TEXTURE_MAG_FILTER

src/main/kotlin/solve/rendering/engine/rendering/texture/Texture.kt renamed to src/main/kotlin/solve/rendering/engine/core/texture/Texture.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package solve.rendering.engine.rendering.texture
1+
package solve.rendering.engine.core.texture
22

33
import org.lwjgl.opengl.GL11.glBindTexture
44
import org.lwjgl.opengl.GL11.glDeleteTextures

src/main/kotlin/solve/rendering/engine/rendering/texture/Texture2D.kt renamed to src/main/kotlin/solve/rendering/engine/core/texture/Texture2D.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package solve.rendering.engine.rendering.texture
1+
package solve.rendering.engine.core.texture
22

33
import org.lwjgl.opengl.GL11.GL_LINEAR
44
import org.lwjgl.opengl.GL11.GL_REPEAT

src/main/kotlin/solve/rendering/engine/rendering/texture/Texture2DData.kt renamed to src/main/kotlin/solve/rendering/engine/core/texture/Texture2DData.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package solve.rendering.engine.rendering.texture
1+
package solve.rendering.engine.core.texture
22

33
import java.nio.ByteBuffer
44

src/main/kotlin/solve/rendering/engine/rendering/texture/TextureChannelsType.kt renamed to src/main/kotlin/solve/rendering/engine/core/texture/TextureChannelsType.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package solve.rendering.engine.rendering.texture
1+
package solve.rendering.engine.core.texture
22

33
import org.lwjgl.opengl.GL11.GL_RGB
44
import org.lwjgl.opengl.GL11.GL_RGBA

src/main/kotlin/solve/rendering/engine/scene/Scene.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package solve.rendering.engine.scene
22

3-
import solve.rendering.engine.rendering.renderers.Renderer
3+
import solve.rendering.engine.core.renderers.Renderer
44

55
class Scene(renderers: List<Renderer> = emptyList()) {
66
private val _renderObjects = mutableListOf<RenderObject>()

src/test/kotlin/solve/unit/parsers/lines/CSVLinesParserTest.kt renamed to src/test/kotlin/solve/unit/parsers/lines/CSVLinesParserTests.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ import solve.parsers.lines.lineBreakWithIntWithCommaRegex
1313
import solve.parsers.structures.Line
1414
import java.io.File
1515

16-
internal class CSVLinesParserTest {
16+
internal class CSVLinesParserTests {
1717
@Test
1818
fun `Parsing a lines CSV file containing data in a standard format`(@TempDir tempFolder: File) {
1919
val csvDataFile = createCSVFileWithData(tempFolder, csvTestLinesStringData)

src/test/kotlin/solve/unit/parsers/planes/ImagePlanesParserTest.kt renamed to src/test/kotlin/solve/unit/parsers/planes/ImagePlanesParserTests.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ import solve.unit.parsers.createFileWithImageData
1616
import java.awt.image.BufferedImage
1717
import java.io.File
1818

19-
internal class ImagePlanesParserTest {
19+
internal class ImagePlanesParserTests {
2020
// JPG format has not been tested because the data is distorted due to compression.
2121

2222
private data class PlaneMaskData(val maskImage: BufferedImage, val planes: List<Plane>)

src/test/kotlin/solve/unit/parsers/points/CSVPointsParserTest.kt renamed to src/test/kotlin/solve/unit/parsers/points/CSVPointsParserTests.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ import solve.parsers.points.CSVPointsParser
1313
import solve.parsers.structures.Point
1414
import java.io.File
1515

16-
internal class CSVPointsParserTest {
16+
internal class CSVPointsParserTests {
1717
@Test
1818
fun `Parsing a points CSV file containing data in a standard format`(@TempDir tempFolder: File) {
1919
val csvDataFile = createCSVFileWithData(tempFolder, csvTestPointsStringData)
Lines changed: 107 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,107 @@
1+
package solve.unit.rendering.engine.core.batch
2+
3+
import org.joml.Vector3f
4+
import org.junit.jupiter.api.Test
5+
6+
import org.junit.jupiter.api.Assertions.*
7+
import org.junit.jupiter.api.extension.ExtendWith
8+
import org.testfx.framework.junit5.ApplicationExtension
9+
import solve.constants.IconsCatalogueApplyPath
10+
import solve.rendering.engine.core.batch.PrimitiveType
11+
import solve.rendering.engine.core.batch.RenderBatch
12+
import solve.rendering.engine.core.texture.Texture2D
13+
import solve.rendering.engine.shader.ShaderAttributeType
14+
import solve.unit.rendering.utils.runInOpenGLContext
15+
16+
@ExtendWith(ApplicationExtension::class)
17+
internal class RenderBatchTest {
18+
@Test
19+
fun `Fully fills the vertices data buffer`() {
20+
runInOpenGLContext {
21+
val testRenderBatch = createTestRenderBatch()
22+
assert(!testRenderBatch.isFull)
23+
for (i in 0 until TestRenderBatchSize) {
24+
testRenderBatch.pushInt(1)
25+
testRenderBatch.pushFloat(2f)
26+
testRenderBatch.pushVector3f(Vector3f(3f, 4f, 5f))
27+
28+
if (i < TestRenderBatchSize - 1)
29+
assert(!testRenderBatch.isFull)
30+
}
31+
assert(testRenderBatch.isFull)
32+
}
33+
}
34+
35+
@Test
36+
fun `Fully fills the textures slots`() {
37+
repeat(MaxTexturesNumber) {
38+
runInOpenGLContext {
39+
val testRenderBatch = createTestRenderBatch()
40+
assert(!testRenderBatch.isTexturesFull)
41+
for (i in 0 until MaxTexturesNumber) {
42+
testRenderBatch.pushInt(1)
43+
testRenderBatch.pushFloat(2f)
44+
testRenderBatch.pushVector3f(Vector3f(3f, 4f, 5f))
45+
46+
if (i < MaxTexturesNumber - 1)
47+
assert(!testRenderBatch.isTexturesFull)
48+
}
49+
assert(testRenderBatch.isFull)
50+
}
51+
}
52+
}
53+
54+
@Test
55+
fun `Adds new texture and checks if it is contained`() {
56+
runInOpenGLContext {
57+
val addingTexture = createTestTexture2D()
58+
val testRenderBatch = createTestRenderBatch()
59+
testRenderBatch.addTexture(addingTexture)
60+
assert(testRenderBatch.containsTexture(addingTexture))
61+
}
62+
}
63+
64+
65+
@Test
66+
fun `Removes added texture and checks if it does not contained`() {
67+
runInOpenGLContext {
68+
val texture = createTestTexture2D()
69+
val testRenderBatch = createTestRenderBatch()
70+
testRenderBatch.addTexture(texture)
71+
testRenderBatch.removeTexture(texture)
72+
assert(!testRenderBatch.containsTexture(texture))
73+
}
74+
}
75+
76+
@Test
77+
fun `Adds some vertex data and checks if vertices counting is correct`() {
78+
runInOpenGLContext {
79+
val testRenderBatch = createTestRenderBatch()
80+
val verticesNumber = 3
81+
for (i in 0 until verticesNumber) {
82+
testRenderBatch.pushInt(2)
83+
testRenderBatch.pushFloat(3f)
84+
testRenderBatch.pushVector3f(Vector3f(4f, 5f, 6f))
85+
}
86+
assertEquals(testRenderBatch.getVerticesNumber(), verticesNumber)
87+
}
88+
}
89+
90+
companion object {
91+
private const val TestRenderBatchSize = 10
92+
private const val MaxTexturesNumber = 8
93+
94+
private fun createTestRenderBatch() = RenderBatch(
95+
TestRenderBatchSize,
96+
-1,
97+
PrimitiveType.Triangle,
98+
listOf(
99+
ShaderAttributeType.INT,
100+
ShaderAttributeType.FLOAT,
101+
ShaderAttributeType.FLOAT3
102+
)
103+
)
104+
105+
private fun createTestTexture2D() = Texture2D(IconsCatalogueApplyPath)
106+
}
107+
}
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
package solve.unit.rendering.utils
2+
3+
import com.huskerdev.openglfx.OpenGLCanvas as OpenGLFXCanvas
4+
import com.huskerdev.openglfx.lwjgl.LWJGLExecutor
5+
import org.lwjgl.opengl.GL.createCapabilities
6+
7+
inline fun runInOpenGLContext(crossinline action: () -> Unit) {
8+
val openGLCanvas = OpenGLFXCanvas.create(LWJGLExecutor.LWJGL_MODULE)
9+
openGLCanvas.addOnInitEvent {
10+
createCapabilities()
11+
action()
12+
}
13+
}

0 commit comments

Comments
 (0)