mirror of
https://github.com/RGBCube/serenity
synced 2025-07-27 02:17:35 +00:00
LibCrypto: Parse negative input correctly in BigFraction::from_string()
Previously, when calling `BigFraction::from_string()`, the fractional part of the number was always treated as positive. This led to an incorrect result if the input string was negative.
This commit is contained in:
parent
e0fd5beb36
commit
d545fb2b60
3 changed files with 32 additions and 0 deletions
28
Tests/LibCrypto/TestBigFraction.cpp
Normal file
28
Tests/LibCrypto/TestBigFraction.cpp
Normal file
|
@ -0,0 +1,28 @@
|
|||
/*
|
||||
* Copyright (c) 2024, Tim Ledbetter <timledbetter@gmail.com>
|
||||
*
|
||||
* SPDX-License-Identifier: BSD-2-Clause
|
||||
*/
|
||||
|
||||
#include <LibCrypto/BigFraction/BigFraction.h>
|
||||
#include <LibTest/TestCase.h>
|
||||
|
||||
TEST_CASE(roundtrip_from_string)
|
||||
{
|
||||
Array valid_number_strings {
|
||||
"0.1"sv,
|
||||
"-0.1"sv,
|
||||
"0.9"sv,
|
||||
"-0.9"sv,
|
||||
"1.2"sv,
|
||||
"-1.2"sv,
|
||||
"610888968122787804679.305596150292503043363"sv,
|
||||
"-610888968122787804679.305596150292503043363"sv
|
||||
};
|
||||
|
||||
for (auto valid_number_string : valid_number_strings) {
|
||||
auto result = TRY_OR_FAIL(Crypto::BigFraction::from_string(valid_number_string));
|
||||
auto precision = valid_number_string.length() - valid_number_string.find('.').value();
|
||||
EXPECT_EQ(result.to_byte_string(precision), valid_number_string);
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue