Thanks to visit codestin.com
Credit goes to github.com

Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
DisableParallelization
  • Loading branch information
kzrnm committed Mar 18, 2024
commit cfabb121fb0fb64fbcede7e2735525d80a018e79
36 changes: 20 additions & 16 deletions src/libraries/System.Runtime.Numerics/tests/BigInteger/multiply.cs
Original file line number Diff line number Diff line change
Expand Up @@ -33,22 +33,6 @@ public static void RunMultiply_TwoLargeBigIntegers()
}
}

[Fact]
public static void RunMultiply_TwoLargeBigIntegers_Threshold()
{
// Again, with lower threshold
BigIntTools.Utils.RunWithFakeThreshold(BigIntegerCalculator.SquareThreshold, 8, () =>
BigIntTools.Utils.RunWithFakeThreshold(BigIntegerCalculator.MultiplyThreshold, 8, RunMultiply_TwoLargeBigIntegers)
);

// Again, with lower threshold
BigIntTools.Utils.RunWithFakeThreshold(BigIntegerCalculator.SquareThreshold, 8, () =>
BigIntTools.Utils.RunWithFakeThreshold(BigIntegerCalculator.MultiplyThreshold, 8, () =>
BigIntTools.Utils.RunWithFakeThreshold(BigIntegerCalculator.StackAllocThreshold, 8, RunMultiply_TwoLargeBigIntegers)
)
);
}

[Fact]
public static void RunMultiply_TwoSmallBigIntegers()
{
Expand Down Expand Up @@ -293,4 +277,24 @@ private static string Print(byte[] bytes)
return MyBigIntImp.Print(bytes);
}
}

