| Index: test/cctest/test-api.cc
|
| diff --git a/test/cctest/test-api.cc b/test/cctest/test-api.cc
|
| index a69fe902a4293740a692416e4f4b5c0b57b08f5c..f5e315bad101c850f0cfa3d9d9e78dbaa8c954d2 100755
|
| --- a/test/cctest/test-api.cc
|
| +++ b/test/cctest/test-api.cc
|
| @@ -1037,7 +1037,12 @@ static uint32_t fast_return_value_uint32 = 571;
|
| static const double kFastReturnValueDouble = 2.7;
|
| // variable return values
|
| static bool fast_return_value_bool = false;
|
| -static bool fast_return_value_void_is_null = false;
|
| +enum ReturnValueOddball {
|
| + kNullReturnValue,
|
| + kUndefinedReturnValue,
|
| + kEmptyStringReturnValue
|
| +};
|
| +static ReturnValueOddball fast_return_value_void;
|
| static bool fast_return_value_object_is_empty = false;
|
|
|
| template<>
|
| @@ -1072,10 +1077,16 @@ template<>
|
| void FastReturnValueCallback<void>(
|
| const v8::FunctionCallbackInfo<v8::Value>& info) {
|
| CheckReturnValue(info);
|
| - if (fast_return_value_void_is_null) {
|
| - info.GetReturnValue().SetNull();
|
| - } else {
|
| - info.GetReturnValue().SetUndefined();
|
| + switch (fast_return_value_void) {
|
| + case kNullReturnValue:
|
| + info.GetReturnValue().SetNull();
|
| + break;
|
| + case kUndefinedReturnValue:
|
| + info.GetReturnValue().SetUndefined();
|
| + break;
|
| + case kEmptyStringReturnValue:
|
| + info.GetReturnValue().SetEmptyString();
|
| + break;
|
| }
|
| }
|
|
|
| @@ -1135,13 +1146,25 @@ THREADED_TEST(FastReturnValues) {
|
| CHECK_EQ(fast_return_value_bool, value->ToBoolean()->Value());
|
| }
|
| // check oddballs
|
| - for (int i = 0; i < 2; i++) {
|
| - fast_return_value_void_is_null = i == 0;
|
| + ReturnValueOddball oddballs[] = {
|
| + kNullReturnValue,
|
| + kUndefinedReturnValue,
|
| + kEmptyStringReturnValue
|
| + };
|
| + for (size_t i = 0; i < ARRAY_SIZE(oddballs); i++) {
|
| + fast_return_value_void = oddballs[i];
|
| value = TestFastReturnValues<void>();
|
| - if (fast_return_value_void_is_null) {
|
| - CHECK(value->IsNull());
|
| - } else {
|
| - CHECK(value->IsUndefined());
|
| + switch (fast_return_value_void) {
|
| + case kNullReturnValue:
|
| + CHECK(value->IsNull());
|
| + break;
|
| + case kUndefinedReturnValue:
|
| + CHECK(value->IsUndefined());
|
| + break;
|
| + case kEmptyStringReturnValue:
|
| + CHECK(value->IsString());
|
| + CHECK_EQ(0, v8::String::Cast(*value)->Length());
|
| + break;
|
| }
|
| }
|
| // check handles
|
|
|