| Index: runtime/vm/dart_api_impl_test.cc
|
| diff --git a/runtime/vm/dart_api_impl_test.cc b/runtime/vm/dart_api_impl_test.cc
|
| index 9fe6c0bf4d4df4f0d3146494c788eafec4ab36b3..d2ee3b21fd9061be74c528a6891ad0e75ea64801 100644
|
| --- a/runtime/vm/dart_api_impl_test.cc
|
| +++ b/runtime/vm/dart_api_impl_test.cc
|
| @@ -838,12 +838,21 @@ TEST_CASE(IntegerValues) {
|
| EXPECT_VALID(result);
|
| EXPECT(fits);
|
|
|
| + int64_t out = 0;
|
| + result = Dart_IntegerToInt64(val1, &out);
|
| + EXPECT_VALID(result);
|
| + EXPECT_EQ(kIntegerVal1, out);
|
| +
|
| Dart_Handle val2 = Dart_NewInteger(kIntegerVal2);
|
| EXPECT(Dart_IsInteger(val2));
|
| result = Dart_IntegerFitsIntoInt64(val2, &fits);
|
| EXPECT_VALID(result);
|
| EXPECT(fits);
|
|
|
| + result = Dart_IntegerToInt64(val2, &out);
|
| + EXPECT_VALID(result);
|
| + EXPECT_EQ(kIntegerVal2, out);
|
| +
|
| Dart_Handle val3 = Dart_NewIntegerFromHexCString(kIntegerVal3);
|
| if (FLAG_limit_ints_to_64_bits) {
|
| EXPECT(Dart_IsApiError(val3));
|
| @@ -852,21 +861,12 @@ TEST_CASE(IntegerValues) {
|
| result = Dart_IntegerFitsIntoInt64(val3, &fits);
|
| EXPECT_VALID(result);
|
| EXPECT(!fits);
|
| - }
|
| -
|
| - int64_t out = 0;
|
| - result = Dart_IntegerToInt64(val1, &out);
|
| - EXPECT_VALID(result);
|
| - EXPECT_EQ(kIntegerVal1, out);
|
| -
|
| - result = Dart_IntegerToInt64(val2, &out);
|
| - EXPECT_VALID(result);
|
| - EXPECT_EQ(kIntegerVal2, out);
|
|
|
| - const char* chars = NULL;
|
| - result = Dart_IntegerToHexCString(val3, &chars);
|
| - EXPECT_VALID(result);
|
| - EXPECT(!strcmp(kIntegerVal3, chars));
|
| + const char* chars = NULL;
|
| + result = Dart_IntegerToHexCString(val3, &chars);
|
| + EXPECT_VALID(result);
|
| + EXPECT(!strcmp(kIntegerVal3, chars));
|
| + }
|
|
|
| Dart_Handle val4 = Dart_NewIntegerFromUint64(kIntegerVal4);
|
| if (FLAG_limit_ints_to_64_bits) {
|
| @@ -892,6 +892,57 @@ TEST_CASE(IntegerValues) {
|
| EXPECT(Dart_IsError(result));
|
| }
|
|
|
| +TEST_CASE(IntegerToHexCString) {
|
| + const struct {
|
| + int64_t i;
|
| + const char* s;
|
| + } kIntTestCases[] = {
|
| + {0, "0x0"},
|
| + {1, "0x1"},
|
| + {-1, "-0x1"},
|
| + {0x123, "0x123"},
|
| + {-0xABCDEF, "-0xABCDEF"},
|
| + {DART_INT64_C(-0x7FFFFFFFFFFFFFFF), "-0x7FFFFFFFFFFFFFFF"},
|
| + {kMaxInt64, "0x7FFFFFFFFFFFFFFF"},
|
| + {kMinInt64, "-0x8000000000000000"},
|
| + };
|
| +
|
| + const size_t kNumberOfIntTestCases =
|
| + sizeof(kIntTestCases) / sizeof(kIntTestCases[0]);
|
| +
|
| + for (size_t i = 0; i < kNumberOfIntTestCases; ++i) {
|
| + Dart_Handle val = Dart_NewInteger(kIntTestCases[i].i);
|
| + EXPECT_VALID(val);
|
| + const char* chars = NULL;
|
| + Dart_Handle result = Dart_IntegerToHexCString(val, &chars);
|
| + EXPECT_VALID(result);
|
| + EXPECT_STREQ(kIntTestCases[i].s, chars);
|
| + }
|
| +
|
| + if (!FLAG_limit_ints_to_64_bits) {
|
| + const char* kStrTestCases[] = {
|
| + "0x8000000000000000",
|
| + "-0x8000000000000000",
|
| + "0xFFFFFFFFFFFFFFFF",
|
| + "-0xFFFFFFFFFFFFFFFF",
|
| + "0xAABBCCDDEEFF00112233445566778899",
|
| + "-0x1234567890ABCDEF1234567890ABCDEF",
|
| + };
|
| +
|
| + const size_t kNumberOfStrTestCases =
|
| + sizeof(kStrTestCases) / sizeof(kStrTestCases[0]);
|
| +
|
| + for (size_t i = 0; i < kNumberOfStrTestCases; ++i) {
|
| + Dart_Handle val = Dart_NewIntegerFromHexCString(kStrTestCases[i]);
|
| + EXPECT_VALID(val);
|
| + const char* chars = NULL;
|
| + Dart_Handle result = Dart_IntegerToHexCString(val, &chars);
|
| + EXPECT_VALID(result);
|
| + EXPECT_STREQ(kStrTestCases[i], chars);
|
| + }
|
| + }
|
| +}
|
| +
|
| TEST_CASE(IntegerFitsIntoInt64) {
|
| Dart_Handle max = Dart_NewInteger(kMaxInt64);
|
| EXPECT(Dart_IsInteger(max));
|
|
|