Exemplo n.º 1
0
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;
}
Exemplo n.º 2
0
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;
}
Exemplo n.º 3
0
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;
}
Exemplo n.º 5
0
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;
}
Exemplo n.º 6
0
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;
}