Index: test/cctest/test-code-stub-assembler.cc |
diff --git a/test/cctest/test-code-stub-assembler.cc b/test/cctest/test-code-stub-assembler.cc |
index c83af5860543fd9ab277390329688966260e2040..d55c82e8eac28bcdb761c714f59db24f9823b5d1 100644 |
--- a/test/cctest/test-code-stub-assembler.cc |
+++ b/test/cctest/test-code-stub-assembler.cc |
@@ -175,6 +175,46 @@ TEST(ToString) { |
} |
} |
+TEST(FlattenString) { |
+ Isolate* isolate(CcTest::InitIsolateOnce()); |
+ const int kNumParams = 1; |
+ CodeStubAssemblerTester m(isolate, kNumParams); |
+ m.Return(m.FlattenString(m.Parameter(0))); |
+ |
+ Handle<Code> code = m.GenerateCode(); |
+ FunctionTester ft(code, kNumParams); |
+ |
+ Handle<FixedArray> test_cases(isolate->factory()->NewFixedArray(4)); |
+ Handle<String> expected( |
+ isolate->factory()->InternalizeUtf8String("hello, world!")); |
+ test_cases->set(0, *expected); |
+ |
+ Handle<String> string( |
+ isolate->factory()->InternalizeUtf8String("filler hello, world! filler")); |
+ Handle<String> sub_string( |
+ isolate->factory()->NewProperSubString(string, 7, 20)); |
+ test_cases->set(1, *sub_string); |
+ |
+ Handle<String> hello(isolate->factory()->InternalizeUtf8String("hello,")); |
+ Handle<String> world(isolate->factory()->InternalizeUtf8String(" world!")); |
+ Handle<String> cons_str( |
+ isolate->factory()->NewConsString(hello, world).ToHandleChecked()); |
+ test_cases->set(2, *cons_str); |
+ |
+ Handle<String> empty(isolate->factory()->InternalizeUtf8String("")); |
+ Handle<String> fake_cons_str( |
+ isolate->factory()->NewConsString(expected, empty).ToHandleChecked()); |
+ test_cases->set(3, *fake_cons_str); |
+ |
+ for (int i = 0; i < 4; ++i) { |
+ Handle<String> test = handle(String::cast(test_cases->get(i))); |
+ Handle<Object> result = ft.Call(test).ToHandleChecked(); |
+ CHECK(result->IsString()); |
+ CHECK(Handle<String>::cast(result)->IsFlat()); |
+ CHECK(String::Equals(Handle<String>::cast(result), expected)); |
+ } |
+} |
+ |
TEST(TryToName) { |
typedef CodeStubAssembler::Label Label; |
typedef CodeStubAssembler::Variable Variable; |