summaryrefslogtreecommitdiffstats
path: root/Lib/test/test_transformer.py
blob: 2b0f1e89e84fb7b82672d7c4269b97ff6c8d73c5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
import unittest
from test import test_support
from compiler import transformer, ast
from compiler import compile

class Tests(unittest.TestCase):
  
  def testMultipleLHS(self):
    """ Test multiple targets on the left hand side. """
    
    snippets = ['a, b = 1, 2',
                '(a, b) = 1, 2',
                '((a, b), c) = (1, 2), 3']

    for s in snippets:
      a = transformer.parse(s)
      assert isinstance(a, ast.Module)
      child1 = a.getChildNodes()[0]
      assert isinstance(child1, ast.Stmt)
      child2 = child1.getChildNodes()[0]
      assert isinstance(child2, ast.Assign)
      
      # This actually tests the compiler, but it's a way to assure the ast 
      # is correct
      c = compile(s, '<string>', 'single')
      vals = {}
      exec c in vals
      assert vals['a'] == 1
      assert vals['b'] == 2

def test_main():
    test_support.run_unittest(
        Tests
    )

if __name__ == "__main__":
    test_main()