| 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 5b50d6eb731862bd9805aed1ac272462e7b3894f..946f53ffa709d4bae16101d9200405f24ed61cc9 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)); | 
|  |