public void ArgumentNotNegative_WhenArgumentNameIsNullOrEmpty_MustNotThrow()
{
var ex1 = Assert.Throws<ArgumentOutOfRangeException>(() => Ensure.ArgumentNotNegative(-1, null));
ex1.ParamName.Should().BeNull();
var ex2 = Assert.Throws<ArgumentOutOfRangeException>(() => Ensure.ArgumentNotNegative(-1, string.Empty));
ex2.ParamName.Should().Be(string.Empty);
var ex3 = Assert.Throws<ArgumentOutOfRangeException>(() => Ensure.ArgumentNotNegative(int.MinValue, null));
ex3.ParamName.Should().BeNull();
var ex4 = Assert.Throws<ArgumentOutOfRangeException>(() => Ensure.ArgumentNotNegative(int.MinValue, string.Empty));
ex4.ParamName.Should().Be(string.Empty);
Assert.DoesNotThrow(() => Ensure.ArgumentNotNegative(1, null));
Assert.DoesNotThrow(() => Ensure.ArgumentNotNegative(1, string.Empty));
Assert.DoesNotThrow(() => Ensure.ArgumentNotNegative(int.MaxValue, null));
Assert.DoesNotThrow(() => Ensure.ArgumentNotNegative(int.MaxValue, string.Empty));
Assert.DoesNotThrow(() => Ensure.ArgumentNotNegative(0, null));
Assert.DoesNotThrow(() => Ensure.ArgumentNotNegative(0, string.Empty));
}