| Index: third_party/WebKit/Source/wtf/text/StringToNumberTest.cpp
|
| diff --git a/third_party/WebKit/Source/wtf/text/StringToNumberTest.cpp b/third_party/WebKit/Source/wtf/text/StringToNumberTest.cpp
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..429147c570c7ff07c4a2604c830e9e2a2e4fc8d5
|
| --- /dev/null
|
| +++ b/third_party/WebKit/Source/wtf/text/StringToNumberTest.cpp
|
| @@ -0,0 +1,126 @@
|
| +// Copyright 2016 The Chromium 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 "wtf/text/StringToNumber.h"
|
| +
|
| +#include "testing/gtest/include/gtest/gtest.h"
|
| +#include <cstring>
|
| +
|
| +namespace WTF {
|
| +
|
| +TEST(StringToNumberTest, TestCharactersToIntStrict) {
|
| +#define EXPECT_VALID(string, expectedValue, base) \
|
| + do { \
|
| + bool ok; \
|
| + int value = charactersToIntStrict(reinterpret_cast<const LChar*>(string), \
|
| + std::strlen(string), &ok, base); \
|
| + EXPECT_TRUE(ok); \
|
| + EXPECT_EQ(value, expectedValue); \
|
| + } while (false)
|
| +
|
| +#define EXPECT_INVALID(string, base) \
|
| + do { \
|
| + bool ok; \
|
| + charactersToIntStrict(reinterpret_cast<const LChar*>(string), \
|
| + std::strlen(string), &ok, base); \
|
| + EXPECT_FALSE(ok); \
|
| + } while (false)
|
| +
|
| +#define EXPECT_VALID_DECIMAL(string, expectedValue) \
|
| + EXPECT_VALID(string, expectedValue, 10)
|
| +#define EXPECT_INVALID_DECIMAL(string) EXPECT_INVALID(string, 10)
|
| +#define EXPECT_VALID_HEXADECIMAL(string, expectedValue) \
|
| + EXPECT_VALID(string, expectedValue, 16)
|
| +#define EXPECT_INVALID_HEXADECIMAL(string) EXPECT_INVALID(string, 16)
|
| +
|
| + EXPECT_VALID_DECIMAL("1", 1);
|
| + EXPECT_VALID_DECIMAL("2", 2);
|
| + EXPECT_VALID_DECIMAL("9", 9);
|
| + EXPECT_VALID_DECIMAL("10", 10);
|
| + EXPECT_VALID_DECIMAL("0", 0);
|
| + EXPECT_VALID_DECIMAL("-0", 0);
|
| + EXPECT_VALID_DECIMAL("-1", -1);
|
| + EXPECT_VALID_DECIMAL("-2", -2);
|
| + EXPECT_VALID_DECIMAL("-9", -9);
|
| + EXPECT_VALID_DECIMAL("-10", -10);
|
| + EXPECT_VALID_DECIMAL("+0", 0);
|
| + EXPECT_VALID_DECIMAL("+1", 1);
|
| + EXPECT_VALID_DECIMAL("+2", 2);
|
| + EXPECT_VALID_DECIMAL("+9", 9);
|
| + EXPECT_VALID_DECIMAL("+10", 10);
|
| + EXPECT_VALID_DECIMAL("00", 0);
|
| + EXPECT_VALID_DECIMAL("+00", 0);
|
| + EXPECT_VALID_DECIMAL("-00", 0);
|
| + EXPECT_VALID_DECIMAL("01", 1);
|
| + EXPECT_VALID_DECIMAL("-01", -1);
|
| + EXPECT_VALID_DECIMAL("00000000000000000000", 0);
|
| + EXPECT_INVALID_DECIMAL("a");
|
| + EXPECT_INVALID_DECIMAL("1a");
|
| + EXPECT_INVALID_DECIMAL("a1");
|
| + EXPECT_INVALID_DECIMAL("-a");
|
| + EXPECT_INVALID_DECIMAL("");
|
| + EXPECT_INVALID_DECIMAL("-");
|
| + EXPECT_INVALID_DECIMAL("--1");
|
| + EXPECT_INVALID_DECIMAL("++1");
|
| + EXPECT_INVALID_DECIMAL("+-1");
|
| + EXPECT_INVALID_DECIMAL("-+1");
|
| + EXPECT_INVALID_DECIMAL("0-");
|
| + EXPECT_INVALID_DECIMAL("0+");
|
| +
|
| + EXPECT_VALID_DECIMAL("2147483647", 2147483647);
|
| + EXPECT_VALID_DECIMAL("02147483647", 2147483647);
|
| + EXPECT_INVALID_DECIMAL("2147483648");
|
| + EXPECT_INVALID_DECIMAL("2147483649");
|
| + EXPECT_INVALID_DECIMAL("2147483650");
|
| + EXPECT_INVALID_DECIMAL("2147483700");
|
| + EXPECT_INVALID_DECIMAL("2147484000");
|
| + EXPECT_INVALID_DECIMAL("2200000000");
|
| + EXPECT_INVALID_DECIMAL("3000000000");
|
| + EXPECT_INVALID_DECIMAL("10000000000");
|
| + EXPECT_VALID_DECIMAL("-2147483647", -2147483647);
|
| + EXPECT_VALID_DECIMAL("-2147483648", -2147483647 - 1);
|
| + EXPECT_INVALID_DECIMAL("-2147483649");
|
| + EXPECT_INVALID_DECIMAL("-2147483650");
|
| + EXPECT_INVALID_DECIMAL("-2147483700");
|
| + EXPECT_INVALID_DECIMAL("-2147484000");
|
| + EXPECT_INVALID_DECIMAL("-2200000000");
|
| + EXPECT_INVALID_DECIMAL("-3000000000");
|
| + EXPECT_INVALID_DECIMAL("-10000000000");
|
| +
|
| + EXPECT_VALID_HEXADECIMAL("1", 1);
|
| + EXPECT_VALID_HEXADECIMAL("a", 0xA);
|
| + EXPECT_VALID_HEXADECIMAL("A", 0xA);
|
| + EXPECT_VALID_HEXADECIMAL("+a", 0xA);
|
| + EXPECT_VALID_HEXADECIMAL("+A", 0xA);
|
| + EXPECT_VALID_HEXADECIMAL("-a", -0xA);
|
| + EXPECT_VALID_HEXADECIMAL("-A", -0xA);
|
| +
|
| + EXPECT_VALID_HEXADECIMAL("7fffffff", 0x7FFFFFFF);
|
| + EXPECT_INVALID_HEXADECIMAL("80000000");
|
| + EXPECT_INVALID_HEXADECIMAL("8000000a");
|
| + EXPECT_INVALID_HEXADECIMAL("8000000f");
|
| + EXPECT_INVALID_HEXADECIMAL("90000000");
|
| + EXPECT_INVALID_HEXADECIMAL("fffffff0");
|
| + EXPECT_INVALID_HEXADECIMAL("ffffffff");
|
| + EXPECT_INVALID_HEXADECIMAL("100000000");
|
| + EXPECT_INVALID_HEXADECIMAL("7fffffff0");
|
| + EXPECT_VALID_HEXADECIMAL("-7fffffff", -0x7FFFFFFF);
|
| + EXPECT_VALID_HEXADECIMAL("-80000000", -0x7FFFFFFF - 1);
|
| + EXPECT_INVALID_HEXADECIMAL("-80000001");
|
| + EXPECT_INVALID_HEXADECIMAL("-8000000a");
|
| + EXPECT_INVALID_HEXADECIMAL("-8000000f");
|
| + EXPECT_INVALID_HEXADECIMAL("-80000010");
|
| + EXPECT_INVALID_HEXADECIMAL("-90000000");
|
| + EXPECT_INVALID_HEXADECIMAL("-f0000000");
|
| + EXPECT_INVALID_HEXADECIMAL("-fffffff0");
|
| + EXPECT_INVALID_HEXADECIMAL("-ffffffff");
|
| +
|
| +#undef EXPECT_VALID_DECIMAL
|
| +#undef EXPECT_INVALID_DECIMAL
|
| +#undef EXPECT_VALID_HEXADECIMAL
|
| +#undef EXPECT_INVALID_HEXADECIMAL
|
| +#undef EXPECT_VALID
|
| +#undef EXPECT_INVALID
|
| +}
|
| +}
|
|
|