@@ -10,10 +10,14 @@ private class Bogus { }
1010
1111 private class NonBogus { }
1212
13+ private class AssignableToNonBogus : NonBogus { }
14+
1315 private static readonly Type BogusType = typeof ( Bogus ) ;
1416
1517 private static readonly Type NonBogusType = typeof ( NonBogus ) ;
1618
19+ private static readonly Type AssignableToNonBogusType = typeof ( AssignableToNonBogus ) ;
20+
1721 [ Fact ]
1822 public void IsOfType_WhenNotTypeOf_ThrowsArgumentException ( ) => AssertIsOfTypeScenario (
1923 NonBogusType , BogusType ,
@@ -52,6 +56,56 @@ public void IsNotOfType_WhenIsNotTheType_It_should_not_throw() => ShouldNotThrow
5256 ( ) => Ensure . ThatType ( typeof ( Bogus ) , ParamName ) . IsNotOfType ( NonBogusType ) ,
5357 ( ) => Ensure . ThatTypeFor ( new Bogus ( ) , ParamName ) . IsNotOfType ( NonBogusType ) ) ;
5458
59+ [ Fact ]
60+ public void IsAssignableToType_WhenNotAssignableToType_ThrowsArgumentException ( ) => AssertIsAssignableToTypeScenario (
61+ NonBogusType , BogusType ,
62+ ( ) => Ensure . Type . IsAssignableToType ( typeof ( Bogus ) , NonBogusType , ParamName ) ,
63+ ( ) => Ensure . Type . IsAssignableToType ( new Bogus ( ) , NonBogusType , ParamName ) ,
64+ ( ) => EnsureArg . IsAssignableToType ( typeof ( Bogus ) , NonBogusType , ParamName ) ,
65+ ( ) => EnsureArg . IsAssignableToType ( new Bogus ( ) , NonBogusType , ParamName ) ,
66+ ( ) => Ensure . ThatType ( typeof ( Bogus ) , ParamName ) . IsAssignableToType ( NonBogusType ) ,
67+ ( ) => Ensure . ThatTypeFor ( new Bogus ( ) , ParamName ) . IsAssignableToType ( NonBogusType ) ) ;
68+
69+ [ Fact ]
70+ public void IsAssignableToType_WhenAssignableToType_It_should_not_throw ( ) => ShouldNotThrow (
71+ ( ) => Ensure . Type . IsAssignableToType ( NonBogusType , NonBogusType , ParamName ) ,
72+ ( ) => Ensure . Type . IsAssignableToType ( new NonBogus ( ) , NonBogusType , ParamName ) ,
73+ ( ) => EnsureArg . IsAssignableToType ( NonBogusType , NonBogusType , ParamName ) ,
74+ ( ) => EnsureArg . IsAssignableToType ( new NonBogus ( ) , NonBogusType , ParamName ) ,
75+ ( ) => Ensure . ThatType ( typeof ( NonBogus ) , ParamName ) . IsAssignableToType ( NonBogusType ) ,
76+ ( ) => Ensure . ThatTypeFor ( new NonBogus ( ) , ParamName ) . IsAssignableToType ( NonBogusType ) ,
77+ ( ) => Ensure . Type . IsAssignableToType ( AssignableToNonBogusType , NonBogusType , ParamName ) ,
78+ ( ) => Ensure . Type . IsAssignableToType ( new AssignableToNonBogus ( ) , NonBogusType , ParamName ) ,
79+ ( ) => EnsureArg . IsAssignableToType ( AssignableToNonBogusType , NonBogusType , ParamName ) ,
80+ ( ) => EnsureArg . IsAssignableToType ( new AssignableToNonBogus ( ) , NonBogusType , ParamName ) ,
81+ ( ) => Ensure . ThatType ( typeof ( AssignableToNonBogus ) , ParamName ) . IsAssignableToType ( NonBogusType ) ,
82+ ( ) => Ensure . ThatTypeFor ( new AssignableToNonBogus ( ) , ParamName ) . IsAssignableToType ( NonBogusType ) ) ;
83+
84+ [ Fact ]
85+ public void IsNotAssignableToType_WhenAssignableToType_ThrowsArgumentException ( ) => ShouldThrow < ArgumentException > (
86+ string . Format ( ExceptionMessages . Types_IsNotAssignableToType_Failed , NonBogusType ) ,
87+ ( ) => Ensure . Type . IsNotAssignableToType ( typeof ( NonBogus ) , NonBogusType , ParamName ) ,
88+ ( ) => Ensure . Type . IsNotAssignableToType ( new NonBogus ( ) , NonBogusType , ParamName ) ,
89+ ( ) => EnsureArg . IsNotAssignableToType ( typeof ( NonBogus ) , NonBogusType , ParamName ) ,
90+ ( ) => EnsureArg . IsNotAssignableToType ( new NonBogus ( ) , NonBogusType , ParamName ) ,
91+ ( ) => Ensure . ThatType ( typeof ( NonBogus ) , ParamName ) . IsNotAssignableToType ( NonBogusType ) ,
92+ ( ) => Ensure . ThatTypeFor ( new NonBogus ( ) , ParamName ) . IsNotAssignableToType ( NonBogusType ) ,
93+ ( ) => Ensure . Type . IsNotAssignableToType ( typeof ( AssignableToNonBogus ) , NonBogusType , ParamName ) ,
94+ ( ) => Ensure . Type . IsNotAssignableToType ( new AssignableToNonBogus ( ) , NonBogusType , ParamName ) ,
95+ ( ) => EnsureArg . IsNotAssignableToType ( typeof ( AssignableToNonBogus ) , NonBogusType , ParamName ) ,
96+ ( ) => EnsureArg . IsNotAssignableToType ( new AssignableToNonBogus ( ) , NonBogusType , ParamName ) ,
97+ ( ) => Ensure . ThatType ( typeof ( AssignableToNonBogus ) , ParamName ) . IsNotAssignableToType ( NonBogusType ) ,
98+ ( ) => Ensure . ThatTypeFor ( new AssignableToNonBogus ( ) , ParamName ) . IsNotAssignableToType ( NonBogusType ) ) ;
99+
100+ [ Fact ]
101+ public void IsNotAssignableToType_WhenNotAssignableToType_It_should_not_throw ( ) => ShouldNotThrow (
102+ ( ) => Ensure . Type . IsNotAssignableToType ( BogusType , NonBogusType , ParamName ) ,
103+ ( ) => Ensure . Type . IsNotAssignableToType ( new Bogus ( ) , NonBogusType , ParamName ) ,
104+ ( ) => EnsureArg . IsNotAssignableToType ( BogusType , NonBogusType , ParamName ) ,
105+ ( ) => EnsureArg . IsNotAssignableToType ( new Bogus ( ) , NonBogusType , ParamName ) ,
106+ ( ) => Ensure . ThatType ( typeof ( Bogus ) , ParamName ) . IsNotAssignableToType ( NonBogusType ) ,
107+ ( ) => Ensure . ThatTypeFor ( new Bogus ( ) , ParamName ) . IsNotAssignableToType ( NonBogusType ) ) ;
108+
55109 [ Fact ]
56110 public void IsInt_WhenNotTypeOf_ThrowsArgumentException ( ) => AssertIsOfTypeScenario (
57111 typeof ( int ) , typeof ( decimal ) ,
@@ -258,6 +312,9 @@ public void IsClass_WhenIsClass_It_should_not_throw()
258312 private static void AssertIsOfTypeScenario ( Type expected , Type actual , params Action [ ] actions )
259313 => ShouldThrow < ArgumentException > ( string . Format ( ExceptionMessages . Types_IsOfType_Failed , expected . FullName , actual . FullName ) , actions ) ;
260314
315+ private static void AssertIsAssignableToTypeScenario ( Type expected , Type actual , params Action [ ] actions )
316+ => ShouldThrow < ArgumentException > ( string . Format ( ExceptionMessages . Types_IsAssignableToType_Failed , expected . FullName , actual . FullName ) , actions ) ;
317+
261318 private static void AssertIsNotClass ( Type type , params Action [ ] actions )
262319 => ShouldThrow < ArgumentException > ( string . Format ( ExceptionMessages . Types_IsClass_Failed , type . FullName ) , actions ) ;
263320
0 commit comments