Skip to content

Commit 05ddd83

Browse files
committed
Modernize into 0.4.3
1 parent 8ecfde7 commit 05ddd83

File tree

187 files changed

+5409
-3108
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

187 files changed

+5409
-3108
lines changed

.editorconfig

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,17 @@
1-
[*.cs]
1+
root = true
2+
3+
[*.cs]
24
spelling_languages = en-us
35
spelling_exclusion_path = exclusion.dic
6+
7+
# CS1591: Missing XML comment for publicly visible type or member
8+
dotnet_diagnostic.CS1591.severity = silent
9+
10+
# CS1573: Parameter has no matching param tag in the XML comment (but other parameters do)
11+
dotnet_diagnostic.CS1573.severity = silent
12+
13+
# IDE0028: Collection initialization can be simplified
14+
dotnet_diagnostic.IDE0028.severity = silent
15+
16+
# IDE0305: Collection initialization can be simplified
17+
dotnet_diagnostic.IDE0305.severity = silent

FrameworkCapabilities.Generated.props

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
HAS_SPAN;
1717
HAS_SLICES;
1818
HAS_HASH_CODE;
19+
HAS_MATHF;
1920
HAS_INTERFACE_DIMS;
2021
HAS_ASYNC_ENUMERABLE;
2122
HAS_NULLABLE_ANNOTATION_ATTRIBUTES;
@@ -32,10 +33,22 @@
3233
HAS_STRING_JOIN_CHAR;
3334
HAS_KVP_DECONSTRUCT;
3435
HAS_CONCURRENT_BAG_CLEAR;
36+
HAS_ASYNC_FILE_IO;
37+
HAS_DATA_ROW_FIELD_METHOD;
38+
HAS_NUMBER_PARSE_SPANSTRING;
3539
</DefineConstants>
3640
</PropertyGroup>
3741
<PropertyGroup Condition="
42+
'$(TargetFramework)' == 'net45' Or
43+
'$(TargetFramework)' == 'net472' Or
44+
'$(TargetFramework)' == 'net46' Or
45+
'$(TargetFramework)' == 'net48' Or
46+
'$(TargetFramework)' == 'netstandard1.0' Or
47+
'$(TargetFramework)' == 'netstandard2.0' Or
3848
'$(TargetFramework)' == 'netstandard2.1' Or
49+
'$(TargetFramework)' == 'netcoreapp1.0' Or
50+
'$(TargetFramework)' == 'netcoreapp2.0' Or
51+
'$(TargetFramework)' == 'netcoreapp3.0' Or
3952
'$(TargetFramework)' == 'netcoreapp3.1' Or
4053
'$(TargetFramework)' == 'net5.0'">
4154
<DefineConstants>
@@ -56,10 +69,15 @@
5669
HAS_IMMUTABLE;
5770
HAS_CALLER_INFORMATION_ATTRIBUTES;
5871
HAS_INTRINSICS;
72+
HAS_UNSAFE;
5973
HAS_SIMD;
74+
HAS_BIT_OPERATIONS;
75+
HAS_CHANNELS;
6076
HAS_GET_CHUNKS;
6177
HAS_AVX;
6278
HAS_DYNAMIC_INVOCATION;
79+
HAS_MATH_LOG2;
80+
HAS_MATH_ILOGB;
6381
</DefineConstants>
6482
</PropertyGroup>
6583
<PropertyGroup Condition="
@@ -110,6 +128,15 @@
110128
HAS_STATIC_ABSTRACTS;
111129
</DefineConstants>
112130
</PropertyGroup>
131+
<PropertyGroup Condition="
132+
'$(TargetFramework)' == 'net9.0' Or
133+
'$(TargetFramework)' == 'net10.0'">
134+
<DefineConstants>
135+
$(DefineConstants)
136+
HAS_INTERLOCKED_COMPARE_EXCHANGE_UNCONSTRAINED;
137+
HAS_SPAN_BASED_FILE_IO;
138+
</DefineConstants>
139+
</PropertyGroup>
113140
<PropertyGroup Condition="
114141
'$(TargetFramework)' == 'net10.0'">
115142
<DefineConstants>

Garyon.FrameworkCapabilityGenerator/FrameworkCapabilities/KnownFrameworkCapabilities.cs

