Skip to content
This repository was archived by the owner on Jan 23, 2023. It is now read-only.

Commit 8cd6cf7

Browse files
tannergoodingstephentoub
authored andcommitted
Adding some math tests to ensure additional values outside the input domain are tested. (#26955)
1 parent c64171e commit 8cd6cf7

File tree

3 files changed

+73
-1
lines changed

3 files changed

+73
-1
lines changed

src/System.Runtime.Extensions/tests/System/Math.cs

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -470,10 +470,13 @@ public static void Abs_Single(float value, float expectedResult, float allowedVa
470470

471471
[Theory]
472472
[InlineData( double.NegativeInfinity, double.NaN, 0.0)]
473+
[InlineData(-3.1415926535897932, double.NaN, 0.0)] // value: -(pi)
474+
[InlineData(-2.7182818284590452, double.NaN, 0.0)] // value: -(e)
475+
[InlineData(-1.4142135623730950, double.NaN, 0.0)] // value: -(sqrt(2))
473476
[InlineData(-1.0, 3.1415926535897932, CrossPlatformMachineEpsilon * 10)] // expected: (pi)
474477
[InlineData(-0.91173391478696510, 2.7182818284590452, CrossPlatformMachineEpsilon * 10)] // expected: (e)
475478
[InlineData(-0.66820151019031295, 2.3025850929940457, CrossPlatformMachineEpsilon * 10)] // expected: (ln(10))
476-
[InlineData( 0.0, 1.5707963267948966, CrossPlatformMachineEpsilon * 10)] // expected: (pi / 2)
479+
[InlineData(-0.0, 1.5707963267948966, CrossPlatformMachineEpsilon * 10)] // expected: (pi / 2)
477480
[InlineData( double.NaN, double.NaN, 0.0)]
478481
[InlineData( 0.0, 1.5707963267948966, CrossPlatformMachineEpsilon * 10)] // expected: (pi / 2)
479482
[InlineData( 0.12775121753523991, 1.4426950408889634, CrossPlatformMachineEpsilon * 10)] // expected: (log2(e))
@@ -487,6 +490,9 @@ public static void Abs_Single(float value, float expectedResult, float allowedVa
487490
[InlineData( 0.90716712923909839, 0.43429448190325183, CrossPlatformMachineEpsilon)] // expected: (log10(e))
488491
[InlineData( 0.94976571538163866, 0.31830988618379067, CrossPlatformMachineEpsilon)] // expected: (1 / pi)
489492
[InlineData( 1.0, 0.0, 0.0 )]
493+
[InlineData( 1.4142135623730950, double.NaN, 0.0)] // value: (sqrt(2))
494+
[InlineData( 2.7182818284590452, double.NaN, 0.0)] // value: (e)
495+
[InlineData( 3.1415926535897932, double.NaN, 0.0)] // value: (pi)
490496
[InlineData( double.PositiveInfinity, double.NaN, 0.0 )]
491497
public static void Acos(double value, double expectedResult, double allowedVariance)
492498
{
@@ -495,6 +501,9 @@ public static void Acos(double value, double expectedResult, double allowedVaria
495501

496502
[Theory]
497503
[InlineData( double.NegativeInfinity, double.NaN, 0.0)]
504+
[InlineData(-3.1415926535897932, double.NaN, 0.0)] // value: -(pi)
505+
[InlineData(-2.7182818284590452, double.NaN, 0.0)] // value: -(e)
506+
[InlineData(-1.4142135623730950, double.NaN, 0.0)] // value: -(sqrt(2))
498507
[InlineData(-1.0, -1.5707963267948966, CrossPlatformMachineEpsilon * 10)] // expected: -(pi / 2)
499508
[InlineData(-0.99180624439366372, -1.4426950408889634, CrossPlatformMachineEpsilon * 10)] // expected: -(log2(e))
500509
[InlineData(-0.98776594599273553, -1.4142135623730950, CrossPlatformMachineEpsilon * 10)] // expected: -(sqrt(2))
@@ -524,6 +533,9 @@ public static void Acos(double value, double expectedResult, double allowedVaria
524533
[InlineData( 0.98776594599273553, 1.4142135623730950, CrossPlatformMachineEpsilon * 10)] // expected: (sqrt(2))
525534
[InlineData( 0.99180624439366372, 1.4426950408889634, CrossPlatformMachineEpsilon * 10)] // expected: (log2(e))
526535
[InlineData( 1.0, 1.5707963267948966, CrossPlatformMachineEpsilon * 10)] // expected: (pi / 2)
536+
[InlineData( 1.4142135623730950, double.NaN, 0.0)] // value: (sqrt(2))
537+
[InlineData( 2.7182818284590452, double.NaN, 0.0)] // value: (e)
538+
[InlineData( 3.1415926535897932, double.NaN, 0.0)] // value: (pi)
527539
[InlineData( double.PositiveInfinity, double.NaN, 0.0)]
528540
public static void Asin(double value, double expectedResult, double allowedVariance)
529541
{
@@ -920,6 +932,12 @@ public static void IEEERemainder()
920932

921933
[Theory]
922934
[InlineData( double.NegativeInfinity, double.NaN, 0.0)]
935+
[InlineData(-3.1415926535897932, double.NaN, 0.0)] // value: -(pi)
936+
[InlineData(-2.7182818284590452, double.NaN, 0.0)] // value: -(e)
937+
[InlineData(-1.4142135623730950, double.NaN, 0.0)] // value: -(sqrt(2))
938+
[InlineData(-1.0, double.NaN, 0.0)]
939+
[InlineData(-0.69314718055994531, double.NaN, 0.0)] // value: -(ln(2))
940+
[InlineData(-0.43429448190325183, double.NaN, 0.0)] // value: -(log10(e))
923941
[InlineData(-0.0, double.NegativeInfinity, 0.0)]
924942
[InlineData( double.NaN, double.NaN, 0.0)]
925943
[InlineData( 0.0, double.NegativeInfinity, 0.0)]
@@ -972,6 +990,12 @@ public static void LogWithBase()
972990

973991
[Theory]
974992
[InlineData( double.NegativeInfinity, double.NaN, 0.0)]
993+
[InlineData(-3.1415926535897932, double.NaN, 0.0)] // value: -(pi)
994+
[InlineData(-2.7182818284590452, double.NaN, 0.0)] // value: -(e)
995+
[InlineData(-1.4142135623730950, double.NaN, 0.0)] // value: -(sqrt(2))
996+
[InlineData(-1.0, double.NaN, 0.0)]
997+
[InlineData(-0.69314718055994531, double.NaN, 0.0)] // value: -(ln(2))
998+
[InlineData(-0.43429448190325183, double.NaN, 0.0)] // value: -(log10(e))
975999
[InlineData(-0.0, double.NegativeInfinity, 0.0)]
9761000
[InlineData( double.NaN, double.NaN, 0.0)]
9771001
[InlineData( 0.0, double.NegativeInfinity, 0.0)]

src/System.Runtime.Extensions/tests/System/MathF.netcoreapp.cs

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -217,6 +217,9 @@ public static void Abs(float value, float expectedResult, float allowedVariance)
217217

218218
[Theory]
219219
[InlineData( float.NegativeInfinity, float.NaN, 0.0f)]
220+
[InlineData(-3.14159265f, float.NaN, 0.0f)] // value: -(pi)
221+
[InlineData(-2.71828183f, float.NaN, 0.0f)] // value: -(e)
222+
[InlineData(-1.41421356f, float.NaN, 0.0f)] // value: -(sqrt(2))
220223
[InlineData(-1.0f, 3.14159265f, CrossPlatformMachineEpsilon * 10)] // expected: (pi)
221224
[InlineData(-0.911733915f, 2.71828183f, CrossPlatformMachineEpsilon * 10)] // expected: (e)
222225
[InlineData(-0.668201510f, 2.30258509f, CrossPlatformMachineEpsilon * 10)] // expected: (ln(10))
@@ -234,6 +237,9 @@ public static void Abs(float value, float expectedResult, float allowedVariance)
234237
[InlineData( 0.907167129f, 0.434294482f, CrossPlatformMachineEpsilon)] // expected: (log10(e))
235238
[InlineData( 0.949765715f, 0.318309886f, CrossPlatformMachineEpsilon)] // expected: (1 / pi)
236239
[InlineData( 1.0f, 0.0f, 0.0f)]
240+
[InlineData( 1.41421356f, float.NaN, 0.0f)] // value: (sqrt(2))
241+
[InlineData( 2.71828183f, float.NaN, 0.0f)] // value: (e)
242+
[InlineData( 3.14159265f, float.NaN, 0.0f)] // value: (pi)
237243
[InlineData( float.PositiveInfinity, float.NaN, 0.0f)]
238244
public static void Acos(float value, float expectedResult, float allowedVariance)
239245
{
@@ -242,6 +248,12 @@ public static void Acos(float value, float expectedResult, float allowedVariance
242248

243249
[Theory]
244250
[InlineData( float.NegativeInfinity, float.NaN, 0.0f)]
251+
[InlineData(-3.14159265f, float.NaN, 0.0f)] // value: -(pi)
252+
[InlineData(-2.71828183f, float.NaN, 0.0f)] // value: -(e)
253+
[InlineData(-1.41421356f, float.NaN, 0.0f)] // value: -(sqrt(2))
254+
[InlineData(-1.0f, float.NaN, 0.0f)]
255+
[InlineData(-0.693147181f, float.NaN, 0.0f)] // value: -(ln(2))
256+
[InlineData(-0.434294482f, float.NaN, 0.0f)] // value: -(log10(e))
245257
[InlineData(-0.0f, float.NaN, 0.0f)]
246258
[InlineData( float.NaN, float.NaN, 0.0f)]
247259
[InlineData( 0.0f, float.NaN, 0.0f)]
@@ -268,6 +280,9 @@ public static void Acosh(float value, float expectedResult, float allowedVarianc
268280

269281
[Theory]
270282
[InlineData( float.NegativeInfinity, float.NaN, 0.0f)]
283+
[InlineData(-3.14159265f, float.NaN, 0.0f)] // value: -(pi)
284+
[InlineData(-2.71828183f, float.NaN, 0.0f)] // value: -(e)
285+
[InlineData(-1.41421356f, float.NaN, 0.0f)] // value: -(sqrt(2))
271286
[InlineData(-1.0f, -1.57079633f, CrossPlatformMachineEpsilon * 10)] // expected: -(pi / 2)
272287
[InlineData(-0.991806244f, -1.44269504f, CrossPlatformMachineEpsilon * 10)] // expected: -(log2(e))
273288
[InlineData(-0.987765946f, -1.41421356f, CrossPlatformMachineEpsilon * 10)] // expected: -(sqrt(2))
@@ -297,6 +312,9 @@ public static void Acosh(float value, float expectedResult, float allowedVarianc
297312
[InlineData( 0.987765946f, 1.41421356f, CrossPlatformMachineEpsilon * 10)] // expected: (sqrt(2))
298313
[InlineData( 0.991806244f, 1.44269504f, CrossPlatformMachineEpsilon * 10)] // expected: (log2(e))
299314
[InlineData( 1.0f, 1.57079633f, CrossPlatformMachineEpsilon * 10)] // expected: (pi / 2)
315+
[InlineData( 1.41421356f, float.NaN, 0.0f)] // value: (sqrt(2))
316+
[InlineData( 2.71828183f, float.NaN, 0.0f)] // value: (e)
317+
[InlineData( 3.14159265f, float.NaN, 0.0f)] // value: (pi)
300318
[InlineData( float.PositiveInfinity, float.NaN, 0.0f)]
301319
public static void Asin(float value, float expectedResult, float allowedVariance)
302320
{
@@ -498,6 +516,9 @@ public static void Atan2_IEEE_Legacy(float y, float x, float expectedResult, flo
498516

499517
[Theory]
500518
[InlineData( float.NegativeInfinity, float.NaN, 0.0f)]
519+
[InlineData(-3.14159265f, float.NaN, 0.0f)] // value: -(pi)
520+
[InlineData(-2.71828183f, float.NaN, 0.0f)] // value: -(e)
521+
[InlineData(-1.41421356f, float.NaN, 0.0f)] // value: -(sqrt(2))
501522
[InlineData(-1.0f, float.NegativeInfinity, CrossPlatformMachineEpsilon * 10)]
502523
[InlineData(-0.996272076f, -3.14159265f, CrossPlatformMachineEpsilon * 10)] // expected: -(pi)
503524
[InlineData(-0.991328916f, -2.71828183f, CrossPlatformMachineEpsilon * 10)] // expected: -(e)
@@ -531,6 +552,9 @@ public static void Atan2_IEEE_Legacy(float y, float x, float expectedResult, flo
531552
[InlineData( 0.991328916f, 2.71828183f, CrossPlatformMachineEpsilon * 10)] // expected: (e)
532553
[InlineData( 0.996272076f, 3.14159265f, CrossPlatformMachineEpsilon * 10)] // expected: (pi)
533554
[InlineData( 1.0f, float.PositiveInfinity, 0.0f)]
555+
[InlineData( 3.14159265f, float.NaN, 0.0f)] // value: (pi)
556+
[InlineData( 2.71828183f, float.NaN, 0.0f)] // value: (e)
557+
[InlineData( 1.41421356f, float.NaN, 0.0f)] // value: (sqrt(2))
534558
[InlineData( float.PositiveInfinity, float.NaN, 0.0f)]
535559
public static void Atanh(float value, float expectedResult, float allowedVariance)
536560
{
@@ -788,6 +812,12 @@ public static void IEEERemainder()
788812

789813
[Theory]
790814
[InlineData( float.NegativeInfinity, float.NaN, 0.0f)]
815+
[InlineData(-3.14159265f, float.NaN, 0.0f)] // value: -(pi)
816+
[InlineData(-2.71828183f, float.NaN, 0.0f)] // value: -(e)
817+
[InlineData(-1.41421356f, float.NaN, 0.0f)] // value: -(sqrt(2))
818+
[InlineData(-1.0f, float.NaN, 0.0f)]
819+
[InlineData(-0.693147181f, float.NaN, 0.0f)] // value: -(ln(2))
820+
[InlineData(-0.434294482f, float.NaN, 0.0f)] // value: -(log10(e))
791821
[InlineData(-0.0f, float.NegativeInfinity, 0.0f)]
792822
[InlineData( float.NaN, float.NaN, 0.0f)]
793823
[InlineData( 0.0f, float.NegativeInfinity, 0.0f)]
@@ -840,6 +870,12 @@ public static void LogWithBase()
840870

841871
[Theory]
842872
[InlineData( float.NegativeInfinity, float.NaN, 0.0f)]
873+
[InlineData(-3.14159265f, float.NaN, 0.0f)] // value: -(pi)
874+
[InlineData(-2.71828183f, float.NaN, 0.0f)] // value: -(e)
875+
[InlineData(-1.41421356f, float.NaN, 0.0f)] // value: -(sqrt(2))
876+
[InlineData(-1.0f, float.NaN, 0.0f)]
877+
[InlineData(-0.693147181f, float.NaN, 0.0f)] // value: -(ln(2))
878+
[InlineData(-0.434294482f, float.NaN, 0.0f)] // value: -(log10(e))
843879
[InlineData(-0.0f, float.NegativeInfinity, 0.0f)]
844880
[InlineData( float.NaN, float.NaN, 0.0f)]
845881
[InlineData( 0.0f, float.NegativeInfinity, 0.0f)]

0 commit comments

Comments
 (0)