From 09d00bd865d9e439dbd527cfdf06b01b0db357fe Mon Sep 17 00:00:00 2001 From: kzrnm Date: Tue, 6 Feb 2024 03:57:04 +0900 Subject: [PATCH 1/3] Fix TryParseBigIntegerHexOrBinaryNumberStyle --- .../System.Runtime.Numerics/src/System/Number.BigInteger.cs | 4 ++-- .../System.Runtime.Numerics/tests/BigInteger/parse.cs | 1 + 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/libraries/System.Runtime.Numerics/src/System/Number.BigInteger.cs b/src/libraries/System.Runtime.Numerics/src/System/Number.BigInteger.cs index a5fc0e6f1f1d53..adf24eb2d30b46 100644 --- a/src/libraries/System.Runtime.Numerics/src/System/Number.BigInteger.cs +++ b/src/libraries/System.Runtime.Numerics/src/System/Number.BigInteger.cs @@ -484,8 +484,8 @@ internal static ParsingStatus TryParseBigIntegerHexOrBinaryNumberStyle Date: Tue, 6 Feb 2024 04:05:01 +0900 Subject: [PATCH 2/3] Fix typo --- .../System.Runtime.Numerics/src/System/Number.BigInteger.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libraries/System.Runtime.Numerics/src/System/Number.BigInteger.cs b/src/libraries/System.Runtime.Numerics/src/System/Number.BigInteger.cs index adf24eb2d30b46..01db0ef3777e87 100644 --- a/src/libraries/System.Runtime.Numerics/src/System/Number.BigInteger.cs +++ b/src/libraries/System.Runtime.Numerics/src/System/Number.BigInteger.cs @@ -445,7 +445,7 @@ internal static ParsingStatus TryParseBigIntegerHexOrBinaryNumberStyle Date: Tue, 6 Feb 2024 04:17:35 +0900 Subject: [PATCH 3/3] Add hex test --- .../tests/BigInteger/parse.cs | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/libraries/System.Runtime.Numerics/tests/BigInteger/parse.cs b/src/libraries/System.Runtime.Numerics/tests/BigInteger/parse.cs index 86a6f0bc02ddc5..9852ea93bf1aa4 100644 --- a/src/libraries/System.Runtime.Numerics/tests/BigInteger/parse.cs +++ b/src/libraries/System.Runtime.Numerics/tests/BigInteger/parse.cs @@ -143,6 +143,18 @@ public void Parse_Hex32Bits() Assert.True(BigInteger.TryParse("080000001", NumberStyles.HexNumber, null, out result)); Assert.Equal(0x80000001u, result); + Assert.True(BigInteger.TryParse("F0000001", NumberStyles.HexNumber, null, out result)); + Assert.Equal(-0xFFFFFFFL, result); + + Assert.True(BigInteger.TryParse("0F0000001", NumberStyles.HexNumber, null, out result)); + Assert.Equal(0xF0000001u, result); + + Assert.True(BigInteger.TryParse("F00000001", NumberStyles.HexNumber, null, out result)); + Assert.Equal(-0xFFFFFFFFL, result); + + Assert.True(BigInteger.TryParse("0F00000001", NumberStyles.HexNumber, null, out result)); + Assert.Equal(0xF00000001u, result); + // Regression test for: https://github.com/dotnet/runtime/issues/74758 Assert.True(BigInteger.TryParse("FFFFFFFFE", NumberStyles.HexNumber, null, out result)); Assert.Equal(new BigInteger(-2), result);