A game about forced loneliness, made by TACStudios
1using System; 2using System.Collections; 3using System.Collections.Generic; 4using System.Linq; 5 6namespace Unity.VisualScripting 7{ 8 public partial class EnsureThat 9 { 10 public void HasItems<T>(T value) where T : class, ICollection 11 { 12 if (!Ensure.IsActive) 13 { 14 return; 15 } 16 17 IsNotNull(value); 18 19 if (value.Count < 1) 20 { 21 throw new ArgumentException(ExceptionMessages.Collections_HasItemsFailed, paramName); 22 } 23 } 24 25 public void HasItems<T>(ICollection<T> value) 26 { 27 if (!Ensure.IsActive) 28 { 29 return; 30 } 31 32 IsNotNull(value); 33 34 if (value.Count < 1) 35 { 36 throw new ArgumentException(ExceptionMessages.Collections_HasItemsFailed, paramName); 37 } 38 } 39 40 public void HasItems<T>(T[] value) 41 { 42 if (!Ensure.IsActive) 43 { 44 return; 45 } 46 47 IsNotNull(value); 48 49 if (value.Length < 1) 50 { 51 throw new ArgumentException(ExceptionMessages.Collections_HasItemsFailed, paramName); 52 } 53 } 54 55 public void HasNoNullItem<T>(T value) where T : class, IEnumerable 56 { 57 if (!Ensure.IsActive) 58 { 59 return; 60 } 61 62 IsNotNull(value); 63 64 foreach (var item in value) 65 { 66 if (item == null) 67 { 68 throw new ArgumentException(ExceptionMessages.Collections_HasNoNullItemFailed, paramName); 69 } 70 } 71 } 72 73 public void HasItems<T>(IList<T> value) => HasItems(value as ICollection<T>); 74 75 public void HasItems<TKey, TValue>(IDictionary<TKey, TValue> value) 76 { 77 if (!Ensure.IsActive) 78 { 79 return; 80 } 81 82 IsNotNull(value); 83 84 if (value.Count < 1) 85 { 86 throw new ArgumentException(ExceptionMessages.Collections_HasItemsFailed, paramName); 87 } 88 } 89 90 public void SizeIs<T>(T[] value, int expected) 91 { 92 if (!Ensure.IsActive) 93 { 94 return; 95 } 96 97 if (value.Length != expected) 98 { 99 throw new ArgumentException(ExceptionMessages.Collections_SizeIs_Failed.Inject(expected, value.Length), paramName); 100 } 101 } 102 103 public void SizeIs<T>(T[] value, long expected) 104 { 105 if (!Ensure.IsActive) 106 { 107 return; 108 } 109 110 if (value.Length != expected) 111 { 112 throw new ArgumentException(ExceptionMessages.Collections_SizeIs_Failed.Inject(expected, value.Length), paramName); 113 } 114 } 115 116 public void SizeIs<T>(T value, int expected) where T : ICollection 117 { 118 if (!Ensure.IsActive) 119 { 120 return; 121 } 122 123 if (value.Count != expected) 124 { 125 throw new ArgumentException(ExceptionMessages.Collections_SizeIs_Failed.Inject(expected, value.Count), paramName); 126 } 127 } 128 129 public void SizeIs<T>(T value, long expected) where T : ICollection 130 { 131 if (!Ensure.IsActive) 132 { 133 return; 134 } 135 136 if (value.Count != expected) 137 { 138 throw new ArgumentException(ExceptionMessages.Collections_SizeIs_Failed.Inject(expected, value.Count), paramName); 139 } 140 } 141 142 public void SizeIs<T>(ICollection<T> value, int expected) 143 { 144 if (!Ensure.IsActive) 145 { 146 return; 147 } 148 149 if (value.Count != expected) 150 { 151 throw new ArgumentException(ExceptionMessages.Collections_SizeIs_Failed.Inject(expected, value.Count), paramName); 152 } 153 } 154 155 public void SizeIs<T>(ICollection<T> value, long expected) 156 { 157 if (!Ensure.IsActive) 158 { 159 return; 160 } 161 162 if (value.Count != expected) 163 { 164 throw new ArgumentException(ExceptionMessages.Collections_SizeIs_Failed.Inject(expected, value.Count), paramName); 165 } 166 } 167 168 public void SizeIs<T>(IList<T> value, int expected) => SizeIs(value as ICollection<T>, expected); 169 170 public void SizeIs<T>(IList<T> value, long expected) => SizeIs(value as ICollection<T>, expected); 171 172 public void SizeIs<TKey, TValue>(IDictionary<TKey, TValue> value, int expected) 173 { 174 if (!Ensure.IsActive) 175 { 176 return; 177 } 178 179 if (value.Count != expected) 180 { 181 throw new ArgumentException(ExceptionMessages.Collections_SizeIs_Failed.Inject(expected, value.Count), paramName); 182 } 183 } 184 185 public void SizeIs<TKey, TValue>(IDictionary<TKey, TValue> value, long expected) 186 { 187 if (!Ensure.IsActive) 188 { 189 return; 190 } 191 192 if (value.Count != expected) 193 { 194 throw new ArgumentException(ExceptionMessages.Collections_SizeIs_Failed.Inject(expected, value.Count), paramName); 195 } 196 } 197 198 public void IsKeyOf<TKey, TValue>(IDictionary<TKey, TValue> value, TKey expectedKey, string keyLabel = null) 199 { 200 if (!Ensure.IsActive) 201 { 202 return; 203 } 204 205 if (!value.ContainsKey(expectedKey)) 206 { 207 throw new ArgumentException(ExceptionMessages.Collections_ContainsKey_Failed.Inject(expectedKey, keyLabel ?? paramName.Prettify()), paramName); 208 } 209 } 210 211 public void Any<T>(IList<T> value, Func<T, bool> predicate) => Any(value as ICollection<T>, predicate); 212 213 public void Any<T>(ICollection<T> value, Func<T, bool> predicate) 214 { 215 if (!Ensure.IsActive) 216 { 217 return; 218 } 219 220 if (!value.Any(predicate)) 221 { 222 throw new ArgumentException(ExceptionMessages.Collections_Any_Failed, paramName); 223 } 224 } 225 226 public void Any<T>(T[] value, Func<T, bool> predicate) 227 { 228 if (!Ensure.IsActive) 229 { 230 return; 231 } 232 233 if (!value.Any(predicate)) 234 { 235 throw new ArgumentException(ExceptionMessages.Collections_Any_Failed, paramName); 236 } 237 } 238 } 239}