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
+ }
0 commit comments