TEST(VertexInfoTest, BadSizeCreation) { set_tester_err_callback(); EXPECT_THROW( VertexInfo(-10, 1, 1, 1), CoreTesterException ); EXPECT_THROW( VertexInfo(-10, 1, 1, true, 1, 1), CoreTesterException ); unset_tester_err_callback(); }
void Polyhedron::preprocessAdjacency() { DEBUG_START; int i; DEBUG_PRINT("Cleaning facets"); for (i = 0; i < numFacets; ++i) { if (facets[i].numVertices < 1) continue; facets[i].preprocess_free(); } DEBUG_PRINT("Facets preprocessing"); for (i = 0; i < numFacets; ++i) { if (facets[i].numVertices < 1) continue; facets[i].preprocess(); } DEBUG_PRINT("VertexInfos preprocessing"); if (vertexInfos != NULL) { delete[] vertexInfos; } vertexInfos = new VertexInfo[numVertices]; for (i = 0; i < numVertices; ++i) { vertexInfos[i] = VertexInfo(i, vertices[i], get_ptr()); vertexInfos[i].preprocess(); } DEBUG_END; }
TEST(VertexInfoTest, BadOffsetsCreation) { set_tester_err_callback(); EXPECT_THROW( VertexInfo(28, -1, 20, 16), CoreTesterException ); EXPECT_THROW( VertexInfo(28, 27, 20, 16), CoreTesterException ); // no room for point EXPECT_THROW( VertexInfo(28, 20, 27, 16), CoreTesterException ); // no room for cluster indices EXPECT_THROW( VertexInfo(28, 20, 16, 27), CoreTesterException ); // no room for clusters number EXPECT_THROW( VertexInfo(28, 0, -1, true, 20, 16), CoreTesterException ); EXPECT_THROW( VertexInfo(28, 0, 27, true, 20, 16), CoreTesterException ); // no room for vector EXPECT_THROW( VertexInfo(28, 0, 20, true, 27, 16), CoreTesterException ); // no room for cluster indices EXPECT_THROW( VertexInfo(28, 0, 20, true, 16, 27), CoreTesterException ); // no room for clusters number unset_tester_err_callback(); }
std::pair<bool, VertexInfo> get_vertex(const size_type L_vertex_id) const { if(L_vertex_id < this->M_vertex_size) return std::make_pair(true, this->M_vertex[L_vertex_id]); return std::make_pair(false, VertexInfo()); }//get_vertex(vertex_id)
void Z3DNetworkEvaluator::buildNetwork() { std::set<Z3DProcessor*> prevProcessors( m_renderingOrder.begin(), m_renderingOrder.end()); m_renderingOrder.clear(); m_processorToVertexMapper.clear(); m_processorGraph.clear(); m_reverseSortedRenderProcessors.clear(); // nothing more to do, if no network sink is present if (!m_canvasRenderer) return; std::set<Z3DProcessor*> processed; std::queue<Z3DProcessor*> processQueue; processQueue.push(m_canvasRenderer); Vertex v = boost::add_vertex(VertexInfo(m_canvasRenderer), m_processorGraph); m_processorToVertexMapper[m_canvasRenderer] = v; // build graph of all connected processors while (!processQueue.empty()) { Z3DProcessor *processor = processQueue.front(); const std::vector<Z3DInputPortBase*> inports = processor->getInputPorts(); for (size_t i = 0; i < inports.size(); ++i) { const std::vector<Z3DOutputPortBase*> connected = inports[i]->getConnected(); for (size_t j = 0; j < connected.size(); ++j) { Z3DProcessor *outProcessor = connected[j]->getProcessor(); if (m_processorToVertexMapper.find(outProcessor) == m_processorToVertexMapper.end()) { processQueue.push(outProcessor); Vertex v = boost::add_vertex(VertexInfo(outProcessor), m_processorGraph); m_processorToVertexMapper[outProcessor] = v; } boost::add_edge(m_processorToVertexMapper[outProcessor], m_processorToVertexMapper[processor], EdgeInfo(connected[j], inports[i]), m_processorGraph); } } processed.insert(processor); processQueue.pop(); } // sort to get rendering order std::vector<Vertex> sorted; boost::topological_sort(m_processorGraph, std::back_inserter(sorted)); for (std::vector<Vertex>::reverse_iterator rit = sorted.rbegin(); rit != sorted.rend(); rit++) { m_renderingOrder.push_back(m_processorGraph[*rit].processor); } #ifdef _DEBUG_ LINFO() << "Rendering Order: "; for (size_t i=0; i<m_renderingOrder.size(); i++) { LINFO() << " " << i << ": " << m_renderingOrder[i]->getClassName(); } LINFO() << ""; #endif // compare processors in network before and after updating, deinitialize removed processors std::set<Z3DProcessor*> currProcessors(m_renderingOrder.begin(), m_renderingOrder.end()); std::set<Z3DProcessor*> removedProcessors; std::set_difference(prevProcessors.begin(), prevProcessors.end(), currProcessors.begin(), currProcessors.end(), std::inserter(removedProcessors, removedProcessors.end())); if (!removedProcessors.empty()) { #ifdef _DEBUG_ LINFO() << "Deinitialized processors after updating: "; #endif for (std::set<Z3DProcessor*>::iterator it=removedProcessors.begin(); it != removedProcessors.end(); ++it) { #ifdef _DEBUG_ LINFO() << " " << " : " << (*it)->getClassName(); #endif try { getGLFocus(); (*it)->deinitialize(); (*it)->m_initialized = false; CHECK_GL_ERROR; } catch (const Exception& e) { LERROR() << "Failed to deinitialize processor" << (*it)->getClassName() << e.what(); } } #ifdef _DEBUG_ LINFO() << ""; #endif } // update reverse sorted renderprocessors for (std::vector<Z3DProcessor*>::reverse_iterator rit = m_renderingOrder.rbegin(); rit != m_renderingOrder.rend(); rit++) { if (qobject_cast<Z3DRenderProcessor*>(*rit) == 0) continue; m_reverseSortedRenderProcessors.push_back(qobject_cast<Z3DRenderProcessor*>(*rit)); } }