| 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 5ea21ca37aa51b27ac1bf06ee25fcd78a48a799d..68c56bba34a3ba37efb2f44235131dc107c58728 100644
|
| --- a/test/cctest/test-code-stub-assembler.cc
|
| +++ b/test/cctest/test-code-stub-assembler.cc
|
| @@ -119,6 +119,62 @@ TEST(ComputeIntegerHash) {
|
| }
|
| }
|
|
|
| +TEST(ToString) {
|
| + Isolate* isolate(CcTest::InitIsolateOnce());
|
| + const int kNumParams = 1;
|
| + CodeStubAssemblerTester m(isolate, kNumParams);
|
| + m.Return(m.ToString(m.Parameter(kNumParams + 2), m.Parameter(0)));
|
| +
|
| + Handle<Code> code = m.GenerateCode();
|
| + FunctionTester ft(code, kNumParams);
|
| +
|
| + Handle<FixedArray> test_cases = isolate->factory()->NewFixedArray(5);
|
| + Handle<FixedArray> smi_test = isolate->factory()->NewFixedArray(2);
|
| + smi_test->set(0, Smi::FromInt(42));
|
| + Handle<String> str(isolate->factory()->InternalizeUtf8String("42"));
|
| + smi_test->set(1, *str);
|
| + test_cases->set(0, *smi_test);
|
| +
|
| + Handle<FixedArray> number_test = isolate->factory()->NewFixedArray(2);
|
| + Handle<HeapNumber> num(isolate->factory()->NewHeapNumber(3.14));
|
| + number_test->set(0, *num);
|
| + str = isolate->factory()->InternalizeUtf8String("3.14");
|
| + number_test->set(1, *str);
|
| + test_cases->set(1, *number_test);
|
| +
|
| + Handle<FixedArray> string_test = isolate->factory()->NewFixedArray(2);
|
| + str = isolate->factory()->InternalizeUtf8String("test");
|
| + string_test->set(0, *str);
|
| + string_test->set(1, *str);
|
| + test_cases->set(2, *string_test);
|
| +
|
| + Handle<FixedArray> oddball_test = isolate->factory()->NewFixedArray(2);
|
| + oddball_test->set(0, isolate->heap()->undefined_value());
|
| + str = isolate->factory()->InternalizeUtf8String("undefined");
|
| + oddball_test->set(1, *str);
|
| + test_cases->set(3, *oddball_test);
|
| +
|
| + Handle<FixedArray> tostring_test = isolate->factory()->NewFixedArray(2);
|
| + Handle<FixedArray> js_array_storage = isolate->factory()->NewFixedArray(2);
|
| + js_array_storage->set(0, Smi::FromInt(1));
|
| + js_array_storage->set(1, Smi::FromInt(2));
|
| + Handle<JSArray> js_array = isolate->factory()->NewJSArray(2);
|
| + JSArray::SetContent(js_array, js_array_storage);
|
| + tostring_test->set(0, *js_array);
|
| + str = isolate->factory()->InternalizeUtf8String("1,2");
|
| + tostring_test->set(1, *str);
|
| + test_cases->set(4, *tostring_test);
|
| +
|
| + for (int i = 0; i < 5; ++i) {
|
| + Handle<FixedArray> test = handle(FixedArray::cast(test_cases->get(i)));
|
| + Handle<Object> obj = handle(test->get(0), isolate);
|
| + Handle<String> expected = handle(String::cast(test->get(1)));
|
| + Handle<Object> result = ft.Call(obj).ToHandleChecked();
|
| + CHECK(result->IsString());
|
| + CHECK(String::Equals(Handle<String>::cast(result), expected));
|
| + }
|
| +}
|
| +
|
| TEST(TryToName) {
|
| typedef CodeStubAssembler::Label Label;
|
| typedef CodeStubAssembler::Variable Variable;
|
|
|