draco_tests.cmake 7.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171
  1. # Copyright 2021 The Draco Authors
  2. #
  3. # Licensed under the Apache License, Version 2.0 (the "License"); you may not
  4. # use this file except in compliance with the License. You may obtain a copy of
  5. # the License at
  6. #
  7. # http://www.apache.org/licenses/LICENSE-2.0
  8. #
  9. # Unless required by applicable law or agreed to in writing, software
  10. # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
  11. # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
  12. # License for the specific language governing permissions and limitations under
  13. # the License.
  14. if(DRACO_CMAKE_DRACO_TESTS_CMAKE)
  15. return()
  16. endif()
  17. set(DRACO_CMAKE_DRACO_TESTS_CMAKE 1)
  18. # The factory tests are in a separate target to avoid breaking tests that rely
  19. # on file I/O via the factories. The fake reader and writer implementations
  20. # interfere with normal file I/O function.
  21. set(draco_factory_test_sources
  22. "${draco_src_root}/io/file_reader_factory_test.cc"
  23. "${draco_src_root}/io/file_writer_factory_test.cc")
  24. list(
  25. APPEND draco_test_common_sources
  26. "${draco_src_root}/core/draco_test_base.h"
  27. "${draco_src_root}/core/draco_test_utils.cc"
  28. "${draco_src_root}/core/draco_test_utils.h"
  29. "${draco_src_root}/core/status.cc")
  30. list(
  31. APPEND
  32. draco_test_sources
  33. "${draco_src_root}/animation/keyframe_animation_encoding_test.cc"
  34. "${draco_src_root}/animation/keyframe_animation_test.cc"
  35. "${draco_src_root}/attributes/point_attribute_test.cc"
  36. "${draco_src_root}/compression/attributes/point_d_vector_test.cc"
  37. "${draco_src_root}/compression/attributes/prediction_schemes/prediction_scheme_normal_octahedron_canonicalized_transform_test.cc"
  38. "${draco_src_root}/compression/attributes/prediction_schemes/prediction_scheme_normal_octahedron_transform_test.cc"
  39. "${draco_src_root}/compression/attributes/sequential_integer_attribute_encoding_test.cc"
  40. "${draco_src_root}/compression/bit_coders/rans_coding_test.cc"
  41. "${draco_src_root}/compression/decode_test.cc"
  42. "${draco_src_root}/compression/encode_test.cc"
  43. "${draco_src_root}/compression/entropy/shannon_entropy_test.cc"
  44. "${draco_src_root}/compression/entropy/symbol_coding_test.cc"
  45. "${draco_src_root}/compression/mesh/mesh_edgebreaker_encoding_test.cc"
  46. "${draco_src_root}/compression/mesh/mesh_encoder_test.cc"
  47. "${draco_src_root}/compression/point_cloud/point_cloud_kd_tree_encoding_test.cc"
  48. "${draco_src_root}/compression/point_cloud/point_cloud_sequential_encoding_test.cc"
  49. "${draco_src_root}/core/buffer_bit_coding_test.cc"
  50. "${draco_src_root}/core/math_utils_test.cc"
  51. "${draco_src_root}/core/quantization_utils_test.cc"
  52. "${draco_src_root}/core/status_test.cc"
  53. "${draco_src_root}/core/vector_d_test.cc"
  54. "${draco_src_root}/io/file_reader_test_common.h"
  55. "${draco_src_root}/io/file_utils_test.cc"
  56. "${draco_src_root}/io/file_writer_utils_test.cc"
  57. "${draco_src_root}/io/stdio_file_reader_test.cc"
  58. "${draco_src_root}/io/stdio_file_writer_test.cc"
  59. "${draco_src_root}/io/obj_decoder_test.cc"
  60. "${draco_src_root}/io/obj_encoder_test.cc"
  61. "${draco_src_root}/io/ply_decoder_test.cc"
  62. "${draco_src_root}/io/ply_reader_test.cc"
  63. "${draco_src_root}/io/stl_decoder_test.cc"
  64. "${draco_src_root}/io/stl_encoder_test.cc"
  65. "${draco_src_root}/io/point_cloud_io_test.cc"
  66. "${draco_src_root}/mesh/corner_table_test.cc"
  67. "${draco_src_root}/mesh/mesh_are_equivalent_test.cc"
  68. "${draco_src_root}/mesh/mesh_cleanup_test.cc"
  69. "${draco_src_root}/mesh/triangle_soup_mesh_builder_test.cc"
  70. "${draco_src_root}/metadata/metadata_encoder_test.cc"
  71. "${draco_src_root}/metadata/metadata_test.cc"
  72. "${draco_src_root}/point_cloud/point_cloud_builder_test.cc"
  73. "${draco_src_root}/point_cloud/point_cloud_test.cc")
  74. if(DRACO_TRANSCODER_SUPPORTED)
  75. list(
  76. APPEND draco_test_sources
  77. "${draco_src_root}/animation/animation_test.cc"
  78. "${draco_src_root}/io/gltf_decoder_test.cc"
  79. "${draco_src_root}/io/gltf_encoder_test.cc"
  80. "${draco_src_root}/io/gltf_utils_test.cc"
  81. "${draco_src_root}/io/gltf_test_helper.cc"
  82. "${draco_src_root}/io/gltf_test_helper.h"
  83. "${draco_src_root}/io/scene_io_test.cc"
  84. "${draco_src_root}/io/texture_io_test.cc"
  85. "${draco_src_root}/material/material_library_test.cc"
  86. "${draco_src_root}/material/material_test.cc"
  87. "${draco_src_root}/metadata/property_table_test.cc"
  88. "${draco_src_root}/metadata/structural_metadata_test.cc"
  89. "${draco_src_root}/scene/instance_array_test.cc"
  90. "${draco_src_root}/scene/light_test.cc"
  91. "${draco_src_root}/scene/mesh_group_test.cc"
  92. "${draco_src_root}/scene/scene_test.cc"
  93. "${draco_src_root}/scene/scene_are_equivalent_test.cc"
  94. "${draco_src_root}/scene/scene_utils_test.cc"
  95. "${draco_src_root}/scene/trs_matrix_test.cc"
  96. "${draco_src_root}/texture/texture_library_test.cc"
  97. "${draco_src_root}/texture/texture_map_test.cc"
  98. "${draco_src_root}/texture/texture_transform_test.cc")
  99. endif()
  100. macro(draco_setup_test_targets)
  101. if(DRACO_TESTS)
  102. draco_setup_googletest()
  103. if(NOT (EXISTS ${draco_gtest_all} AND EXISTS ${draco_gtest_main}))
  104. message(FATAL_ERROR "googletest missing, run git submodule update --init")
  105. endif()
  106. list(APPEND draco_test_defines GTEST_HAS_PTHREAD=0)
  107. draco_add_library(
  108. TEST
  109. NAME draco_test_common
  110. TYPE STATIC
  111. SOURCES ${draco_test_common_sources}
  112. DEFINES ${draco_defines} ${draco_test_defines}
  113. INCLUDES ${draco_test_include_paths})
  114. draco_add_library(
  115. TEST
  116. NAME draco_gtest
  117. TYPE STATIC
  118. SOURCES ${draco_gtest_all}
  119. DEFINES ${draco_defines} ${draco_test_defines}
  120. INCLUDES ${draco_test_include_paths})
  121. draco_add_library(
  122. TEST
  123. NAME draco_gtest_main
  124. TYPE STATIC
  125. SOURCES ${draco_gtest_main}
  126. DEFINES ${draco_defines} ${draco_test_defines}
  127. INCLUDES ${draco_test_include_paths})
  128. set(DRACO_TEST_DATA_DIR "${draco_root}/testdata")
  129. set(DRACO_TEST_TEMP_DIR "${draco_build}/draco_test_temp")
  130. set(DRACO_TEST_ROOT_DIR "${draco_root}")
  131. file(MAKE_DIRECTORY "${DRACO_TEST_TEMP_DIR}")
  132. # Sets DRACO_TEST_DATA_DIR and DRACO_TEST_TEMP_DIR.
  133. configure_file("${draco_root}/cmake/draco_test_config.h.cmake"
  134. "${draco_build}/testing/draco_test_config.h")
  135. # Create the test targets.
  136. draco_add_executable(
  137. TEST
  138. NAME draco_tests
  139. SOURCES ${draco_test_sources}
  140. DEFINES ${draco_defines} ${draco_test_defines}
  141. INCLUDES ${draco_test_include_paths}
  142. LIB_DEPS ${draco_dependency} draco_gtest draco_gtest_main
  143. draco_test_common)
  144. draco_add_executable(
  145. TEST
  146. NAME draco_factory_tests
  147. SOURCES ${draco_factory_test_sources}
  148. DEFINES ${draco_defines} ${draco_test_defines}
  149. INCLUDES ${draco_test_include_paths}
  150. LIB_DEPS ${draco_dependency} draco_gtest draco_gtest_main
  151. draco_test_common)
  152. endif()
  153. endmacro()