Skip to content

Commit

Permalink
Merge pull request #111 from danielwertheim/feature-v8-1-0
Browse files Browse the repository at this point in the history
v8.1.0
  • Loading branch information
danielwertheim committed Nov 10, 2018
2 parents 4595580 + 0a994c1 commit 73c5664
Show file tree
Hide file tree
Showing 14 changed files with 180 additions and 2 deletions.
6 changes: 6 additions & 0 deletions ReleaseNotes.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,12 @@
Semantic versioning is used. See http://semver.org for more info. Basically this means that version format is:
_v[Major].[Minor].[Patch]_ and as long as Major hasn't been bumped, you should be able to update without any breaking API changes.

## v8.1.0 - 2018-11-10

**(New)**: Adds `IsEmptyOrWhiteSpace`

**(New)**: Now makes use of `ContractAnnotationAttribute`

## v8.0.0 - 2018-04-29
**(Changed):** The assembly is now signed with a SNK, not for security purposes but for identification purposes and the key is in the repo.

Expand Down
2 changes: 1 addition & 1 deletion buildconfig.cake
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
public class BuildConfig
{
private const string Version = "8.0.0";
private const string Version = "8.1.0";
private const bool IsPreRelease = false;

public readonly string SrcDir = "./src/";
Expand Down
5 changes: 4 additions & 1 deletion src/projects/EnsureThat/Enforcers/AnyArg.cs
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ namespace EnsureThat.Enforcers
public sealed class AnyArg
{
[NotNull]
[ContractAnnotation("value:null => halt")]
public T IsNotNull<T>([NoEnumeration, ValidatedNotNull] T value, [InvokerParameterName] string paramName = null, OptsFn optsFn = null) where T : class
{
if (value == null)
Expand All @@ -14,7 +15,9 @@ public T IsNotNull<T>([NoEnumeration, ValidatedNotNull] T value, [InvokerParamet
return value;
}

public T? IsNotNull<T>(T? value, [InvokerParameterName] string paramName = null, OptsFn optsFn = null) where T : struct
[NotNull]
[ContractAnnotation("value:null => halt")]
public T? IsNotNull<T>([ValidatedNotNull] T? value, [InvokerParameterName] string paramName = null, OptsFn optsFn = null) where T : struct
{
if (value == null)
throw Ensure.ExceptionFactory.ArgumentNullException(ExceptionMessages.Common_IsNotNull_Failed, paramName, optsFn);
Expand Down
26 changes: 26 additions & 0 deletions src/projects/EnsureThat/Enforcers/CollectionArg.cs
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ namespace EnsureThat.Enforcers
public sealed class CollectionArg
{
[NotNull]
[ContractAnnotation("value:null => halt")]
public T HasItems<T>([ValidatedNotNull]T value, [InvokerParameterName] string paramName = null, OptsFn optsFn = null) where T : class, ICollection
{
Ensure.Any.IsNotNull(value, paramName);
Expand All @@ -25,6 +26,7 @@ public T HasItems<T>([ValidatedNotNull]T value, [InvokerParameterName] string pa
}

[NotNull]
[ContractAnnotation("value:null => halt")]
public ICollection<T> HasItems<T>([ValidatedNotNull]ICollection<T> value, [InvokerParameterName] string paramName = null, OptsFn optsFn = null)
{
Ensure.Any.IsNotNull(value, paramName);
Expand All @@ -39,6 +41,7 @@ public ICollection<T> HasItems<T>([ValidatedNotNull]ICollection<T> value, [Invok
}

[NotNull]
[ContractAnnotation("value:null => halt")]
public IReadOnlyCollection<T> HasItems<T>([ValidatedNotNull]IReadOnlyCollection<T> value, [InvokerParameterName] string paramName = null, OptsFn optsFn = null)
{
Ensure.Any.IsNotNull(value, paramName);
Expand All @@ -53,6 +56,7 @@ public IReadOnlyCollection<T> HasItems<T>([ValidatedNotNull]IReadOnlyCollection<
}

[NotNull]
[ContractAnnotation("value:null => halt")]
public IReadOnlyList<T> HasItems<T>([ValidatedNotNull]IReadOnlyList<T> value, [InvokerParameterName] string paramName = null, OptsFn optsFn = null)
{
Ensure.Any.IsNotNull(value, paramName);
Expand All @@ -67,6 +71,7 @@ public IReadOnlyList<T> HasItems<T>([ValidatedNotNull]IReadOnlyList<T> value, [I
}

[NotNull]
[ContractAnnotation("value:null => halt")]
public ISet<T> HasItems<T>([ValidatedNotNull]ISet<T> value, [InvokerParameterName] string paramName = null, OptsFn optsFn = null)
{
Ensure.Any.IsNotNull(value, paramName);
Expand All @@ -81,6 +86,7 @@ public ISet<T> HasItems<T>([ValidatedNotNull]ISet<T> value, [InvokerParameterNam
}

[NotNull]
[ContractAnnotation("value:null => halt")]
public T[] HasItems<T>([ValidatedNotNull]T[] value, [InvokerParameterName] string paramName = null, OptsFn optsFn = null)
{
Ensure.Any.IsNotNull(value, paramName);
Expand All @@ -95,6 +101,7 @@ public T[] HasItems<T>([ValidatedNotNull]T[] value, [InvokerParameterName] strin
}

[NotNull]
[ContractAnnotation("value:null => halt")]
public IList<T> HasItems<T>([ValidatedNotNull] IList<T> value, [InvokerParameterName] string paramName = null, OptsFn optsFn = null)
{
Ensure.Any.IsNotNull(value, paramName);
Expand All @@ -109,6 +116,7 @@ public IList<T> HasItems<T>([ValidatedNotNull] IList<T> value, [InvokerParameter
}

[NotNull]
[ContractAnnotation("value:null => halt")]
public IDictionary<TKey, TValue> HasItems<TKey, TValue>([ValidatedNotNull]IDictionary<TKey, TValue> value, [InvokerParameterName] string paramName = null, OptsFn optsFn = null)
{
Ensure.Any.IsNotNull(value, paramName);
Expand All @@ -123,6 +131,7 @@ public IDictionary<TKey, TValue> HasItems<TKey, TValue>([ValidatedNotNull]IDicti
}

[NotNull]
[ContractAnnotation("value:null => halt")]
public Collection<T> HasItems<T>([ValidatedNotNull] Collection<T> value, [InvokerParameterName] string paramName = null, OptsFn optsFn = null)
{
Ensure.Any.IsNotNull(value, paramName);
Expand All @@ -137,6 +146,7 @@ public Collection<T> HasItems<T>([ValidatedNotNull] Collection<T> value, [Invoke
}

[NotNull]
[ContractAnnotation("value:null => halt")]
public List<T> HasItems<T>([ValidatedNotNull] List<T> value, [InvokerParameterName] string paramName = null, OptsFn optsFn = null)
{
Ensure.Any.IsNotNull(value, paramName);
Expand All @@ -151,6 +161,7 @@ public List<T> HasItems<T>([ValidatedNotNull] List<T> value, [InvokerParameterNa
}

[NotNull]
[ContractAnnotation("value:null => halt")]
public HashSet<T> HasItems<T>([ValidatedNotNull] HashSet<T> value, [InvokerParameterName] string paramName = null, OptsFn optsFn = null)
{
Ensure.Any.IsNotNull(value, paramName);
Expand All @@ -165,6 +176,7 @@ public HashSet<T> HasItems<T>([ValidatedNotNull] HashSet<T> value, [InvokerParam
}

[NotNull]
[ContractAnnotation("value:null => halt")]
public Dictionary<TKey, TValue> HasItems<TKey, TValue>([ValidatedNotNull]Dictionary<TKey, TValue> value, [InvokerParameterName] string paramName = null, OptsFn optsFn = null)
{
Ensure.Any.IsNotNull(value, paramName);
Expand All @@ -179,6 +191,7 @@ public Dictionary<TKey, TValue> HasItems<TKey, TValue>([ValidatedNotNull]Diction
}

[NotNull]
[ContractAnnotation("value:null => halt")]
public T[] SizeIs<T>([ValidatedNotNull]T[] value, int expected, [InvokerParameterName] string paramName = null, OptsFn optsFn = null)
{
Ensure.Any.IsNotNull(value, paramName);
Expand All @@ -193,6 +206,7 @@ public T[] SizeIs<T>([ValidatedNotNull]T[] value, int expected, [InvokerParamete
}

[NotNull]
[ContractAnnotation("value:null => halt")]
public T[] SizeIs<T>([ValidatedNotNull]T[] value, long expected, [InvokerParameterName] string paramName = null, OptsFn optsFn = null)
{
Ensure.Any.IsNotNull(value, paramName);
Expand All @@ -211,6 +225,7 @@ public T[] SizeIs<T>([ValidatedNotNull]T[] value, long expected, [InvokerParamet
}

[NotNull]
[ContractAnnotation("value:null => halt")]
public T SizeIs<T>([ValidatedNotNull]T value, int expected, [InvokerParameterName] string paramName = null, OptsFn optsFn = null) where T : class, ICollection
{
Ensure.Any.IsNotNull(value, paramName);
Expand All @@ -225,6 +240,7 @@ public T SizeIs<T>([ValidatedNotNull]T value, int expected, [InvokerParameterNam
}

[NotNull]
[ContractAnnotation("value:null => halt")]
public T SizeIs<T>([ValidatedNotNull]T value, long expected, [InvokerParameterName] string paramName = null, OptsFn optsFn = null) where T : class, ICollection
{
Ensure.Any.IsNotNull(value, paramName);
Expand All @@ -239,6 +255,7 @@ public T SizeIs<T>([ValidatedNotNull]T value, long expected, [InvokerParameterNa
}

[NotNull]
[ContractAnnotation("value:null => halt")]
public ICollection<T> SizeIs<T>([ValidatedNotNull]ICollection<T> value, int expected, [InvokerParameterName] string paramName = null, OptsFn optsFn = null)
{
Ensure.Any.IsNotNull(value, paramName);
Expand All @@ -253,6 +270,7 @@ public ICollection<T> SizeIs<T>([ValidatedNotNull]ICollection<T> value, int expe
}

[NotNull]
[ContractAnnotation("value:null => halt")]
public ICollection<T> SizeIs<T>([ValidatedNotNull]ICollection<T> value, long expected, [InvokerParameterName] string paramName = null, OptsFn optsFn = null)
{
Ensure.Any.IsNotNull(value, paramName);
Expand All @@ -267,6 +285,7 @@ public ICollection<T> SizeIs<T>([ValidatedNotNull]ICollection<T> value, long exp
}

[NotNull]
[ContractAnnotation("value:null => halt")]
public IList<T> SizeIs<T>([ValidatedNotNull] IList<T> value, int expected, [InvokerParameterName] string paramName = null, OptsFn optsFn = null)
{
Ensure.Any.IsNotNull(value, paramName);
Expand All @@ -281,6 +300,7 @@ public IList<T> SizeIs<T>([ValidatedNotNull] IList<T> value, int expected, [Invo
}

[NotNull]
[ContractAnnotation("value:null => halt")]
public IList<T> SizeIs<T>([ValidatedNotNull]IList<T> value, long expected, [InvokerParameterName] string paramName = null, OptsFn optsFn = null)
{
Ensure.Any.IsNotNull(value, paramName);
Expand All @@ -295,6 +315,7 @@ public IList<T> SizeIs<T>([ValidatedNotNull]IList<T> value, long expected, [Invo
}

[NotNull]
[ContractAnnotation("value:null => halt")]
public IDictionary<TKey, TValue> SizeIs<TKey, TValue>([ValidatedNotNull]IDictionary<TKey, TValue> value, int expected, [InvokerParameterName] string paramName = null, OptsFn optsFn = null)
{
Ensure.Any.IsNotNull(value, paramName);
Expand All @@ -309,6 +330,7 @@ public IDictionary<TKey, TValue> SizeIs<TKey, TValue>([ValidatedNotNull]IDiction
}

[NotNull]
[ContractAnnotation("value:null => halt")]
public IDictionary<TKey, TValue> SizeIs<TKey, TValue>([ValidatedNotNull]IDictionary<TKey, TValue> value, long expected, [InvokerParameterName] string paramName = null, OptsFn optsFn = null)
{
Ensure.Any.IsNotNull(value, paramName);
Expand All @@ -323,6 +345,7 @@ public IDictionary<TKey, TValue> SizeIs<TKey, TValue>([ValidatedNotNull]IDiction
}

[NotNull]
[ContractAnnotation("value:null => halt")]
public IDictionary<TKey, TValue> ContainsKey<TKey, TValue>([ValidatedNotNull]IDictionary<TKey, TValue> value, TKey expectedKey, [InvokerParameterName] string paramName = null, OptsFn optsFn = null)
{
Ensure.Any.IsNotNull(value, paramName);
Expand All @@ -337,6 +360,7 @@ public IDictionary<TKey, TValue> ContainsKey<TKey, TValue>([ValidatedNotNull]IDi
}

[NotNull]
[ContractAnnotation("value:null => halt")]
public IList<T> HasAny<T>([ValidatedNotNull]IList<T> value, Func<T, bool> predicate, [InvokerParameterName] string paramName = null, OptsFn optsFn = null)
{
Ensure.Any.IsNotNull(value, paramName);
Expand All @@ -351,6 +375,7 @@ public IList<T> HasAny<T>([ValidatedNotNull]IList<T> value, Func<T, bool> predic
}

[NotNull]
[ContractAnnotation("value:null => halt")]
public ICollection<T> HasAny<T>([ValidatedNotNull]ICollection<T> value, Func<T, bool> predicate, [InvokerParameterName] string paramName = null, OptsFn optsFn = null)
{
Ensure.Any.IsNotNull(value, paramName);
Expand All @@ -365,6 +390,7 @@ public ICollection<T> HasAny<T>([ValidatedNotNull]ICollection<T> value, Func<T,
}

[NotNull]
[ContractAnnotation("value:null => halt")]
public T[] HasAny<T>([ValidatedNotNull]T[] value, Func<T, bool> predicate, [InvokerParameterName] string paramName = null, OptsFn optsFn = null)
{
Ensure.Any.IsNotNull(value, paramName);
Expand Down
4 changes: 4 additions & 0 deletions src/projects/EnsureThat/Enforcers/EnumerableArg.cs
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ namespace EnsureThat.Enforcers
public sealed class EnumerableArg
{
[NotNull]
[ContractAnnotation("value:null => halt")]
public IEnumerable<T> HasItems<T>([ValidatedNotNull, InstantHandle]IEnumerable<T> value, [InvokerParameterName] string paramName = null, OptsFn optsFn = null)
{
Ensure.Any.IsNotNull(value, paramName);
Expand All @@ -29,6 +30,7 @@ public IEnumerable<T> HasItems<T>([ValidatedNotNull, InstantHandle]IEnumerable<T
}

[NotNull]
[ContractAnnotation("value:null => halt")]
public IEnumerable<T> SizeIs<T>([ValidatedNotNull, InstantHandle]IEnumerable<T> value, int expected, [InvokerParameterName] string paramName = null, OptsFn optsFn = null)
{
Ensure.Any.IsNotNull(value, paramName);
Expand All @@ -45,6 +47,7 @@ public IEnumerable<T> SizeIs<T>([ValidatedNotNull, InstantHandle]IEnumerable<T>
}

[NotNull]
[ContractAnnotation("value:null => halt")]
public IEnumerable<T> SizeIs<T>([ValidatedNotNull, InstantHandle]IEnumerable<T> value, long expected, [InvokerParameterName] string paramName = null, OptsFn optsFn = null)
{
Ensure.Any.IsNotNull(value, paramName);
Expand All @@ -67,6 +70,7 @@ public IEnumerable<T> SizeIs<T>([ValidatedNotNull, InstantHandle]IEnumerable<T>
}

[NotNull]
[ContractAnnotation("value:null => halt")]
public IEnumerable<T> HasAny<T>([ValidatedNotNull, InstantHandle]IEnumerable<T> value, Func<T, bool> predicate, [InvokerParameterName] string paramName = null, OptsFn optsFn = null)
{
Ensure.Any.IsNotNull(value, paramName);
Expand Down
28 changes: 28 additions & 0 deletions src/projects/EnsureThat/Enforcers/StringArg.cs
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ namespace EnsureThat.Enforcers
public sealed class StringArg
{
[NotNull]
[ContractAnnotation("value:null => halt")]
public string IsNotNull([ValidatedNotNull]string value, [InvokerParameterName] string paramName = null, OptsFn optsFn = null)
{
Ensure.Any.IsNotNull(value, paramName, optsFn);
Expand All @@ -16,6 +17,7 @@ public string IsNotNull([ValidatedNotNull]string value, [InvokerParameterName] s
}

[NotNull]
[ContractAnnotation("value:null => halt")]
public string IsNotNullOrWhiteSpace([ValidatedNotNull]string value, [InvokerParameterName] string paramName = null, OptsFn optsFn = null)
{
Ensure.Any.IsNotNull(value, paramName, optsFn);
Expand All @@ -37,6 +39,27 @@ public string IsNotNullOrEmpty([ValidatedNotNull]string value, [InvokerParameter
return value;
}

public string IsNotEmptyOrWhitespace(string value, [InvokerParameterName] string paramName = null, OptsFn optsFn = null)
{
if (value == null)
{
return null;
}

if (value.Length == 0)
{
throw Ensure.ExceptionFactory.ArgumentException(ExceptionMessages.Strings_IsNotEmptyOrWhitespace_Failed, paramName, optsFn);
}
foreach (var t in value)
{
if (Char.IsWhiteSpace(t))
{
throw Ensure.ExceptionFactory.ArgumentException(ExceptionMessages.Strings_IsNotEmptyOrWhitespace_Failed, paramName, optsFn);
}
}
return value;
}

public string IsNotEmpty(string value, [InvokerParameterName] string paramName = null, OptsFn optsFn = null)
{
if (value?.Length == 0)
Expand All @@ -46,6 +69,7 @@ public string IsNotEmpty(string value, [InvokerParameterName] string paramName =
}

[NotNull]
[ContractAnnotation("value:null => halt")]
public string HasLengthBetween([ValidatedNotNull]string value, int minLength, int maxLength, [InvokerParameterName] string paramName = null, OptsFn optsFn = null)
{
Ensure.Any.IsNotNull(value, paramName, optsFn);
Expand Down Expand Up @@ -84,6 +108,7 @@ public string Matches(string value, Regex match, [InvokerParameterName] string p
}

[NotNull]
[ContractAnnotation("value:null => halt")]
public string SizeIs([ValidatedNotNull]string value, int expected, [InvokerParameterName] string paramName = null, OptsFn optsFn = null)
{
Ensure.Any.IsNotNull(value, paramName, optsFn);
Expand Down Expand Up @@ -154,6 +179,7 @@ public string IsNotEqualTo(string value, string notExpected, StringComparison co
}

[NotNull]
[ContractAnnotation("value:null => halt")]
public string IsGuid([ValidatedNotNull]string value, [InvokerParameterName] string paramName = null, OptsFn optsFn = null)
{
if (!Guid.TryParse(value, out _))
Expand All @@ -166,6 +192,7 @@ public string IsGuid([ValidatedNotNull]string value, [InvokerParameterName] stri
}

[NotNull]
[ContractAnnotation("value:null => halt")]
public string StartsWith([ValidatedNotNull]string value, [NotNull] string expectedStartsWith, [InvokerParameterName] string paramName = null, OptsFn optsFn = null)
{
Ensure.Any.IsNotNull(value, paramName, optsFn);
Expand All @@ -180,6 +207,7 @@ public string StartsWith([ValidatedNotNull]string value, [NotNull] string expect
}

[NotNull]
[ContractAnnotation("value:null => halt")]
public string StartsWith([ValidatedNotNull]string value, [NotNull] string expectedStartsWith, StringComparison comparison, [InvokerParameterName] string paramName = null, OptsFn optsFn = null)
{
Ensure.Any.IsNotNull(value, paramName, optsFn);
Expand Down
Loading

0 comments on commit 73c5664

Please sign in to comment.