Lines changed: 23 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,11 @@ namespace Garyon.FrameworkCapabilityGenerator.FrameworkCapabilities;
44

55
internal static class KnownFrameworkCapabilities
66
{
7+
// As polyfills were introduced, some of these capabilities are not being evaluated
8+
// to conditionally define helpful extensions, extending them to more versions than
9+
// the official framework versions support.
10+
// They are defined here for reference and documentation purposes.
11+
712
public static IReadOnlyList<FrameworkCapabilityRange> Capabilities =>
813
[
914
new(
@@ -14,6 +19,7 @@ internal static class KnownFrameworkCapabilities
1419
"HAS_SPAN",
1520
"HAS_SLICES",
1621
"HAS_HASH_CODE",
22+
"HAS_MATHF",
1723
"HAS_INTERFACE_DIMS",
1824
"HAS_ASYNC_ENUMERABLE",
1925
"HAS_NULLABLE_ANNOTATION_ATTRIBUTES",
@@ -30,11 +36,14 @@ internal static class KnownFrameworkCapabilities
3036
"HAS_STRING_JOIN_CHAR",
3137
"HAS_KVP_DECONSTRUCT",
3238
"HAS_CONCURRENT_BAG_CLEAR",
39+
"HAS_ASYNC_FILE_IO",
40+
"HAS_DATA_ROW_FIELD_METHOD",
41+
"HAS_NUMBER_PARSE_SPANSTRING",
3342
]),
3443

3544
new(
36-
Range(KnownFrameworkVersions.NetStandard21, null)
37-
| Range(KnownFrameworkVersions.NetCore31, KnownFrameworkVersions.Net5),
45+
Range(null, KnownFrameworkVersions.NetStandard21)
46+
| Range(null, KnownFrameworkVersions.Net5),
3847
[
3948
"REQUIRES_IEQUATABLE_FOR_SPAN_SEQUENCE_EQUALS",
4049
]),
@@ -45,10 +54,15 @@ internal static class KnownFrameworkCapabilities
4554
"HAS_IMMUTABLE",
4655
"HAS_CALLER_INFORMATION_ATTRIBUTES",
4756
"HAS_INTRINSICS",
57+
"HAS_UNSAFE",
4858
"HAS_SIMD",
59+
"HAS_BIT_OPERATIONS",
60+
"HAS_CHANNELS",
4961
"HAS_GET_CHUNKS",
5062
"HAS_AVX",
5163
"HAS_DYNAMIC_INVOCATION",
64+
"HAS_MATH_LOG2",
65+
"HAS_MATH_ILOGB",
5266
]),
5367

5468
new(
@@ -84,6 +98,13 @@ internal static class KnownFrameworkCapabilities
8498
"HAS_STATIC_ABSTRACTS",
8599
]),
86100

