Commit Graph

308 Commits

Author SHA1 Message Date
Oliver Booth 9791fd23bb
feat: add CountDigit for integer types 2023-04-06 14:40:27 +01:00
Oliver Booth 0621c246a0
feat: add Span<T>.Replace 2023-04-06 02:31:22 +01:00
Oliver Booth 4a0e3c10d7
test: return coverage to 100% (#76) 2023-04-05 23:18:14 +01:00
Oliver Booth 744f5e906b
test: remove redundant quality checks (#76) 2023-04-05 22:51:59 +01:00
Oliver Booth dbeb13efcd
test: fix expected/actual value swap (#76) 2023-04-05 22:51:59 +01:00
Oliver Booth ab62db2b37
chore: switch from MSTest to NUnit (#76) 2023-04-05 22:51:59 +01:00
Oliver Booth e84eef60e6
chore: suppress tfm support build warnings 2023-04-05 17:37:26 +01:00
Oliver Booth dc1b9d6c04
feat: add math extensions for BigInteger 2023-04-05 11:05:53 +01:00
Oliver Booth b8c3a5121a
feat: add DateOnly extensions 2023-04-04 10:10:55 +01:00
Oliver Booth 514e5b12b0
feat: add MathUtility.Pulse (resolves #60) 2023-04-03 17:26:03 +01:00
Oliver Booth 1939bbe4ba
feat: add MathUtility.Sawtooth (#60) 2023-04-03 17:15:11 +01:00
Oliver Booth c7370c39fd
feat: add MathUtility.Sigmoid (#60) 2023-04-03 16:38:58 +01:00
Oliver Booth 654d5b5b08
feat: Add MathUtility.ExponentialDecay (#60) 2023-04-03 16:21:43 +01:00
Oliver Booth 9cf003481c
refactor: move exception messages to resource file (#27) 2023-04-03 15:57:31 +01:00
Oliver Booth d27f4caef7
feat: add MathUtility.SmoothStep (#60) 2023-04-03 15:47:18 +01:00
Oliver Booth 105ff81713
test: add tests for MathUtility.Lerp 2023-04-03 15:02:03 +01:00
Oliver Booth 3f147c98b2
feat: add double overload for Bias (#60) 2023-04-03 15:00:13 +01:00
Oliver Booth f131c281cf
feat: add MathUtility.Bias (#60) 2023-04-03 14:41:32 +01:00
Oliver Booth 9417ee6be1
test: bring coverage to 100% for Drawing 2023-04-03 14:13:32 +01:00
Oliver Booth 8b4fd45e05
fix(test): assert vertex count against Polygon.Empty 2023-04-03 13:54:23 +01:00
Oliver Booth 262f191799
fix(test): assert ArgumentNullException only for .NET < 6 2023-04-03 13:47:59 +01:00
Oliver Booth 9985652c40
test: 100% coverage on RandomExtensions 2023-04-03 13:43:07 +01:00
Oliver Booth b806e50ec1
[ci skip] style: remove unused using directives 2023-04-03 13:42:53 +01:00
Oliver Booth 6ef48fc3b9
test: 100% coverage on IntrinsicUtility (#73) 2023-04-03 13:41:41 +01:00
Oliver Booth 783c4b0f8e
test: add tests for integer Pack (#73) 2023-04-03 01:28:01 +01:00
Oliver Booth 92855ddbab
fix(test): remove invalid namespace imports 2023-04-02 23:15:22 +01:00
Oliver Booth 22d5f07215
test: add tests for ReadOnlySpan.Pack (#73)
1 failing test: PackInt32Internal_Sse2_ShouldReturnCorrectInt32_GivenReadOnlySpan

This will fail the dotnet workflow.
2023-04-02 23:14:38 +01:00
Oliver Booth 78cebbce8b
test: add unit tests for Span.Contains(Enum) (#73) 2023-04-02 22:11:45 +01:00
Oliver Booth 4fc0d01670
test: cover null input for IsIPv4 and IsIPv6 2023-04-02 21:59:35 +01:00
Oliver Booth d68d893abd
test: 100% coverage on Reflection extensions 2023-04-02 20:48:15 +01:00
Oliver Booth 2c01b0e23a
build: remove Debug properties in test csproj
I believe these properties to be the cause of an issue with symbol verification when publishing X10D to nuget.org. I will report with status after this nightly run.
2023-04-02 15:53:54 +01:00
Oliver Booth fdc0c6aa35
perf: fix performance of intrisics
This changes removes the CPU-arch support provider interfaces that were introduced with 87b6dbdd56. That commit worsened the performance of the intrinsic methods because it resulted in a box when upcasting the System_SupportProvider value type to an interface, removing the potential for JIT to optimise the code path.
2023-04-02 15:17:28 +01:00
Oliver Booth 6b1dc2837a
test: bring coverage to 100% for Collections, Linq, Math, and Text 2023-04-02 04:16:33 +01:00
Oliver Booth daff6ee3fe
fix: suppress .NET analyzer for test project 2023-04-02 03:31:37 +01:00
Oliver Booth bf73ecce32
test: add unit tests for ServiceCollectionExtensions 2023-04-02 03:31:19 +01:00
Oliver Booth 85f4e8c733
test: bring coverage to 100% for AddOrUpdate 2023-04-02 01:16:12 +01:00
Oliver Booth bfd3a5663d
[ci skip] ci: enable .NET analyzers for all projects 2023-04-02 01:11:14 +01:00
Oliver Booth 427563bfdb
[ci skip] test: CollectCoverage:true 2023-04-02 01:07:01 +01:00
Oliver Booth e5ec06cfe5
[ci skip] test: output debug symbols 2023-04-02 01:06:38 +01:00
Oliver Booth 95cd3e8cbc
test: bring coverage to 100% for X10D.Collections.SpanExtensions 2023-04-02 00:36:31 +01:00
Oliver Booth f10ff4a36c
test: add tests for Span<T>.Count 2023-04-02 00:18:47 +01:00
Oliver Booth 586057ba3d
test: add tests for ReverseElements (#73) 2023-04-01 23:48:08 +01:00
Oliver Booth 6f16c0df3c
test: add tests for CorrectBoolean (#73) 2023-04-01 23:40:41 +01:00
Oliver Booth d7bf9d1788
style(test): remove throws of NotImplementedException 2023-04-01 22:00:40 +01:00
Oliver Booth 23282db3a9
fix(test): import X10D.Core for NextSingle to work on < net6.0 2023-04-01 22:00:11 +01:00
Oliver Booth 87b6dbdd56
test: bring coverage to 100% for integer Unpack (#70) 2023-04-01 21:56:45 +01:00
Oliver Booth ca5f95bbf6
test: test RuneExtensions for .NET >= 5 2023-04-01 18:59:24 +01:00
Oliver Booth e52e9096e0
feat: expose ComplexSqrt to all frameworks 2023-04-01 18:54:04 +01:00
Oliver Booth 1acee3bf72
fix(test): fix incorrect date being returned for .NET Standard 2.1 2023-04-01 18:20:44 +01:00
Oliver Booth 5714ef73c1
test: 100% coverage on stream Read/Write methods 2023-04-01 18:17:50 +01:00
Oliver Booth 2815c505c3
fix: fix incorrect float/double being written for netstandard2.1
The call to _To_Bits yields the result containing the same bytes, but not the same value. This value was then stored as-is into the parameter, which causes a conversion on how the value is stored, ultimately causing the wrong value to be written to the stream.
2023-04-01 17:11:05 +01:00
Oliver Booth b2a27cdafb
fix(test): fix Clear unit test not creating the temp directory 2023-04-01 17:06:19 +01:00
Oliver Booth 35113fac27
test: run tests for .NET 7, 6, and Core 3.1
.NET Core 3.1 allows testing of the .NET Standard 2.1 implementation of X10D
2023-04-01 17:05:46 +01:00
Oliver Booth dd325ba5c9
test: test Equals(object) for various Drawing types
This brings coverage to 100% for the affected types.
2023-04-01 00:30:51 +01:00
Oliver Booth 8b768f824c
test: add tests for Point.IsOnLine and PointF.IsOnLine 2023-04-01 00:30:04 +01:00
Oliver Booth 6e7e162ffe
test: 100% coverage on MultiplicativePersistence 2023-03-31 23:19:21 +01:00
Oliver Booth 3d2baf595b
test: 100% coverage on Wrap for all types 2023-03-31 20:37:50 +01:00
Oliver Booth 3f47a4ec44
[ci skip] test: rename Pack8Bit to PackByte 2023-03-31 20:23:56 +01:00
Oliver Booth 62034ded75
style(test): segment methods to partials
This changes introduces the Moq package to create mocked objects implementing IDisposable, rather than defining a concrete class.
2023-03-31 20:21:17 +01:00
Oliver Booth f293f247e7
[ci skip] style: remove unused using directives 2023-03-31 20:18:01 +01:00
Oliver Booth 708207305c
test: use fixed point of reference for Age tests 2023-03-31 20:15:59 +01:00
Oliver Booth 3734965757
test: bring coverage to 94% for RuneExtensions 2023-03-31 20:11:03 +01:00
Oliver Booth e852726b66
test: 100% coverage on Enumerable and String methods in Text namespace 2023-03-31 18:53:08 +01:00
Oliver Booth 369882c1e8
[ci skip] style: remove unused using directives 2023-03-31 18:52:12 +01:00
Oliver Booth 275d98fbf8
feat: add LowestCommonMultiple for built-in integer types
This was previously incorrectly documented in CHANGELOG.md. The method now exists. Sorry about that
2023-03-31 18:07:50 +01:00
Oliver Booth 9ee99d72d3
[ci skip] style: upgrade projects to C# 11
NB: While using a higher C# version with lower framework version is possible, it's generally advised against because C# syntax may map to .NET types not available in older versions such as .NET Standard 2.1.

This change does not invite the codebase to upgrade to newer types, but rather take advantage of syntax sugar (such as file-scoped namespaces, when this project was updated to C# 10) that does not effect the compiled result.

However, this change does open up the possibilities to add extension methods for the "generic math" interfaces (made possible by static interface members), and these upcoming methods will be targeted to .NET 7 or greater **ONLY**.
2023-03-31 17:30:30 +01:00
Oliver Booth 4cd669a200
[ci skip] fix(test): force enumeration of lazy enumerable 2023-03-31 15:11:50 +01:00
Oliver Booth 14e638e6d9
feat: add IEnumerable<T>.ConcatOne 2023-03-31 14:53:02 +01:00
Oliver Booth cd4c3542f7
fix: use intrinsic convention for ToVector3 2023-03-31 01:31:19 +01:00
Oliver Booth 4c62367303
test: cover Span<char> overloads of CountSubstring 2023-03-30 21:22:45 +01:00
Oliver Booth f30c052673
test: 100% coverage for TimeSpanParser.TryParse 2023-03-30 20:44:45 +01:00
Oliver Booth 628ead1ebb
test: add tests for GetIso8601WeekOfYear 2023-03-30 20:44:32 +01:00
Oliver Booth 76810408f2
[ci skip] style(test): suppress IteratorNeverReturns warning 2023-03-30 20:18:17 +01:00
Oliver Booth 3ce8d281b7
feat: add TextReader.EnumerateLines/Async 2023-03-30 17:55:41 +01:00
Oliver Booth 4f3f791948
[ci skip] test: assert ArgumentNullException from Grep 2023-03-30 17:49:00 +01:00
Oliver Booth d0f94a6493
feat: add IEnumerable<string>.Grep() 2023-03-30 17:29:54 +01:00
Oliver Booth f49188b428
feat: add string.EnsureEndsWith and string.EnsureStartsWith 2023-03-30 02:09:04 +01:00
Oliver Booth f5b53cd3f6
[ci skip] test: remove netstandard2.1 from test csproj 2023-03-29 17:55:00 +01:00
Oliver Booth 4dd31ec1b6
[ci skip] style: reformat & cleanup solution 2023-03-29 17:46:56 +01:00
Oliver Booth 436f56d912
feat: add Saturate for floating point types (#60) 2023-03-29 16:21:16 +01:00
Oliver Booth 121c3a388a
test: 100% coverage on EnumerableExtensions 2023-03-28 16:28:38 +01:00
Oliver Booth 9bb9c9692a
tests: 100% coverage on Circle and CircleF 2023-03-28 16:09:35 +01:00
Oliver Booth 3e4d9603c0
test: cover Color.Deconstruct 2023-03-28 15:54:06 +01:00
Oliver Booth 3121b23732
fix(tests): fix incorrect timezone offset for DST 2023-03-28 14:54:11 +01:00
Oliver Booth 55cae2f454
test: update test project dependencies
- Microsoft.NET.Test.Sdk 17.5.0
- MSTest.* 3.0.2
- coverlet.collector 3.2.0
2023-03-28 14:54:11 +01:00
Oliver Booth 3b85419da3
Add MinMax and MinMaxBy (resolves #72) 2023-03-26 17:03:40 +01:00
RealityProgrammer 77b0a8ca39 Move some intrinsic methods around, reimplement RuneExtensions.Repeat(Rune, Int32) 2023-03-14 21:18:01 +07:00
Oliver Booth a685d6ec39
Merge branch 'develop' into main 2023-03-07 17:30:15 +00:00
RealityProgrammer e176f65e97 Commit git's untracked files 2023-03-07 16:50:04 +07:00
RealityProgrammer 6f343cd393 Fast Int16 packing 2023-03-07 08:58:53 +07:00
RealityProgrammer 5e4044f965 Code fixup, fast Int8 packing 2023-03-06 10:39:58 +07:00
Oliver Booth 799bc77ec8
Add IsEmpty/IsWhiteSpace and IsNullOrEmpty/WhiteSpace for string 2023-02-28 19:05:03 +00:00
Oliver Booth 041181cc5a
Add IEnumerable<T?>.WhereNotNull() 2023-02-27 21:11:37 +00:00
Oliver Booth d1959f4ba6
[ci skip] Add unit tests for IsOnLine 2023-02-27 17:05:59 +00:00
Oliver Booth 3fc2e7259e
Add Random.NextFrom([ReadOnly]Span<T>) 2023-02-27 13:15:20 +00:00
Oliver Booth d1454a1170
[ci skip] Add unit tests for ScaleRange
Add Aggressive implementations, and annotate as Pure
2023-02-26 13:33:01 +00:00
Oliver Booth 795d696eca
Add GammaToLinear and LinearToGamma (#60) 2023-02-26 13:10:59 +00:00
Oliver Booth ca1b1ccbf2
Add GreatestCommonFactor for built-in integer types 2023-02-26 12:25:50 +00:00
Oliver Booth d461c464df
Rewrite TimeSpanParserTests
The tests previously worked on the assumption that TryParse would throw an exception on null argument. This was changed with 94a841b2fc but the tests were not updated to reflect that
2023-02-26 00:46:01 +00:00
Oliver Booth d9cf9c8db5
Add Nullable<T>.TryGetValue (resolves #61) 2023-02-26 00:35:22 +00:00