示例#1
0
    def test_standard_node_filters(self):
        model = Model()

        nodes = [Node('node0', ['node1']), 
                 Node('node1'), 
                 Node('node2'),
                 Node('node0', ['node2'])]
      
        model.node_filters.append(NodeIdFilter(lambda node_id: node_id is not 'node1'))
        model.node_filters.append(NodeIdMapper(lambda node_id: node_id.upper()))
        
        for n in nodes:
            model.merge(n)

        self.assertEquals(len(model.nodes), 2)
        self.assertEquals(model.nodes[0].id, 'NODE0')
        self.assertEquals(model.nodes[1].id, 'NODE2')
        self.assertEquals(model.nodes[0].connections, set(['NODE2']))
示例#2
0
    def test_merge(self):
        model = Model()

        nodes = [Node('node0', ['node1'], 40), 
                 Node('node1', ['external0']), 
                 Node('node2', size=5),
                 Node('node0', ['node2'], 10)]
        for n in nodes:
            model.merge(n)

        self.assertEquals(len(model.nodes), 3)
        self.assertEquals(model.nodes[0].id, 'node0')
        self.assertEquals(model.nodes[0].connections, set(['node1', 'node2']))
        self.assertEquals(model.nodes[0].size, 50)
        self.assertEquals(model.nodes[1].id, 'node1')
        self.assertEquals(model.nodes[1].connections, set(['external0']))
        self.assertEquals(model.nodes[1].size, 0)
        self.assertEquals(model.nodes[2].id, 'node2')
        self.assertEquals(model.nodes[2].connections, set([]))
        self.assertEquals(model.nodes[2].size, 5)
示例#3
0
    def test_create_external_nodes(self):
        model = Model()
        nodes = [Node('node0', ['node1', 'node2', 'ext0']), 
                 Node('node1', ['ext1']), 
                 Node('node2'),
                 Node('node3', ['ext0', 'node2', 'ext1', 'ext2', 'ext3'])]

        for n in nodes:
            model.merge(n)

        self.assertEqual(model.create_external_nodes(), 4)
        
        ids = map(lambda it: it.id, model.nodes)

        self.assertListEqual(sorted(ids), ['ext0', 'ext1', 'ext2', 'ext3', 'node0', 'node1', 'node2', 'node3'] )
        self.assertRaises(AssertionError, model.merge, nodes[0])

        for n in model.nodes:
            if n.id.startswith('node'):
                self.assertFalse(n.external, "Node %s is marked as external." % n.id)
            else:
                self.assertTrue(n.external, "Node %s isn't marked as external." % n.id)
示例#4
0
    def test_remove_external_connections(self):
        model = Model()
        nodes = [Node('node0', ['node1', 'node2', 'ext0']), 
                 Node('node1', ['ext1']), 
                 Node('node2'),
                 Node('node3', ['ext0', 'node2', 'ext1', 'ext2', 'ext3'])]

        for n in nodes:
            model.merge(n)

        self.assertEqual(model.remove_external_connections(), 6)
        
        self.assertEquals(len(model.nodes), 4)
        self.assertEquals(model.nodes[0].id, 'node0')
        self.assertEquals(model.nodes[0].connections, set(['node1', 'node2']))
        self.assertEquals(model.nodes[1].id, 'node1')
        self.assertEquals(model.nodes[1].connections, set([]))
        self.assertEquals(model.nodes[2].id, 'node2')
        self.assertEquals(model.nodes[2].connections, set([]))
        self.assertEquals(model.nodes[3].id, 'node3')
        self.assertEquals(model.nodes[3].connections, set(['node2']))
    
        self.assertRaises(AssertionError, model.merge, nodes[0])