diff options
author | Michaël Zasso <targos@protonmail.com> | 2017-03-21 10:16:54 +0100 |
---|---|---|
committer | Michaël Zasso <targos@protonmail.com> | 2017-03-25 09:44:10 +0100 |
commit | c459d8ea5d402c702948c860d9497b2230ff7e8a (patch) | |
tree | 56c282fc4d40e5cb613b47cf7be3ea0526ed5b6f /deps/v8/test/cctest/test-conversions.cc | |
parent | e0bc5a7361b1d29c3ed034155fd779ce6f44fb13 (diff) | |
download | node-new-c459d8ea5d402c702948c860d9497b2230ff7e8a.tar.gz |
deps: update V8 to 5.7.492.69
PR-URL: https://github.com/nodejs/node/pull/11752
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Reviewed-By: Franziska Hinkelmann <franziska.hinkelmann@gmail.com>
Diffstat (limited to 'deps/v8/test/cctest/test-conversions.cc')
-rw-r--r-- | deps/v8/test/cctest/test-conversions.cc | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/deps/v8/test/cctest/test-conversions.cc b/deps/v8/test/cctest/test-conversions.cc index 2fee58a46d..65cd96e0df 100644 --- a/deps/v8/test/cctest/test-conversions.cc +++ b/deps/v8/test/cctest/test-conversions.cc @@ -444,3 +444,61 @@ TEST(NoHandlesForTryNumberToSize) { } } } + +TEST(TryNumberToSizeWithMaxSizePlusOne) { + i::Isolate* isolate = CcTest::i_isolate(); + { + HandleScope scope(isolate); + // 1 << 64, larger than the limit of size_t. + double value = 18446744073709551616.0; + size_t result = 0; + Handle<HeapNumber> heap_number = isolate->factory()->NewHeapNumber(value); + CHECK(!TryNumberToSize(*heap_number, &result)); + } +} + +TEST(PositiveNumberToUint32) { + i::Isolate* isolate = CcTest::i_isolate(); + i::Factory* factory = isolate->factory(); + uint32_t max = std::numeric_limits<uint32_t>::max(); + HandleScope scope(isolate); + // Test Smi conversions. + Handle<Object> number = handle(Smi::FromInt(0), isolate); + CHECK_EQ(PositiveNumberToUint32(*number), 0u); + number = handle(Smi::FromInt(-1), isolate); + CHECK_EQ(PositiveNumberToUint32(*number), 0u); + number = handle(Smi::FromInt(-1), isolate); + CHECK_EQ(PositiveNumberToUint32(*number), 0u); + number = handle(Smi::FromInt(Smi::kMinValue), isolate); + CHECK_EQ(PositiveNumberToUint32(*number), 0u); + number = handle(Smi::FromInt(Smi::kMaxValue), isolate); + CHECK_EQ(PositiveNumberToUint32(*number), + static_cast<uint32_t>(Smi::kMaxValue)); + // Test Double conversions. + number = factory->NewHeapNumber(0.0); + CHECK_EQ(PositiveNumberToUint32(*number), 0u); + number = factory->NewHeapNumber(0.999); + CHECK_EQ(PositiveNumberToUint32(*number), 0u); + number = factory->NewHeapNumber(1.999); + CHECK_EQ(PositiveNumberToUint32(*number), 1u); + number = factory->NewHeapNumber(-12.0); + CHECK_EQ(PositiveNumberToUint32(*number), 0u); + number = factory->NewHeapNumber(12000.0); + CHECK_EQ(PositiveNumberToUint32(*number), 12000u); + number = factory->NewHeapNumber(static_cast<double>(Smi::kMaxValue) + 1); + CHECK_EQ(PositiveNumberToUint32(*number), + static_cast<uint32_t>(Smi::kMaxValue) + 1); + number = factory->NewHeapNumber(max); + CHECK_EQ(PositiveNumberToUint32(*number), max); + number = factory->NewHeapNumber(static_cast<double>(max) * 1000); + CHECK_EQ(PositiveNumberToUint32(*number), max); + number = factory->NewHeapNumber(std::numeric_limits<double>::max()); + CHECK_EQ(PositiveNumberToUint32(*number), max); + number = factory->NewHeapNumber(std::numeric_limits<double>::infinity()); + CHECK_EQ(PositiveNumberToUint32(*number), max); + number = + factory->NewHeapNumber(-1.0 * std::numeric_limits<double>::infinity()); + CHECK_EQ(PositiveNumberToUint32(*number), 0u); + number = factory->NewHeapNumber(std::nan("")); + CHECK_EQ(PositiveNumberToUint32(*number), 0u); +} |