1# Copyright 2021 The Draco Authors 2# 3# Licensed under the Apache License, Version 2.0 (the "License"); 4# you may not use this file except in compliance with the License. 5# You may obtain a copy of 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, 11# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12# See the License for the specific language governing permissions and 13# limitations under the License. 14 15if(DRACO_CMAKE_DRACO_TESTS_CMAKE) 16 return() 17endif() 18set(DRACO_CMAKE_DRACO_TESTS_CMAKE 1) 19 20# The factory tests are in a separate target to avoid breaking tests that rely 21# on file I/O via the factories. The fake reader and writer implementations 22# interfere with normal file I/O function. 23set(draco_factory_test_sources 24 "${draco_src_root}/io/file_reader_factory_test.cc" 25 "${draco_src_root}/io/file_writer_factory_test.cc") 26 27list( 28 APPEND 29 draco_test_sources 30 "${draco_src_root}/animation/keyframe_animation_encoding_test.cc" 31 "${draco_src_root}/animation/keyframe_animation_test.cc" 32 "${draco_src_root}/attributes/point_attribute_test.cc" 33 "${draco_src_root}/compression/attributes/point_d_vector_test.cc" 34 "${draco_src_root}/compression/attributes/prediction_schemes/prediction_scheme_normal_octahedron_canonicalized_transform_test.cc" 35 "${draco_src_root}/compression/attributes/prediction_schemes/prediction_scheme_normal_octahedron_transform_test.cc" 36 "${draco_src_root}/compression/attributes/sequential_integer_attribute_encoding_test.cc" 37 "${draco_src_root}/compression/bit_coders/rans_coding_test.cc" 38 "${draco_src_root}/compression/decode_test.cc" 39 "${draco_src_root}/compression/encode_test.cc" 40 "${draco_src_root}/compression/entropy/shannon_entropy_test.cc" 41 "${draco_src_root}/compression/entropy/symbol_coding_test.cc" 42 "${draco_src_root}/compression/mesh/mesh_edgebreaker_encoding_test.cc" 43 "${draco_src_root}/compression/mesh/mesh_encoder_test.cc" 44 "${draco_src_root}/compression/point_cloud/point_cloud_kd_tree_encoding_test.cc" 45 "${draco_src_root}/compression/point_cloud/point_cloud_sequential_encoding_test.cc" 46 "${draco_src_root}/core/buffer_bit_coding_test.cc" 47 "${draco_src_root}/core/draco_test_base.h" 48 "${draco_src_root}/core/draco_test_utils.cc" 49 "${draco_src_root}/core/draco_test_utils.h" 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/stdio_file_reader_test.cc" 57 "${draco_src_root}/io/stdio_file_writer_test.cc" 58 "${draco_src_root}/io/obj_decoder_test.cc" 59 "${draco_src_root}/io/obj_encoder_test.cc" 60 "${draco_src_root}/io/ply_decoder_test.cc" 61 "${draco_src_root}/io/ply_reader_test.cc" 62 "${draco_src_root}/io/point_cloud_io_test.cc" 63 "${draco_src_root}/mesh/mesh_are_equivalent_test.cc" 64 "${draco_src_root}/mesh/mesh_cleanup_test.cc" 65 "${draco_src_root}/mesh/triangle_soup_mesh_builder_test.cc" 66 "${draco_src_root}/metadata/metadata_encoder_test.cc" 67 "${draco_src_root}/metadata/metadata_test.cc" 68 "${draco_src_root}/point_cloud/point_cloud_builder_test.cc" 69 "${draco_src_root}/point_cloud/point_cloud_test.cc") 70 71list(APPEND draco_gtest_all 72 "${draco_root}/../googletest/googletest/src/gtest-all.cc") 73list(APPEND draco_gtest_main 74 "${draco_root}/../googletest/googletest/src/gtest_main.cc") 75 76macro(draco_setup_test_targets) 77 if(DRACO_TESTS) 78 if(NOT (EXISTS ${draco_gtest_all} AND EXISTS ${draco_gtest_main})) 79 message(FATAL "googletest must be a sibling directory of ${draco_root}.") 80 endif() 81 82 list(APPEND draco_test_defines GTEST_HAS_PTHREAD=0) 83 84 draco_add_library(TEST 85 NAME 86 draco_gtest 87 TYPE 88 STATIC 89 SOURCES 90 ${draco_gtest_all} 91 DEFINES 92 ${draco_defines} 93 ${draco_test_defines} 94 INCLUDES 95 ${draco_test_include_paths}) 96 97 draco_add_library(TEST 98 NAME 99 draco_gtest_main 100 TYPE 101 STATIC 102 SOURCES 103 ${draco_gtest_main} 104 DEFINES 105 ${draco_defines} 106 ${draco_test_defines} 107 INCLUDES 108 ${draco_test_include_paths}) 109 110 set(DRACO_TEST_DATA_DIR "${draco_root}/testdata") 111 set(DRACO_TEST_TEMP_DIR "${draco_build}/draco_test_temp") 112 file(MAKE_DIRECTORY "${DRACO_TEST_TEMP_DIR}") 113 114 # Sets DRACO_TEST_DATA_DIR and DRACO_TEST_TEMP_DIR. 115 configure_file("${draco_root}/cmake/draco_test_config.h.cmake" 116 "${draco_build}/testing/draco_test_config.h") 117 118 # Create the test targets. 119 draco_add_executable(NAME 120 draco_tests 121 SOURCES 122 ${draco_test_sources} 123 DEFINES 124 ${draco_defines} 125 ${draco_test_defines} 126 INCLUDES 127 ${draco_test_include_paths} 128 LIB_DEPS 129 draco_static 130 draco_gtest 131 draco_gtest_main) 132 133 draco_add_executable(NAME 134 draco_factory_tests 135 SOURCES 136 ${draco_factory_test_sources} 137 DEFINES 138 ${draco_defines} 139 ${draco_test_defines} 140 INCLUDES 141 ${draco_test_include_paths} 142 LIB_DEPS 143 draco_static 144 draco_gtest 145 draco_gtest_main) 146 endif() 147endmacro() 148