Browse Source

tests: add unit tests for GeomVertexReader

Closes #604
hitesh4 6 years ago
parent
commit
cf4d418f2f
1 changed files with 59 additions and 0 deletions
  1. 59 0
      tests/gobj/test_geom_vertex_reader.py

+ 59 - 0
tests/gobj/test_geom_vertex_reader.py

@@ -0,0 +1,59 @@
+from panda3d.core import GeomVertexArrayFormat, GeomVertexFormat, GeomVertexData, Geom, GeomNode
+from panda3d.core import GeomVertexReader, GeomVertexWriter
+import pytest
+
+
[email protected](scope='module')
+def geom_node():
+    array = GeomVertexArrayFormat()
+    array.add_column("vertex", 3, Geom.NT_float32, Geom.C_point)
+    array.add_column("normal", 3, Geom.NT_float32, Geom.C_normal)
+    array.add_column("color", 3, Geom.NT_float32, Geom.C_color)
+    array.add_column("texcoord", 3, Geom.NT_float32, Geom.C_texcoord)
+    format = GeomVertexFormat()
+    format.add_array(array)
+    format = GeomVertexFormat.register_format(format)
+
+    vdata = GeomVertexData("test", format, Geom.UH_static)
+    vdata.set_num_rows(4)
+    vertex = GeomVertexWriter(vdata, 'vertex')
+    normal = GeomVertexWriter(vdata, 'normal')
+    color = GeomVertexWriter(vdata, 'color')
+    texcoord = GeomVertexWriter(vdata, 'texcoord')
+
+    vertex.add_data3f(1, 0, 0)
+    normal.add_data3f(0, 0, 1)
+    color.add_data4f(0, 0, 1, 1)
+    texcoord.add_data2f(1, 0)
+
+    vertex.add_data3f(1, 1, 0)
+    normal.add_data3f(0, 1, 1)
+    color.add_data4f(1, 0, 1, 1)
+    texcoord.add_data2f(1, 1)
+
+    geom = Geom(vdata)
+    node = GeomNode('gnode')
+    node.add_geom(geom)
+    return node
+
+
+def test_geom_vertex_reader(geom_node):
+    new_geom = geom_node.get_geom(0)
+    new_vdata = new_geom.get_vertex_data()
+
+    new_vertex = GeomVertexReader(new_vdata, 'vertex')
+    new_normal = GeomVertexReader(new_vdata, 'normal')
+    new_color = GeomVertexReader(new_vdata, 'color')
+    new_texcoord = GeomVertexReader(new_vdata, 'texcoord')
+
+    assert new_vertex.get_data3f() == (1, 0, 0)
+    assert new_vertex.get_data3f() == (1, 1, 0)
+
+    assert new_normal.get_data3f() == (0, 0, 1)
+    assert new_normal.get_data3f() == (0, 1, 1)
+
+    assert new_color.get_data4f() == (0, 0, 1, 1)
+    assert new_color.get_data4f() == (1, 0, 1, 1)
+
+    assert new_texcoord.get_data2f() == (1, 0)
+    assert new_texcoord.get_data2f() == (1, 1)