mirror of
https://github.com/jashkenas/coffeescript.git
synced 2022-11-09 12:23:24 -05:00
107 lines
1.5 KiB
CoffeeScript
107 lines
1.5 KiB
CoffeeScript
# String Literals
|
|
# ---------------
|
|
|
|
# TODO: refactor string literal tests
|
|
# TODO: add indexing and method invocation tests: "string"["toString"] is String::toString, "string".toString() is "string"
|
|
|
|
# * Strings
|
|
# * Heredocs
|
|
|
|
test "backslash escapes", ->
|
|
eq "\\/\\\\", /\/\\/.source
|
|
|
|
eq '(((dollars)))', '\(\(\(dollars\)\)\)'
|
|
eq 'one two three', "one
|
|
two
|
|
three"
|
|
eq "four five", 'four
|
|
|
|
five'
|
|
|
|
#647
|
|
eq "''Hello, World\\''", '''
|
|
'\'Hello, World\\\''
|
|
'''
|
|
eq '""Hello, World\\""', """
|
|
"\"Hello, World\\\""
|
|
"""
|
|
eq 'Hello, World\n', '''
|
|
Hello, World\
|
|
|
|
'''
|
|
|
|
a = """
|
|
basic heredoc
|
|
on two lines
|
|
"""
|
|
ok a is "basic heredoc\non two lines"
|
|
|
|
a = '''
|
|
a
|
|
"b
|
|
c
|
|
'''
|
|
ok a is "a\n \"b\nc"
|
|
|
|
a = """
|
|
a
|
|
b
|
|
c
|
|
"""
|
|
ok a is "a\n b\n c"
|
|
|
|
a = '''one-liner'''
|
|
ok a is 'one-liner'
|
|
|
|
a = """
|
|
out
|
|
here
|
|
"""
|
|
ok a is "out\nhere"
|
|
|
|
a = '''
|
|
a
|
|
b
|
|
c
|
|
'''
|
|
ok a is " a\n b\nc"
|
|
|
|
a = '''
|
|
a
|
|
|
|
|
|
b c
|
|
'''
|
|
ok a is "a\n\n\nb c"
|
|
|
|
a = '''more"than"one"quote'''
|
|
ok a is 'more"than"one"quote'
|
|
|
|
a = '''here's an apostrophe'''
|
|
ok a is "here's an apostrophe"
|
|
|
|
# The indentation detector ignores blank lines without trailing whitespace
|
|
a = """
|
|
one
|
|
two
|
|
|
|
"""
|
|
ok a is "one\ntwo\n"
|
|
|
|
eq ''' line 0
|
|
should not be relevant
|
|
to the indent level
|
|
''', '
|
|
line 0\n
|
|
should not be relevant\n
|
|
to the indent level
|
|
'
|
|
|
|
eq ''' '\\\' ''', " '\\' "
|
|
eq """ "\\\" """, ' "\\" '
|
|
|
|
eq ''' <- keep these spaces -> ''', ' <- keep these spaces -> '
|
|
|
|
|
|
test "#1046, empty string interpolations", ->
|
|
eq "#{ }", ''
|