def TestOr(): """ Test Or selector combinator.""" s1 = S.S(node_type=N.CallFunction) s2 = S.S(node_type=N.DefineFunction) l1 = list(s1.Or(s2)(tree)) assert (len(l1) == 2) return
def TestAnd(): """ Test And selector combinator.""" s1 = S.S(node_type='Constant') s2 = S.S(value='1') l1 = list(s1.And(s2)(tree)) assert (len(l1) == 2) return
def TestHasDescendant(): """ Test HasDescendant selector combinator.""" s1 = S.S(node_type=N.Return) s2 = S.S(node_type=N.CallFunction) l1 = list(s1.HasDescendant(s2)(tree)) assert (len(l1) == 1) assert (l1[0].GetName() == 'Return') return
def TestHasChild(): """ Test HasChild selector combinator.""" s1 = S.S(node_type=N.CallFunction) s2 = S.S(node_type=N.ReferVariable) l1 = list(s1.HasChild(s2)(tree)) assert (len(l1) == 1) assert (l1[0].GetName() == 'CallFunction') return
def TestMatchOnlyCommonAttributes(): """ Test Matching only common attributes.""" s1 = S.S(value='0', asdf='Haha', match_only_common_attributes=False) s2 = S.S(value='0', asdf='Haha', match_only_common_attributes=True) l1 = list(s1(tree)) l2 = list(s2(tree)) assert (len(l1) == 0) assert (len(l2) == 1) assert (l2[0].GetName() == 'Constant') return
def TestAttributeMatcherFunction(): """ Test Attribute Matcher Function.""" s = S.S(attr_matcher=lambda x, y: x.lower() == y.lower(), name='fAcToRiaL') l = list(s(tree)) assert (len(l) == 2) # Depends on order of traversal assert (l[0].GetName() == 'DefineFunction') assert (l[1].GetName() == 'ReferVariable') return
def TestCommonAttributesFunction1(): """ Test match common attributes for lambda function - success.""" s1 = S.S(function=lambda x: x.value == '0', match_only_common_attributes=True) l1 = list(s1(tree)) assert (len(l1) == 1) assert (l1[0].GetName() == 'Constant') return
def TestSelectorNodeType(): """ Test a Basic Selector that takes a node type as a class.""" s1 = S.S(node_type=N.Constant) l1 = list(s1(tree)) assert (len(l1) == 3) assert (l1[0].GetName() == 'Constant') assert (l1[1].GetName() == 'Constant') assert (l1[2].GetName() == 'Constant') return
def TestSelector(): """ Test Basic Selectors - function, attributes, node_type""" s1 = S.S(node_type='DefineFunction') s2 = S.S(value='0') s3 = S.S(function=lambda x: hasattr(x, 'value') and x.value == '1') l1 = list(s1(tree)) l2 = list(s2(tree)) l3 = list(s3(tree)) assert (len(l1) == 1 and len(l2) == 1 and len(l3) == 2) r1, r2, r3, r4 = l1[0], l2[0], l3[0], l3[1] assert (r1.name == 'Factorial') assert (r2.GetName() == 'Constant') assert (r3.GetName() == 'Constant') assert (r4.GetName() == 'Constant') return
def TestApply(): return_node = S.S(node_type=N.Return) # Test on a single module node result = list(return_node.Apply([tree])) assert (len(result) == 2) # 2 return statements (r1, t1), (r2, t2) = result assert (t1 == tree and t2 == tree) assert (isinstance(r1, N.Return)) assert (isinstance(r2, N.Return)) constant_node = S.S(node_type=N.Constant) d = list(constant_node.Apply([r1, r2])) assert (len(d) == 2) # 2 constant nodes should have been found. (c1, p1), (c2, p2) = d assert (p1 != p2) assert (p1 == r1 or p2 == r1) assert (p1 == r2 or p2 == r2) assert (c1 != c2) assert (c1.value == c2.value == "1") return
def TestCommonAttributesFunction2(): """ Test match common attributes for lambda function - failure.""" s1 = S.S(function=lambda x: x.value == '0' and x.asdf == 'Haha', match_only_common_attributes=False) l1 = list(s1(tree)) return
def TestEmptySelector(): """ Test the Empty Selector (Should return all nodes).""" l = list(S.S()(tree)) #print l, len(l) assert (len(l) == 18) # Number of nodes in the tree. return