Example #1
0
    def test_undirected_vertex_val(self):
        """ Get an undirected vertex's val property """
        v0 = UndirectedVertex(val='v0')

        self.assertEqual(v0.val, 'v0')
        with self.assertRaises(AttributeError):
            v0.val = ''
Example #2
0
    def test_undirected_vertex_not_part_of_edge(self):
        """ An undirected vertex should not be able add an edge which doesn't
            have it as a vertex """
        v0 = UndirectedVertex(val='v0')
        v1 = UndirectedVertex(val='v1')
        v2 = UndirectedVertex(val='v2')
        e12 = UndirectedEdge((v1, v2))

        with self.assertRaises(ValueError):
            v0.add_edge(e12)
Example #3
0
    def test_undirected_vertex_del_attr(self):
        """ Delete an attribute of an undirected vertex """
        v0 = UndirectedVertex(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_undirected_vertex_set(self):
        """ Set an attribute of an undirected vertex """
        v0 = UndirectedVertex(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_undirected_vertex_add_edge(self):
        """ Add an edge to an undirected vertex """
        v0 = UndirectedVertex(val='v0')
        v1 = UndirectedVertex(val='v1')
        v2 = UndirectedVertex(val='v2')
        e00 = UndirectedEdge((v0, v0))
        e01 = UndirectedEdge((v0, v1))
        e10 = UndirectedEdge((v1, v0))
        e02 = UndirectedEdge((v0, v2))
        v0.add_edge(e00)
        v0.add_edge(e01)

        self.assertTrue(e00 in v0)
        self.assertTrue(e01 in v0)
        self.assertTrue(e10 in v0)
        self.assertFalse(e02 in v0)
Example #6
0
    def test_undirected_vertex_already_has_edge(self):
        """ An undirected vertex should not be able to add an edge that it
            already has """
        v0 = UndirectedVertex(val='v0')
        v1 = UndirectedVertex(val='v1')
        e01 = UndirectedEdge((v0, v1))
        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.")
Example #7
0
    def test_undirected_vertex_has_attr(self):
        """ Check if an undirected vertex has a particular attribute """
        v0 = UndirectedVertex(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 #8
0
    def test_undirected_vertex_neighbors_and_degree(self):
        """ Get undirected vertices' neighbors and degree properties """
        v0 = UndirectedVertex(val='v0')
        v1 = UndirectedVertex(val='v1')
        v2 = UndirectedVertex(val='v2')
        e00 = UndirectedEdge((v0, v0))
        e01 = UndirectedEdge((v0, v1))
        e02 = UndirectedEdge((v0, v2))
        v0.add_edge(e01)
        v0.add_edge(e02)

        self.assertEqual(set(v0.neighbors), set([v1, v2]))
        with self.assertRaises(AttributeError):
            v0.neighbors = set()
        self.assertEqual(v0.degree, 2)
        with self.assertRaises(AttributeError):
            v0.degree = 0

        v0.add_edge(e00)

        self.assertEqual(set(v0.neighbors), set([v0, v1, v2]))
        self.assertEqual(v0.degree, 4)
Example #9
0
    def test_undirected_vertex_remove_edge(self):
        """ Remove an edge from an undirected vertex """
        v0 = UndirectedVertex(val='v0')
        v1 = UndirectedVertex(val='v1')
        v2 = UndirectedVertex(val='v2')
        e01 = UndirectedEdge((v0, v1))
        e10 = UndirectedEdge((v1, v0))
        e02 = UndirectedEdge((v0, v2))
        v0.add_edge(e01)
        v0.add_edge(e02)

        v0.remove_edge(e01)

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

        v0.remove_edge(e02)

        self.assertFalse(e01 in v0)
        self.assertFalse(e10 in v0)
        self.assertFalse(e02 in v0)
Example #10
0
    def test_undirected_vertex_has_self_edge(self):
        """ Get an undirected vertex's has_self_edge property """
        v0 = UndirectedVertex(val='v0')
        v1 = UndirectedVertex(val='v1')
        v2 = UndirectedVertex(val='v2')
        e00 = UndirectedEdge((v0, v0))
        e01 = UndirectedEdge((v0, v1))
        e11 = UndirectedEdge((v1, v1))
        e02 = UndirectedEdge((v0, v2))
        v0.add_edge(e00)
        v0.add_edge(e01)
        v1.add_edge(e01)
        v0.add_edge(e02)
        v2.add_edge(e02)

        self.assertTrue(v0.has_self_edge)
        self.assertFalse(v1.has_self_edge)
        self.assertFalse(v2.has_self_edge)
        with self.assertRaises(AttributeError):
            v0.has_self_edge = True

        v1.add_edge(e11)
        v0.remove_edge(e00)

        self.assertFalse(v0.has_self_edge)
        self.assertTrue(v1.has_self_edge)
        self.assertFalse(v2.has_self_edge)
Example #11
0
    def test_undirected_vertex_edges(self):
        """ Get an undirected vertex's edges property """
        v0 = UndirectedVertex(val='v0')
        v1 = UndirectedVertex(val='v1')
        v2 = UndirectedVertex(val='v2')
        e00 = UndirectedEdge((v0, v0))
        e01 = UndirectedEdge((v0, v1))
        e02 = UndirectedEdge((v0, v2))
        v0.add_edge(e00)
        v0.add_edge(e01)
        v1.add_edge(e01)
        v0.add_edge(e02)
        v2.add_edge(e02)

        self.assertEqual(set(v0.edges), set([e00, e01, e02]))
        self.assertEqual(set(v1.edges), set([e01]))
        self.assertEqual(set(v2.edges), set([e02]))
        with self.assertRaises(AttributeError):
            v0.edges = set()
Example #12
0
    def test_undirected_vertex_get(self):
        """ Get an attribute of an undirected vertex """
        v0 = UndirectedVertex(val='v0', attrs={'city': 'Modena'})

        self.assertEqual(v0.get('city'), 'Modena')
        self.assertIsNone(v0.get('notthere'))