bool VoxelmapTest::runTest() { std::vector<bool> testResults; { { // Basic Test, simple grid. std::vector<float> boxVert; std::vector<size_t> boxInd; makeBoxVertexIndices(Vector3(1.2f), Vector3(0.0f), boxVert, boxInd); float voxelWidth = 1.0f; // With box size 1.2f, we should have center voxel empty, but immediately surrounded voxels full. { VoxelGrid* resultGrid = VoxelGridFactory::generateVoxelGridFromMesh((const float*)&boxVert[0], boxVert.size() / 3, &boxInd[0], boxInd.size() / 3, voxelWidth); int numVoxels = resultGrid->numVoxels(); bool hasCorrectNumEntries = numVoxels == 26; //27 - 1 [This test is set up so that the central box is empty] assert(hasCorrectNumEntries); testResults.push_back(hasCorrectNumEntries); } { // Add another box around 4.0, 4.0, 4.0 makeBoxVertexIndices(Vector3(1.2f), Vector3(4.0f), boxVert, boxInd); VoxelGrid* resultGrid = VoxelGridFactory::generateVoxelGridFromMesh((const float*)&boxVert[0], boxVert.size() / 3, &boxInd[0], boxInd.size() / 3, voxelWidth); int numVoxels = resultGrid->numVoxels(); bool hasCorrectNumEntries = numVoxels == 52; //27 - 1 [This test is set up so that the central box is empty] assert(hasCorrectNumEntries); testResults.push_back(hasCorrectNumEntries); } } { // Finer grid test // Basic Test, simple grid. std::vector<float> boxVert; std::vector<size_t> boxInd; makeBoxVertexIndices(Vector3(1.2f), Vector3(0.0f), boxVert, boxInd); float voxelWidth = 0.2f; // With box size 1.2f, we should have center voxel empty, but immediately surrounded voxels full. { VoxelGrid* resultGrid = VoxelGridFactory::generateVoxelGridFromMesh((const float*)&boxVert[0], boxVert.size() / 3, &boxInd[0], boxInd.size() / 3, voxelWidth); int numVoxels = resultGrid->numVoxels(); bool hasCorrectNumEntries = numVoxels == 7 * 7 * 7 - 5 * 5 * 5; assert(hasCorrectNumEntries); testResults.push_back(hasCorrectNumEntries); } } } for (auto testResult : testResults) { if (!testResult) { return false; } } return true; }