Index: test/cctest/test-strings.cc |
diff --git a/test/cctest/test-strings.cc b/test/cctest/test-strings.cc |
index 0e30092dbbad90476188044a4821aa3945a8b684..aadb7d01beab0b9eaf50d091e9b31bb13029cd42 100644 |
--- a/test/cctest/test-strings.cc |
+++ b/test/cctest/test-strings.cc |
@@ -347,6 +347,38 @@ TEST(Utf8Conversion) { |
} |
+TEST(StringConcatFlatten) { |
+ InitializeVM(); |
+ v8::HandleScope handle_scope; |
+ |
+ const char* stringA = "0123456789"; |
+ const char* stringB = "ABCDEFGHIJ"; |
+ |
+ v8::Local<v8::String> a = v8::String::New(stringA); |
+ v8::Local<v8::String> b = v8::String::New(stringB); |
+ |
+ v8::Local<v8::String> cons = v8::String::Concat(a, b); |
+ |
+ i::Handle<i::String> str = v8::Utils::OpenHandle(*cons); |
+ CHECK(!str->IsFlat()); |
+ |
+ cons->Flatten(); |
+ |
+ CHECK(str->IsFlat()); |
+ |
+ char buffer[21]; |
+ cons->WriteUtf8(buffer); |
+ |
+ for (int i = 0; i < 10; i++) { |
+ CHECK_EQ(stringA[i], buffer[i]); |
+ } |
+ |
+ for (int i = 0; i < 10; i++) { |
+ CHECK_EQ(stringB[i], buffer[i + 10]); |
+ } |
+} |
+ |
+ |
TEST(ExternalShortStringAdd) { |
ZoneScope zone(DELETE_ON_EXIT); |