[Collection(nameof(DisableParallelization))]
public class multiplyTestThreshold
{
[Fact]
public static void RunMultiply_TwoLargeBigIntegers()
{
// Again, with lower threshold
BigIntTools.Utils.RunWithFakeThreshold(BigIntegerCalculator.SquareThreshold, 8, () =>
BigIntTools.Utils.RunWithFakeThreshold(BigIntegerCalculator.MultiplyThreshold, 8, multiplyTest.RunMultiply_TwoLargeBigIntegers)
);

// Again, with lower threshold
BigIntTools.Utils.RunWithFakeThreshold(BigIntegerCalculator.SquareThreshold, 8, () =>
BigIntTools.Utils.RunWithFakeThreshold(BigIntegerCalculator.MultiplyThreshold, 8, () =>
BigIntTools.Utils.RunWithFakeThreshold(BigIntegerCalculator.StackAllocThreshold, 8, multiplyTest.RunMultiply_TwoLargeBigIntegers)
)
);
}
}
}
186 changes: 106 additions & 80 deletions src/libraries/System.Runtime.Numerics/tests/BigInteger/parse.cs
Original file line number Diff line number Diff line change
Expand Up @@ -36,57 +36,51 @@ public static IEnumerable<object[]> Cultures
[OuterLoop]
public static void RunParseToStringTests(CultureInfo culture)
{
Test();
BigIntTools.Utils.RunWithFakeThreshold(Number.s_naiveThreshold, 0, Test);

void Test()
{
byte[] tempByteArray1 = new byte[0];
using (new ThreadCultureChange(culture))
byte[] tempByteArray1 = new byte[0];
using (new ThreadCultureChange(culture))
{
//default style
VerifyDefaultParse(s_random);

//single NumberStyles
VerifyNumberStyles(NumberStyles.None, s_random);
VerifyNumberStyles(NumberStyles.AllowLeadingWhite, s_random);
VerifyNumberStyles(NumberStyles.AllowTrailingWhite, s_random);
VerifyNumberStyles(NumberStyles.AllowLeadingSign, s_random);
VerifyNumberStyles(NumberStyles.AllowTrailingSign, s_random);
VerifyNumberStyles(NumberStyles.AllowParentheses, s_random);
VerifyNumberStyles(NumberStyles.AllowDecimalPoint, s_random);
VerifyNumberStyles(NumberStyles.AllowThousands, s_random);
VerifyNumberStyles(NumberStyles.AllowExponent, s_random);
VerifyNumberStyles(NumberStyles.AllowCurrencySymbol, s_random);
VerifyNumberStyles(NumberStyles.AllowHexSpecifier, s_random);
VerifyBinaryNumberStyles(NumberStyles.AllowBinarySpecifier, s_random);

//composite NumberStyles
VerifyNumberStyles(NumberStyles.Integer, s_random);
VerifyNumberStyles(NumberStyles.HexNumber, s_random);
VerifyBinaryNumberStyles(NumberStyles.BinaryNumber, s_random);
VerifyNumberStyles(NumberStyles.Number, s_random);
VerifyNumberStyles(NumberStyles.Float, s_random);
VerifyNumberStyles(NumberStyles.Currency, s_random);
VerifyNumberStyles(NumberStyles.Any, s_random);

//invalid number style
// ******InvalidNumberStyles
NumberStyles invalid = (NumberStyles)0x7c00;
AssertExtensions.Throws<ArgumentException>("style", () =>
{
//default style
VerifyDefaultParse(s_random);

//single NumberStyles
VerifyNumberStyles(NumberStyles.None, s_random);
VerifyNumberStyles(NumberStyles.AllowLeadingWhite, s_random);
VerifyNumberStyles(NumberStyles.AllowTrailingWhite, s_random);
VerifyNumberStyles(NumberStyles.AllowLeadingSign, s_random);
VerifyNumberStyles(NumberStyles.AllowTrailingSign, s_random);
VerifyNumberStyles(NumberStyles.AllowParentheses, s_random);
VerifyNumberStyles(NumberStyles.AllowDecimalPoint, s_random);
VerifyNumberStyles(NumberStyles.AllowThousands, s_random);
VerifyNumberStyles(NumberStyles.AllowExponent, s_random);
VerifyNumberStyles(NumberStyles.AllowCurrencySymbol, s_random);
VerifyNumberStyles(NumberStyles.AllowHexSpecifier, s_random);
VerifyBinaryNumberStyles(NumberStyles.AllowBinarySpecifier, s_random);

//composite NumberStyles
VerifyNumberStyles(NumberStyles.Integer, s_random);
VerifyNumberStyles(NumberStyles.HexNumber, s_random);
VerifyBinaryNumberStyles(NumberStyles.BinaryNumber, s_random);
VerifyNumberStyles(NumberStyles.Number, s_random);
VerifyNumberStyles(NumberStyles.Float, s_random);
VerifyNumberStyles(NumberStyles.Currency, s_random);
VerifyNumberStyles(NumberStyles.Any, s_random);

//invalid number style
// ******InvalidNumberStyles
NumberStyles invalid = (NumberStyles)0x7c00;
AssertExtensions.Throws<ArgumentException>("style", () =>
{
BigInteger.Parse("1", invalid).ToString("d");
});
AssertExtensions.Throws<ArgumentException>("style", () =>
{
BigInteger junk;
BigInteger.TryParse("1", invalid, null, out junk);
Assert.Equal("1", junk.ToString("d"));
});
BigInteger.Parse("1", invalid).ToString("d");
});
AssertExtensions.Throws<ArgumentException>("style", () =>
{
BigInteger junk;
BigInteger.TryParse("1", invalid, null, out junk);
Assert.Equal("1", junk.ToString("d"));
});

//FormatProvider tests
RunFormatProviderParseStrings();
}
//FormatProvider tests
RunFormatProviderParseStrings();
}
}

Expand All @@ -99,36 +93,23 @@ void Test()
[InlineData("1\03456789", 0, 1, "1")]
[InlineData("1\03456789", 0, 2, "1")]
[InlineData("123456789\0", 0, 10, "123456789")]
public void Parse_Subspan_Success(string input, int offset, int length, string expected)
public static void Parse_Subspan_Success(string input, int offset, int length, string expected)
{
Test();

BigIntTools.Utils.RunWithFakeThreshold(Number.s_naiveThreshold, 0, Test);

void Test()
{
Eval(BigInteger.Parse(input.AsSpan(offset, length)), expected);
Assert.True(BigInteger.TryParse(input.AsSpan(offset, length), out BigInteger test));
Eval(test, expected);
}
Eval(BigInteger.Parse(input.AsSpan(offset, length)), expected);
Assert.True(BigInteger.TryParse(input.AsSpan(offset, length), out BigInteger test));
Eval(test, expected);
}

