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 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88
|
require 'test/unit'
# Tests of functions in the String class are mostly in ../builtins/TestString.rb
class TestStrings < Test::Unit::TestCase
def testCompileTimeStringConcatenation
assert_equal("abcd", "ab" "cd")
assert_equal("abcd", 'ab' "cd")
assert_equal("abcd", 'ab' 'cd')
assert_equal("abcd", "ab" 'cd')
assert_equal("22aacd44", "#{22}aa" "cd#{44}")
assert_equal("22aacd445566", "#{22}aa" "cd#{44}" "55" "#{66}")
end
# ------------------------------------------------------------
def testInterpolationOfGlobal
$foo = "abc"
assert_equal("abc = abc", "#$foo = abc")
assert_equal("abc = abc", "#{$foo} = abc")
foo = "abc"
assert_equal("abc = abc", "#{foo} = abc")
end
# ------------------------------------------------------------
def testSingleQuoteStringLiterals
assert_equal("abc\"def\#{abc}", 'abc"def#{abc}')
assert_equal('abc"def#{abc}', %q/abc"def#{abc}/)
assert_equal('abc"def#{abc}', %q{abc"def#{abc}})
assert_equal('abc"def#{abc}', %q(abc"def#{abc}))
assert_equal('abc"def#{abc}', %q
abc"def#{abc}
)
end
# ------------------------------------------------------------
def testDoubleQuoteStringLiterals
foo = "abc"
assert_equal('"abc#{foo}"', "\"#{foo}\#{foo}\"")
assert_equal('"abc#{foo}"', "\"#{foo}\#{foo}\"")
assert_equal('/"abc/#{foo}"/', %/\/"#{foo}\/\#{foo}"\//)
assert_equal('/"abc/#{foo}"/', %Q/\/"#{foo}\/\#{foo}"\//)
assert_equal('/"abc/#{foo}"/', %Q{/"abc/\#{foo}"/})
assert_equal("abc\ndef", %Q{abc
def})
end
# ------------------------------------------------------------
def testHereDocuments
assert_equal("abc\n", <<EOF)
abc
EOF
foo = "abc"
assert_equal("abc\n", <<EOF)
#{foo}
EOF
assert_equal("abc\n", <<"EOF")
#{foo}
EOF
assert_equal("\#{foo}\n", <<'EOF')
#{foo}
EOF
assert_equal(<<EOF1, <<EOF2)
a
EOF1
a
EOF2
assert_equal("foo\n", <<"")
foo
# Test that <<-EOF does not strip leading whitespace
assert_equal(" foo\n bar\n", <<-EOF)
foo
bar
EOF
end
# ------------------------------------------------------------
end
|