diff --git a/Qowaiv.sln b/Qowaiv.sln
index 6370398f..78dcbce9 100644
--- a/Qowaiv.sln
+++ b/Qowaiv.sln
@@ -70,7 +70,9 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "shared", "shared", "{7F291C
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Qowaiv.Benchmarks", "specs\Qowaiv.Benchmarks\Qowaiv.Benchmarks.csproj", "{6F2DEAC5-6E5D-4144-BA24-37039F387D67}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Qowaiv.Diagnostics.Contracts", "src\Qowaiv.Diagnostics.Contracts\Qowaiv.Diagnostics.Contracts.csproj", "{75090D12-3917-4CDD-8DDE-09B8407723A8}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Qowaiv.Diagnostics.Contracts", "src\Qowaiv.Diagnostics.Contracts\Qowaiv.Diagnostics.Contracts.csproj", "{75090D12-3917-4CDD-8DDE-09B8407723A8}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Qowaiv.Wikipedia", "specs\Qowaiv.Wikipedia\Qowaiv.Wikipedia.csproj", "{472741F3-7CA5-49B0-90B2-5BFB82832D99}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
@@ -114,6 +116,10 @@ Global
{75090D12-3917-4CDD-8DDE-09B8407723A8}.Debug|Any CPU.Build.0 = Debug|Any CPU
{75090D12-3917-4CDD-8DDE-09B8407723A8}.Release|Any CPU.ActiveCfg = Release|Any CPU
{75090D12-3917-4CDD-8DDE-09B8407723A8}.Release|Any CPU.Build.0 = Release|Any CPU
+ {472741F3-7CA5-49B0-90B2-5BFB82832D99}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {472741F3-7CA5-49B0-90B2-5BFB82832D99}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {472741F3-7CA5-49B0-90B2-5BFB82832D99}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {472741F3-7CA5-49B0-90B2-5BFB82832D99}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@@ -130,6 +136,7 @@ Global
{9CCFB684-06FA-48B1-8732-0A520B639E11} = {40C1E942-8DB1-4E58-8FB4-71F5EDA66029}
{7F291C39-7785-41A7-8678-2E79B347E7AD} = {A4C3C9FF-4EED-41FE-8849-C896429254B5}
{6F2DEAC5-6E5D-4144-BA24-37039F387D67} = {40C1E942-8DB1-4E58-8FB4-71F5EDA66029}
+ {472741F3-7CA5-49B0-90B2-5BFB82832D99} = {40C1E942-8DB1-4E58-8FB4-71F5EDA66029}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {9B55A336-E2D3-4656-9840-D519B3E1159B}
diff --git a/example/Qowaiv.AspNetCore.Mvc.ModelBinding/Qowaiv.AspNetCore.Mvc.ModelBinding.csproj b/example/Qowaiv.AspNetCore.Mvc.ModelBinding/Qowaiv.AspNetCore.Mvc.ModelBinding.csproj
index 0a0d51fc..cecf24ee 100644
--- a/example/Qowaiv.AspNetCore.Mvc.ModelBinding/Qowaiv.AspNetCore.Mvc.ModelBinding.csproj
+++ b/example/Qowaiv.AspNetCore.Mvc.ModelBinding/Qowaiv.AspNetCore.Mvc.ModelBinding.csproj
@@ -3,7 +3,7 @@
- netstandard2.0
+ net8.0
diff --git a/specs/Qowaiv.Benchmarks/Qowaiv.Benchmarks.csproj b/specs/Qowaiv.Benchmarks/Qowaiv.Benchmarks.csproj
index bf4bbce6..cc184fb3 100644
--- a/specs/Qowaiv.Benchmarks/Qowaiv.Benchmarks.csproj
+++ b/specs/Qowaiv.Benchmarks/Qowaiv.Benchmarks.csproj
@@ -28,8 +28,8 @@
-
+
diff --git a/specs/Qowaiv.Specs/OpenApi/Open_API_specs.cs b/specs/Qowaiv.Specs/OpenApi/Open_API_specs.cs
index 17b49ac5..bc628d9a 100644
--- a/specs/Qowaiv.Specs/OpenApi/Open_API_specs.cs
+++ b/specs/Qowaiv.Specs/OpenApi/Open_API_specs.cs
@@ -60,11 +60,7 @@ public void Describes()
@enum = info.Enum?.ToArray(),
});
#if DEBUG
- Console.WriteLine(System.Text.Json.JsonSerializer.Serialize(all, new System.Text.Json.JsonSerializerOptions
- {
- WriteIndented = true,
- DefaultIgnoreCondition = System.Text.Json.Serialization.JsonIgnoreCondition.WhenWritingNull,
- }));
+ Console.WriteLine(System.Text.Json.JsonSerializer.Serialize(all, Options));
#endif
all.Should().NotBeEmpty();
}
@@ -79,5 +75,13 @@ private sealed record OpenApiDataTypeInfo
public bool nullable { get; init; }
public string[]? @enum { get; init; } = [];
}
+
+#if DEBUG
+ private static readonly System.Text.Json.JsonSerializerOptions Options = new()
+ {
+ WriteIndented = true,
+ DefaultIgnoreCondition = System.Text.Json.Serialization.JsonIgnoreCondition.WhenWritingNull,
+ };
+#endif
}
#endif
diff --git a/specs/Qowaiv.Specs/TestTools/Generation/FluentAssertionExtensions.cs b/specs/Qowaiv.Wikipedia/Extensions/FluentAssertionExtensions.cs
similarity index 100%
rename from specs/Qowaiv.Specs/TestTools/Generation/FluentAssertionExtensions.cs
rename to specs/Qowaiv.Wikipedia/Extensions/FluentAssertionExtensions.cs
diff --git a/specs/Qowaiv.Specs/Globalization/Countries_generation.cs b/specs/Qowaiv.Wikipedia/Generation/Countries_generation.cs
similarity index 99%
rename from specs/Qowaiv.Specs/Globalization/Countries_generation.cs
rename to specs/Qowaiv.Wikipedia/Generation/Countries_generation.cs
index dff8ffa6..3166c4d7 100644
--- a/specs/Qowaiv.Specs/Globalization/Countries_generation.cs
+++ b/specs/Qowaiv.Wikipedia/Generation/Countries_generation.cs
@@ -1,7 +1,4 @@
-#if NET8_0_OR_GREATER
-#if DEBUG
-
-using Qowaiv.TestTools.Generation;
+using Qowaiv.TestTools.Generation;
using Qowaiv.TestTools.Resx;
using Qowaiv.TestTools.Wikipedia;
@@ -255,6 +252,3 @@ public async Task zh()
.Should().NotThrow();
}
}
-
-#endif
-#endif
diff --git a/specs/Qowaiv.Specs/TestTools/Generation/CountryData.cs b/specs/Qowaiv.Wikipedia/Generation/CountryData.cs
similarity index 100%
rename from specs/Qowaiv.Specs/TestTools/Generation/CountryData.cs
rename to specs/Qowaiv.Wikipedia/Generation/CountryData.cs
diff --git a/specs/Qowaiv.Specs/TestTools/Generation/CountryDisplayName.cs b/specs/Qowaiv.Wikipedia/Generation/CountryDisplayName.cs
similarity index 100%
rename from specs/Qowaiv.Specs/TestTools/Generation/CountryDisplayName.cs
rename to specs/Qowaiv.Wikipedia/Generation/CountryDisplayName.cs
diff --git a/specs/Qowaiv.Specs/TestTools/Generation/Iso3166_1.cs b/specs/Qowaiv.Wikipedia/Generation/Iso3166_1.cs
similarity index 100%
rename from specs/Qowaiv.Specs/TestTools/Generation/Iso3166_1.cs
rename to specs/Qowaiv.Wikipedia/Generation/Iso3166_1.cs
diff --git a/specs/Qowaiv.Specs/TestTools/Generation/Iso3166_3.cs b/specs/Qowaiv.Wikipedia/Generation/Iso3166_3.cs
similarity index 100%
rename from specs/Qowaiv.Specs/TestTools/Generation/Iso3166_3.cs
rename to specs/Qowaiv.Wikipedia/Generation/Iso3166_3.cs
diff --git a/specs/Qowaiv.Wikipedia/Properties/GlobalUsings.cs b/specs/Qowaiv.Wikipedia/Properties/GlobalUsings.cs
new file mode 100644
index 00000000..c2fe37c3
--- /dev/null
+++ b/specs/Qowaiv.Wikipedia/Properties/GlobalUsings.cs
@@ -0,0 +1,49 @@
+global using FluentAssertions;
+global using NUnit.Framework;
+global using Qowaiv;
+global using Qowaiv.Conversion.Security;
+global using Qowaiv.Conversion.Security.Cryptography;
+global using Qowaiv.Diagnostics.Contracts;
+global using Qowaiv.Financial;
+global using Qowaiv.Formatting;
+global using Qowaiv.Globalization;
+global using Qowaiv.Hashing;
+global using Qowaiv.Identifiers;
+global using Qowaiv.IO;
+global using Qowaiv.Mathematics;
+global using Qowaiv.OpenApi;
+global using Qowaiv.Security;
+global using Qowaiv.Security.Cryptography;
+global using Qowaiv.Sql;
+global using Qowaiv.Statistics;
+global using Qowaiv.TestTools;
+global using Qowaiv.TestTools.Globalization;
+global using Qowaiv.TestTools.IO;
+global using Qowaiv.Text;
+global using Qowaiv.Web;
+global using System;
+global using System.Collections;
+global using System.Collections.Generic;
+global using System.ComponentModel;
+global using System.Diagnostics;
+global using System.Diagnostics.CodeAnalysis;
+global using System.Diagnostics.Contracts;
+global using System.Globalization;
+global using System.IO;
+global using System.Linq;
+global using System.Reflection;
+global using System.Runtime.Serialization;
+global using System.Security.Cryptography;
+global using System.Text;
+global using System.Text.RegularExpressions;
+global using System.Threading.Tasks;
+global using System.Xml.Serialization;
+global using CustomSvo = Qowaiv.Customization.Svo;
+global using GenericSvo = Qowaiv.Customization.Svo;
+global using CustomGuid = Qowaiv.Identifiers.Id;
+global using Int32Id = Qowaiv.Identifiers.Id;
+global using Int64Id = Qowaiv.Identifiers.Id;
+global using StringId = Qowaiv.Identifiers.Id;
+global using CustomUuid = Qowaiv.Identifiers.Id;
+global using Svo = Qowaiv.TestTools.Svo;
+
diff --git a/specs/Qowaiv.Wikipedia/Qowaiv.Wikipedia.csproj b/specs/Qowaiv.Wikipedia/Qowaiv.Wikipedia.csproj
new file mode 100644
index 00000000..e4d546f5
--- /dev/null
+++ b/specs/Qowaiv.Wikipedia/Qowaiv.Wikipedia.csproj
@@ -0,0 +1,15 @@
+
+
+
+
+
+ enable
+ net8.0
+ CONTRACTS_FULL
+
+
+
+
+
+
+
diff --git a/specs/Qowaiv.Specs/TestTools/Wikipedia/UnknownLemma.cs b/specs/Qowaiv.Wikipedia/UnknownLemma.cs
similarity index 100%
rename from specs/Qowaiv.Specs/TestTools/Wikipedia/UnknownLemma.cs
rename to specs/Qowaiv.Wikipedia/UnknownLemma.cs
diff --git a/specs/Qowaiv.Specs/TestTools/Wikipedia/Wiki.cs b/specs/Qowaiv.Wikipedia/Wiki.cs
similarity index 100%
rename from specs/Qowaiv.Specs/TestTools/Wikipedia/Wiki.cs
rename to specs/Qowaiv.Wikipedia/Wiki.cs
diff --git a/specs/Qowaiv.Specs/TestTools/Wikipedia/WikiLemma.cs b/specs/Qowaiv.Wikipedia/WikiLemma.cs
similarity index 100%
rename from specs/Qowaiv.Specs/TestTools/Wikipedia/WikiLemma.cs
rename to specs/Qowaiv.Wikipedia/WikiLemma.cs
index d9539629..c0b6f7bb 100644
--- a/specs/Qowaiv.Specs/TestTools/Wikipedia/WikiLemma.cs
+++ b/specs/Qowaiv.Wikipedia/WikiLemma.cs
@@ -87,12 +87,12 @@ private async Task Update()
throw new InvalidOperationException($"GET {Url} responded with {response.StatusCode}: {body}");
}
}
-#endif
-
- public bool HasExpired => !Cached.Exists || (Clock.UtcNow() - Cached.LastWriteTimeUtc) > Expiration;
private static readonly JsonSerializerOptions Options = new()
{
PropertyNameCaseInsensitive = true,
};
+#endif
+
+ public bool HasExpired => !Cached.Exists || (Clock.UtcNow() - Cached.LastWriteTimeUtc) > Expiration;
}
diff --git a/specs/Qowaiv.Specs/TestTools/Wikipedia/WikiLink.cs b/specs/Qowaiv.Wikipedia/WikiLink.cs
similarity index 100%
rename from specs/Qowaiv.Specs/TestTools/Wikipedia/WikiLink.cs
rename to specs/Qowaiv.Wikipedia/WikiLink.cs
diff --git a/specs/Qowaiv.Specs/TestTools/Wikipedia/WikiQueryResult.cs b/specs/Qowaiv.Wikipedia/WikiQueryResult.cs
similarity index 100%
rename from specs/Qowaiv.Specs/TestTools/Wikipedia/WikiQueryResult.cs
rename to specs/Qowaiv.Wikipedia/WikiQueryResult.cs
diff --git a/src/Qowaiv/Financial/IbanParser.cs b/src/Qowaiv/Financial/IbanParser.cs
index 742ce943..50f245b7 100644
--- a/src/Qowaiv/Financial/IbanParser.cs
+++ b/src/Qowaiv/Financial/IbanParser.cs
@@ -27,8 +27,6 @@ internal static partial class IbanParser
if (++pos == 1) continue;
-#pragma warning disable S2589 // Boolean expressions should not be gratuitous
- // FP. See: https://github.com/SonarSource/sonar-dotnet/issues/8474
if (Parsers[id] is { } bban)
{
return bban.Parse(str, index, id);
@@ -41,7 +39,6 @@ internal static partial class IbanParser
prefixed = true;
}
else return null;
-#pragma warning restore S2589 // Boolean expressions should not be gratuitous
}
else if (pos != 0)
{