예제 #1
0
	def testListFamily(self):
		"""
		This method tests :meth:`foundations.dag.AbstractCompositeNode.listFamily` method.
		"""

		class FamilyB(AbstractCompositeNode):
			__family = "B"

		class FamilyC(AbstractCompositeNode):
			__family = "C"

		nodeA = AbstractCompositeNode("MyNodeA")
		nodeB = FamilyB("MyNodeB", nodeA)
		nodeC = FamilyC("MyNodeC", nodeA)
		nodeD = FamilyB("MyNodeD", nodeC)
		nodeE = FamilyB("MyNodeE", nodeD)
		nodeF = FamilyC("MyNodeE", nodeE)

		familyNodes = [nodeB, nodeD, nodeE]
		foundNodes = nodeA.findFamily("B")
		for node in familyNodes:
			self.assertIn(node, foundNodes)

		familyNodes = [nodeC, nodeF]
		foundNodes = nodeA.findFamily("C")
		for node in familyNodes:
			self.assertIn(node, foundNodes)

		self.assertEqual(nodeA.findFamily("C", node=nodeE).pop(), nodeF)
예제 #2
0
	def testIndexOf(self):
		"""
		This method tests :meth:`foundations.dag.AbstractCompositeNode.indexOf` method.
		"""

		nodeA = AbstractCompositeNode("MyNodeA")
		nodeB = AbstractCompositeNode("MyNodeB", nodeA)
		self.assertEqual(nodeA.indexOf(nodeB), 0)
예제 #3
0
	def testListNode(self):
		"""
		This method tests :meth:`foundations.dag.AbstractCompositeNode.listNode` method.
		"""

		nodeA = AbstractCompositeNode("MyNodeA")
		nodeB = AbstractCompositeNode("MyNodeB", nodeA)
		nodeC = AbstractCompositeNode("MyNodeC", nodeA)
		self.assertIsInstance(nodeA.listNode(), str)
예제 #4
0
	def testHasChildren(self):
		"""
		This method tests :meth:`foundations.dag.AbstractCompositeNode.hasChildren` method.
		"""

		nodeA = AbstractCompositeNode("MyNodeA")
		self.assertFalse(nodeA.hasChildren())
		nodeB = AbstractCompositeNode("MyNodeB", nodeA)
		self.assertTrue(nodeA.hasChildren())
예제 #5
0
	def testChildrenCount(self):
		"""
		This method tests :meth:`foundations.dag.AbstractCompositeNode.childrenCount` method.
		"""

		nodeA = AbstractCompositeNode("MyNodeA")
		self.assertEqual(nodeA.childrenCount(), 0)
		nodeB = AbstractCompositeNode("MyNodeB", nodeA)
		nodeC = AbstractCompositeNode("MyNodeC", nodeA)
		self.assertEqual(nodeA.childrenCount(), 2)
예제 #6
0
	def testRemoveChild(self):
		"""
		This method tests :meth:`foundations.dag.AbstractCompositeNode.removeChild` method.
		"""

		nodeA = AbstractCompositeNode("MyNodeA")
		nodeB = AbstractCompositeNode("MyNodeB", nodeA)
		self.assertEqual(nodeA.removeChild(0), nodeB)
		self.assertListEqual(nodeA.children, [])
		self.assertEqual(nodeB.parent, None)
예제 #7
0
	def testAddChild(self):
		"""
		This method tests :meth:`foundations.dag.AbstractCompositeNode.addChild` method.
		"""

		nodeA = AbstractCompositeNode("MyNodeA")
		nodeB = AbstractCompositeNode("MyNodeB")
		self.assertListEqual(nodeA.children, [])
		self.assertTrue(nodeA.addChild(nodeB))
		self.assertIn(nodeB, nodeA.children)
		self.assertEqual(nodeB.parent, nodeA)
예제 #8
0
	def testChild(self):
		"""
		This method tests :meth:`foundations.dag.AbstractCompositeNode.child` method.
		"""

		nodeA = AbstractCompositeNode("MyNodeA")
		nodeB = AbstractCompositeNode("MyNodeB", nodeA)
		nodeC = AbstractCompositeNode("MyNodeC", nodeA)
		self.assertEqual(nodeA.child(0), nodeB)
		self.assertEqual(nodeA.child(1), nodeC)
		self.assertEqual(nodeA.child(2), None)
예제 #9
0
	def testInsertChild(self):
		"""
		This method tests :meth:`foundations.dag.AbstractCompositeNode.insertChild` method.
		"""

		nodeA = AbstractCompositeNode("MyNodeA")
		nodeB = AbstractCompositeNode("MyNodeB", nodeA)
		nodeC = AbstractCompositeNode("MyNodeC", nodeA)
		nodeD = AbstractCompositeNode("MyNodeD")
		self.assertTrue(nodeA.insertChild(nodeD, 1))
		for i, node in enumerate((nodeB, nodeD, nodeC)):
			self.assertEqual(nodeA.indexOf(node), i)
