SafeAgainst 2.0.0

There is a newer version of this package available.
See the version list below for details.
dotnet add package SafeAgainst --version 2.0.0
NuGet\Install-Package SafeAgainst -Version 2.0.0
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="SafeAgainst" Version="2.0.0" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add SafeAgainst --version 2.0.0
#r "nuget: SafeAgainst, 2.0.0"
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install SafeAgainst as a Cake Addin
#addin nuget:?package=SafeAgainst&version=2.0.0

// Install SafeAgainst as a Cake Tool
#tool nuget:?package=SafeAgainst&version=2.0.0

SafeAgainst

Provides functionality for creation of both synchronous and asynchronous generic guard clauses with custom preconditions and already contains implementation of basic ones for Collections, Enums, Strings, Objects and Numeric types.

Usage

  1. Eliminate Leading or trailing white spaces
  • passing value by reference:
    // Arrange
    var expectedValue = "Without leading or trailing whitespaces";
    var value = $"   {expectedValue}   ";

    // Act
    StringGuards.Safe.AgainstLeadingOrTrailingWhiteSpaces(ref value);

    // Assert
    Assert.Equal(expectedValue, value);
  • or using a SafeContainer:
    // Arrange
    var expectedValue = "Without leading or trailing whitespaces";
    var value = $"   {expectedValue}   ";
    var container = SafeContainer.Create(value);

    // Act
    StringGuards.Safe.AgainstLeadingOrTrailingWhiteSpaces(container);
    value = container.Value;

    // Assert
    Assert.Equal(expectedValue, value);
  1. Assigning a predefined value, if enum contains an invalid one
  • passing value by reference:
internal enum PowerOfTwo
{
    One = 1,
    Two = 2,
    Four = 4,
    Eight = 8,
    Sixteen = 16
};
    // Arrange
    PowerOfTwo powerOfTwo = default;
    var initialValue = powerOfTwo;

    // Act
    EnumGuards.Safe<PowerOfTwo>.AgainstNotInRange(ref powerOfTwo, PowerOfTwo.One);

    // Assert
    Assert.True(initialValue == 0);
    Assert.Equal(powerOfTwo, PowerOfTwo.One);
  • or using a SafeContainer:
    // Arrange
    PowerOfTwo powerOfTwo = default;
    var initialValue = powerOfTwo;
    var container = SafeContainer<PowerOfTwo>.Create(powerOfTwo);

    // Act
    EnumGuards.Safe<PowerOfTwo>.AgainstNotInRange(container, PowerOfTwo.One);
    powerOfTwo = container.Value;

    // Assert
    Assert.True(initialValue == 0);
    Assert.Equal(PowerOfTwo.One, powerOfTwo);
  1. Eliminating NULL elements from collection:
  • passing value by reference:
    // Arrange
    IEnumerable<int?> enumeration = Enumerable.Empty<int?>()
        .Append(2)
        .Append(10)
        .Append(null)
        .Append(1);

    // Act
    CollectionGuards.Safe<int?>.AgainstNullElements(ref enumeration);

    // Assert
    Assert.DoesNotContain(enumeration, x => x == null);
    Assert.Contains(enumeration, x => x != null);
    Assert.True(enumeration.ToList().Count == 3);
  • or using a SafeContainer:
    // Arrange
    IEnumerable<int?> enumeration = Enumerable.Empty<int?>()
        .Append(2)
        .Append(10)
        .Append(null)
        .Append(1);
    var container = SafeContainer.Create(enumeration);

    // Act
    CollectionGuards.Safe<int?>.AgainstNullElements(container);
    enumeration = container.Value;

    // Assert
    Assert.DoesNotContain(enumeration, x => x == null);
    Assert.Contains(enumeration, x => x != null);
    Assert.True(enumeration.ToList().Count == 3);

See way much more examples in the unit tests from the corresponding source repository.

Global Picture

General picture

Product Compatible and additional computed target framework versions.
.NET net5.0 was computed.  net5.0-windows was computed.  net6.0 was computed.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 was computed.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 was computed.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed. 
.NET Core netcoreapp2.0 is compatible.  netcoreapp2.1 was computed.  netcoreapp2.2 was computed.  netcoreapp3.0 was computed.  netcoreapp3.1 was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
  • .NETCoreApp 2.0

    • No dependencies.

NuGet packages (1)

Showing the top 1 NuGet packages that depend on SafeAgainst:

Package Downloads
SafeAgainst.Extensions

Provides extension methods for both synchronous and asynchronous guard clauses for generic types, as well as for Enums, Objects, Collections, Strings, and various numeric types encapsulated in 'SafeContainer'.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
8.0.1 106 6/2/2024
8.0.0 112 2/24/2024
7.0.0 102 2/17/2024
6.0.0 112 2/10/2024
5.0.0 95 2/4/2024
3.1.0 101 1/27/2024
3.0.0 117 1/17/2024
2.2.0 113 1/13/2024
2.1.0 127 1/7/2024
2.0.0 133 1/3/2024
1.1.0 132 12/30/2023
1.0.0 122 12/27/2023

Migrated to .Net Core 2.0