// // Copyright (c) James Jackson-South and contributors. // Licensed under the Apache License, Version 2.0. // namespace ImageProcessorCore.Tests.Helpers { using System; using System.Diagnostics.CodeAnalysis; using Xunit; /// /// Tests the helper. /// public class GuardTests { /// /// Tests that the method throws when the argument is null. /// [Fact] public void NotNullThrowsWhenArgIsNull() { Assert.Throws(() => Guard.NotNull(null, "foo")); } /// /// Tests that the method throws when the argument name is empty. /// [Fact] public void NotNullThrowsWhenArgNameEmpty() { Assert.Throws(() => Guard.NotNull(null, string.Empty)); } /// /// Tests that the method throws when the argument is empty. /// [Fact] [SuppressMessage("StyleCop.CSharp.ReadabilityRules", "SA1122:UseStringEmptyForEmptyStrings", Justification = "Reviewed. Suppression is OK here.")] public void NotEmptyThrowsWhenEmpty() { Assert.Throws(() => Guard.NotNullOrEmpty("", string.Empty)); } /// /// Tests that the method throws when the argument is whitespace. /// [Fact] public void NotEmptyThrowsWhenWhitespace() { Assert.Throws(() => Guard.NotNullOrEmpty(" ", string.Empty)); } /// /// Tests that the method throws when the argument name is null. /// [Fact] public void NotEmptyThrowsWhenParameterNameNull() { Assert.Throws(() => Guard.NotNullOrEmpty(null, null)); } /// /// Tests that the method throws when the argument is greater. /// [Fact] public void LessThanThrowsWhenArgIsGreater() { Assert.Throws(() => Guard.MustBeLessThan(1, 0, "foo")); } /// /// Tests that the method throws when the argument is equal. /// [Fact] public void LessThanThrowsWhenArgIsEqual() { Assert.Throws(() => Guard.MustBeLessThan(1, 1, "foo")); } /// /// Tests that the method throws when the argument is greater. /// [Fact] public void LessThanOrEqualToThrowsWhenArgIsGreater() { Assert.Throws(() => Guard.MustBeLessThanOrEqualTo(1, 0, "foo")); } /// /// Tests that the method does not throw when the argument /// is less. /// [Fact] public void LessThanOrEqualToDoesNotThrowWhenArgIsLess() { Exception ex = Record.Exception(() => Guard.MustBeLessThanOrEqualTo(0, 1, "foo")); Assert.Null(ex); } /// /// Tests that the method does not throw when the argument /// is equal. /// [Fact] public void LessThanOrEqualToDoesNotThrowWhenArgIsEqual() { Exception ex = Record.Exception(() => Guard.MustBeLessThanOrEqualTo(1, 1, "foo")); Assert.Equal(1, 1); Assert.Null(ex); } /// /// Tests that the method throws when the argument is greater. /// [Fact] public void GreaterThanThrowsWhenArgIsLess() { Assert.Throws(() => Guard.MustBeGreaterThan(0, 1, "foo")); } /// /// Tests that the method throws when the argument is greater. /// [Fact] public void GreaterThanThrowsWhenArgIsEqual() { Assert.Throws(() => Guard.MustBeGreaterThan(1, 1, "foo")); } /// /// Tests that the method throws when the argument name is greater. /// [Fact] public void GreaterThanOrEqualToThrowsWhenArgIsLess() { Assert.Throws(() => Guard.MustBeGreaterThanOrEqualTo(0, 1, "foo")); } /// /// Tests that the method does not throw when the argument /// is less. /// [Fact] public void GreaterThanOrEqualToDoesNotThrowWhenArgIsGreater() { Exception ex = Record.Exception(() => Guard.MustBeGreaterThanOrEqualTo(1, 0, "foo")); Assert.Null(ex); } /// /// Tests that the method does not throw when the argument /// is equal. /// [Fact] public void GreaterThanOrEqualToDoesNotThrowWhenArgIsEqual() { Exception ex = Record.Exception(() => Guard.MustBeGreaterThanOrEqualTo(1, 1, "foo")); Assert.Equal(1, 1); Assert.Null(ex); } /// /// Tests that the method throws when the argument is less. /// [Fact] public void BetweenOrEqualToThrowsWhenArgIsLess() { Assert.Throws(() => Guard.MustBeBetweenOrEqualTo(-2, -1, 1, "foo")); } /// /// Tests that the method throws when the argument is greater. /// [Fact] public void BetweenOrEqualToThrowsWhenArgIsGreater() { Assert.Throws(() => Guard.MustBeBetweenOrEqualTo(2, -1, 1, "foo")); } /// /// Tests that the method does not throw when the argument /// is equal. /// [Fact] public void BetweenOrEqualToDoesNotThrowWhenArgIsEqual() { Exception ex = Record.Exception(() => Guard.MustBeBetweenOrEqualTo(1, 1, 1, "foo")); Assert.Null(ex); } /// /// Tests that the method does not throw when the argument /// is equal. /// [Fact] public void BetweenOrEqualToDoesNotThrowWhenArgIsBetween() { Exception ex = Record.Exception(() => Guard.MustBeBetweenOrEqualTo(0, -1, 1, "foo")); Assert.Null(ex); } /// /// Tests that the method throws when the argument is false. /// [Fact] public void IsTrueThrowsWhenArgIsFalse() { Assert.Throws(() => Guard.IsTrue(false, "foo")); } /// /// Tests that the method does not throw when the argument is true. /// [Fact] public void IsTrueDoesThrowsWhenArgIsTrue() { Exception ex = Record.Exception(() => Guard.IsTrue(true, "foo")); Assert.Null(ex); } /// /// Tests that the method throws when the argument is true. /// [Fact] public void IsFalseThrowsWhenArgIsFalse() { Assert.Throws(() => Guard.IsFalse(true, "foo")); } /// /// Tests that the method does not throw when the argument is false. /// [Fact] public void IsFalseDoesThrowsWhenArgIsTrue() { Exception ex = Record.Exception(() => Guard.IsFalse(false, "foo")); Assert.Null(ex); } } }