summaryrefslogtreecommitdiff
path: root/sl4n/rapidjson/test/unittest/itoatest.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'sl4n/rapidjson/test/unittest/itoatest.cpp')
-rw-r--r--sl4n/rapidjson/test/unittest/itoatest.cpp158
1 files changed, 0 insertions, 158 deletions
diff --git a/sl4n/rapidjson/test/unittest/itoatest.cpp b/sl4n/rapidjson/test/unittest/itoatest.cpp
deleted file mode 100644
index 5ceb99f..0000000
--- a/sl4n/rapidjson/test/unittest/itoatest.cpp
+++ /dev/null
@@ -1,158 +0,0 @@
-// Tencent is pleased to support the open source community by making RapidJSON available.
-//
-// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved.
-//
-// Licensed under the MIT License (the "License"); you may not use this file except
-// in compliance with the License. You may obtain a copy of the License at
-//
-// http://opensource.org/licenses/MIT
-//
-// Unless required by applicable law or agreed to in writing, software distributed
-// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
-// CONDITIONS OF ANY KIND, either express or implied. See the License for the
-// specific language governing permissions and limitations under the License.
-
-#include "unittest.h"
-#include "rapidjson/internal/itoa.h"
-
-#ifdef __GNUC__
-RAPIDJSON_DIAG_PUSH
-RAPIDJSON_DIAG_OFF(type-limits)
-#endif
-
-using namespace rapidjson::internal;
-
-template <typename T>
-struct Traits {
-};
-
-template <>
-struct Traits<uint32_t> {
- enum { kBufferSize = 11 };
- enum { kMaxDigit = 10 };
- static uint32_t Negate(uint32_t x) { return x; };
-};
-
-template <>
-struct Traits<int32_t> {
- enum { kBufferSize = 12 };
- enum { kMaxDigit = 10 };
- static int32_t Negate(int32_t x) { return -x; };
-};
-
-template <>
-struct Traits<uint64_t> {
- enum { kBufferSize = 21 };
- enum { kMaxDigit = 20 };
- static uint64_t Negate(uint64_t x) { return x; };
-};
-
-template <>
-struct Traits<int64_t> {
- enum { kBufferSize = 22 };
- enum { kMaxDigit = 20 };
- static int64_t Negate(int64_t x) { return -x; };
-};
-
-template <typename T>
-static void VerifyValue(T value, void(*f)(T, char*), char* (*g)(T, char*)) {
- char buffer1[Traits<T>::kBufferSize];
- char buffer2[Traits<T>::kBufferSize];
-
- f(value, buffer1);
- *g(value, buffer2) = '\0';
-
-
- EXPECT_STREQ(buffer1, buffer2);
-}
-
-template <typename T>
-static void Verify(void(*f)(T, char*), char* (*g)(T, char*)) {
- // Boundary cases
- VerifyValue<T>(0, f, g);
- VerifyValue<T>(std::numeric_limits<T>::min(), f, g);
- VerifyValue<T>(std::numeric_limits<T>::max(), f, g);
-
- // 2^n - 1, 2^n, 10^n - 1, 10^n until overflow
- for (uint32_t power = 2; power <= 10; power += 8) {
- T i = 1, last;
- do {
- VerifyValue<T>(i - 1, f, g);
- VerifyValue<T>(i, f, g);
- if (std::numeric_limits<T>::min() < 0) {
- VerifyValue<T>(Traits<T>::Negate(i), f, g);
- VerifyValue<T>(Traits<T>::Negate(i + 1), f, g);
- }
- last = i;
- i *= power;
- } while (last < i);
- }
-}
-
-static void u32toa_naive(uint32_t value, char* buffer) {
- char temp[10];
- char *p = temp;
- do {
- *p++ = char(value % 10) + '0';
- value /= 10;
- } while (value > 0);
-
- do {
- *buffer++ = *--p;
- } while (p != temp);
-
- *buffer = '\0';
-}
-
-static void i32toa_naive(int32_t value, char* buffer) {
- uint32_t u = static_cast<uint32_t>(value);
- if (value < 0) {
- *buffer++ = '-';
- u = ~u + 1;
- }
- u32toa_naive(u, buffer);
-}
-
-static void u64toa_naive(uint64_t value, char* buffer) {
- char temp[20];
- char *p = temp;
- do {
- *p++ = char(value % 10) + '0';
- value /= 10;
- } while (value > 0);
-
- do {
- *buffer++ = *--p;
- } while (p != temp);
-
- *buffer = '\0';
-}
-
-static void i64toa_naive(int64_t value, char* buffer) {
- uint64_t u = static_cast<uint64_t>(value);
- if (value < 0) {
- *buffer++ = '-';
- u = ~u + 1;
- }
- u64toa_naive(u, buffer);
-}
-
-TEST(itoa, u32toa) {
- Verify(u32toa_naive, u32toa);
-}
-
-TEST(itoa, i32toa) {
- Verify(i32toa_naive, i32toa);
-}
-
-TEST(itoa, u64toa) {
- Verify(u64toa_naive, u64toa);
-}
-
-TEST(itoa, i64toa) {
- Verify(i64toa_naive, i64toa);
-}
-
-#ifdef __GNUC__
-RAPIDJSON_DIAG_POP
-#endif