Files
valkey/src/unit/test_valkey_strtod.cpp
T
Daniel Lemire 6414720504 Replace fast_float (C++) with ffc.h (#3329)
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>
2026-03-11 12:26:44 +01:00

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);
}