public void ArgumentTypeAssignableFrom_WhenArgumentNameIsNullOrEmpty_MustNotThrow()
{
Assert.DoesNotThrow(() => Ensure.ArgumentTypeAssignableFrom(typeof(IInterface), typeof(ImplementedClass), null));
Assert.DoesNotThrow(() => Ensure.ArgumentTypeAssignableFrom(typeof(IInterface), typeof(IInheritedInterface), null));
Assert.DoesNotThrow(() => Ensure.ArgumentTypeAssignableFrom(typeof(IInterface), typeof(InheritedClass), null));
Assert.DoesNotThrow(() => Ensure.ArgumentTypeAssignableFrom(typeof(IInterface), typeof(ImplementedInheritedClass), null));
Assert.DoesNotThrow(() => Ensure.ArgumentTypeAssignableFrom(typeof(IInheritedInterface), typeof(ImplementedInheritedClass), null));
Assert.DoesNotThrow(() => Ensure.ArgumentTypeAssignableFrom(typeof(ImplementedClass), typeof(InheritedClass), null));
Assert.DoesNotThrow(() => Ensure.ArgumentTypeAssignableFrom(typeof(IInterface), typeof(ImplementedClass), string.Empty));
Assert.DoesNotThrow(() => Ensure.ArgumentTypeAssignableFrom(typeof(IInterface), typeof(IInheritedInterface), string.Empty));
Assert.DoesNotThrow(() => Ensure.ArgumentTypeAssignableFrom(typeof(IInterface), typeof(InheritedClass), string.Empty));
Assert.DoesNotThrow(() => Ensure.ArgumentTypeAssignableFrom(typeof(IInterface), typeof(ImplementedInheritedClass), string.Empty));
Assert.DoesNotThrow(() => Ensure.ArgumentTypeAssignableFrom(typeof(IInheritedInterface), typeof(ImplementedInheritedClass), string.Empty));
Assert.DoesNotThrow(() => Ensure.ArgumentTypeAssignableFrom(typeof(ImplementedClass), typeof(InheritedClass), string.Empty));
var ex1 = Assert.Throws<ArgumentException>(() => Ensure.ArgumentTypeAssignableFrom(typeof(IInterface), typeof(NotImplementedClass), null));
ex1.ParamName.Should().BeNull();
var ex2 = Assert.Throws<ArgumentException>(() => Ensure.ArgumentTypeAssignableFrom(typeof(IInterface), typeof(IOtherInterface), null));
ex2.ParamName.Should().BeNull();
var ex3 = Assert.Throws<ArgumentException>(() => Ensure.ArgumentTypeAssignableFrom(typeof(ImplementedClass), typeof(IInterface), null));
ex3.ParamName.Should().BeNull();
var ex4 = Assert.Throws<ArgumentException>(() => Ensure.ArgumentTypeAssignableFrom(typeof(IInheritedInterface), typeof(IInterface), null));
ex4.ParamName.Should().BeNull();
var ex5 = Assert.Throws<ArgumentException>(() => Ensure.ArgumentTypeAssignableFrom(typeof(ImplementedClass), typeof(ImplementedInheritedClass), null));
ex5.ParamName.Should().BeNull();
var ex6 = Assert.Throws<ArgumentException>(() => Ensure.ArgumentTypeAssignableFrom(typeof(IInterface), typeof(NotImplementedClass), string.Empty));
ex6.ParamName.Should().Be(string.Empty);
var ex7 = Assert.Throws<ArgumentException>(() => Ensure.ArgumentTypeAssignableFrom(typeof(IInterface), typeof(IOtherInterface), string.Empty));
ex7.ParamName.Should().Be(string.Empty);
var ex8 = Assert.Throws<ArgumentException>(() => Ensure.ArgumentTypeAssignableFrom(typeof(ImplementedClass), typeof(IInterface), string.Empty));
ex8.ParamName.Should().Be(string.Empty);
var ex9 = Assert.Throws<ArgumentException>(() => Ensure.ArgumentTypeAssignableFrom(typeof(IInheritedInterface), typeof(IInterface), string.Empty));
ex9.ParamName.Should().Be(string.Empty);
var ex0 = Assert.Throws<ArgumentException>(() => Ensure.ArgumentTypeAssignableFrom(typeof(ImplementedClass), typeof(ImplementedInheritedClass), string.Empty));
ex0.ParamName.Should().Be(string.Empty);
}