Example #1
0
    def test_directed_vertex_val(self):
        """ Get a directed vertex's val property """
        v0 = DirectedVertex(val='v0')

        self.assertEqual(v0.val, 'v0')
        with self.assertRaises(AttributeError):
            v0.val = ''
Example #2
0
    def test_directed_vertex_not_part_of_edge(self):
        """ A directed vertex should not be able add an edge which doesn't have
            it as a vertex """
        v0 = DirectedVertex(val='v0')
        v1 = DirectedVertex(val='v1')
        v2 = DirectedVertex(val='v2')
        e12 = DirectedEdge((v1, v2))

        with self.assertRaises(ValueError):
            v0.add_edge(e12)
Example #3
0
    def test_directed_vertex_del_attr(self):
        """ Delete an attribute of a directed vertex """
        v0 = DirectedVertex(val='v0', attrs={'city': 'Modena', 0: 1})

        v0.del_attr('city')

        self.assertEqual(v0.attrs, {0: 1})

        v0.del_attr(0)

        self.assertEqual(v0.attrs, {})
Example #4
0
    def test_directed_vertex_set(self):
        """ Set an attribute of an directed vertex """
        v0 = DirectedVertex(val='v0')

        v0.set('city', 'Modena')

        self.assertEqual(v0.attrs, {'city': 'Modena'})

        v0.set(0, 1)

        self.assertEqual(v0.attrs, {'city': 'Modena', 0: 1})
Example #5
0
    def test_directed_vertex_add_edge(self):
        """ Add an edge to a directed vertex """
        v0 = DirectedVertex(val='v0')
        v1 = DirectedVertex(val='v1')
        v2 = DirectedVertex(val='v2')
        e01 = DirectedEdge((v0, v1))
        e10 = DirectedEdge((v1, v0))
        e02 = DirectedEdge((v0, v2))
        v0.add_edge(e01)

        self.assertTrue(e01 in v0)
        self.assertFalse(e10 in v0)
        self.assertFalse(e02 in v0)
Example #6
0
    def test_directed_vertex_outs_and_ins_and_degrees(self):
        """ Get directed vertices' outs, ins, out_degree, and in_degree
            properties """
        v0 = DirectedVertex(val='v0')
        v1 = DirectedVertex(val='v1')
        v2 = DirectedVertex(val='v2')
        e00 = DirectedEdge((v0, v0))
        e01 = DirectedEdge((v0, v1))
        e02 = DirectedEdge((v0, v2))
        e10 = DirectedEdge((v1, v0))
        v0.add_edge(e00)
        v0.add_edge(e01)
        v0.add_edge(e02)
        v0.add_edge(e10)

        self.assertEqual(set(v0.outs), set([v0, v1, v2]))
        self.assertEqual(set(v0.ins), set([v0, v1]))
        self.assertEqual(v0.out_degree, 3)
        self.assertEqual(v0.in_degree, 2)
        self.assertEqual(v0.degree, 5)
Example #7
0
    def test_directed_vertex_already_has_edge(self):
        """ A directed vertex should not be able to add an edge that it already
            has """
        v0 = DirectedVertex(val='v0')
        v1 = DirectedVertex(val='v1')
        e01 = DirectedEdge((v0, v1))
        e10 = DirectedEdge((v1, v0))
        v0.add_edge(e01)

        with self.assertRaises(ValueError):
            v0.add_edge(e01)
        try:
            v1.add_edge(e01)
        except ValueError:
            self.fail("Adding the edge (v0, v1) to v0 should not stop the edge "
                      "(v0, v1) from being added to v1.")
        try:
            v0.add_edge(e10)
        except ValueError:
            self.fail("There should be no exception because (v1 -> v0) is a "
                      "different edge than (v0 -> v1) for a directed vertex.")
Example #8
0
    def test_undirected_vertex_has_attr(self):
        """ Check if a directed vertex has a particular attribute """
        v0 = DirectedVertex(val='v0', attrs={'city': 'Modena', 0: 1})

        self.assertTrue(v0.has_attr('city'))
        self.assertFalse(v0.has_attr('town'))

        v0.del_attr('city')

        self.assertFalse(v0.has_attr('city'))
Example #9
0
    def test_directed_vertex_remove_edge(self):
        """ Remove an edge from a directed vertex """
        v0 = DirectedVertex(val='v0')
        v1 = DirectedVertex(val='v1')
        v2 = DirectedVertex(val='v2')
        e01 = DirectedEdge((v0, v1))
        e10 = DirectedEdge((v1, v0))
        e02 = DirectedEdge((v0, v2))
        v0.add_edge(e01)
        v0.add_edge(e10)
        v0.add_edge(e02)

        v0.remove_edge(e01)

        self.assertFalse(e01 in v0)
        self.assertTrue(e10 in v0)
        self.assertTrue(e02 in v0)

        v0.remove_edge(e02)

        self.assertFalse(e01 in v0)
        self.assertTrue(e10 in v0)
        self.assertFalse(e02 in v0)
Example #10
0
    def test_directed_vertex_get(self):
        """ Get an attribute of a directed vertex """
        v0 = DirectedVertex(val='v0', attrs={'city': 'Modena'})

        self.assertEqual(v0.get('city'), 'Modena')
        self.assertIsNone(v0.get('notthere'))
Example #11
0
    def test_directed_vertex_edges(self):
        """ Get a directed vertex's edges property """
        v0 = DirectedVertex(val='v0')
        v1 = DirectedVertex(val='v1')
        v2 = DirectedVertex(val='v2')
        e00 = DirectedEdge((v0, v0))
        e01 = DirectedEdge((v0, v1))
        e20 = DirectedEdge((v2, v0))
        v0.add_edge(e00)
        v0.add_edge(e01)
        v1.add_edge(e01)
        v0.add_edge(e20)
        v2.add_edge(e20)

        self.assertEqual(set(v0.edges), set([e00, e01, e20]))
        self.assertEqual(set(v1.edges), set([e01]))
        self.assertEqual(set(v2.edges), set([e20]))
        with self.assertRaises(AttributeError):
            v0.edges = set()