def test_node_path_node_predicate(self): t = self._build_tree() self.assertEquals(0, len(find_all(t, "//DefNode[.//ForInStatNode]"))) self.assertEquals(2, len(find_all(t, "//DefNode[.//NameNode]"))) self.assertEquals(1, len(find_all(t, "//ReturnStatNode[./NameNode]"))) self.assertEquals(Nodes.ReturnStatNode, type(find_first(t, "//ReturnStatNode[./NameNode]")))
def test_node_path_node_predicate_step(self): t = self._build_tree() self.assertEqual(2, len(find_all(t, "//DefNode[.//NameNode]"))) self.assertEqual(8, len(find_all(t, "//DefNode[.//NameNode]//*"))) self.assertEqual(1, len(find_all(t, "//DefNode[.//NameNode]//ReturnStatNode"))) self.assertEqual(Nodes.ReturnStatNode, type(find_first(t, "//DefNode[.//NameNode]//ReturnStatNode")))
def test_node_path_and(self): t = self._build_tree() self.assertEqual( 1, len(find_all(t, "//DefNode[.//ReturnStatNode and .//NameNode]"))) self.assertEqual(0, len(find_all(t, "//NameNode[@honking and @name]"))) self.assertEqual(0, len(find_all(t, "//NameNode[@name and @honking]"))) self.assertEqual( 2, len(find_all(t, "//DefNode[.//NameNode[@name] and @name]")))
def test_node_path_recursive_predicate(self): t = self._build_tree() self.assertEquals(2, len(find_all(t, "//DefNode[.//NameNode[@name]]"))) self.assertEquals( 1, len(find_all(t, "//DefNode[.//NameNode[@name = 'decorator']]"))) self.assertEquals( 1, len( find_all( t, "//DefNode[.//ReturnStatNode[./NameNode[@name = 'fun']]/NameNode]" )))
def test_node_path_child(self): t = self._build_tree() self.assertEqual(1, len(find_all(t, "//DefNode/ReturnStatNode/NameNode"))) self.assertEqual(1, len(find_all(t, "//ReturnStatNode/NameNode")))
def test_node_path_attribute_dotted(self): t = self._build_tree() self.assertEqual(1, len(find_all(t, "//ReturnStatNode/@value.name"))) self.assertEqual(['fun'], find_all(t, "//ReturnStatNode/@value.name"))
def test_node_path_attribute(self): t = self._build_tree() self.assertEqual(2, len(find_all(t, "//NameNode/@name"))) self.assertEqual(['fun', 'decorator'], find_all(t, "//NameNode/@name"))
def test_node_path_star(self): t = self._build_tree() self.assertEqual(10, len(find_all(t, "//*"))) self.assertEqual(8, len(find_all(t, "//DefNode//*"))) self.assertEqual(0, len(find_all(t, "//NameNode//*")))
def test_node_path_attribute_string_predicate(self): t = self._build_tree() self.assertEqual(1, len(find_all(t, "//NameNode[@name = 'decorator']")))
def test_node_path_attribute_exists_not(self): t = self._build_tree() self.assertEqual(0, len(find_all(t, "//NameNode[not(@name)]"))) self.assertEqual(2, len(find_all(t, "//NameNode[not(@honking)]")))
def test_node_path_child(self): t = self._build_tree() self.assertEquals( 1, len(find_all(t, "//DefNode/ReturnStatNode/NameNode"))) self.assertEquals(1, len(find_all(t, "//ReturnStatNode/NameNode")))
def test_node_path_attribute_dotted(self): t = self._build_tree() self.assertEquals(1, len(find_all(t, "//ReturnStatNode/@value.name"))) self.assertEquals(['fun'], find_all(t, "//ReturnStatNode/@value.name"))
def test_node_path_attribute(self): t = self._build_tree() self.assertEquals(2, len(find_all(t, "//NameNode/@name"))) self.assertEquals(['fun', 'decorator'], find_all(t, "//NameNode/@name"))
def test_node_path_star(self): t = self._build_tree() self.assertEquals(10, len(find_all(t, "//*"))) self.assertEquals(8, len(find_all(t, "//DefNode//*"))) self.assertEquals(0, len(find_all(t, "//NameNode//*")))
def test_node_path_attribute(self): t = self._build_tree() self.assertEquals(2, len(find_all(t, "//NameNode/@name"))) self.assertEquals(["fun", "decorator"], find_all(t, "//NameNode/@name"))
def test_node_path_attribute_exists(self): t = self._build_tree() self.assertEqual(2, len(find_all(t, "//NameNode[@name]"))) self.assertEqual(ExprNodes.NameNode, type(find_first(t, "//NameNode[@name]")))
def test_node_path_attribute_exists(self): t = self._build_tree() self.assertEquals(2, len(find_all(t, "//NameNode[@name]"))) self.assertEquals(ExprNodes.NameNode, type(find_first(t, "//NameNode[@name]")))
def test_node_path_and(self): t = self._build_tree() self.assertEqual(1, len(find_all(t, "//DefNode[.//ReturnStatNode and .//NameNode]"))) self.assertEqual(0, len(find_all(t, "//NameNode[@honking and @name]"))) self.assertEqual(0, len(find_all(t, "//NameNode[@name and @honking]"))) self.assertEqual(2, len(find_all(t, "//DefNode[.//NameNode[@name] and @name]")))
def test_node_path_attribute_exists_not(self): t = self._build_tree() self.assertEquals(0, len(find_all(t, "//NameNode[not(@name)]"))) self.assertEquals(2, len(find_all(t, "//NameNode[not(@honking)]")))
def test_node_path_recursive_predicate(self): t = self._build_tree() self.assertEqual(2, len(find_all(t, "//DefNode[.//NameNode[@name]]"))) self.assertEqual(1, len(find_all(t, "//DefNode[.//NameNode[@name = 'decorator']]"))) self.assertEqual(1, len(find_all(t, "//DefNode[.//ReturnStatNode[./NameNode[@name = 'fun']]/NameNode]")))
def test_node_path_attribute_string_predicate(self): t = self._build_tree() self.assertEquals(1, len(find_all(t, "//NameNode[@name = 'decorator']")))