[Fact]
public void Parse_EmptySubspan_Fails()
public static void Parse_EmptySubspan_Fails()
{
Test();
BigIntTools.Utils.RunWithFakeThreshold(Number.s_naiveThreshold, 0, Test);

void Test()
{
BigInteger result;
BigInteger result;

Assert.False(BigInteger.TryParse("12345".AsSpan(0, 0), out result));
Assert.Equal(0, result);
Assert.False(BigInteger.TryParse("12345".AsSpan(0, 0), out result));
Assert.Equal(0, result);

Assert.False(BigInteger.TryParse([], out result));
Assert.Equal(0, result);
}
Assert.False(BigInteger.TryParse([], out result));
Assert.Equal(0, result);
}

[Fact]
Expand Down Expand Up @@ -210,16 +191,10 @@ public static IEnumerable<object[]> RegressionIssueRuntime94610_TestData()

[Theory]
[MemberData(nameof(RegressionIssueRuntime94610_TestData))]
public void RegressionIssueRuntime94610(string text)
public static void RegressionIssueRuntime94610(string text)
{
// Regression test for: https://github.com/dotnet/runtime/issues/94610
Test();
BigIntTools.Utils.RunWithFakeThreshold(Number.s_naiveThreshold, 0, Test);

void Test()
{
VerifyParseToString(text, NumberStyles.Integer, true);
}
VerifyParseToString(text, NumberStyles.Integer, true);
}

private static void RunFormatProviderParseStrings()
Expand Down Expand Up @@ -1169,4 +1144,55 @@ private static void Eval(BigInteger x, string expected)
Assert.Equal(expected, actual);
}
}

[Collection(nameof(DisableParallelization))]
public class parseTestThreshold
{
public static IEnumerable<object[]> Cultures => parseTest.Cultures;
[Theory]
[MemberData(nameof(Cultures))]
[OuterLoop]
public static void RunParseToStringTests(CultureInfo culture)
{
BigIntTools.Utils.RunWithFakeThreshold(Number.s_naiveThreshold, 0, () =>
{
parseTest.RunParseToStringTests(culture);
});
}

[Theory]
[InlineData("123456789", 0, 9, "123456789")]
[InlineData("123456789", 0, 1, "1")]
[InlineData("123456789", 1, 3, "234")]
[InlineData("123456789", 8, 1, "9")]
[InlineData("123456789abc", 8, 1, "9")]
[InlineData("1\03456789", 0, 1, "1")]
[InlineData("1\03456789", 0, 2, "1")]
[InlineData("123456789\0", 0, 10, "123456789")]
public static void Parse_Subspan_Success(string input, int offset, int length, string expected)
{
BigIntTools.Utils.RunWithFakeThreshold(Number.s_naiveThreshold, 0, () =>
{
parseTest.Parse_Subspan_Success(input, offset, length, expected);
});
}

[Fact]
public static void Parse_EmptySubspan_Fails()
{
BigIntTools.Utils.RunWithFakeThreshold(Number.s_naiveThreshold, 0, parseTest.Parse_EmptySubspan_Fails);
}

public static IEnumerable<object[]> RegressionIssueRuntime94610_TestData() => parseTest.RegressionIssueRuntime94610_TestData();

[Theory]
[MemberData(nameof(RegressionIssueRuntime94610_TestData))]
public static void RegressionIssueRuntime94610(string text)
{
BigIntTools.Utils.RunWithFakeThreshold(Number.s_naiveThreshold, 0, () =>
{
parseTest.RegressionIssueRuntime94610(text);
});
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,7 @@
<Compile Include="ComplexTests.cs" />
</ItemGroup>
<ItemGroup>
<Compile Include="$(CommonTestPath)TestUtilities\System\DisableParallelization.cs" Link="Common\TestUtilities\System\DisableParallelization.cs" />
<Compile Include="$(CommonTestPath)System\GenericMathHelpers.cs" Link="Common\System\GenericMathHelpers.cs" />
<Compile Include="$(CommonTestPath)System\Diagnostics\DebuggerAttributes.cs" Link="Common\System\Diagnostics\DebuggerAttributes.cs" />
<Compile Include="BigIntegerTests.GenericMath.cs" />
Expand Down