<s> from parakeet . testing_helpers import expect , run_local_tests <EOL> def varargs_return ( * x ) : <EOL> return x <EOL> def test_varargs_return ( ) : <EOL> expect ( varargs_return , [ <NUM_LIT:1> , <NUM_LIT:2> ] , ( <NUM_LIT:1> , <NUM_LIT:2> ) ) <EOL> def varargs_add ( * x ) : <EOL> return x [ <NUM_LIT:0> ] + x [ <NUM_LIT:1> ] <EOL> def test_varargs_add ( ) : <EOL> expect ( varargs_add , [ <NUM_LIT:1> , <NUM_LIT:2> ] , <NUM_LIT:3> ) <EOL> def call_varargs_add ( x , y ) : <EOL> local_tuple = ( x , y ) <EOL> return varargs_add ( * local_tuple ) <EOL> def test_call_varargs_add ( ) : <EOL> expect ( call_varargs_add , [ <NUM_LIT:1> , <NUM_LIT:2> ] , <NUM_LIT:3> ) <EOL> expect ( call_varargs_add , [ True , <NUM_LIT> ] , <NUM_LIT> ) <EOL> def add_defaults ( x = <NUM_LIT:1> , y = <NUM_LIT:2> ) : <EOL> return x + y <EOL> def test_add_defaults ( ) : <EOL> expect ( add_defaults , [ ] , <NUM_LIT:3> ) <EOL> expect ( add_defaults , [ <NUM_LIT:10> ] , <NUM_LIT:12> ) <EOL> expect ( add_defaults , [ <NUM_LIT:10> , <NUM_LIT:20> ] , <NUM_LIT:30> ) <EOL> expect ( add_defaults , [ <NUM_LIT:10> , <NUM_LIT> ] , <NUM_LIT> ) <EOL> def call_add_defaults ( ) : <EOL> return add_defaults ( <NUM_LIT:10> ) <EOL> def test_call_add_defaults ( ) : <EOL> expect ( call_add_defaults , [ ] , <NUM_LIT:12> ) <EOL> def call_add_defaults_with_names ( ) : <EOL> return add_defaults ( y = <NUM_LIT:10> , x = <NUM_LIT:20> ) <EOL> def test_call_defaults_with_names ( ) : <EOL> expect ( call_add_defaults_with_names , [ ] , <NUM_LIT:30> ) <EOL> def sub ( x , y ) : <EOL> return x - y <EOL> def call_pos_with_names ( ) : <EOL> return sub ( y = <NUM_LIT:10> , x = <NUM_LIT:20> ) <EOL> def test_call_pos_with_names ( ) : <EOL> expect ( call_pos_with_names , [ ] , <NUM_LIT:10> ) <EOL> def tuple_default ( x = ( <NUM_LIT:1> , <NUM_LIT:2> ) ) : <EOL> return x [ <NUM_LIT:0> ] + x [ <NUM_LIT:1> ] <EOL> def test_tuple_default ( ) : <EOL> expect ( tuple_default , [ ] , <NUM_LIT:3> ) <EOL> expect ( tuple_default , [ ( <NUM_LIT:1> , <NUM_LIT:3> ) ] , <NUM_LIT:4> ) <EOL> def default_closure ( x = <NUM_LIT:1> , y = ( <NUM_LIT:1> , <NUM_LIT:2> ) ) : <EOL> def inner ( z , r = <NUM_LIT:0> ) : <EOL> return y [ <NUM_LIT:0> ] + y [ <NUM_LIT:1> ] + z + r <EOL> return inner ( x ) <EOL> def test_default_closure ( ) : <EOL> expect ( default_closure , [ ] , <NUM_LIT:4> ) <EOL> expect ( default_closure , [ <NUM_LIT:10> ] , <NUM_LIT> ) <EOL> expect ( default_closure , [ <NUM_LIT:10> , ( <NUM_LIT:20> , <NUM_LIT:30> ) ] , <NUM_LIT> ) <EOL> def default_none ( x , y = None ) : <EOL> if y is None : <EOL> return x * <NUM_LIT:2> <EOL> else : <EOL> return x + y <EOL> def test_default_none ( ) : <EOL> expect ( default_none , [ <NUM_LIT:10> ] , <NUM_LIT:20> ) <EOL> expect ( default_none , [ <NUM_LIT:10> , None ] , <NUM_LIT:20> ) <EOL> expect ( default_none , [ <NUM_LIT:10> , <NUM_LIT:1> ] , <NUM_LIT:11> ) <EOL> def add1 ( x ) : <EOL> return x + <NUM_LIT:1> <EOL> def add2 ( x ) : <EOL> return x + <NUM_LIT:2> <EOL> def fn_as_default ( f = add1 ) : <EOL> return f ( <NUM_LIT:1> ) <EOL> def test_fn_as_default ( ) : <EOL> expect ( fn_as_default , [ ] , <NUM_LIT:2> ) <EOL> expect ( fn_as_default , [ add2 ] , <NUM_LIT:3> ) <EOL> def lambda_closure ( x ) : <EOL> y = <NUM_LIT:1.0> <EOL> def g ( f , x ) : <EOL> return f ( x ) <EOL> return g ( lambda z : z + y , x ) <EOL> def test_lambda_closure ( ) : <EOL> expect ( lambda_closure , [ <NUM_LIT:1> ] , <NUM_LIT> ) <EOL> if __name__ == '<STR_LIT:__main__>' : <EOL> run_local_tests ( ) </s>
