def testTupleStore(self):
     expected_string = '(a, b) = ["c", "d"]'
     expected_node = GetNodeFromInput(expected_string).targets[0]
     test_node = create_node.Tuple(create_node.Name('a'),
                                   create_node.Name('b'),
                                   ctx_type=create_node.CtxEnum.STORE)
     self.assertNodesEqual(expected_node, test_node)
 def testBasicIfExp(self):
     expected_string = """a if True else b"""
     expected_node = GetNodeFromInput(expected_string).value
     test_node = create_node.IfExp(create_node.Name('True'),
                                   create_node.Name('a'),
                                   create_node.Name('b'))
     self.assertNodesEqual(expected_node, test_node)
 def testBasicCompare(self):
     expected_string = 'a < b'
     expected_node = GetNodeFromInput(expected_string).value
     test_node = create_node.Compare(create_node.Name('a'),
                                     create_node.Lt(),
                                     create_node.Name('b'))
     self.assertNodesEqual(expected_node, test_node)
 def testBoolOpWithOrAnd(self):
     expected_string = 'a or b and c'
     expected_node = GetNodeFromInput(expected_string).value
     test_node = create_node.BoolOp(create_node.Name('a'), 'or',
                                    create_node.Name('b'), 'and',
                                    create_node.Name('c'))
     self.assertNodesEqual(expected_node, test_node)
 def testDeleteInvalid(self):
     expected_string = 'del (a, b)'
     expected_node = GetNodeFromInput(expected_string).targets[0]
     test_node = create_node.Tuple(create_node.Name('a'),
                                   create_node.Name('b'),
                                   ctx_type=create_node.CtxEnum.DEL)
     self.assertNodesEqual(expected_node, test_node)
 def testCallWithKwargsNode(self):
     expected_string = 'a(**{b:c})'
     expected_node = GetNodeFromInput(expected_string).value
     test_node = create_node.Call('a',
                                  kwargs=create_node.Dict(
                                      keys=(create_node.Name('b'), ),
                                      values=(create_node.Name('c'), )))
     self.assertNodesEqual(expected_node, test_node)
 def testTupleOverridesInnerCtx(self):
     expected_string = 'a = (b, c)'
     expected_node = GetNodeFromInput(expected_string).value
     test_node = create_node.Tuple(
         create_node.Name('b', ctx_type=create_node.CtxEnum.DEL),
         create_node.Name('c', ctx_type=create_node.CtxEnum.STORE),
         ctx_type=create_node.CtxEnum.LOAD)
     self.assertNodesEqual(expected_node, test_node)
 def testWithAsTuple(self):
     expected_string = 'with a as (b, c):\n  pass\n'
     expected_node = GetNodeFromInput(expected_string)
     test_node = create_node.With(create_node.Name('a'),
                                  as_part=create_node.Tuple(
                                      create_node.Name('b'),
                                      create_node.Name('c')))
     self.assertNodesEqual(expected_node, test_node)
   def testNameKwargs(self):
       expected_string = """def testFunc(a=b, c=d):
 pass"""
       expected_node = GetNodeFromInput(expected_string).args
       test_node = create_node.arguments(
           keys=['a', 'c'],
           values=[create_node.Name('b'),
                   create_node.Name('d')])
       self.assertNodesEqual(expected_node, test_node)
   def testFunctionDefWithNameKwargs(self):
       expected_string = """def testFunc(a=b, c=d):
 pass"""
       expected_node = GetNodeFromInput(expected_string)
       test_node = create_node.FunctionDef(
           'testFunc',
           keys=['a', 'c'],
           values=[create_node.Name('b'),
                   create_node.Name('d')])
       self.assertNodesEqual(expected_node, test_node)
    def testBasicIfElif(self):
        expected_string = """if True:
  pass
elif False:
  pass
"""
        expected_node = GetNodeFromInput(expected_string)
        test_node = create_node.If(
            create_node.Name('True'),
            orelse=[create_node.If(create_node.Name('False'))])
        self.assertNodesEqual(expected_node, test_node)
 def testCallWithStarargsNode(self):
     expected_string = 'a(*[b])'
     expected_node = GetNodeFromInput(expected_string).value
     test_node = create_node.Call('a',
                                  starargs=create_node.List(
                                      create_node.Name('b')))
     self.assertNodesEqual(expected_node, test_node)
 def testAssignWithNode(self):
     expected_string = 'a = "b"'
     expected_node = GetNodeFromInput(expected_string)
     test_node = create_node.Assign(
         create_node.Name('a', ctx_type=create_node.CtxEnum.STORE),
         create_node.Str('b'))
     self.assertNodesEqual(expected_node, test_node)
   def testFunctionDefWithBody(self):
       expected_string = """def testFunc():
 a"""
       expected_node = GetNodeFromInput(expected_string)
       test_node = create_node.FunctionDef(
           'testFunc', body=[create_node.Expr(create_node.Name('a'))])
       self.assertNodesEqual(expected_node, test_node)
    def testIfAndOthersInElse(self):
        expected_string = """if True:
  pass
else:
  if False:
    pass
  True
"""
        expected_node = GetNodeFromInput(expected_string)
        test_node = create_node.If(
            create_node.Name('True'),
            orelse=[
                create_node.If(create_node.Name('False')),
                create_node.Expr(create_node.Name('True'))
            ])
        self.assertNodesEqual(expected_node, test_node)
 def testBody(self):
     expected_string = 'class TestClass(Base1, Base2):\n  a'
     expected_node = GetNodeFromInput(expected_string)
     test_node = create_node.ClassDef(
         'TestClass',
         bases=['Base1', 'Base2'],
         body=[create_node.Expr(create_node.Name('a'))])
     self.assertNodesEqual(expected_node, test_node)
 def testDecoratorList(self):
     expected_string = '@dec\n@dec2()\nclass TestClass():\n  pass\n'
     expected_node = GetNodeFromInput(expected_string)
     test_node = create_node.ClassDef(
         'TestClass',
         decorator_list=[create_node.Name('dec'),
                         create_node.Call('dec2')])
     self.assertNodesEqual(expected_node, test_node)
    def testDecoratorList(self):
        expected_string = """@decorator
@other_decorator(arg)
def testFunc(**kwargs):
  pass"""
        expected_node = GetNodeFromInput(expected_string)
        test_node = create_node.FunctionDef('testFunc',
                                            kwarg_name='kwargs',
                                            decorator_list=[
                                                create_node.Name('decorator'),
                                                create_node.Call(
                                                    'other_decorator',
                                                    args=['arg'])
                                            ])
        self.assertNodesEqual(expected_node, test_node)
 def testBasicAssert(self):
     expected_string = 'assert a'
     expected_node = GetNodeFromInput(expected_string)
     test_node = create_node.Assert(create_node.Name('a'))
     self.assertNodesEqual(expected_node, test_node)
 def testUnaryOpWithInvert(self):
     expected_string = '~b'
     expected_node = GetNodeFromInput(expected_string).value
     test_node = create_node.UnaryOp('~', create_node.Name('b'))
     self.assertNodesEqual(expected_node, test_node)
 def testBasicWithAs(self):
     expected_string = 'with a as b:\n  pass\n'
     expected_node = GetNodeFromInput(expected_string)
     test_node = create_node.With(create_node.Name('a'),
                                  as_part=create_node.Name('b'))
     self.assertNodesEqual(expected_node, test_node)
 def testBinOpWithBitAnd(self):
     expected_string = 'a & b'
     expected_node = GetNodeFromInput(expected_string).value
     test_node = create_node.BinOp(create_node.Name('a'), '&',
                                   create_node.Name('b'))
     self.assertNodesEqual(expected_node, test_node)
 def testBinOpWithFloorDiv(self):
     expected_string = 'a // b'
     expected_node = GetNodeFromInput(expected_string).value
     test_node = create_node.BinOp(create_node.Name('a'), '//',
                                   create_node.Name('b'))
     self.assertNodesEqual(expected_node, test_node)
 def testDictWithNonStringKeys(self):
     expected_string = '{a: 1}'
     expected_node = GetNodeFromInput(expected_string).value
     test_node = create_node.Dict([create_node.Name('a')],
                                  [create_node.Num(1)])
     self.assertNodesEqual(expected_node, test_node)
 def testNotIn(self):
     expected_string = 'a not in b'
     expected_node = GetNodeFromInput(expected_string).value
     test_node = create_node.Compare(create_node.Name('a'), 'not in',
                                     create_node.Name('b'))
     self.assertNodesEqual(expected_node, test_node)
 def testNameWithDel(self):
     expected_string = 'del a'
     expected_node = GetNodeFromInput(expected_string).targets[0]
     test_node = create_node.Name('a', ctx_type=create_node.CtxEnum.DEL)
     self.assertNodesEqual(expected_node, test_node)
 def testNameWithStore(self):
     expected_string = 'a = b'
     expected_node = GetNodeFromInput(expected_string).targets[0]
     test_node = create_node.Name('a', ctx_type=create_node.CtxEnum.STORE)
     self.assertNodesEqual(expected_node, test_node)
 def testNameWithLoad(self):
     expected_string = 'b = a'
     expected_node = GetNodeFromInput(expected_string).value
     test_node = create_node.Name('a', ctx_type=create_node.CtxEnum.LOAD)
     self.assertNodesEqual(expected_node, test_node)
 def testAssertWithMessage(self):
     expected_string = 'assert a, "a failure"'
     expected_node = GetNodeFromInput(expected_string)
     test_node = create_node.Assert(create_node.Name('a'),
                                    create_node.Str('a failure'))
     self.assertNodesEqual(expected_node, test_node)
 def testBasicIf(self):
     expected_string = """if True:\n  pass"""
     expected_node = GetNodeFromInput(expected_string)
     test_node = create_node.If(create_node.Name('True'))
     self.assertNodesEqual(expected_node, test_node)