def test_reassign_node_on_hub_removal(self): h = HubDispatch().add_hub('A', 'C').link('A', 'B').link('C', 'B') self.assertEqual(h._topology.nodes, {'A': 'A', 'B': 'A', 'C': 'C'}) h._changes._clear() h.remove_hub('A') self.assertEqual(h._topology.nodes, {'B': 'C', 'C': 'C'}) self.assertEqual(h._changes.unassignments, [('A', 'A'), ('A', 'B')]) self.assertEqual(h._changes.assignments, [('C', 'B')])
def test_remove_hub_with_lonely_links(self): h = HubDispatch().add_hub('foo').link('foo', 'bar') h._changes._clear() h.remove_hub('foo') self.assertEqual(h._topology.nodes, {}) self.assertEqual(h._topology.hubs, {}) self.assertEqual(h._changes.assignments, []) self.assertEqual(h._changes.unassignments, [('foo', 'foo'), ('foo', 'bar')])
def test_empty_graph(self): h = HubDispatch() with self.assertRaises(Exception) as exc: h.remove_hub('foo') self.assertEqual(exc.exception.message, "Hub 'foo' does not exist") with self.assertRaises(Exception) as exc: h.link('foo', 'bar') self.assertEqual(exc.exception.message, "Hub 'foo' does not exist") with self.assertRaises(Exception) as exc: h.unlink('foo', 'bar') self.assertEqual(exc.exception.message, "Hub 'foo' does not exist")
def test_remove_hub_with_lonely_links(self): h = HubDispatch().add_hub('foo').link('foo', 'bar') h._changes._clear() h.remove_hub('foo') self.assertEqual(h._topology.nodes, {}) self.assertEqual(h._topology.hubs, {}) self.assertEqual(h._changes.assignments, []) self.assertEqual(h._changes.unassignments, [ ('foo', 'foo'), ('foo', 'bar') ])
def test_reassign_node_on_hub_removal(self): h = HubDispatch().add_hub('A', 'C').link('A', 'B').link('C', 'B') self.assertEqual(h._topology.nodes, { 'A': 'A', 'B': 'A', 'C': 'C' }) h._changes._clear() h.remove_hub('A') self.assertEqual(h._topology.nodes, { 'B': 'C', 'C': 'C' }) self.assertEqual(h._changes.unassignments, [('A', 'A'), ('A', 'B')]) self.assertEqual(h._changes.assignments, [('C', 'B')])
def test_remove_hub_following_hub(self): h = HubDispatch().add_hub('foo', 'bar').link('foo', 'bar') self.assertEqual(h._topology.nodes, {'bar': 'bar', 'foo': 'foo'}) self.assertEqual(h._topology.hubs, {'foo': 1, 'bar': 1}) self.assertEqual(h._changes.assignments, [('foo', 'foo'), ('bar', 'bar')]) self.assertEqual(h._changes.unassignments, []) h._changes._clear() h.remove_hub('foo') self.assertEqual(h._topology.nodes, {'bar': 'bar'}) self.assertEqual(h._topology.hubs, {'bar': 1}) self.assertEqual(h._changes.assignments, []) self.assertEqual(h._changes.unassignments, [('foo', 'foo')])
def test_remove_hub_following_hub(self): h = HubDispatch().add_hub('foo', 'bar').link('foo', 'bar') self.assertEqual(h._topology.nodes, {'bar': 'bar', 'foo': 'foo'}) self.assertEqual(h._topology.hubs, {'foo': 1, 'bar': 1}) self.assertEqual(h._changes.assignments, [ ('foo', 'foo'), ('bar', 'bar') ]) self.assertEqual(h._changes.unassignments, []) h._changes._clear() h.remove_hub('foo') self.assertEqual(h._topology.nodes, {'bar': 'bar'}) self.assertEqual(h._topology.hubs, {'bar': 1}) self.assertEqual(h._changes.assignments, []) self.assertEqual(h._changes.unassignments, [('foo', 'foo')])
def test_empty_graph(self): h = HubDispatch() with self.assertRaises(Exception) as exc: h.remove_hub('foo') self.assertEqual( exc.exception.message, "Hub 'foo' does not exist" ) with self.assertRaises(Exception) as exc: h.link('foo', 'bar') self.assertEqual( exc.exception.message, "Hub 'foo' does not exist" ) with self.assertRaises(Exception) as exc: h.unlink('foo', 'bar') self.assertEqual( exc.exception.message, "Hub 'foo' does not exist" )