com.wallstop-studios.unity-helpers 2.0.0-rc06 → 2.0.0-rc08
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Runtime/Core/Extension/DirectionExtensions.cs +5 -2
- package/Runtime/Core/Extension/IEnumerableExtensions.cs +19 -6
- package/Runtime/Core/Extension/RandomExtensions.cs +9 -87
- package/Runtime/Core/Extension/UnityExtensions.cs +2 -2
- package/Runtime/Core/Helper/Helpers.cs +1 -556
- package/Runtime/Core/Helper/Partials/LogHelpers.cs +13 -0
- package/Runtime/Core/Helper/Partials/LogHelpers.cs.meta +3 -0
- package/Runtime/Core/Helper/Partials/MathHelpers.cs +30 -0
- package/Runtime/Core/Helper/Partials/MathHelpers.cs.meta +3 -0
- package/Runtime/Core/Helper/Partials/ObjectHelpers.cs +388 -0
- package/Runtime/Core/Helper/Partials/ObjectHelpers.cs.meta +3 -0
- package/Runtime/Core/Helper/Partials/TransformHelpers.cs +167 -0
- package/Runtime/Core/Helper/Partials/TransformHelpers.cs.meta +3 -0
- package/Runtime/Core/Helper/Partials.meta +3 -0
- package/Runtime/Core/Random/AbstractRandom.cs +140 -154
- package/Runtime/Core/Random/IRandom.cs +26 -7
- package/Runtime/Core/Random/PerlinNoise.cs +369 -0
- package/Runtime/Core/Random/PerlinNoise.cs.meta +3 -0
- package/Runtime/Core/Random/SquirrelRandom.cs +9 -10
- package/Runtime/Core/Random/SystemRandom.cs +78 -41
- package/Tests/Runtime/Extensions/RandomExtensionTests.cs +27 -0
- package/Tests/Runtime/Extensions/RandomExtensionTests.cs.meta +3 -0
- package/Tests/Runtime/Helper/ObjectHelperTests.cs +402 -0
- package/Tests/Runtime/Helper/ObjectHelperTests.cs.meta +3 -0
- package/Tests/Runtime/Performance/RandomPerformanceTests.cs +58 -3
- package/Tests/Runtime/Random/RandomTestBase.cs +557 -6
- package/Tests/Runtime/Random/SquirrelRandomTests.cs +5 -0
- package/package.json +1 -1
|
@@ -0,0 +1,402 @@
|
|
|
1
|
+
namespace UnityHelpers.Tests.Tests.Runtime.Helper
|
|
2
|
+
{
|
|
3
|
+
using System.Collections;
|
|
4
|
+
using Core.Helper;
|
|
5
|
+
using JetBrains.Annotations;
|
|
6
|
+
using NUnit.Framework;
|
|
7
|
+
using UnityEngine;
|
|
8
|
+
using UnityEngine.TestTools;
|
|
9
|
+
|
|
10
|
+
[UsedImplicitly]
|
|
11
|
+
public sealed class ObjectHelperComponent : MonoBehaviour { }
|
|
12
|
+
|
|
13
|
+
public sealed class ObjectHelperTests
|
|
14
|
+
{
|
|
15
|
+
[UnityTest]
|
|
16
|
+
public IEnumerator HasComponent()
|
|
17
|
+
{
|
|
18
|
+
GameObject go = new("Test SpriteRenderer", typeof(SpriteRenderer));
|
|
19
|
+
SpriteRenderer spriteRenderer = go.GetComponent<SpriteRenderer>();
|
|
20
|
+
|
|
21
|
+
Assert.IsTrue(go.HasComponent(typeof(SpriteRenderer)));
|
|
22
|
+
Assert.IsTrue(go.HasComponent<SpriteRenderer>());
|
|
23
|
+
Assert.IsTrue(spriteRenderer.HasComponent<SpriteRenderer>());
|
|
24
|
+
Assert.IsTrue(spriteRenderer.HasComponent(typeof(SpriteRenderer)));
|
|
25
|
+
|
|
26
|
+
Assert.IsFalse(go.HasComponent<LineRenderer>());
|
|
27
|
+
Assert.IsFalse(go.HasComponent(typeof(LineRenderer)));
|
|
28
|
+
Assert.IsFalse(spriteRenderer.HasComponent<LineRenderer>());
|
|
29
|
+
Assert.IsFalse(spriteRenderer.HasComponent(typeof(LineRenderer)));
|
|
30
|
+
|
|
31
|
+
Object obj = go;
|
|
32
|
+
Assert.IsTrue(obj.HasComponent<SpriteRenderer>());
|
|
33
|
+
Assert.IsTrue(obj.HasComponent(typeof(SpriteRenderer)));
|
|
34
|
+
Assert.IsFalse(obj.HasComponent<LineRenderer>());
|
|
35
|
+
Assert.IsFalse(obj.HasComponent(typeof(LineRenderer)));
|
|
36
|
+
|
|
37
|
+
yield break;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
[UnityTest]
|
|
41
|
+
public IEnumerator EnableRendererRecursively()
|
|
42
|
+
{
|
|
43
|
+
GameObject one = New("1");
|
|
44
|
+
GameObject two = New("2");
|
|
45
|
+
two.transform.SetParent(one.transform);
|
|
46
|
+
GameObject three = New("3");
|
|
47
|
+
three.transform.SetParent(two.transform);
|
|
48
|
+
GameObject four = New("4");
|
|
49
|
+
four.transform.SetParent(three.transform);
|
|
50
|
+
|
|
51
|
+
// Act
|
|
52
|
+
two.transform.EnableRendererRecursively<SpriteRenderer>(false);
|
|
53
|
+
Assert.IsTrue(one.GetComponent<SpriteRenderer>().enabled);
|
|
54
|
+
Assert.IsFalse(two.GetComponent<SpriteRenderer>().enabled);
|
|
55
|
+
Assert.IsFalse(three.GetComponent<SpriteRenderer>().enabled);
|
|
56
|
+
Assert.IsFalse(four.GetComponent<SpriteRenderer>().enabled);
|
|
57
|
+
|
|
58
|
+
Assert.IsTrue(one.GetComponent<CircleCollider2D>().enabled);
|
|
59
|
+
Assert.IsTrue(two.GetComponent<CircleCollider2D>().enabled);
|
|
60
|
+
Assert.IsTrue(three.GetComponent<CircleCollider2D>().enabled);
|
|
61
|
+
Assert.IsTrue(four.GetComponent<CircleCollider2D>().enabled);
|
|
62
|
+
|
|
63
|
+
// Act
|
|
64
|
+
three.transform.EnableRendererRecursively<SpriteRenderer>(true);
|
|
65
|
+
|
|
66
|
+
Assert.IsTrue(one.GetComponent<SpriteRenderer>().enabled);
|
|
67
|
+
Assert.IsFalse(two.GetComponent<SpriteRenderer>().enabled);
|
|
68
|
+
Assert.IsTrue(three.GetComponent<SpriteRenderer>().enabled);
|
|
69
|
+
Assert.IsTrue(four.GetComponent<SpriteRenderer>().enabled);
|
|
70
|
+
|
|
71
|
+
Assert.IsTrue(one.GetComponent<CircleCollider2D>().enabled);
|
|
72
|
+
Assert.IsTrue(two.GetComponent<CircleCollider2D>().enabled);
|
|
73
|
+
Assert.IsTrue(three.GetComponent<CircleCollider2D>().enabled);
|
|
74
|
+
Assert.IsTrue(four.GetComponent<CircleCollider2D>().enabled);
|
|
75
|
+
|
|
76
|
+
// Act
|
|
77
|
+
one.transform.EnableRendererRecursively<SpriteRenderer>(true);
|
|
78
|
+
|
|
79
|
+
Assert.IsTrue(one.GetComponent<SpriteRenderer>().enabled);
|
|
80
|
+
Assert.IsTrue(two.GetComponent<SpriteRenderer>().enabled);
|
|
81
|
+
Assert.IsTrue(three.GetComponent<SpriteRenderer>().enabled);
|
|
82
|
+
Assert.IsTrue(four.GetComponent<SpriteRenderer>().enabled);
|
|
83
|
+
|
|
84
|
+
Assert.IsTrue(one.GetComponent<CircleCollider2D>().enabled);
|
|
85
|
+
Assert.IsTrue(two.GetComponent<CircleCollider2D>().enabled);
|
|
86
|
+
Assert.IsTrue(three.GetComponent<CircleCollider2D>().enabled);
|
|
87
|
+
Assert.IsTrue(four.GetComponent<CircleCollider2D>().enabled);
|
|
88
|
+
|
|
89
|
+
// Act
|
|
90
|
+
two.transform.EnableRendererRecursively<SpriteRenderer>(
|
|
91
|
+
false,
|
|
92
|
+
renderer => renderer.gameObject == three
|
|
93
|
+
);
|
|
94
|
+
|
|
95
|
+
Assert.IsTrue(one.GetComponent<SpriteRenderer>().enabled);
|
|
96
|
+
Assert.IsFalse(two.GetComponent<SpriteRenderer>().enabled);
|
|
97
|
+
Assert.IsTrue(three.GetComponent<SpriteRenderer>().enabled);
|
|
98
|
+
Assert.IsFalse(four.GetComponent<SpriteRenderer>().enabled);
|
|
99
|
+
|
|
100
|
+
Assert.IsTrue(one.GetComponent<CircleCollider2D>().enabled);
|
|
101
|
+
Assert.IsTrue(two.GetComponent<CircleCollider2D>().enabled);
|
|
102
|
+
Assert.IsTrue(three.GetComponent<CircleCollider2D>().enabled);
|
|
103
|
+
Assert.IsTrue(four.GetComponent<CircleCollider2D>().enabled);
|
|
104
|
+
|
|
105
|
+
// Act
|
|
106
|
+
one.transform.EnableRendererRecursively<SpriteRenderer>(
|
|
107
|
+
true,
|
|
108
|
+
renderer => renderer.gameObject == four
|
|
109
|
+
);
|
|
110
|
+
|
|
111
|
+
Assert.IsTrue(one.GetComponent<SpriteRenderer>().enabled);
|
|
112
|
+
Assert.IsTrue(two.GetComponent<SpriteRenderer>().enabled);
|
|
113
|
+
Assert.IsTrue(three.GetComponent<SpriteRenderer>().enabled);
|
|
114
|
+
Assert.IsFalse(four.GetComponent<SpriteRenderer>().enabled);
|
|
115
|
+
|
|
116
|
+
Assert.IsTrue(one.GetComponent<CircleCollider2D>().enabled);
|
|
117
|
+
Assert.IsTrue(two.GetComponent<CircleCollider2D>().enabled);
|
|
118
|
+
Assert.IsTrue(three.GetComponent<CircleCollider2D>().enabled);
|
|
119
|
+
Assert.IsTrue(four.GetComponent<CircleCollider2D>().enabled);
|
|
120
|
+
|
|
121
|
+
yield break;
|
|
122
|
+
|
|
123
|
+
GameObject New(string name)
|
|
124
|
+
{
|
|
125
|
+
return new GameObject(name, typeof(SpriteRenderer), typeof(CircleCollider2D));
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
[UnityTest]
|
|
130
|
+
public IEnumerator EnableRecursively()
|
|
131
|
+
{
|
|
132
|
+
GameObject one = New("1");
|
|
133
|
+
GameObject two = New("2");
|
|
134
|
+
two.transform.SetParent(one.transform);
|
|
135
|
+
GameObject three = New("3");
|
|
136
|
+
three.transform.SetParent(two.transform);
|
|
137
|
+
GameObject four = New("4");
|
|
138
|
+
four.transform.SetParent(three.transform);
|
|
139
|
+
|
|
140
|
+
// Act
|
|
141
|
+
two.transform.EnableRecursively<CircleCollider2D>(false);
|
|
142
|
+
Assert.IsTrue(one.GetComponent<SpriteRenderer>().enabled);
|
|
143
|
+
Assert.IsTrue(two.GetComponent<SpriteRenderer>().enabled);
|
|
144
|
+
Assert.IsTrue(three.GetComponent<SpriteRenderer>().enabled);
|
|
145
|
+
Assert.IsTrue(four.GetComponent<SpriteRenderer>().enabled);
|
|
146
|
+
|
|
147
|
+
Assert.IsTrue(one.GetComponent<CircleCollider2D>().enabled);
|
|
148
|
+
Assert.IsFalse(two.GetComponent<CircleCollider2D>().enabled);
|
|
149
|
+
Assert.IsFalse(three.GetComponent<CircleCollider2D>().enabled);
|
|
150
|
+
Assert.IsFalse(four.GetComponent<CircleCollider2D>().enabled);
|
|
151
|
+
|
|
152
|
+
// Act
|
|
153
|
+
three.transform.EnableRecursively<CircleCollider2D>(true);
|
|
154
|
+
|
|
155
|
+
Assert.IsTrue(one.GetComponent<SpriteRenderer>().enabled);
|
|
156
|
+
Assert.IsTrue(two.GetComponent<SpriteRenderer>().enabled);
|
|
157
|
+
Assert.IsTrue(three.GetComponent<SpriteRenderer>().enabled);
|
|
158
|
+
Assert.IsTrue(four.GetComponent<SpriteRenderer>().enabled);
|
|
159
|
+
|
|
160
|
+
Assert.IsTrue(one.GetComponent<CircleCollider2D>().enabled);
|
|
161
|
+
Assert.IsFalse(two.GetComponent<CircleCollider2D>().enabled);
|
|
162
|
+
Assert.IsTrue(three.GetComponent<CircleCollider2D>().enabled);
|
|
163
|
+
Assert.IsTrue(four.GetComponent<CircleCollider2D>().enabled);
|
|
164
|
+
|
|
165
|
+
// Act
|
|
166
|
+
one.transform.EnableRecursively<CircleCollider2D>(true);
|
|
167
|
+
|
|
168
|
+
Assert.IsTrue(one.GetComponent<SpriteRenderer>().enabled);
|
|
169
|
+
Assert.IsTrue(two.GetComponent<SpriteRenderer>().enabled);
|
|
170
|
+
Assert.IsTrue(three.GetComponent<SpriteRenderer>().enabled);
|
|
171
|
+
Assert.IsTrue(four.GetComponent<SpriteRenderer>().enabled);
|
|
172
|
+
|
|
173
|
+
Assert.IsTrue(one.GetComponent<CircleCollider2D>().enabled);
|
|
174
|
+
Assert.IsTrue(two.GetComponent<CircleCollider2D>().enabled);
|
|
175
|
+
Assert.IsTrue(three.GetComponent<CircleCollider2D>().enabled);
|
|
176
|
+
Assert.IsTrue(four.GetComponent<CircleCollider2D>().enabled);
|
|
177
|
+
|
|
178
|
+
// Act
|
|
179
|
+
two.transform.EnableRecursively<CircleCollider2D>(
|
|
180
|
+
false,
|
|
181
|
+
collider => collider.gameObject == three
|
|
182
|
+
);
|
|
183
|
+
|
|
184
|
+
Assert.IsTrue(one.GetComponent<SpriteRenderer>().enabled);
|
|
185
|
+
Assert.IsTrue(two.GetComponent<SpriteRenderer>().enabled);
|
|
186
|
+
Assert.IsTrue(three.GetComponent<SpriteRenderer>().enabled);
|
|
187
|
+
Assert.IsTrue(four.GetComponent<SpriteRenderer>().enabled);
|
|
188
|
+
|
|
189
|
+
Assert.IsTrue(one.GetComponent<CircleCollider2D>().enabled);
|
|
190
|
+
Assert.IsFalse(two.GetComponent<CircleCollider2D>().enabled);
|
|
191
|
+
Assert.IsTrue(three.GetComponent<CircleCollider2D>().enabled);
|
|
192
|
+
Assert.IsFalse(four.GetComponent<CircleCollider2D>().enabled);
|
|
193
|
+
|
|
194
|
+
// Act
|
|
195
|
+
one.transform.EnableRecursively<CircleCollider2D>(
|
|
196
|
+
true,
|
|
197
|
+
collider => collider.gameObject == four
|
|
198
|
+
);
|
|
199
|
+
|
|
200
|
+
Assert.IsTrue(one.GetComponent<SpriteRenderer>().enabled);
|
|
201
|
+
Assert.IsTrue(two.GetComponent<SpriteRenderer>().enabled);
|
|
202
|
+
Assert.IsTrue(three.GetComponent<SpriteRenderer>().enabled);
|
|
203
|
+
Assert.IsTrue(four.GetComponent<SpriteRenderer>().enabled);
|
|
204
|
+
|
|
205
|
+
Assert.IsTrue(one.GetComponent<CircleCollider2D>().enabled);
|
|
206
|
+
Assert.IsTrue(two.GetComponent<CircleCollider2D>().enabled);
|
|
207
|
+
Assert.IsTrue(three.GetComponent<CircleCollider2D>().enabled);
|
|
208
|
+
Assert.IsFalse(four.GetComponent<CircleCollider2D>().enabled);
|
|
209
|
+
|
|
210
|
+
yield break;
|
|
211
|
+
|
|
212
|
+
GameObject New(string name)
|
|
213
|
+
{
|
|
214
|
+
return new GameObject(name, typeof(SpriteRenderer), typeof(CircleCollider2D));
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
[UnityTest]
|
|
219
|
+
public IEnumerator DestroyAllChildGameObjects()
|
|
220
|
+
{
|
|
221
|
+
GameObject one = new("1");
|
|
222
|
+
GameObject two = new("2");
|
|
223
|
+
two.transform.SetParent(one.transform);
|
|
224
|
+
GameObject three = new("3");
|
|
225
|
+
three.transform.SetParent(two.transform);
|
|
226
|
+
GameObject four = new("4");
|
|
227
|
+
four.transform.SetParent(three.transform);
|
|
228
|
+
|
|
229
|
+
// Act
|
|
230
|
+
two.DestroyAllChildrenGameObjects();
|
|
231
|
+
yield return null;
|
|
232
|
+
|
|
233
|
+
Assert.IsTrue(one != null);
|
|
234
|
+
Assert.IsTrue(two != null);
|
|
235
|
+
Assert.IsTrue(three == null);
|
|
236
|
+
Assert.IsTrue(four == null);
|
|
237
|
+
|
|
238
|
+
three = new GameObject("3");
|
|
239
|
+
three.transform.SetParent(two.transform);
|
|
240
|
+
four = new GameObject("4");
|
|
241
|
+
four.transform.SetParent(three.transform);
|
|
242
|
+
|
|
243
|
+
// Act
|
|
244
|
+
one.DestroyAllChildrenGameObjects();
|
|
245
|
+
yield return null;
|
|
246
|
+
|
|
247
|
+
Assert.IsTrue(one != null);
|
|
248
|
+
Assert.IsTrue(two == null);
|
|
249
|
+
Assert.IsTrue(three == null);
|
|
250
|
+
Assert.IsTrue(four == null);
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
[UnityTest]
|
|
254
|
+
public IEnumerator DestroyAllComponentsOfType()
|
|
255
|
+
{
|
|
256
|
+
GameObject one = New("1");
|
|
257
|
+
Assert.AreEqual(4, one.GetComponents<ObjectHelperComponent>().Length);
|
|
258
|
+
|
|
259
|
+
GameObject two = New("2");
|
|
260
|
+
two.transform.SetParent(one.transform);
|
|
261
|
+
|
|
262
|
+
one.DestroyAllComponentsOfType<ObjectHelperComponent>();
|
|
263
|
+
yield return null;
|
|
264
|
+
Assert.AreEqual(0, one.GetComponents<ObjectHelperComponent>().Length);
|
|
265
|
+
Assert.IsTrue(one.GetComponent<SpriteRenderer>() != null);
|
|
266
|
+
Assert.AreEqual(4, two.GetComponents<ObjectHelperComponent>().Length);
|
|
267
|
+
|
|
268
|
+
two.DestroyAllComponentsOfType<ObjectHelperComponent>();
|
|
269
|
+
yield return null;
|
|
270
|
+
Assert.AreEqual(0, one.GetComponents<ObjectHelperComponent>().Length);
|
|
271
|
+
Assert.IsTrue(one.GetComponent<SpriteRenderer>() != null);
|
|
272
|
+
Assert.AreEqual(0, two.GetComponents<ObjectHelperComponent>().Length);
|
|
273
|
+
Assert.IsTrue(two.GetComponent<SpriteRenderer>() != null);
|
|
274
|
+
|
|
275
|
+
GameObject New(string name)
|
|
276
|
+
{
|
|
277
|
+
return new GameObject(
|
|
278
|
+
name,
|
|
279
|
+
typeof(SpriteRenderer),
|
|
280
|
+
typeof(ObjectHelperComponent),
|
|
281
|
+
typeof(ObjectHelperComponent),
|
|
282
|
+
typeof(ObjectHelperComponent),
|
|
283
|
+
typeof(ObjectHelperComponent)
|
|
284
|
+
);
|
|
285
|
+
}
|
|
286
|
+
}
|
|
287
|
+
|
|
288
|
+
[UnityTest]
|
|
289
|
+
public IEnumerator SmartDestroy()
|
|
290
|
+
{
|
|
291
|
+
GameObject one = new("1");
|
|
292
|
+
|
|
293
|
+
one.SmartDestroy();
|
|
294
|
+
yield return null;
|
|
295
|
+
Assert.IsTrue(one == null);
|
|
296
|
+
|
|
297
|
+
GameObject two = new("2");
|
|
298
|
+
two.SmartDestroy(1.5f);
|
|
299
|
+
yield return null;
|
|
300
|
+
Assert.IsTrue(two != null);
|
|
301
|
+
yield return new WaitForSeconds(1.6f);
|
|
302
|
+
|
|
303
|
+
Assert.IsTrue(two == null);
|
|
304
|
+
}
|
|
305
|
+
|
|
306
|
+
[UnityTest]
|
|
307
|
+
public IEnumerator DestroyAllChildrenGameObjectsImmediatelyConditionally()
|
|
308
|
+
{
|
|
309
|
+
GameObject one = new("1");
|
|
310
|
+
GameObject two = new("2");
|
|
311
|
+
two.transform.SetParent(one.transform);
|
|
312
|
+
GameObject three = new("3");
|
|
313
|
+
three.transform.SetParent(two.transform);
|
|
314
|
+
GameObject four = new("4");
|
|
315
|
+
four.transform.SetParent(two.transform);
|
|
316
|
+
|
|
317
|
+
two.DestroyAllChildrenGameObjectsImmediatelyConditionally(go => go == four);
|
|
318
|
+
Assert.IsTrue(one != null);
|
|
319
|
+
Assert.IsTrue(two != null);
|
|
320
|
+
Assert.IsTrue(three != null);
|
|
321
|
+
Assert.IsTrue(four == null);
|
|
322
|
+
|
|
323
|
+
one.DestroyAllChildrenGameObjectsImmediatelyConditionally(go => go != two);
|
|
324
|
+
Assert.IsTrue(one != null);
|
|
325
|
+
Assert.IsTrue(two != null);
|
|
326
|
+
Assert.IsTrue(three != null);
|
|
327
|
+
Assert.IsTrue(four == null);
|
|
328
|
+
|
|
329
|
+
one.DestroyAllChildrenGameObjectsImmediatelyConditionally(go => go == two);
|
|
330
|
+
Assert.IsTrue(one != null);
|
|
331
|
+
Assert.IsTrue(two == null);
|
|
332
|
+
Assert.IsTrue(three == null);
|
|
333
|
+
Assert.IsTrue(four == null);
|
|
334
|
+
|
|
335
|
+
yield break;
|
|
336
|
+
}
|
|
337
|
+
|
|
338
|
+
[UnityTest]
|
|
339
|
+
public IEnumerator DestroyAllChildGameObjectsConditionally()
|
|
340
|
+
{
|
|
341
|
+
GameObject one = new("1");
|
|
342
|
+
GameObject two = new("2");
|
|
343
|
+
two.transform.SetParent(one.transform);
|
|
344
|
+
GameObject three = new("3");
|
|
345
|
+
three.transform.SetParent(two.transform);
|
|
346
|
+
GameObject four = new("4");
|
|
347
|
+
four.transform.SetParent(two.transform);
|
|
348
|
+
|
|
349
|
+
two.DestroyAllChildGameObjectsConditionally(go => go == four);
|
|
350
|
+
yield return null;
|
|
351
|
+
Assert.IsTrue(one != null);
|
|
352
|
+
Assert.IsTrue(two != null);
|
|
353
|
+
Assert.IsTrue(three != null);
|
|
354
|
+
Assert.IsTrue(four == null);
|
|
355
|
+
|
|
356
|
+
one.DestroyAllChildGameObjectsConditionally(go => go != two);
|
|
357
|
+
yield return null;
|
|
358
|
+
Assert.IsTrue(one != null);
|
|
359
|
+
Assert.IsTrue(two != null);
|
|
360
|
+
Assert.IsTrue(three != null);
|
|
361
|
+
Assert.IsTrue(four == null);
|
|
362
|
+
|
|
363
|
+
one.DestroyAllChildGameObjectsConditionally(go => go == two);
|
|
364
|
+
yield return null;
|
|
365
|
+
Assert.IsTrue(one != null);
|
|
366
|
+
Assert.IsTrue(two == null);
|
|
367
|
+
Assert.IsTrue(three == null);
|
|
368
|
+
Assert.IsTrue(four == null);
|
|
369
|
+
}
|
|
370
|
+
|
|
371
|
+
[UnityTest]
|
|
372
|
+
public IEnumerator DestroyAllChildrenGameObjectsImmediately()
|
|
373
|
+
{
|
|
374
|
+
GameObject one = new("1");
|
|
375
|
+
GameObject two = new("2");
|
|
376
|
+
two.transform.SetParent(one.transform);
|
|
377
|
+
GameObject three = new("3");
|
|
378
|
+
three.transform.SetParent(two.transform);
|
|
379
|
+
GameObject four = new("4");
|
|
380
|
+
four.transform.SetParent(two.transform);
|
|
381
|
+
|
|
382
|
+
two.DestroyAllChildrenGameObjectsImmediately();
|
|
383
|
+
Assert.IsTrue(one != null);
|
|
384
|
+
Assert.IsTrue(two != null);
|
|
385
|
+
Assert.IsTrue(three == null);
|
|
386
|
+
Assert.IsTrue(four == null);
|
|
387
|
+
|
|
388
|
+
three = new GameObject("3");
|
|
389
|
+
three.transform.SetParent(two.transform);
|
|
390
|
+
four = new("4");
|
|
391
|
+
four.transform.SetParent(two.transform);
|
|
392
|
+
|
|
393
|
+
one.DestroyAllChildrenGameObjectsImmediately();
|
|
394
|
+
Assert.IsTrue(one != null);
|
|
395
|
+
Assert.IsTrue(two == null);
|
|
396
|
+
Assert.IsTrue(three == null);
|
|
397
|
+
Assert.IsTrue(four == null);
|
|
398
|
+
|
|
399
|
+
yield break;
|
|
400
|
+
}
|
|
401
|
+
}
|
|
402
|
+
}
|
|
@@ -12,8 +12,12 @@
|
|
|
12
12
|
{
|
|
13
13
|
TimeSpan timeout = TimeSpan.FromSeconds(1.125);
|
|
14
14
|
|
|
15
|
-
UnityEngine.Debug.Log(
|
|
16
|
-
|
|
15
|
+
UnityEngine.Debug.Log(
|
|
16
|
+
$"| Random | NextBool | Next | NextUInt | NextFloat | NextDouble | NextUint - Range | "
|
|
17
|
+
);
|
|
18
|
+
UnityEngine.Debug.Log(
|
|
19
|
+
$"| ------ | -------- | ---- | -------- | --------- | ---------- | ---------------- |"
|
|
20
|
+
);
|
|
17
21
|
|
|
18
22
|
RunTest(new PcgRandom(), timeout);
|
|
19
23
|
RunTest(new SystemRandom(), timeout);
|
|
@@ -26,12 +30,21 @@
|
|
|
26
30
|
private static void RunTest<T>(T random, TimeSpan timeout)
|
|
27
31
|
where T : IRandom
|
|
28
32
|
{
|
|
33
|
+
int nextBool = RunNextBool(timeout, random);
|
|
29
34
|
int nextInt = RunNext(timeout, random);
|
|
35
|
+
int nextUint = RunNextUint(timeout, random);
|
|
30
36
|
int nextFloat = RunNextFloat(timeout, random);
|
|
31
37
|
int nextDouble = RunNextDouble(timeout, random);
|
|
38
|
+
int nextUintRange = RunNextUintRange(timeout, random);
|
|
32
39
|
|
|
33
40
|
UnityEngine.Debug.Log(
|
|
34
|
-
$"| {random.GetType().Name} |
|
|
41
|
+
$"| {random.GetType().Name} | "
|
|
42
|
+
+ $"{(nextBool / timeout.TotalSeconds):N0} | "
|
|
43
|
+
+ $"{(nextInt / timeout.TotalSeconds):N0} | "
|
|
44
|
+
+ $"{(nextUint / timeout.TotalSeconds):N0} | "
|
|
45
|
+
+ $"{(nextFloat / timeout.TotalSeconds):N0} | "
|
|
46
|
+
+ $"{(nextDouble / timeout.TotalSeconds):N0} |"
|
|
47
|
+
+ $"{(nextUintRange / timeout.TotalSeconds):N0} |"
|
|
35
48
|
);
|
|
36
49
|
}
|
|
37
50
|
|
|
@@ -50,6 +63,48 @@
|
|
|
50
63
|
return count;
|
|
51
64
|
}
|
|
52
65
|
|
|
66
|
+
private static int RunNextBool<T>(TimeSpan timeout, T random)
|
|
67
|
+
where T : IRandom
|
|
68
|
+
{
|
|
69
|
+
int count = 0;
|
|
70
|
+
Stopwatch timer = Stopwatch.StartNew();
|
|
71
|
+
do
|
|
72
|
+
{
|
|
73
|
+
_ = random.NextBool();
|
|
74
|
+
++count;
|
|
75
|
+
} while (timer.Elapsed < timeout);
|
|
76
|
+
|
|
77
|
+
return count;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
private static int RunNextUint<T>(TimeSpan timeout, T random)
|
|
81
|
+
where T : IRandom
|
|
82
|
+
{
|
|
83
|
+
int count = 0;
|
|
84
|
+
Stopwatch timer = Stopwatch.StartNew();
|
|
85
|
+
do
|
|
86
|
+
{
|
|
87
|
+
_ = random.NextUint();
|
|
88
|
+
++count;
|
|
89
|
+
} while (timer.Elapsed < timeout);
|
|
90
|
+
|
|
91
|
+
return count;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
private static int RunNextUintRange<T>(TimeSpan timeout, T random)
|
|
95
|
+
where T : IRandom
|
|
96
|
+
{
|
|
97
|
+
int count = 0;
|
|
98
|
+
Stopwatch timer = Stopwatch.StartNew();
|
|
99
|
+
do
|
|
100
|
+
{
|
|
101
|
+
_ = random.NextUint(1_000);
|
|
102
|
+
++count;
|
|
103
|
+
} while (timer.Elapsed < timeout);
|
|
104
|
+
|
|
105
|
+
return count;
|
|
106
|
+
}
|
|
107
|
+
|
|
53
108
|
private static int RunNextFloat<T>(TimeSpan timeout, T random)
|
|
54
109
|
where T : IRandom
|
|
55
110
|
{
|