def test_triple_double_quote(): source = r''' puts """Hello, "World"!""" ''' assert parse(source) == [Call(Ident('puts'), [String('Hello,\n"World"!')])]
def test_single_quote_escape(): source = r''' puts 'Hello, \'World!\'' ''' assert parse(source) == [Call(Ident('puts'), [String("Hello, 'World!'")])]
def test_single_multiline_quote(): source = r''' puts 'Hello, World!' ''' assert parse(source) == [Call(Ident('puts'), [String("Hello,\nWorld!")])]
def test_double_quote_escape_unquote(): source = r''' puts "Hello, \$World!" ''' assert parse(source) == [Call(Ident('puts'), [String('Hello, $World!')])]
def test_double_nested_quote(): source = ''' puts "Hello, 'World!'" ''' assert parse(source) == [Call(Ident('puts'), [String("Hello, 'World!'")])]
def test_single_nested_quote(): source = ''' puts 'Hello, "World!"' ''' assert parse(source) == [Call(Ident('puts'), [String('Hello, "World!"')])]
def test_simple_statement(): source = ''' puts "Hello, World!" ''' assert parse(source) == [Call(Ident('puts'), [String('Hello, World!')])]
def test_call_expression(): source = ''' (puts "Hello, World!") ''' assert parse(source) == [Call(Ident('puts'), [String('Hello, World!')])]