def test_comments_in_quote(): assert_parser_result_from_code( r""" quote: # ignored x + y # ignored """, r""" ["quote":quote] [COLON::] [PLUS:+] [SYMBOL:x] [SYMBOL:y] [EOF:] """, r""" PepQuote( ( PepPlus( PepSymbol('x'), PepSymbol('y')) , ) ) """, )
def test_comments_in_interface(): assert_parser_result_from_code( r""" interface MyInterface: # ignored # ignored def void foo() # ignored # ignored """, r""" ["interface":interface] [SYMBOL:MyInterface] [COLON::] ["def":def] [SYMBOL:void] [SYMBOL:foo] [LPAREN:(] [EOF:] """, r""" PepInterface( PepSymbol('MyInterface'), (), (PepInterfaceDef(PepSymbol('void'),PepSymbol('foo'),()),) ) """ )
def test_comment_in_function(): assert_parser_result_from_code( r""" def void fn(): # ignored # ignored pass # ignored # ignored # ignored """, r""" ["def":def] [SYMBOL:void] [SYMBOL:fn] [LPAREN:(] [COLON::] [SYMBOL:pass] [EOF:] """, r""" PepDef( PepSymbol('void'), PepSymbol('fn'), (), ( PepSymbol('pass'), ) ) """ )
def test_for_in_tuple(): assert_parser_result_from_code( r""" for int i in ( 1, 2, 3 ): pass """, r""" ["for":for] [SYMBOL:int] [SYMBOL:i] [COMMA:,] [INT:1] [INT:2] [INT:3] [COLON::] [SYMBOL:pass] [EOF:] """, r""" PepFor( PepSymbol('int'), PepSymbol('i'), PepTuple( ( PepInt('1'), PepInt('2'), PepInt('3') ) ), ( PepSymbol('pass'), ) ) """ )
def Comma_separated_bracketed_expression_is_a_tuple__test(): assert_parser_result_from_code( r""" print( ( 1, 2, 3 ) ) """, r""" [LPAREN:(] [SYMBOL:print] [COMMA:,] [INT:1] [INT:2] [INT:3] [EOF:] """, r""" PepFunctionCall( PepSymbol('print'), ( PepTuple( ( PepInt('1'), PepInt('2'), PepInt('3') ) ), ) ) """ )
def test_comments_in_if_else(): assert_parser_result_from_code( r""" if True: # ignored pass # ignored else: # ignored # ignored pass """, r""" ["if":if] [SYMBOL:True] [COLON::] [SYMBOL:pass] ["else":else] [COLON::] [SYMBOL:pass] [EOF:] """, r""" PepIf( PepSymbol('True'), ( PepSymbol('pass'), ), ( PepSymbol('pass'), ) ) """ )
def test_var_block_with_empty_line(): assert_parser_result_from_code( r""" class MyClass: def_init(): var: int self.x = 3 int self.y = 4 """, r""" ["class":class] [SYMBOL:MyClass] [COLON::] ["def_init":def_init] [LPAREN:(] [COLON::] ["var":var] [COLON::] [EQUALS:=] [SYMBOL:int] [SYMBOL:self.x] [INT:3] [EQUALS:=] [SYMBOL:int] [SYMBOL:self.y] [INT:4] [EOF:] """, r""" PepClass( PepSymbol('MyClass'), (), ( PepDefInit( (), ( PepVar( ( PepInit( PepSymbol('int'), PepSymbol('self.x'), PepInt('3') ), PepInit( PepSymbol('int'), PepSymbol('self.y'), PepInt('4') ) ) ), ) ), ) ) """ )
def test_empty_line_in_class(): assert_parser_result_from_code( r""" class MyClass: def void meth( MyClass self ): pass def void meth2( MyClass self ): pass """, r""" ["class":class] [SYMBOL:MyClass] [COLON::] ["def":def] [SYMBOL:void] [SYMBOL:meth] [LPAREN:(] [SYMBOL:MyClass] [SYMBOL:self] [COLON::] [SYMBOL:pass] ["def":def] [SYMBOL:void] [SYMBOL:meth2] [LPAREN:(] [SYMBOL:MyClass] [SYMBOL:self] [COLON::] [SYMBOL:pass] [EOF:] """, r""" PepClass( PepSymbol('MyClass'), (), ( PepDef( PepSymbol('void'), PepSymbol('meth'), ((PepSymbol('MyClass'), PepSymbol('self')),), ( PepSymbol('pass'), ) ), PepDef( PepSymbol('void'), PepSymbol('meth2'), ((PepSymbol('MyClass'), PepSymbol('self')),), ( PepSymbol('pass'), ) ) ) ) """ )
def test_comments_in_init_and_var(): assert_parser_result_from_code( r""" class MyClass: def_init(): # ignored var: # ignored # ignored # ignored int self.x = 3 """, r""" ["class":class] [SYMBOL:MyClass] [COLON::] ["def_init":def_init] [LPAREN:(] [COLON::] ["var":var] [COLON::] [EQUALS:=] [SYMBOL:int] [SYMBOL:self.x] [INT:3] [EOF:] """, r""" PepClass( PepSymbol('MyClass'), (), ( PepDefInit( (), ( PepVar( ( PepInit( PepSymbol('int'), PepSymbol('self.x'), PepInt('3') ), ) ), ) ), ) ) """ )
def test_def_init_with_empty_line(): assert_parser_result_from_code( r""" class MyClass: def_init(): int x = 0 int y =2 """, r""" ["class":class] [SYMBOL:MyClass] [COLON::] ["def_init":def_init] [LPAREN:(] [COLON::] [EQUALS:=] [SYMBOL:int] [SYMBOL:x] [INT:0] [EQUALS:=] [SYMBOL:int] [SYMBOL:y] [INT:2] [EOF:] """, r""" PepClass( PepSymbol('MyClass'), (), ( PepDefInit( (), ( PepInit( PepSymbol('int'), PepSymbol('x'), PepInt('0') ), PepInit( PepSymbol('int'), PepSymbol('y'), PepInt('2') ) ) ), ) ) """ )
def test_multipart_name(): assert_parser_result_from_code( r""" self.x += 4 """, r""" [PLUSEQUALS:+=] [SYMBOL:self.x] [INT:4] [EOF:] """, r""" PepModification( PepSymbol('self.x'), PepInt('4') ) """ )
def test_comments_in_for(): assert_parser_result_from_code( r""" for int i in range( 0, 4 ): # ignored print( i ) # ignored """, r""" ["for":for] [SYMBOL:int] [SYMBOL:i] [LPAREN:(] [SYMBOL:range] [INT:0] [COMMA:,] [INT:4] [COLON::] [LPAREN:(] [SYMBOL:print] [SYMBOL:i] [EOF:] """, r""" PepFor( PepSymbol('int'), PepSymbol('i'), PepFunctionCall( PepSymbol('range'), ( PepInt('0'), PepInt('4') ) ), ( PepFunctionCall( PepSymbol('print'), ( PepSymbol('i'), ) ), ) ) """ )
def Double_bracketed_number_is_not_a_tuple__test(): assert_parser_result_from_code( r""" print( ( ( 3 ) ) ) """, r""" [LPAREN:(] [SYMBOL:print] [INT:3] [EOF:] """, r""" PepFunctionCall( PepSymbol('print'), ( PepInt('3'), ) ) """ )
def test_multipart_name(): assert_parser_result_from_code( r""" int self.x = 4 """, r""" [EQUALS:=] [SYMBOL:int] [SYMBOL:self.x] [INT:4] [EOF:] """, r""" PepInit( PepSymbol('int'), PepSymbol('self.x'), PepInt('4') ) """ )
def test_empty_line_in_function(): assert_parser_result_from_code( r""" def int fn(): int x = 0 return x """, r""" ["def":def] [SYMBOL:int] [SYMBOL:fn] [LPAREN:(] [COLON::] [EQUALS:=] [SYMBOL:int] [SYMBOL:x] [INT:0] ["return":return] [SYMBOL:x] [EOF:] """, r""" PepDef( PepSymbol('int'), PepSymbol('fn'), (), ( PepInit( PepSymbol('int'), PepSymbol('x'), PepInt('0') ), PepReturn( PepSymbol('x') ) ) ) """ )
def test_define_interface_with_one_function(): assert_parser_result_from_code( r""" interface MyInterface: def void foo() """, r""" ["interface":interface] [SYMBOL:MyInterface] [COLON::] ["def":def] [SYMBOL:void] [SYMBOL:foo] [LPAREN:(] [EOF:] """, r""" PepInterface( PepSymbol('MyInterface'), (), (PepInterfaceDef(PepSymbol('void'),PepSymbol('foo'),()),) ) """ )
def Basic_while_loop__test(): assert_parser_result_from_code( r""" int a = 0 while a > 5: pass """, r""" [EQUALS:=] [SYMBOL:int] [SYMBOL:a] [INT:0] ["while":while] [GT:>] [SYMBOL:a] [INT:5] [COLON::] [SYMBOL:pass] [EOF:] """, r""" PepInit( PepSymbol('int'), PepSymbol('a'), PepInt('0') ) PepWhile( PepGreaterThan( PepSymbol('a'), PepInt('5') ), ( PepSymbol('pass'), ) ) """ )