@@ -59,3 +59,79 @@ def test_keyword_numarg(self):
5959 def test_subscript (self ):
6060 vars = self .perform_vars_on_expression ('l[a] = x + y' )
6161 self .assertEqual (vars .result , ['l' , 'a' , 'x' , 'y' ])
62+
63+ def test_visit_boolop (self ):
64+ # AND operator
65+ var1 = self .perform_vars_on_expression ('b = x and y' )
66+ self .assertEqual (var1 .result , ['b' , 'x' , 'y' ])
67+
68+ # OR operator
69+ var2 = self .perform_vars_on_expression ('b = x or y' )
70+ self .assertEqual (var2 .result , ['b' , 'x' , 'y' ])
71+
72+ def test_visit_unaryop (self ):
73+ vars = self .perform_vars_on_expression ('a = not b' )
74+ self .assertEqual (vars .result , ['a' , 'b' ])
75+
76+ def test_visit_lambda (self ):
77+ vars = self .perform_vars_on_expression ('f = lambda x: x + 2' )
78+ self .assertEqual (vars .result , ['f' , 'x' ])
79+
80+ def test_visit_set (self ):
81+ vars = self .perform_vars_on_expression ('{a, b, c}' )
82+ self .assertEqual (vars .result , ['a' , 'b' , 'c' ])
83+
84+ def test_visit_tuple (self ):
85+ vars = self .perform_vars_on_expression ('(a, b, c)' )
86+ self .assertEqual (vars .result , ['a' , 'b' , 'c' ])
87+
88+ def test_visit_list (self ):
89+ vars = self .perform_vars_on_expression ('[a, b, c]' )
90+ self .assertEqual (vars .result , ['a' , 'b' , 'c' ])
91+
92+ def test_visit_yield (self ):
93+ var1 = self .perform_vars_on_expression ('yield exp' )
94+ self .assertEqual (var1 .result , ['exp' ])
95+
96+ var2 = self .perform_vars_on_expression ('yield from exp' )
97+ self .assertEqual (var2 .result , ['exp' ])
98+
99+ def test_visit_listcomp (self ):
100+ vars = self .perform_vars_on_expression (
101+ '[item for item in coll if cond]' )
102+ self .assertEqual (vars .result , ['item' , 'item' , 'coll' , 'cond' ])
103+
104+ def test_visit_setcomp (self ):
105+ vars = self .perform_vars_on_expression ('{a for b in d}' )
106+ self .assertEqual (vars .result , ['a' , 'b' , 'd' ])
107+
108+ def test_visit_dictcomp (self ):
109+ vars = self .perform_vars_on_expression ('{k1: v1 for (k2, v2) in d}' )
110+ self .assertEqual (vars .result , ['k1' , 'v1' , 'k2' , 'v2' , 'd' ])
111+
112+ def test_visit_compare (self ):
113+ vars = self .perform_vars_on_expression ('a == b' )
114+ self .assertEqual (vars .result , ['a' , 'b' ])
115+
116+ def test_visit_starred (self ):
117+ vars = self .perform_vars_on_expression ('*m = t' )
118+ self .assertEqual (vars .result , ['m' , 't' ])
119+
120+ def test_visit_ifexp (self ):
121+ vars = self .perform_vars_on_expression ('res if test else orelse' )
122+ self .assertEqual (vars .result , ['test' , 'res' , 'orelse' ])
123+
124+ def test_visit_subscript (self ):
125+ # simple slice
126+ vars = self .perform_vars_on_expression ('foo.bar[lower:upper:step]' )
127+ self .assertEqual (vars .result , ['foo' , 'foo' , 'lower' , 'upper' , 'step' ])
128+
129+ # extended slice
130+ vars = self .perform_vars_on_expression ('foo[item1:item2, item3]' )
131+ self .assertEqual (vars .result , ['foo' , 'item1' , 'item2' , 'item3' ])
132+
133+ def test_visit_await (self ):
134+ vars = self .perform_vars_on_expression ("""
135+ async def bar():
136+ await foo()""" )
137+ self .assertEqual (vars .result , [])
0 commit comments