예제 #10
0
	def testFindChildren(self):
		"""
		This method tests :meth:`foundations.dag.AbstractCompositeNode.findChildren` method.
		"""

		nodeA = AbstractCompositeNode("MyNodeA")
		nodeB = AbstractCompositeNode("MyNodeB", nodeA)
		nodeC = AbstractCompositeNode("MyNodeC", nodeA)
		nodeD = AbstractCompositeNode("MyNodeD", nodeC)

		self.assertListEqual(nodeA.findChildren("MyNodeD"), [nodeD])
		for node in nodeA.findChildren("mynode.*", re.IGNORECASE):
			self.assertIn(node, (nodeB, nodeC, nodeD))
예제 #11
0
	def testSortChildrenNode(self):
		"""
		This method tests :meth:`foundations.dag.AbstractCompositeNode.sortChildren` method.
		"""

		nodeA = AbstractCompositeNode("MyNodeA", attributeA=Attribute(value="A"), attributeB=Attribute(value="1"))
		nodeC = AbstractCompositeNode("MyNodeC", nodeA, attributeA=Attribute(value="C"), attributeB=Attribute(value="3"))
		nodeB = AbstractCompositeNode("MyNodeB", nodeA, attributeA=Attribute(value="B"), attributeB=Attribute(value="2"))
		nodeG = AbstractCompositeNode("MyNodeG", nodeB, attributeA=Attribute(value="G"))
		nodeE = AbstractCompositeNode("MyNodeE", nodeB, attributeA=Attribute(value="E"), attributeB=Attribute(value="5"))
		nodeF = AbstractCompositeNode("MyNodeF", nodeB, attributeA=Attribute(value="F"), attributeB=Attribute(value="6"))
		nodeD = AbstractCompositeNode("MyNodeD", nodeB, attributeA=Attribute(value="D"), attributeB=Attribute(value="4"))

		self.assertTrue(nodeA.sortChildren())
		self.assertEqual(nodeA.children[0], nodeB)
		self.assertEqual(nodeA.children[1], nodeC)
		self.assertEqual(nodeA.children[0].children[0], nodeD)
		self.assertEqual(nodeA.children[0].children[1], nodeE)
		self.assertEqual(nodeA.children[0].children[2], nodeF)

		self.assertTrue(nodeA.sortChildren(reverseOrder=True))
		self.assertEqual(nodeA.children[0], nodeC)
		self.assertEqual(nodeA.children[1], nodeB)
		self.assertEqual(nodeA.children[1].children[0], nodeG)
		self.assertEqual(nodeA.children[1].children[1], nodeF)
		self.assertEqual(nodeA.children[1].children[2], nodeE)
		self.assertEqual(nodeA.children[1].children[3], nodeD)

		self.assertTrue(nodeA.sortChildren(attribute="attributeA"))
		self.assertEqual(nodeA.children[0], nodeB)
		self.assertEqual(nodeA.children[1], nodeC)
		self.assertEqual(nodeA.children[0].children[0], nodeD)
		self.assertEqual(nodeA.children[0].children[1], nodeE)
		self.assertEqual(nodeA.children[0].children[2], nodeF)

		self.assertTrue(nodeA.sortChildren(attribute="attributeA", reverseOrder=True))
		self.assertEqual(nodeA.children[0], nodeC)
		self.assertEqual(nodeA.children[1], nodeB)
		self.assertEqual(nodeA.children[1].children[0], nodeG)
		self.assertEqual(nodeA.children[1].children[1], nodeF)
		self.assertEqual(nodeA.children[1].children[2], nodeE)
		self.assertEqual(nodeA.children[1].children[3], nodeD)

		self.assertTrue(nodeA.sortChildren(attribute="attributeB"))
		self.assertEqual(nodeA.children[0], nodeB)
		self.assertEqual(nodeA.children[1], nodeC)
		self.assertEqual(nodeA.children[0].children[0], nodeD)
		self.assertEqual(nodeA.children[0].children[1], nodeE)
		self.assertEqual(nodeA.children[0].children[2], nodeF)
		self.assertEqual(nodeA.children[0].children[3], nodeG)

		self.assertTrue(nodeA.sortChildren(attribute="attributeB", reverseOrder=True))
		self.assertEqual(nodeA.children[0], nodeC)
		self.assertEqual(nodeA.children[1], nodeB)
		self.assertEqual(nodeA.children[1].children[0], nodeF)
		self.assertEqual(nodeA.children[1].children[1], nodeE)
		self.assertEqual(nodeA.children[1].children[2], nodeD)
		self.assertEqual(nodeA.children[1].children[3], nodeG)