@@ -74,6 +74,49 @@ public static void NotNull<T>(
7474 throw CodeExceptions . ArgumentNull ( argName ) ;
7575 }
7676
77+ /// <summary>
78+ /// Ensures that supplied enumerable is not empty.
79+ /// </summary>
80+ /// <typeparam name="T">Type of item.</typeparam>
81+ /// <param name="arg">Enumerable.</param>
82+ /// <param name="argName">Name of the argument.</param>
83+ [ DebuggerHidden , MethodImpl ( AggressiveInlining ) ]
84+ [ AssertionMethod ]
85+ public static void NotEmpty < T > ( IEnumerable < T > arg , [ NotNull , InvokerParameterName ] string argName )
86+ {
87+ using ( var en = arg . GetEnumerator ( ) )
88+ if ( ! en . MoveNext ( ) )
89+ throw CodeExceptions . ArgumentEmpty ( argName ) ;
90+ }
91+
92+ /// <summary>
93+ /// Ensures that supplied collection is not empty.
94+ /// </summary>
95+ /// <typeparam name="T">Type of item.</typeparam>
96+ /// <param name="arg">Collection.</param>
97+ /// <param name="argName">Name of the argument.</param>
98+ [ DebuggerHidden , MethodImpl ( AggressiveInlining ) ]
99+ [ AssertionMethod ]
100+ public static void NotEmpty < T > ( ICollection < T > arg , [ NotNull , InvokerParameterName ] string argName )
101+ {
102+ if ( arg . Count == 0 )
103+ throw CodeExceptions . ArgumentEmpty ( argName ) ;
104+ }
105+
106+ /// <summary>
107+ /// Ensures that supplied array is not empty.
108+ /// </summary>
109+ /// <typeparam name="T">Type of item.</typeparam>
110+ /// <param name="arg">Array.</param>
111+ /// <param name="argName">Name of the argument.</param>
112+ [ DebuggerHidden , MethodImpl ( AggressiveInlining ) ]
113+ [ AssertionMethod ]
114+ public static void NotEmpty < T > ( T [ ] arg , [ NotNull , InvokerParameterName ] string argName )
115+ {
116+ if ( arg . Length == 0 )
117+ throw CodeExceptions . ArgumentEmpty ( argName ) ;
118+ }
119+
77120 /// <summary>Ensures that <paramref name="arg"/> is not null nor empty</summary>
78121 /// <param name="arg">The argument.</param>
79122 /// <param name="argName">Name of the argument.</param>
@@ -141,7 +184,10 @@ public static void AssertArgument(
141184 /// <param name="arg">Argument value.</param>
142185 /// <param name="argName">Argument name.</param>
143186 /// <returns><see cref="ArgumentAssertion{T}"/> instance.</returns>
144- public static ArgumentAssertion < T > Arg < T > ( T arg , string argName ) => new ArgumentAssertion < T > ( arg , argName ) ;
187+ [ DebuggerHidden , MethodImpl ( AggressiveInlining ) ]
188+ [ AssertionMethod ]
189+ public static ArgumentAssertion < T > Arg < T > ( T arg , [ InvokerParameterName ] string argName ) =>
190+ new ArgumentAssertion < T > ( arg , argName ) ;
145191 #endregion
146192
147193 #region Argument validation - in range
0 commit comments