mirror of
https://github.com/valkey-io/valkey.git
synced 2026-05-06 05:26:42 -04:00
6414720504
There is now a port of fast_float in C. So instead of having an optional fast_float dependency, we can just use ffc instead, unconditionally. https://github.com/kolemannix/ffc.h It is a high quality port. The performance should be the same or improved. Note : I am the maintainer and main author of fast_float. --------- Signed-off-by: Daniel Lemire <daniel@lemire.me>
55 lines
1.2 KiB
C++
55 lines
1.2 KiB
C++
/*
|
|
* Copyright (c) Valkey Contributors
|
|
* All rights reserved.
|
|
* SPDX-License-Identifier: BSD-3-Clause
|
|
*/
|
|
|
|
#include "generated_wrappers.hpp"
|
|
|
|
#include <cerrno>
|
|
#include <math.h>
|
|
|
|
extern "C" {
|
|
#include "valkey_strtod.h"
|
|
}
|
|
|
|
class ValkeyStrtodTest : public ::testing::Test {};
|
|
|
|
TEST_F(ValkeyStrtodTest, TestValkeyStrtod) {
|
|
errno = 0;
|
|
double value = valkey_strtod("231.2341234", NULL);
|
|
ASSERT_DOUBLE_EQ(value, 231.2341234);
|
|
ASSERT_EQ(errno, 0);
|
|
|
|
value = valkey_strtod("+inf", NULL);
|
|
ASSERT_TRUE(isinf(value));
|
|
ASSERT_EQ(errno, 0);
|
|
|
|
value = valkey_strtod("-inf", NULL);
|
|
ASSERT_TRUE(isinf(value));
|
|
ASSERT_EQ(errno, 0);
|
|
|
|
value = valkey_strtod("inf", NULL);
|
|
ASSERT_TRUE(isinf(value));
|
|
ASSERT_EQ(errno, 0);
|
|
}
|
|
|
|
TEST_F(ValkeyStrtodTest, TestValkeyStrtodN) {
|
|
errno = 0;
|
|
double value = valkey_strtod_n("231.2341234", 11, NULL);
|
|
ASSERT_DOUBLE_EQ(value, 231.2341234);
|
|
ASSERT_EQ(errno, 0);
|
|
|
|
value = valkey_strtod_n("+inf", 4, NULL);
|
|
ASSERT_TRUE(isinf(value));
|
|
ASSERT_EQ(errno, 0);
|
|
|
|
value = valkey_strtod_n("-inf", 4, NULL);
|
|
ASSERT_TRUE(isinf(value));
|
|
ASSERT_EQ(errno, 0);
|
|
|
|
value = valkey_strtod_n("inf", 3, NULL);
|
|
ASSERT_TRUE(isinf(value));
|
|
ASSERT_EQ(errno, 0);
|
|
}
|