-
Notifications
You must be signed in to change notification settings - Fork 5.3k
Adding more tests for the generic math feature #55377
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
|
Note regarding the This serves as a reminder for when your PR is modifying a ref *.cs file and adding/modifying public APIs, to please make sure the API implementation in the src *.cs file is documented with triple slash comments, so the PR reviewers can sign off that change. |
|
I couldn't figure out the best area label to add to this PR. If you have write-permissions please help me learn by adding exactly one area label. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This was a mistake in the interface definition?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yesn't.
Ideally both rotate and shift operators would take TSelf on the RHS. However, shift operators require dotnet/csharplang#4666 to go in and so Rotate should match until it does.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yay for tests
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Did you consider using theories to tighten up these tests and avoid the duplication? e.g. I prefer the conciseness and clarity of this:
| [Fact] | |
| public static void TryCreateFromCharTest() | |
| { | |
| byte result; | |
| Assert.True(NumberHelper<byte>.TryCreate<char>((char)0x0000, out result)); | |
| Assert.Equal((byte)0x00, result); | |
| Assert.True(NumberHelper<byte>.TryCreate<char>((char)0x0001, out result)); | |
| Assert.Equal((byte)0x01, result); | |
| Assert.False(NumberHelper<byte>.TryCreate<char>((char)0x7FFF, out result)); | |
| Assert.Equal((byte)0x00, result); | |
| Assert.False(NumberHelper<byte>.TryCreate<char>((char)0x8000, out result)); | |
| Assert.Equal((byte)0x00, result); | |
| Assert.False(NumberHelper<byte>.TryCreate<char>((char)0xFFFF, out result)); | |
| Assert.Equal((byte)0x00, result); | |
| } | |
| [Theory] | |
| [InlineData(0x0000, 0x00)] | |
| [InlineData(0x0001, 0x01)] | |
| [InlineData(0x7FFF, 0x00)] | |
| [InlineData(0x8000, 0x00)] | |
| [InlineData(0xFFFF, 0x00)] | |
| public static void TryCreateFromCharTest(int input, int expected) | |
| { | |
| Assert.True(NumberHelper<byte>.TryCreate<char>((char)input, out byte result)); | |
| Assert.Equal((byte)expected, result); | |
| } |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'll log an issue for this as a low hanging fruit to make these easier to manage and add new cases for in the future.
src/libraries/System.Runtime/tests/System/CharTests.GenericMath.cs
Outdated
Show resolved
Hide resolved
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Why delete these?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Accident. Must have deleted these by mistake when adding in the other tests.
stephentoub
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Spot checked and left a few comments. Thanks.
|
mono interp failure looks relevant |
|
mono interp failures should have been fixed in #55418 |
|
Rebased to pick up fixes. |
fe4fc18 to
0420af8
Compare
| [Fact] | ||
| public static void MinTest() | ||
| { | ||
| Assert.Equal((byte)0x00, NumberHelper<byte>.Min((byte)0x00, (byte)1)); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I feel like Theory would be easier here, but it's a nit, so I'm not too bothered. I also don't know how you generated these. If you used a tt file, I'm sure writing a Fact was easier
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Oh never mind, I saw your reply to Toub
pgovind
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I checked a few places and everything looked good. (I know it's already merged :))
This adds more tests covering the generic math feature for integer types.
CC. @pgovind, @stephentoub, @jeffhandley