class TestFlow(unittest.TestCase): def setUp(self): self.flow = Flow() self.n1 = INode() self.n2 = INode() self.f1 = Flow() self.f1.addNode(self.n1) self.f1.addNode(self.n2) def test_addNode(self): self.assertEqual(self.flow.nodes, []) n = Node() self.flow.addNode(n) self.assertEqual(self.flow.nodes, [n]) self.assertEqual(n.flow, self.flow) self.assertTrue(n in self.flow.nodes) self.assertTrue(n in self.flow.startNodes) # Add it twice self.flow.addNode(Node(id='foo')) self.assertRaises(FlowError, self.flow.addNode, Node(id='foo')) # Add it twice without name self.flow.addNode(Node()) self.flow.addNode(Node()) # Not raising def test_removeNode(self): self.assertEqual(self.flow.nodes, []) self.assertRaises(FlowError, self.flow.removeNode, Node()) n = Node() self.flow.addNode(n) self.flow.removeNode(n) self.assertFalse(n in self.flow.nodes) self.assertEqual(n.flow, None) def test_findNode(self): self.assertRaises(NodeNotFoundError, self.flow.findNode, 'foo') n = Node() self.flow.addNode(n) self.assertEqual(n, self.flow.findNode('')) n = Node(id='bar') self.flow.addNode(n) self.assertNotEqual(n, self.flow.findNode('')) self.assertEqual(n, self.flow.findNode('bar')) def test_randomId(self): class FooNode(Node): label = 'foo' self.flow.addNode(FooNode()) self.assertEqual('foo', self.flow.randomId(FooNode())) self.flow.addNode(FooNode()) self.assertEqual('foo-2', self.flow.randomId(FooNode())) self.flow.addNode(FooNode()) self.assertEqual('foo-3', self.flow.randomId(FooNode())) self.flow.addNode(FooNode()) self.assertEqual('foo-4', self.flow.randomId(FooNode())) def test_addConnector(self): self.f1.addConnector(self.n1.i2, self.n2.i1) self.assertEqual(1, len(self.n1.successors)) self.assertEqual(0, len(self.n2.successors)) self.assertEqual(0, len(self.n1.predecessors)) self.assertEqual(1, len(self.n2.predecessors)) self.assertTrue(self.n1 in self.f1.startNodes) self.assertFalse(self.n2 in self.f1.startNodes) self.assertRaises(FlowError, self.f1.addConnector, self.n2.i1, self.n1.i2) def test_removeConnector(self): self.f1.addConnector(self.n2.i2, self.n1.i1) self.assertRaises(FlowError, self.f1.removeConnector, self.n1.i1, self.n2.i2) self.flow.removeConnector(self.n2.i2, self.n1.i1) self.assertTrue(self.n1 in self.f1.startNodes) self.assertTrue(self.n2 in self.f1.startNodes) self.assertEqual(0, len(self.n1.successors)) self.assertEqual(0, len(self.n2.successors)) self.assertEqual(0, len(self.n1.predecessors)) self.assertEqual(0, len(self.n2.predecessors)) self.assertRaises(FlowError, self.f1.removeConnector, self.n2.i2, self.n1.i1)