test_geom_vertex_format.py 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. from panda3d.core import GeomVertexArrayFormat, GeomVertexFormat, Geom
  2. def test_format_arrays():
  3. array1 = GeomVertexArrayFormat("vertex", 3, Geom.NT_float32, Geom.C_point)
  4. array2 = GeomVertexArrayFormat("normal", 3, Geom.NT_float32, Geom.C_normal)
  5. array3 = GeomVertexArrayFormat("color", 4, Geom.NT_float32, Geom.C_color)
  6. array4 = GeomVertexArrayFormat("texcoord", 2, Geom.NT_float32, Geom.C_texcoord)
  7. # Verify initial refcounts
  8. assert array1.get_ref_count() == 1
  9. assert array2.get_ref_count() == 1
  10. assert array3.get_ref_count() == 1
  11. assert array4.get_ref_count() == 1
  12. format = GeomVertexFormat()
  13. def expect_arrays(*args):
  14. assert format.get_num_arrays() == len(args)
  15. assert len(format.arrays) == len(args)
  16. assert tuple(format.arrays) == args
  17. arrays = format.get_arrays()
  18. assert tuple(arrays) == args
  19. assert array1.get_ref_count() == 1 + arrays.count(array1) * 2
  20. assert array2.get_ref_count() == 1 + arrays.count(array2) * 2
  21. assert array3.get_ref_count() == 1 + arrays.count(array3) * 2
  22. assert array4.get_ref_count() == 1 + arrays.count(array4) * 2
  23. # Verify empty state
  24. expect_arrays()
  25. # Append to end
  26. format.add_array(array1)
  27. expect_arrays(array1,)
  28. format.add_array(array2)
  29. expect_arrays(array1, array2)
  30. format.add_array(array3)
  31. expect_arrays(array1, array2, array3)
  32. format.add_array(array4)
  33. expect_arrays(array1, array2, array3, array4)
  34. # Verify other accessors
  35. assert format.get_num_arrays() == 4
  36. assert len(format.arrays) == 4
  37. assert tuple(format.get_arrays()) == (array1, array2, array3, array4)
  38. # Remove from beginning
  39. format.remove_array(0)
  40. expect_arrays(array2, array3, array4)
  41. format.remove_array(0)
  42. expect_arrays(array3, array4)
  43. format.remove_array(0)
  44. expect_arrays(array4,)
  45. format.remove_array(0)
  46. expect_arrays()
  47. # Insert at end
  48. format.insert_array(0, array1)
  49. expect_arrays(array1,)
  50. format.insert_array(1, array2)
  51. expect_arrays(array1, array2)
  52. format.insert_array(2, array3)
  53. expect_arrays(array1, array2, array3)
  54. format.insert_array(3, array4)
  55. expect_arrays(array1, array2, array3, array4)
  56. # Remove from end
  57. format.remove_array(3)
  58. expect_arrays(array1, array2, array3)
  59. format.remove_array(2)
  60. expect_arrays(array1, array2)
  61. format.remove_array(1)
  62. expect_arrays(array1,)
  63. format.remove_array(0)
  64. expect_arrays()
  65. # Insert at beginning
  66. format.insert_array(0, array4)
  67. expect_arrays(array4,)
  68. format.insert_array(0, array3)
  69. expect_arrays(array3, array4)
  70. format.insert_array(0, array2)
  71. expect_arrays(array2, array3, array4)
  72. format.insert_array(0, array1)
  73. expect_arrays(array1, array2, array3, array4)
  74. # Remove from middle and insert back in middle
  75. format.remove_array(2)
  76. expect_arrays(array1, array2, array4)
  77. format.insert_array(2, array3)
  78. expect_arrays(array1, array2, array3, array4)
  79. format.remove_array(1)
  80. expect_arrays(array1, array3, array4)
  81. format.remove_array(1)
  82. expect_arrays(array1, array4)
  83. format.insert_array(1, array2)
  84. expect_arrays(array1, array2, array4)
  85. format.insert_array(2, array3)
  86. expect_arrays(array1, array2, array3, array4)
  87. # Clear
  88. format.clear_arrays()
  89. expect_arrays()
  90. # Add to end but with very high index
  91. format.insert_array(0x7fffffff, array1)
  92. expect_arrays(array1,)
  93. format.insert_array(0x7fffffff, array2)
  94. expect_arrays(array1, array2)
  95. format.insert_array(0x7fffffff, array3)
  96. expect_arrays(array1, array2, array3)
  97. format.insert_array(0x7fffffff, array4)
  98. expect_arrays(array1, array2, array3, array4)