Modulo [B]asico para prueba [unit]aria de programas:
|
Contenedor grapo dirigido en que los vértices son hileras y los valores de los arcos son enteros. Más...
#include <ADH_Graph.h>
Clases | |
class | const_iterator |
Iteradores [CONST] para obtener todos los vértices de un grafo. Más... | |
class | Rep_const_iterator |
Iteradores [CONST] simples para la clase "Graph" . Más... | |
Tipos públicos | |
typedef std::string | key_type |
Tipo de los vértices. | |
typedef std::map< std::string, int > | mapped_type |
Lista de aristas para un vértice. | |
typedef Rep::value_type | value_type |
Nombre estándar del objeto contenido. | |
typedef value_type & | reference |
Referencia al objeto contenido. | |
typedef const value_type & | const_reference |
Referencia constante al objeto contenido. | |
Métodos públicos | |
Graph () | |
Constructor de vector. | |
Graph (const Graph &G) | |
Constructor de copia. | |
~Graph () | |
Destructor. | |
bool | empty () const |
Retorna "true" si el contenedor está vacío. | |
Graph & | operator= (const Graph &G) |
Copia *this = G | |
void | swap (Graph &M) |
Intercambia los valores de "M" <==> "*this" . | |
void | clear () |
Deja al grafo vacío. | |
const_iterator | begin () const |
Denota al primer valor del contenedor. | |
const_iterator | end () const |
Denota el valor que ya está fuera del contenedor. | |
bool | isVertex (const std::string &vtx) const |
Retorna "true" si existe el vértice vtx . | |
bool | isArc (const std::string &src, const std::string &dst, int &val) const |
Retorna "true" si existe el arco src->dst . | |
void | set (const std::string &vtx) |
Establece que el grafo tiene el vértice vtx . | |
void | set (const std::string &src, const std::string &dst, int val) |
Establece que el grafo tiene la arista src->dst con valor "val" . | |
void | vertexList (std::list< std::string > &L) const |
Retorna la lista de todos los vértices del grafo. | |
void | vertexList (std::string vtx, std::list< std::string > &L) const |
Retorna la lista de todos los vértices a los que se llega con un arco desde "vtx" . | |
Tipos privados | |
typedef std::map< key_type, mapped_type > | Rep |
Abreviatura para el Rep, implementado con un diccionario. | |
Métodos privados | |
Rep_const_iterator | begin_Rep () const |
Denota al primer valor del contenedor. | |
Rep_const_iterator | end_Rep () const |
Denota el valor que ya está fuera del contenedor. | |
Atributos privados | |
Rep | m_DICC |
Diccionario que contiene los valores del grafo. | |
Amigas | |
class | test_Graph |
Datos de prueba de la clase. | |
std::ostream & | operator<< (std::ostream &COUT, const Graph &G) |
Graba el valor de "G" en el flujo "COUT" . | |
void | dump (std::ostream &COUT, const Graph &G) |
Graba el valor de "G" en el flujo "COUT" . | |
bool | check_ok (const Graph &DDD) |
Verifica la invariante del grafo. |
Contenedor grapo dirigido en que los vértices son hileras y los valores de los arcos son enteros.
Definición en la línea 26 del archivo ADH_Graph.h.
typedef std::string ADH::Graph::key_type |
Tipo de los vértices.
Definición en la línea 28 del archivo ADH_Graph.h.
typedef std::map< std::string, int > ADH::Graph::mapped_type |
Lista de aristas para un vértice.
Definición en la línea 29 del archivo ADH_Graph.h.
typedef std::map< key_type, mapped_type > ADH::Graph::Rep [private] |
Abreviatura para el Rep, implementado con un diccionario.
Definición en la línea 32 del archivo ADH_Graph.h.
typedef Rep::value_type ADH::Graph::value_type |
Nombre estándar del objeto contenido.
Definición en la línea 34 del archivo ADH_Graph.h.
typedef value_type& ADH::Graph::reference |
Referencia al objeto contenido.
Definición en la línea 35 del archivo ADH_Graph.h.
typedef const value_type& ADH::Graph::const_reference |
Referencia constante al objeto contenido.
Definición en la línea 36 del archivo ADH_Graph.h.
ADH::Graph::Graph | ( | ) | [inline] |
Constructor de vector.
Definición en la línea 116 del archivo ADH_Graph.h.
ADH::Graph::Graph | ( | const Graph & | G | ) | [inline] |
Constructor de copia.
Definición en la línea 117 del archivo ADH_Graph.h.
ADH::Graph::~Graph | ( | ) | [inline] |
Destructor.
Definición en la línea 118 del archivo ADH_Graph.h.
bool ADH::Graph::empty | ( | ) | const [inline] |
Retorna "true"
si el contenedor está vacío.
Definición en la línea 120 del archivo ADH_Graph.h.
Copia *this = G
Definición en la línea 122 del archivo ADH_Graph.h.
void ADH::Graph::swap | ( | Graph & | M | ) | [inline] |
Intercambia los valores de "M"
<==> "*this"
.
Definición en la línea 124 del archivo ADH_Graph.h.
void ADH::Graph::clear | ( | ) | [inline] |
Deja al grafo vacío.
Definición en la línea 125 del archivo ADH_Graph.h.
Rep_const_iterator ADH::Graph::begin_Rep | ( | ) | const [inline, private] |
Denota al primer valor del contenedor.
Definición en la línea 128 del archivo ADH_Graph.h.
Rep_const_iterator ADH::Graph::end_Rep | ( | ) | const [inline, private] |
Denota el valor que ya está fuera del contenedor.
Definición en la línea 130 del archivo ADH_Graph.h.
const_iterator ADH::Graph::begin | ( | ) | const [inline] |
Denota al primer valor del contenedor.
Definición en la línea 133 del archivo ADH_Graph.h.
const_iterator ADH::Graph::end | ( | ) | const [inline] |
Denota el valor que ya está fuera del contenedor.
Definición en la línea 135 del archivo ADH_Graph.h.
bool ADH::Graph::isVertex | ( | const std::string & | vtx | ) | const |
Retorna "true"
si existe el vértice vtx
.
{{ // test::isVertex() Graph G; int val = 666; G.set( "F", "D", 2*2*2 ); assertTrue( G.isVertex( "F" ) ) ; assertTrue( G.isVertex( "D" ) ) ; assertTrue( val == 666 && "initial val" ); assertTrue( G.isArc( "F" , "D", val ) ); assertTrue( val == 2*2*2 && "returned val" ); val = 666; assertTrue( ! G.isArc( "D" , "F", val ) ); assertTrue( val == 666 && "unchanged val" ); }}
Definición en la línea 130 del archivo ADH_Graph.cpp.
bool ADH::Graph::isArc | ( | const std::string & | src, |
const std::string & | dst, | ||
int & | val | ||
) | const |
Retorna "true"
si existe el arco src->dst
.
val
se copia el valor asociado al arco."false"
y no cambia el valor de val
.{{ // test::isVertex() Graph G; int val = 666; G.set( "F", "D", 2*2*2 ); assertTrue( G.isVertex( "F" ) ) ; assertTrue( G.isVertex( "D" ) ) ; assertTrue( val == 666 && "initial val" ); assertTrue( G.isArc( "F" , "D", val ) ); assertTrue( val == 2*2*2 && "returned val" ); val = 666; assertTrue( ! G.isArc( "D" , "F", val ) ); assertTrue( val == 666 && "unchanged val" ); }}
Definición en la línea 144 del archivo ADH_Graph.cpp.
void ADH::Graph::set | ( | const std::string & | vtx | ) |
Establece que el grafo tiene el vértice vtx
.
Definición en la línea 108 del archivo ADH_Graph.cpp.
void ADH::Graph::set | ( | const std::string & | src, |
const std::string & | dst, | ||
int | val | ||
) |
Establece que el grafo tiene la arista src->dst
con valor "val"
.
Definición en la línea 79 del archivo ADH_Graph.cpp.
void ADH::Graph::vertexList | ( | std::list< std::string > & | L | ) | const |
Retorna la lista de todos los vértices del grafo.
"L"
vacía si no existe ningún vértice en el grafo. Definición en la línea 165 del archivo ADH_Graph.cpp.
void ADH::Graph::vertexList | ( | std::string | vtx, |
std::list< std::string > & | L | ||
) | const |
Retorna la lista de todos los vértices a los que se llega con un arco desde "vtx"
.
"L"
vacía si no existe el vértice "vtx"
."L"
vacía si no existe ningún arco que comience con el vértice "vtx"
.{{ // test::diagram() A(1) C(1) O(1)---->O(2) / \ / \ /|\ | / \ / \ | | F->--A(2)-->-B-> ->D | | \ / \ / | | \ / \ / | \|/ A(3) C(2) O(4)<----O(3) }} {{ // test::vertexList() std::list< std::string > L; G.vertexList( L ); assertTrue( L.size() == 12 ); G.vertexList( "F", L ); assertTrue( L.size() == 3 ); assertTrue( find(L.begin(), L.end() ,"A(1)") != L.end() ); assertTrue( find(L.begin(), L.end() ,"A(2)") != L.end() ); assertTrue( find(L.begin(), L.end() ,"A(3)") != L.end() ); G.vertexList( "D", L ); assertTrue( L.empty() ); G.vertexList( "A(2)", L ); assertTrue( L.size() == 1 ); assertTrue( L.front() == "B" ); }}
Definición en la línea 184 del archivo ADH_Graph.cpp.
friend class test_Graph [friend] |
Datos de prueba de la clase.
Definición en la línea 141 del archivo ADH_Graph.h.
std::ostream& operator<< | ( | std::ostream & | COUT, |
const Graph & | G | ||
) | [friend] |
Graba el valor de "G"
en el flujo "COUT"
.
Graba el valor de "G"
en el flujo "COUT"
.
Verifica la invariante del grafo.
- Regresa \c "true" si el grafo \c "DDD" contiene un valor correcto - Podría retornar \c "true" para un grafo lista cuyo valor está corrupto - Podría no retornar si el grafo tiene su valor corrupto - Como los valores del grafo están ordenados, verifica que la lista que DDD contiene esté ordenada \par Rep Diagrama de la clase
m_DICC[] +------+----------------------------------+ | | +---------+---------+----------+ | | F | | A(1)=>2 | A(2)=>8 | A(3)=>64 | | | | +---------+---------+----------+ | +------+----------------------------------+ | | +------+ | A(1) C(1) | A(1) | | B=>2 | | / \ / \ | | +------+ | / \ / \ +------+----------------------------------+ F----A(2)----B-- --D | | +------+ | \ / \ / | A(2) | | B=>8 | | \ / \ / | | +------+ | A(3) C(2) +------+----------------------------------+ | | +-------+ | | A(3) | | B=>64 | | G.set("F", "A(1)", 2 ); G.set( "A(1)", "B", 2 ); | | +-------+ | G.set("F", "A(2)", 8 ); G.set( "A(2)", "B", 8 ); +------+----------------------------------+ G.set("F", "A(3)", 64 ); G.set( "A(3)", "B", 64 ); | | +---------+----------+ | | B | | C(1)=>3 | C(2)=>27 | | G.set("B", "C(1)", 3 ); G.set( "C(1)", "D", 3 ); | | +---------+----------+ | G.set("B", "C(2)", 27 ); G.set( "C(2)", "D", 27 ); +------+----------------------------------+ | | +------+ | | C(1) | | D=>2 | | | | +------+ | +------+----------------------------------+ | | +------+ | | C(2) | | D=>8 | | | | +------+ | +------+----------------------------------+ | | +-+ | | D | | | | D no es salida de ninguna arista | | +-+ | - Su diccionario está vacío +------+----------------------------------+
Definición en la línea 69 del archivo ADH_Graph.cpp.
Rep ADH::Graph::m_DICC [private] |
Diccionario que contiene los valores del grafo.
Definición en la línea 151 del archivo ADH_Graph.h.