Skip to content

Commit

Permalink
Add test coverage.
Browse files Browse the repository at this point in the history
  • Loading branch information
Corniel committed Feb 18, 2024
1 parent e670717 commit 5f5ab33
Show file tree
Hide file tree
Showing 29 changed files with 115 additions and 103 deletions.
15 changes: 10 additions & 5 deletions README.md
Expand Up @@ -6,11 +6,12 @@
[![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=Qowaiv_Qowaiv&metric=alert_status)](https://sonarcloud.io/summary/new_code?id=Qowaiv_Qowaiv)
[![Coverage Status](https://coveralls.io/repos/github/Qowaiv/Qowaiv/badge.svg?branch=master)](https://coveralls.io/github/Qowaiv/Qowaiv?branch=master)

| version | downloads | package |
|--------------------------------------------------------------------|-----------------------------------------------------------|-----------------------------------------------------------------------------|
|![v](https://img.shields.io/nuget/v/Qowaiv?color=18C) |![v](https://img.shields.io/nuget/dt/Qowaiv) |[Qowaiv](https://www.nuget.org/packages/Qowaiv/) |
|![v](https://img.shields.io/nuget/v/Qowaiv.Data.SqlClient?color=18C)|![v](https://img.shields.io/nuget/dt/Qowaiv.Data.SqlClient)|[Qowaiv.Data.SqlCient](https://www.nuget.org/packages/Qowaiv.Data.SqlClient/)|
|![v](https://img.shields.io/nuget/v/Qowaiv.TestTools?color=118) |![v](https://img.shields.io/nuget/dt/Qowaiv.TestTools) |[Qowaiv.TestTools](https://www.nuget.org/packages/Qowaiv.TestTools/) |
| version | downloads | package |
|----------------------------------------------------------------------------------|------------------------------------------------------------------|--------------------------------------------------------------------------------|
|![v](https://img.shields.io/nuget/v/Qowaiv?color=18C) |![v](https://img.shields.io/nuget/dt/Qowaiv) |[Qowaiv](https://www.nuget.org/packages/Qowaiv/) |
|![v](https://img.shields.io/nuget/v/Qowaiv.Data.SqlClient?color=18C) |![v](https://img.shields.io/nuget/dt/Qowaiv.Data.SqlClient) |[Qowaiv.Data.SqlCient](https://www.nuget.org/packages/Qowaiv.Data.SqlClient/) |
|![v](https://img.shields.io/nuget/v/Qowaiv.Qowaiv.Diagnostics.Contracts?color=118)|![v](https://img.shields.io/nuget/dt/Qowaiv.Diagnostics.Contracts)|[Qowaiv.TestTools](https://www.nuget.org/packages/Qowaiv.Diagnostics.Contracts/)|
|![v](https://img.shields.io/nuget/v/Qowaiv.TestTools?color=118) |![v](https://img.shields.io/nuget/dt/Qowaiv.TestTools) |[Qowaiv.TestTools](https://www.nuget.org/packages/Qowaiv.TestTools/) |

# Qowaiv

Expand Down Expand Up @@ -1134,3 +1135,7 @@ Since .NET 8.0, Microsoft provides a `TimeProvider`. To benefit from both the
`Qowaiv.Clock` mechanism, and this time provider, the `Clock.TimeProvider`,
a singleton which provides access to `Clock.UtcNow()` and `Clock.TimeZone` is
added.

# Qowaiv Diagnostics Contracts
This packages contains attributes to define (expected) behavior on code
[(..)](src/Qowaiv.Diagnostics.Contracts/README.md)
4 changes: 2 additions & 2 deletions props/common.props
Expand Up @@ -56,8 +56,8 @@

<ItemGroup Label="Analyzers">
<PackageReference Include="AsyncFixer" Version="*" PrivateAssets="all" />
<PackageReference Include="DotNetProjectFile.Analyzers" Version="*" Condition="'$(TargetFramework)'=='net8.0'" />
<PackageReference Include="SonarAnalyzer.CSharp" Version="*" PrivateAssets="all" />
<PackageReference Include="DotNetProjectFile.Analyzers" Version="*" PrivateAssets="all" Condition="'$(TargetFramework)'=='net8.0'" />
<PackageReference Include="SonarAnalyzer.CSharp" Version="*" PrivateAssets="all" />
</ItemGroup>

<ItemGroup Label="Additional files">
Expand Down
28 changes: 28 additions & 0 deletions specs/Qowaiv.Specs/Diagnostics/Contracts/Impure_attribute_specs.cs
@@ -0,0 +1,28 @@
namespace Diagnostics.Contracts.Impure_attribute_specs;

internal class Can_decorate_methods_with
{
[Test]
public void Collection_mutation_attribute()
=> typeof(SomeClass).GetMethod(nameof(SomeClass.CollectionMutation)).Should().BeDecoratedWith<CollectionMutationAttribute>();

[Test]
public void Impure_attribute()
=> typeof(SomeClass).GetMethod(nameof(SomeClass.Impure)).Should().BeDecoratedWith<ImpureAttribute>();

[Test]
public void Fluent_syntax_attribute()
=> typeof(SomeClass).GetMethod(nameof(SomeClass.FluentSyntax)).Should().BeDecoratedWith<FluentSyntaxAttribute>();
}

internal class SomeClass
{
[CollectionMutation]
public bool CollectionMutation(HashSet<SomeClass> set) => set.Add(this);

[Impure]
public static int Impure() => 42;

[FluentSyntax]
public SomeClass FluentSyntax() => this;
}
@@ -0,0 +1,13 @@
namespace Diagnostics.Contracts.Inheritable_attribute_specs;

internal class Can_decorate
{
[Test]
public void Classes()
=> typeof(SomeClass).Should().BeDecoratedWith<InheritableAttribute>();
}

[Inheritable("For test purposes")]
internal class SomeClass
{
}
@@ -0,0 +1,13 @@
namespace Diagnostics.Contracts.Mutable_attribute_specs;

internal class Can_decorate
{
[Test]
public void Classes()
=> typeof(SomeClass).Should().BeDecoratedWith<MutableAttribute>();
}

[Mutable("For test purposes")]
internal class SomeClass
{
}
@@ -0,0 +1,26 @@
namespace Diagnostics.Contracts.Will_be_sealed_attribute_specs;

internal class Can_decorate
{
[Test]
public void Classes()
=> typeof(SomeClass).Should().BeDecoratedWith<WillBeSealedAttribute>();

[Test]
public void Properties()
=> typeof(SomeClass).GetProperty(nameof(SomeClass.Property)).Should().BeDecoratedWith<WillBeSealedAttribute>();

[Test]
public void Methods()
=> typeof(SomeClass).GetMethod(nameof(SomeClass.Method)).Should().BeDecoratedWith<WillBeSealedAttribute>();
}

[WillBeSealed("For test purposes")]
internal class SomeClass
{
[WillBeSealed("No reason to change this property.")]
public virtual int Property { get; } = 42;

[WillBeSealed("No reason to change this method.")]
public virtual int Method() => 42;
}
4 changes: 3 additions & 1 deletion specs/Qowaiv.Specs/Obsolete_code.cs
@@ -1,4 +1,6 @@
namespace Obsolete_code;
using Qowaiv.Diagnostics.Contracts;

namespace Obsolete_code;

[Obsolete("Will be dropped when the next major version is released.")]
public class Will_be_dropped
Expand Down
1 change: 1 addition & 0 deletions specs/Qowaiv.Specs/Qowaiv.Specs.csproj
Expand Up @@ -5,6 +5,7 @@
<PropertyGroup>
<Nullable>enable</Nullable>
<TargetFrameworks>netcoreapp3.1;net6.0;net8.0</TargetFrameworks>
<DefineConstants>CONTRACTS_FULL</DefineConstants>
</PropertyGroup>

<ItemGroup>
Expand Down

This file was deleted.

This file was deleted.

This file was deleted.

2 changes: 1 addition & 1 deletion src/Qowaiv.Data.SqlClient/Properties/GlobalUsings.cs
@@ -1,4 +1,4 @@
global using Qowaiv.Data.SqlClient.Internals.Diagnostics.Contracts;
global using Qowaiv.Diagnostics.Contracts;
global using Qowaiv.Formatting;
global using Qowaiv.Hashing;
global using Qowaiv.OpenApi;
Expand Down
3 changes: 2 additions & 1 deletion src/Qowaiv.Data.SqlClient/Qowaiv.Data.SqlClient.csproj
Expand Up @@ -5,7 +5,7 @@
<PropertyGroup>
<TargetFrameworks>netstandard2.0;net6.0;net8.0</TargetFrameworks>
<GenerateDocumentationFile>true</GenerateDocumentationFile>
<Version>6.4.0</Version>
<Version>7.0.0</Version>
<PackageId>Qowaiv.Data.SqlClient</PackageId>
<PackageReleaseNotes>
v7.0.0
Expand Down Expand Up @@ -39,6 +39,7 @@ v6.0.0

<ItemGroup>
<ProjectReference Include="..\Qowaiv\Qowaiv.csproj" />
<ProjectReference Include="..\..\src\Qowaiv.Diagnostics.Contracts\Qowaiv.Diagnostics.Contracts.csproj" PrivateAssets="all" IncludeAssets="compiler" />

Check warning on line 42 in src/Qowaiv.Data.SqlClient/Qowaiv.Data.SqlClient.csproj

View workflow job for this annotation

GitHub Actions / Build

Project '..\..\src\Qowaiv.Diagnostics.Contracts\Qowaiv.Diagnostics.Contracts.csproj' is not ordered alphabetically and should appear before '..\Qowaiv\Qowaiv.csproj'. (https://dotnet-project-file-analyzers.github.io/rules/Proj0016.html)
</ItemGroup>

</Project>
6 changes: 5 additions & 1 deletion src/Qowaiv.Diagnostics.Contracts/MutableAttribute.cs
Expand Up @@ -3,4 +3,8 @@
/// <summary>Indicates the class is designed to be mutable.</summary>
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Interface, AllowMultiple = false, Inherited = false)]
[Conditional("CONTRACTS_FULL")]
public sealed class MutableAttribute : Attribute { }
public sealed class MutableAttribute : Attribute
{
/// <summary>Initializes a new instance of the <see cref="MutableAttribute"/> class.</summary>
public MutableAttribute(string? message = null) => _ = message;
}
2 changes: 1 addition & 1 deletion src/Qowaiv.Diagnostics.Contracts/README.md
@@ -1,5 +1,5 @@
# Qowaiv Diagnostics Contracts
This packages contains attributes to define (expected) behaviour on code.
This packages contains attributes to define (expected) behavior on code.

## Impure attribute
Opposed to the `[Pure]` attribute, the `[Impure]` attribute indicates that a
Expand Down
2 changes: 1 addition & 1 deletion src/Qowaiv.Diagnostics.Contracts/WillBeSealedAttribute.cs
Expand Up @@ -3,4 +3,4 @@
/// <summary>Indicates the class will be sealed with the next major change.</summary>
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method | AttributeTargets.Property, AllowMultiple = false, Inherited = false)]
[Conditional("CONTRACTS_FULL")]
public sealed class WillBeSealedAttributee(string? message = null) : InheritableAttribute(message) { }
public sealed class WillBeSealedAttribute(string? message = null) : InheritableAttribute(message) { }

This file was deleted.

This file was deleted.

This file was deleted.

2 changes: 1 addition & 1 deletion src/Qowaiv.TestTools/Properties/GlobalUsings.cs
@@ -1,5 +1,5 @@
global using Qowaiv;
global using Qowaiv.Testools.Internals.Diagnostics.Contracts;
global using Qowaiv.Diagnostics.Contracts;
global using System;
global using System.Collections;
global using System.Collections.Generic;
Expand Down
1 change: 1 addition & 0 deletions src/Qowaiv.TestTools/Qowaiv.TestTools.csproj
Expand Up @@ -40,6 +40,7 @@ v6.0.0

<ItemGroup>
<ProjectReference Include="..\..\src\Qowaiv\Qowaiv.csproj" />
<ProjectReference Include="..\..\src\Qowaiv.Diagnostics.Contracts\Qowaiv.Diagnostics.Contracts.csproj" PrivateAssets="all" IncludeAssets="compile" />
</ItemGroup>

</Project>
@@ -1,6 +1,6 @@
using System.Reflection;

namespace Qowaiv.Internals.Diagnostics;
namespace Qowaiv.Diagnostics;

internal static class DebugDisplay
{
Expand Down

This file was deleted.

This file was deleted.

6 changes: 0 additions & 6 deletions src/Qowaiv/Internals/Diagnostics/Contracts/ImpureAttribute.cs

This file was deleted.

10 changes: 0 additions & 10 deletions src/Qowaiv/Internals/Diagnostics/Contracts/InheritableAttribute.cs

This file was deleted.

This file was deleted.

4 changes: 2 additions & 2 deletions src/Qowaiv/Properties/GlobalUsings.cs
@@ -1,8 +1,8 @@
global using Qowaiv.Conversion;
global using Qowaiv.Diagnostics;
global using Qowaiv.Diagnostics.Contracts;
global using Qowaiv.Formatting;
global using Qowaiv.Hashing;
global using Qowaiv.Internals.Diagnostics;
global using Qowaiv.Internals.Diagnostics.Contracts;
global using Qowaiv.OpenApi;
global using Qowaiv.Security;
global using Qowaiv.Text;
Expand Down
4 changes: 4 additions & 0 deletions src/Qowaiv/Qowaiv.csproj
Expand Up @@ -144,4 +144,8 @@ v5.1.2
</EmbeddedResource>
</ItemGroup>

<ItemGroup>
<ProjectReference Include="..\..\src\Qowaiv.Diagnostics.Contracts\Qowaiv.Diagnostics.Contracts.csproj" PrivateAssets="all" IncludeAssets="compiler" />
</ItemGroup>

</Project>

0 comments on commit 5f5ab33

Please sign in to comment.