aboutsummaryrefslogtreecommitdiff
path: root/deps/v8/test/unittests/numbers/conversions-unittest.cc
diff options
context:
space:
mode:
Diffstat (limited to 'deps/v8/test/unittests/numbers/conversions-unittest.cc')
-rw-r--r--deps/v8/test/unittests/numbers/conversions-unittest.cc76
1 files changed, 76 insertions, 0 deletions
diff --git a/deps/v8/test/unittests/numbers/conversions-unittest.cc b/deps/v8/test/unittests/numbers/conversions-unittest.cc
new file mode 100644
index 0000000000..e0c1c55aae
--- /dev/null
+++ b/deps/v8/test/unittests/numbers/conversions-unittest.cc
@@ -0,0 +1,76 @@
+// Copyright 2016 the V8 project authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "src/init/v8.h"
+
+#include "src/numbers/conversions.h"
+#include "test/unittests/test-utils.h"
+
+namespace v8 {
+namespace internal {
+namespace interpreter {
+
+class ConversionsTest : public ::testing::Test {
+ public:
+ ConversionsTest() = default;
+ ~ConversionsTest() override = default;
+
+ SourcePosition toPos(int offset) {
+ return SourcePosition(offset, offset % 10 - 1);
+ }
+};
+
+// Some random offsets, mostly at 'suspicious' bit boundaries.
+
+struct IntStringPair {
+ int integer;
+ std::string string;
+};
+
+static IntStringPair int_pairs[] = {{0, "0"},
+ {101, "101"},
+ {-1, "-1"},
+ {1024, "1024"},
+ {200000, "200000"},
+ {-1024, "-1024"},
+ {-200000, "-200000"},
+ {kMinInt, "-2147483648"},
+ {kMaxInt, "2147483647"}};
+
+TEST_F(ConversionsTest, IntToCString) {
+ std::unique_ptr<char[]> buf(new char[4096]);
+
+ for (size_t i = 0; i < arraysize(int_pairs); i++) {
+ ASSERT_STREQ(IntToCString(int_pairs[i].integer, {buf.get(), 4096}),
+ int_pairs[i].string.c_str());
+ }
+}
+
+struct DoubleStringPair {
+ double number;
+ std::string string;
+};
+
+static DoubleStringPair double_pairs[] = {
+ {0.0, "0"},
+ {kMinInt, "-2147483648"},
+ {kMaxInt, "2147483647"},
+ // ES section 7.1.12.1 #sec-tostring-applied-to-the-number-type:
+ // -0.0 is stringified to "0".
+ {-0.0, "0"},
+ {1.1, "1.1"},
+ {0.1, "0.1"}};
+
+TEST_F(ConversionsTest, DoubleToCString) {
+ std::unique_ptr<char[]> buf(new char[4096]);
+
+ for (size_t i = 0; i < arraysize(double_pairs); i++) {
+ ASSERT_STREQ(DoubleToCString(double_pairs[i].number, {buf.get(), 4096}),
+ double_pairs[i].string.c_str());
+ }
+}
+
+} // namespace interpreter
+} // namespace internal
+} // namespace v8