101+
new(
102+
Range(KnownFrameworkVersions.Net9, null),
103+
[
104+
"HAS_INTERLOCKED_COMPARE_EXCHANGE_UNCONSTRAINED",
105+
"HAS_SPAN_BASED_FILE_IO",
106+
]),
107+
87108
new(
88109
Range(KnownFrameworkVersions.Net10, null),
89110
[
Lines changed: 30 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1,82 +1,84 @@
11
using Garyon.DataStructures;
22
using Garyon.Extensions;
3-
using NUnit.Framework;
43
using System;
54
using System.Collections.Generic;
65
using System.Linq;
6+
using System.Threading.Tasks;
7+
using TUnit.Assertions;
8+
using TUnit.Assertions.Extensions;
9+
using TUnit.Core;
710

811
namespace Garyon.Tests.DataStructures;
912

10-
[Parallelizable(ParallelScope.Children)]
1113
public abstract class BaseSetLinearCollectionTests
1214
{
1315
protected static readonly int[] SampleNumbers = { 1, 2, 4, 5, 7 };
1416

1517
[Test]
16-
public void ContainsTest()
18+
public async Task ContainsTest()
1719
{
1820
var instance = CreateSampleInstance();
1921
for (int i = 0; i < 10; i++)
20-
Assert.AreEqual(SampleNumbers.Contains(i), instance.Contains(i));
22+
await Assert.That(instance.Contains(i)).IsEqualTo(SampleNumbers.Contains(i));
2123
}
2224
[Test]
23-
public void AddTest()
25+
public async Task AddTest()
2426
{
2527
var instance = InitializeInstance<int>();
26-
Assert.IsTrue(instance.Add(2));
27-
Assert.IsFalse(instance.Add(2));
28-
Assert.AreEqual(1, instance.Count);
28+
await Assert.That(instance.Add(2)).IsTrue();
29+
await Assert.That(instance.Add(2)).IsFalse();
30+
await Assert.That(instance.Count).IsEqualTo(1);
2931

3032
instance.AddRange(new[] { 1, 2, 2, 2, 4 });
31-
Assert.AreEqual(3, instance.Count);
32-
Assert.IsTrue(instance.Contains(1));
33-
Assert.IsTrue(instance.Contains(4));
33+
await Assert.That(instance.Count).IsEqualTo(3);
34+
await Assert.That(instance.Contains(1)).IsTrue();
35+
await Assert.That(instance.Contains(4)).IsTrue();
3436
}
3537
[Test]
36-
public void RemoveTest()
38+
public async Task RemoveTest()
3739
{
3840
var instance = CreateSampleInstance();
3941

40-
AssertRemove(instance, 0);
41-
AssertRemove(instance, 1);
42+
await AssertRemove(instance, 0);
43+
await AssertRemove(instance, 1);
4244

4345
var removedRange = instance.RemoveRange(instance.Count + 5).ToArray();
44-
Assert.AreEqual(SampleNumbers.Length - 2, removedRange.Length);
46+
await Assert.That(removedRange.Length).IsEqualTo(SampleNumbers.Length - 2);
4547

46-
void AssertRemove(BaseSetLinearCollection<int> instance, int index)
48+
async Task AssertRemove(BaseSetLinearCollection<int> instance, int index)
4749
{
4850
int removed = instance.Remove();
49-
Assert.AreEqual(SampleNumbers[ProjectToCollectionIndex(index)], removed);
50-
Assert.AreEqual(SampleNumbers.Length - index - 1, instance.Count);
51+
await Assert.That(removed).IsEqualTo(SampleNumbers[ProjectToCollectionIndex(index)]);
52+
await Assert.That(instance.Count).IsEqualTo(SampleNumbers.Length - index - 1);
5153
}
5254
}
5355
[Test]
54-
public void PeekTest()
56+
public async Task PeekTest()
5557
{
5658
var instance = CreateSampleInstance();
57-
Assert.AreEqual(SampleNumbers[ProjectToCollectionIndex(0)], instance.Peek());
59+
await Assert.That(instance.Peek()).IsEqualTo(SampleNumbers[ProjectToCollectionIndex(0)]);
5860
}
5961
[Test]
60-
public void ClearTest()
62+
public async Task ClearTest()
6163
{
6264
var instance = CreateSampleInstance();
6365
instance.Clear();
64-
Assert.IsTrue(instance.IsEmpty);
65-
Assert.AreEqual(0, instance.Count);
66+
await Assert.That(instance.IsEmpty).IsTrue();
67+
await Assert.That(instance).IsEmpty();
6668
}
6769

6870
[Test]
69-
public void CopyToTest()
71+
public async Task CopyToTest()
7072
{
7173
var instance = CreateSampleInstance();
7274
var array = new int[SampleNumbers.Length];
7375
instance.CopyTo(array, 0);
74-
Assert.That(array, Is.EquivalentTo(TransformForExpectedEnumerationOrder(SampleNumbers)));
76+
await Assert.That(array).IsEquivalentTo(TransformForExpectedEnumerationOrder(SampleNumbers));
7577
}
7678
[Test]
77-
public void EnumerationTest()
79+
public async Task EnumerationTest()
7880
{
79-
Assert.That(CreateSampleInstance(), Is.EquivalentTo(TransformForExpectedEnumerationOrder(SampleNumbers)));
81+
await Assert.That(CreateSampleInstance()).IsEquivalentTo(TransformForExpectedEnumerationOrder(SampleNumbers));
8082
}
8183

8284
protected abstract Index ProjectToCollectionIndex(Index index);
@@ -90,4 +92,4 @@ private BaseSetLinearCollection<int> CreateSampleInstance()
9092
instance.AddRange(SampleNumbers);
9193
return instance;
9294
}
93-
}
95+
}

0 commit comments

Comments
 (0)