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}