bool TestGraphModify::check_adjacency() { assert(SC_ADDR_IS_NOT_EMPTY(mGraphAddr)); sc_addr v1, v2, v3, arc; if (sc_graph_create_vertex(mGraphAddr, &v1) != SC_RESULT_OK) return false; if (sc_graph_create_vertex(mGraphAddr, &v2) != SC_RESULT_OK) return false; if (sc_graph_create_vertex(mGraphAddr, &v3) != SC_RESULT_OK) return false; if (sc_graph_create_arc(mGraphAddr, v1, v2, &arc) != SC_RESULT_OK) return false; if (sc_graph_check_elements_adjacency(mGraphAddr, v1, v2) != SC_RESULT_OK) return false; if (sc_graph_check_elements_adjacency(mGraphAddr, v1, v3) == SC_RESULT_OK) return false; if (sc_graph_check_elements_adjacency(mGraphAddr, v2, v3) == SC_RESULT_OK) return false; return true; }
bool TestGraphModify::check_arc_creation() { assert(SC_ADDR_IS_NOT_EMPTY(mGraphAddr)); sc_addr arc, v1, v2; // create if (sc_graph_create_vertex(mGraphAddr, &v1) != SC_RESULT_OK) return false; if (sc_graph_create_vertex(mGraphAddr, &v2) != SC_RESULT_OK) return false; if (sc_graph_create_arc(mGraphAddr, v1, v2, &arc) != SC_RESULT_OK) return false; // check if (sc_graph_check_arc(mGraphAddr, arc) != SC_RESULT_OK) return false; sc_iterator5 *it5 = sc_iterator5_f_a_f_a_f_new(v1, sc_type_arc_common | sc_type_const, v2, sc_type_arc_pos_const_perm, mGraphAddr); int count = 0; while (sc_iterator5_next(it5) == SC_TRUE) count++; sc_iterator5_free(it5); return count == 1; }
bool TestSearchIncidentArcs::check_search_incident_arcs() { assert(SC_ADDR_IS_NOT_EMPTY(mOrGraphAddr)); sc_addr arc1, arc2, arc3,v1,v2, v3, v4; sc_memory_arc_new(sc_type_arc_pos_const_perm, sc_graph_keynode_oriented_graph, mOrGraphAddr); // create if (sc_graph_create_vertex(mOrGraphAddr, &v1) != SC_RESULT_OK) return false; if (sc_graph_create_vertex(mOrGraphAddr, &v2) != SC_RESULT_OK) return false; if (sc_graph_create_vertex(mOrGraphAddr, &v3) != SC_RESULT_OK) return false; if (sc_graph_create_vertex(mOrGraphAddr, &v4) != SC_RESULT_OK) return false; if (sc_graph_create_arc(mOrGraphAddr, v1, v2, &arc1) != SC_RESULT_OK) return false; if (sc_graph_create_arc(mOrGraphAddr, v1, v3, &arc2) != SC_RESULT_OK) return false; if (sc_graph_create_arc(mOrGraphAddr, v1, v4, &arc3) != SC_RESULT_OK) return false; if(sc_graph_check_arc(mOrGraphAddr,arc1) != SC_RESULT_OK) return false; sc_addr_list *arcc = (sc_addr_list*)nullptr; if (search_incident_vertex_arc(mOrGraphAddr, v1, &arcc) != SC_RESULT_OK) return false; if(!SC_ADDR_IS_EQUAL(arcc->value, arc1)) return false; arcc = sc_addr_list_next(arcc); if(!SC_ADDR_IS_EQUAL(arcc->value, arc2)) return false; arcc = sc_addr_list_next(arcc); if(!SC_ADDR_IS_EQUAL(arcc->value, arc3)) return false; return true; }
bool TestCheckGraphIsDisconnectedGraph::check_graph_is_disconnected_not_or() { assert(SC_ADDR_IS_NOT_EMPTY(mGraphAddrNotOrient)); sc_memory_arc_new(sc_type_arc_pos_const_perm, sc_graph_keynode_not_oriented_graph, mGraphAddrNotOrient); sc_addr vertex1, vertex2, vertex3, vertex4, vertex5; if (sc_graph_create_vertex(mGraphAddrNotOrient, &vertex1) != SC_RESULT_OK) return false; if ( sc_graph_check_vertex(mGraphAddrNotOrient, vertex1) != SC_RESULT_OK) return false; if (sc_graph_create_vertex(mGraphAddrNotOrient, &vertex2) != SC_RESULT_OK) return false; if ( sc_graph_check_vertex(mGraphAddrNotOrient, vertex2) != SC_RESULT_OK) return false; if (sc_graph_create_vertex(mGraphAddrNotOrient, &vertex3) != SC_RESULT_OK) return false; if ( sc_graph_check_vertex(mGraphAddrNotOrient, vertex3) != SC_RESULT_OK) return false; if (sc_graph_create_vertex(mGraphAddrNotOrient, &vertex4) != SC_RESULT_OK) return false; if ( sc_graph_check_vertex(mGraphAddrNotOrient, vertex4) != SC_RESULT_OK) return false; if (sc_graph_create_vertex(mGraphAddrNotOrient, &vertex5) != SC_RESULT_OK) return false; if ( sc_graph_check_vertex(mGraphAddrNotOrient, vertex5) != SC_RESULT_OK) return false; sc_bool check; if(sc_graph_is_disconnected(mGraphAddrNotOrient, &check) != SC_RESULT_OK) return false; else if(check != SC_TRUE) return false; return true; }
bool TestGraphModify::check_vertex_creation() { assert(SC_ADDR_IS_NOT_EMPTY(mGraphAddr)); sc_addr vertex; if (sc_graph_create_vertex(mGraphAddr, &vertex) != SC_RESULT_OK) return false; // check if vertex created correctly return sc_graph_check_vertex(mGraphAddr, vertex) == SC_RESULT_OK; }
bool TestFindConnComp::check_find_conn_comp() { assert(SC_ADDR_IS_NOT_EMPTY(mGraphAddr)); sc_memory_arc_new(sc_type_arc_pos_const_perm, sc_graph_keynode_not_oriented_graph, mGraphAddr); sc_addr v1, v2, v3, v4, arc1, arc2, conn_comp_set; sc_iterator3 *it3; bool res = false; if (sc_graph_create_vertex(mGraphAddr, &v1) != SC_RESULT_OK) return false; if (sc_graph_create_vertex(mGraphAddr, &v2) != SC_RESULT_OK) return false; if (sc_graph_create_vertex(mGraphAddr, &v3) != SC_RESULT_OK) return false; if (sc_graph_create_vertex(mGraphAddr, &v4) != SC_RESULT_OK) return false; if (sc_graph_create_arc(mGraphAddr, v1, v2, &arc1) != SC_RESULT_OK) return false; if (sc_graph_create_arc(mGraphAddr, v2, v3, &arc2) != SC_RESULT_OK) return false; if (sc_graph_find_conn_comp(mGraphAddr, &conn_comp_set) != SC_RESULT_OK) return false; it3 = sc_iterator3_f_a_a_new(conn_comp_set, sc_type_arc_pos_const_perm, sc_type_node); while (sc_iterator3_next(it3) == SC_TRUE) { sc_iterator3 *vert_it3 = sc_iterator3_f_a_a_new(it3->results[2], sc_type_arc_pos_const_perm, sc_type_node); int count = 0; res = true; while (sc_iterator3_next(vert_it3) == SC_TRUE) count++; sc_iterator3_free(vert_it3); vert_it3 = sc_iterator3_f_a_a_new(it3->results[2], sc_type_arc_pos_const_perm, sc_type_node); if (count == 3) { sc_addr vert1, vert2, vert3; sc_iterator3_next(vert_it3); vert1 = vert_it3->results[2]; sc_iterator3_next(vert_it3); vert2 = vert_it3->results[2]; sc_iterator3_next(vert_it3); vert3 = vert_it3->results[2]; if (sc_iterator3_next(vert_it3) == SC_TRUE) return false; if (!SC_ADDR_IS_EQUAL(vert1, v1) && !SC_ADDR_IS_EQUAL(vert1, v2) && !SC_ADDR_IS_EQUAL(vert1, v3) ) return false; if (!SC_ADDR_IS_EQUAL(vert2, v1) && !SC_ADDR_IS_EQUAL(vert2, v2) && !SC_ADDR_IS_EQUAL(vert2, v3) ) return false; if (!SC_ADDR_IS_EQUAL(vert3, v1) && !SC_ADDR_IS_EQUAL(vert3, v2) && !SC_ADDR_IS_EQUAL(vert3, v3) ) return false; if (SC_ADDR_IS_EQUAL(vert1, vert2) || SC_ADDR_IS_EQUAL(vert2, vert3) || SC_ADDR_IS_EQUAL(vert1, vert3) ) return false; } else if (count == 1) { sc_addr vert; sc_iterator3_next(vert_it3); vert = vert_it3->results[2]; if (sc_iterator3_next(vert_it3) == SC_TRUE) return false; if (!SC_ADDR_IS_EQUAL(vert, v4)) return false; } else return false; sc_iterator3_free(vert_it3); } sc_iterator3_free(it3); return res; }