com.wallstop-studios.dxmessaging 1.0.0-rc8
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/.gitattributes +63 -0
- package/CHANGELOG.md +0 -0
- package/CHANGELOG.md.meta +7 -0
- package/Editor.meta +8 -0
- package/LICENSE.md +7 -0
- package/LICENSE.md.meta +7 -0
- package/README.md +76 -0
- package/README.md.meta +7 -0
- package/Runtime/Core/Extensions/MessageExtensions.cs +275 -0
- package/Runtime/Core/Extensions/MessageExtensions.cs.meta +11 -0
- package/Runtime/Core/Extensions.meta +8 -0
- package/Runtime/Core/IMessage.cs +12 -0
- package/Runtime/Core/IMessage.cs.meta +11 -0
- package/Runtime/Core/InstanceId.cs +117 -0
- package/Runtime/Core/InstanceId.cs.meta +11 -0
- package/Runtime/Core/MessageBus/IMessageBus.cs +249 -0
- package/Runtime/Core/MessageBus/IMessageBus.cs.meta +11 -0
- package/Runtime/Core/MessageBus/MessageBus.cs +961 -0
- package/Runtime/Core/MessageBus/MessageBus.cs.meta +11 -0
- package/Runtime/Core/MessageBus/MessagingRegistration.cs +100 -0
- package/Runtime/Core/MessageBus/MessagingRegistration.cs.meta +11 -0
- package/Runtime/Core/MessageBus/RegistrationLog.cs +111 -0
- package/Runtime/Core/MessageBus/RegistrationLog.cs.meta +11 -0
- package/Runtime/Core/MessageBus.meta +8 -0
- package/Runtime/Core/MessageHandler.cs +1589 -0
- package/Runtime/Core/MessageHandler.cs.meta +11 -0
- package/Runtime/Core/MessageRegistrationHandle.cs +55 -0
- package/Runtime/Core/MessageRegistrationHandle.cs.meta +11 -0
- package/Runtime/Core/MessageRegistrationToken.cs +885 -0
- package/Runtime/Core/MessageRegistrationToken.cs.meta +11 -0
- package/Runtime/Core/Messages/IBroadcastMessage.cs +27 -0
- package/Runtime/Core/Messages/IBroadcastMessage.cs.meta +11 -0
- package/Runtime/Core/Messages/ITargetedMessage.cs +26 -0
- package/Runtime/Core/Messages/ITargetedMessage.cs.meta +11 -0
- package/Runtime/Core/Messages/IUntargetedMessage.cs +26 -0
- package/Runtime/Core/Messages/IUntargetedMessage.cs.meta +11 -0
- package/Runtime/Core/Messages.meta +8 -0
- package/Runtime/Core/MessagingDebug.cs +71 -0
- package/Runtime/Core/MessagingDebug.cs.meta +11 -0
- package/Runtime/Core.meta +8 -0
- package/Runtime/Unity/MessageAwareComponent.cs +77 -0
- package/Runtime/Unity/MessageAwareComponent.cs.meta +11 -0
- package/Runtime/Unity/MessagingComponent.cs +73 -0
- package/Runtime/Unity/MessagingComponent.cs.meta +11 -0
- package/Runtime/Unity.meta +8 -0
- package/Runtime/WallstopStudios.DxMessaging.asmdef +18 -0
- package/Runtime/WallstopStudios.DxMessaging.asmdef.meta +7 -0
- package/Runtime.meta +8 -0
- package/Tests/Editor/WallstopStudios.DxMessaging.Tests.Editor.asmdef +23 -0
- package/Tests/Editor/WallstopStudios.DxMessaging.Tests.Editor.asmdef.meta +7 -0
- package/Tests/Editor.meta +8 -0
- package/Tests/Runtime/Benchmarks/PerformanceTests.cs +196 -0
- package/Tests/Runtime/Benchmarks/PerformanceTests.cs.meta +11 -0
- package/Tests/Runtime/Benchmarks.meta +8 -0
- package/Tests/Runtime/Core/BroadcastTests.cs +600 -0
- package/Tests/Runtime/Core/BroadcastTests.cs.meta +11 -0
- package/Tests/Runtime/Core/GlobalAcceptAllTests.cs +169 -0
- package/Tests/Runtime/Core/GlobalAcceptAllTests.cs.meta +11 -0
- package/Tests/Runtime/Core/MessagingTestBase.cs +164 -0
- package/Tests/Runtime/Core/MessagingTestBase.cs.meta +11 -0
- package/Tests/Runtime/Core/NominalTests.cs +1468 -0
- package/Tests/Runtime/Core/NominalTests.cs.meta +11 -0
- package/Tests/Runtime/Core/PostProcessorTests.cs +849 -0
- package/Tests/Runtime/Core/PostProcessorTests.cs.meta +11 -0
- package/Tests/Runtime/Core/RegistrationTests.cs +1045 -0
- package/Tests/Runtime/Core/RegistrationTests.cs.meta +11 -0
- package/Tests/Runtime/Core/TargetedTests.cs +596 -0
- package/Tests/Runtime/Core/TargetedTests.cs.meta +11 -0
- package/Tests/Runtime/Core/UntargetedTests.cs +149 -0
- package/Tests/Runtime/Core/UntargetedTests.cs.meta +11 -0
- package/Tests/Runtime/Core.meta +8 -0
- package/Tests/Runtime/Scripts/Components/EmptyMessageAwareComponent.cs +9 -0
- package/Tests/Runtime/Scripts/Components/EmptyMessageAwareComponent.cs.meta +11 -0
- package/Tests/Runtime/Scripts/Components/SimpleMessageAwareComponent.cs +140 -0
- package/Tests/Runtime/Scripts/Components/SimpleMessageAwareComponent.cs.meta +11 -0
- package/Tests/Runtime/Scripts/Components.meta +8 -0
- package/Tests/Runtime/Scripts/Messages/ComplexTargetedMessage.cs +28 -0
- package/Tests/Runtime/Scripts/Messages/ComplexTargetedMessage.cs.meta +11 -0
- package/Tests/Runtime/Scripts/Messages/SimpleBroadcastMessage.cs +8 -0
- package/Tests/Runtime/Scripts/Messages/SimpleBroadcastMessage.cs.meta +11 -0
- package/Tests/Runtime/Scripts/Messages/SimpleTargetedMessage.cs +8 -0
- package/Tests/Runtime/Scripts/Messages/SimpleTargetedMessage.cs.meta +11 -0
- package/Tests/Runtime/Scripts/Messages/SimpleUntargetedMessage.cs +8 -0
- package/Tests/Runtime/Scripts/Messages/SimpleUntargetedMessage.cs.meta +11 -0
- package/Tests/Runtime/Scripts/Messages.meta +8 -0
- package/Tests/Runtime/Scripts.meta +8 -0
- package/Tests/Runtime/WallstopStudios.DxMessaging.Tests.Runtime.asmdef +22 -0
- package/Tests/Runtime/WallstopStudios.DxMessaging.Tests.Runtime.asmdef.meta +7 -0
- package/Tests/Runtime/WallstopStudios.DxMessaging.Tests.Runtime.csproj +1 -0
- package/Tests/Runtime/WallstopStudios.DxMessaging.Tests.Runtime.csproj.meta +7 -0
- package/Tests/Runtime.meta +8 -0
- package/Tests.meta +8 -0
- package/Third Party Notices.md +1 -0
- package/Third Party Notices.md.meta +7 -0
- package/package.json +33 -0
- package/package.json.meta +7 -0
|
@@ -0,0 +1,849 @@
|
|
|
1
|
+
namespace DxMessaging.Tests.Runtime.Core
|
|
2
|
+
{
|
|
3
|
+
using System;
|
|
4
|
+
using System.Collections;
|
|
5
|
+
using DxMessaging.Core;
|
|
6
|
+
using DxMessaging.Core.Extensions;
|
|
7
|
+
using Scripts.Messages;
|
|
8
|
+
using NUnit.Framework;
|
|
9
|
+
using Scripts.Components;
|
|
10
|
+
using UnityEngine;
|
|
11
|
+
using UnityEngine.TestTools;
|
|
12
|
+
|
|
13
|
+
public sealed class PostProcessorTests : MessagingTestBase
|
|
14
|
+
{
|
|
15
|
+
[UnityTest]
|
|
16
|
+
public IEnumerator Untargeted()
|
|
17
|
+
{
|
|
18
|
+
GameObject test = new(nameof(Untargeted), typeof(EmptyMessageAwareComponent));
|
|
19
|
+
_spawned.Add(test);
|
|
20
|
+
|
|
21
|
+
EmptyMessageAwareComponent component = test.GetComponent<EmptyMessageAwareComponent>();
|
|
22
|
+
MessageRegistrationToken token = GetToken(component);
|
|
23
|
+
|
|
24
|
+
int lastSeenCount = 0;
|
|
25
|
+
int count = 0;
|
|
26
|
+
|
|
27
|
+
int finalCount = 0;
|
|
28
|
+
void ResetCount()
|
|
29
|
+
{
|
|
30
|
+
lastSeenCount = 0;
|
|
31
|
+
count = 0;
|
|
32
|
+
finalCount = 0;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
Action assertion;
|
|
36
|
+
|
|
37
|
+
void PostProcessor(ref SimpleUntargetedMessage message)
|
|
38
|
+
{
|
|
39
|
+
assertion.Invoke();
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
count = 1;
|
|
43
|
+
assertion = () =>
|
|
44
|
+
{
|
|
45
|
+
Assert.AreEqual(lastSeenCount + 1, count);
|
|
46
|
+
};
|
|
47
|
+
|
|
48
|
+
SimpleUntargetedMessage message = new();
|
|
49
|
+
Run(() => new[]{token.RegisterUntargetedPostProcessor<SimpleUntargetedMessage>(PostProcessor)},
|
|
50
|
+
() => message.EmitUntargeted(),
|
|
51
|
+
() =>
|
|
52
|
+
{
|
|
53
|
+
lastSeenCount = count++;
|
|
54
|
+
finalCount = count;
|
|
55
|
+
},
|
|
56
|
+
() =>
|
|
57
|
+
{
|
|
58
|
+
Assert.AreEqual(finalCount - 1, lastSeenCount);
|
|
59
|
+
Assert.AreEqual(finalCount, count);
|
|
60
|
+
},
|
|
61
|
+
token);
|
|
62
|
+
|
|
63
|
+
ResetCount();
|
|
64
|
+
assertion = () =>
|
|
65
|
+
{
|
|
66
|
+
Assert.AreEqual(lastSeenCount + 1, count);
|
|
67
|
+
lastSeenCount = count;
|
|
68
|
+
};
|
|
69
|
+
Run(() => new[] { token.RegisterUntargetedPostProcessor<SimpleUntargetedMessage>(PostProcessor), token.RegisterUntargeted<SimpleUntargetedMessage>(_ => ++count)},
|
|
70
|
+
() => message.EmitUntargeted(),
|
|
71
|
+
() =>
|
|
72
|
+
{
|
|
73
|
+
Assert.AreEqual(lastSeenCount, count);
|
|
74
|
+
finalCount = count;
|
|
75
|
+
},
|
|
76
|
+
() =>
|
|
77
|
+
{
|
|
78
|
+
Assert.AreEqual(finalCount, lastSeenCount);
|
|
79
|
+
Assert.AreEqual(finalCount, count);
|
|
80
|
+
},
|
|
81
|
+
token,
|
|
82
|
+
synchronizeDeregistrations: true);
|
|
83
|
+
|
|
84
|
+
ResetCount();
|
|
85
|
+
assertion = () =>
|
|
86
|
+
{
|
|
87
|
+
++count;
|
|
88
|
+
};
|
|
89
|
+
Run(() => new[] { token.RegisterUntargetedPostProcessor<SimpleUntargetedMessage>(PostProcessor), token.RegisterUntargetedPostProcessor<SimpleUntargetedMessage>(PostProcessor)},
|
|
90
|
+
() => message.EmitUntargeted(),
|
|
91
|
+
() => Assert.AreEqual(++lastSeenCount, count),
|
|
92
|
+
() => { Assert.AreEqual(lastSeenCount, count);},
|
|
93
|
+
token,
|
|
94
|
+
synchronizeDeregistrations: true);
|
|
95
|
+
|
|
96
|
+
yield break;
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
[UnityTest]
|
|
100
|
+
public IEnumerator GameObjectTargeted()
|
|
101
|
+
{
|
|
102
|
+
GameObject test = new(nameof(GameObjectTargeted), typeof(EmptyMessageAwareComponent));
|
|
103
|
+
_spawned.Add(test);
|
|
104
|
+
|
|
105
|
+
EmptyMessageAwareComponent component = test.GetComponent<EmptyMessageAwareComponent>();
|
|
106
|
+
MessageRegistrationToken token = GetToken(component);
|
|
107
|
+
|
|
108
|
+
int lastSeenCount = 0;
|
|
109
|
+
int count = 0;
|
|
110
|
+
|
|
111
|
+
int finalCount = 0;
|
|
112
|
+
void ResetCount()
|
|
113
|
+
{
|
|
114
|
+
lastSeenCount = 0;
|
|
115
|
+
count = 0;
|
|
116
|
+
finalCount = 0;
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
Action assertion;
|
|
120
|
+
|
|
121
|
+
void PostProcessor(ref SimpleTargetedMessage message)
|
|
122
|
+
{
|
|
123
|
+
assertion.Invoke();
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
count = 1;
|
|
127
|
+
assertion = () =>
|
|
128
|
+
{
|
|
129
|
+
Assert.AreEqual(lastSeenCount + 1, count);
|
|
130
|
+
};
|
|
131
|
+
|
|
132
|
+
SimpleTargetedMessage message = new();
|
|
133
|
+
Run(() => new[] { token.RegisterGameObjectTargetedPostProcessor<SimpleTargetedMessage>(test, PostProcessor) },
|
|
134
|
+
() => message.EmitGameObjectTargeted(test),
|
|
135
|
+
() =>
|
|
136
|
+
{
|
|
137
|
+
lastSeenCount = count++;
|
|
138
|
+
finalCount = count;
|
|
139
|
+
},
|
|
140
|
+
() =>
|
|
141
|
+
{
|
|
142
|
+
Assert.AreEqual(finalCount - 1, lastSeenCount);
|
|
143
|
+
Assert.AreEqual(finalCount, count);
|
|
144
|
+
},
|
|
145
|
+
token);
|
|
146
|
+
|
|
147
|
+
ResetCount();
|
|
148
|
+
assertion = () =>
|
|
149
|
+
{
|
|
150
|
+
Assert.AreEqual(lastSeenCount + 1, count);
|
|
151
|
+
lastSeenCount = count;
|
|
152
|
+
};
|
|
153
|
+
Run(() => new[] { token.RegisterGameObjectTargetedPostProcessor<SimpleTargetedMessage>(test, PostProcessor), token.RegisterGameObjectTargeted<SimpleTargetedMessage>(test, _ => ++count) },
|
|
154
|
+
() => message.EmitGameObjectTargeted(test),
|
|
155
|
+
() =>
|
|
156
|
+
{
|
|
157
|
+
Assert.AreEqual(lastSeenCount, count);
|
|
158
|
+
finalCount = count;
|
|
159
|
+
},
|
|
160
|
+
() =>
|
|
161
|
+
{
|
|
162
|
+
Assert.AreEqual(finalCount, lastSeenCount);
|
|
163
|
+
Assert.AreEqual(finalCount, count);
|
|
164
|
+
},
|
|
165
|
+
token,
|
|
166
|
+
synchronizeDeregistrations: true);
|
|
167
|
+
|
|
168
|
+
ResetCount();
|
|
169
|
+
assertion = () =>
|
|
170
|
+
{
|
|
171
|
+
++count;
|
|
172
|
+
};
|
|
173
|
+
Run(() => new[] { token.RegisterGameObjectTargetedPostProcessor<SimpleTargetedMessage>(test, PostProcessor), token.RegisterGameObjectTargetedPostProcessor<SimpleTargetedMessage>(test, PostProcessor) },
|
|
174
|
+
() => message.EmitGameObjectTargeted(test),
|
|
175
|
+
() => Assert.AreEqual(++lastSeenCount, count),
|
|
176
|
+
() => { Assert.AreEqual(lastSeenCount, count); },
|
|
177
|
+
token,
|
|
178
|
+
synchronizeDeregistrations: true);
|
|
179
|
+
|
|
180
|
+
ResetCount();
|
|
181
|
+
assertion = () =>
|
|
182
|
+
{
|
|
183
|
+
Assert.Fail("Should never be called, we're emitting the wrong thing");
|
|
184
|
+
};
|
|
185
|
+
Run(() => new[] { token.RegisterGameObjectTargetedPostProcessor<SimpleTargetedMessage>(test, PostProcessor) },
|
|
186
|
+
() => message.EmitComponentTargeted(component),
|
|
187
|
+
() =>
|
|
188
|
+
{
|
|
189
|
+
Assert.AreEqual(0, count);
|
|
190
|
+
Assert.AreEqual(0, lastSeenCount);
|
|
191
|
+
},
|
|
192
|
+
() =>
|
|
193
|
+
{
|
|
194
|
+
Assert.AreEqual(0, count);
|
|
195
|
+
Assert.AreEqual(0, lastSeenCount);
|
|
196
|
+
},
|
|
197
|
+
token);
|
|
198
|
+
|
|
199
|
+
yield break;
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
[UnityTest]
|
|
203
|
+
public IEnumerator GameObjectTargetedWithoutTargeting()
|
|
204
|
+
{
|
|
205
|
+
GameObject test = new(nameof(GameObjectTargetedWithoutTargeting), typeof(EmptyMessageAwareComponent));
|
|
206
|
+
_spawned.Add(test);
|
|
207
|
+
|
|
208
|
+
EmptyMessageAwareComponent component = test.GetComponent<EmptyMessageAwareComponent>();
|
|
209
|
+
MessageRegistrationToken token = GetToken(component);
|
|
210
|
+
|
|
211
|
+
int lastSeenCount = 0;
|
|
212
|
+
int count = 0;
|
|
213
|
+
|
|
214
|
+
int finalCount = 0;
|
|
215
|
+
void ResetCount()
|
|
216
|
+
{
|
|
217
|
+
lastSeenCount = 0;
|
|
218
|
+
count = 0;
|
|
219
|
+
finalCount = 0;
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
Action assertion;
|
|
223
|
+
|
|
224
|
+
void PostProcessor(ref InstanceId target, ref SimpleTargetedMessage message)
|
|
225
|
+
{
|
|
226
|
+
assertion.Invoke();
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
count = 1;
|
|
230
|
+
assertion = () =>
|
|
231
|
+
{
|
|
232
|
+
Assert.AreEqual(lastSeenCount + 1, count);
|
|
233
|
+
};
|
|
234
|
+
|
|
235
|
+
SimpleTargetedMessage message = new();
|
|
236
|
+
Run(() => new[] { token.RegisterTargetedWithoutTargeting<SimpleTargetedMessage>(PostProcessor) },
|
|
237
|
+
() => message.EmitGameObjectTargeted(test),
|
|
238
|
+
() =>
|
|
239
|
+
{
|
|
240
|
+
lastSeenCount = count++;
|
|
241
|
+
finalCount = count;
|
|
242
|
+
},
|
|
243
|
+
() =>
|
|
244
|
+
{
|
|
245
|
+
Assert.AreEqual(finalCount - 1, lastSeenCount);
|
|
246
|
+
Assert.AreEqual(finalCount, count);
|
|
247
|
+
},
|
|
248
|
+
token);
|
|
249
|
+
|
|
250
|
+
ResetCount();
|
|
251
|
+
assertion = () =>
|
|
252
|
+
{
|
|
253
|
+
Assert.AreEqual(lastSeenCount + 1, count);
|
|
254
|
+
lastSeenCount = count;
|
|
255
|
+
};
|
|
256
|
+
Run(() => new[] { token.RegisterTargetedWithoutTargeting<SimpleTargetedMessage>(PostProcessor), token.RegisterGameObjectTargeted<SimpleTargetedMessage>(test, _ => ++count) },
|
|
257
|
+
() => message.EmitGameObjectTargeted(test),
|
|
258
|
+
() =>
|
|
259
|
+
{
|
|
260
|
+
Assert.AreEqual(lastSeenCount, count);
|
|
261
|
+
finalCount = count;
|
|
262
|
+
},
|
|
263
|
+
() =>
|
|
264
|
+
{
|
|
265
|
+
Assert.AreEqual(finalCount, lastSeenCount);
|
|
266
|
+
Assert.AreEqual(finalCount, count);
|
|
267
|
+
},
|
|
268
|
+
token,
|
|
269
|
+
synchronizeDeregistrations: true);
|
|
270
|
+
|
|
271
|
+
ResetCount();
|
|
272
|
+
assertion = () =>
|
|
273
|
+
{
|
|
274
|
+
++count;
|
|
275
|
+
};
|
|
276
|
+
Run(() => new[] { token.RegisterTargetedWithoutTargeting<SimpleTargetedMessage>(PostProcessor), token.RegisterTargetedWithoutTargeting<SimpleTargetedMessage>(PostProcessor) },
|
|
277
|
+
() => message.EmitGameObjectTargeted(test),
|
|
278
|
+
() => Assert.AreEqual(++lastSeenCount, count),
|
|
279
|
+
() => { Assert.AreEqual(lastSeenCount, count); },
|
|
280
|
+
token,
|
|
281
|
+
synchronizeDeregistrations: true);
|
|
282
|
+
|
|
283
|
+
yield break;
|
|
284
|
+
}
|
|
285
|
+
|
|
286
|
+
[UnityTest]
|
|
287
|
+
public IEnumerator ComponentTargeted()
|
|
288
|
+
{
|
|
289
|
+
GameObject test = new(nameof(ComponentTargeted), typeof(EmptyMessageAwareComponent));
|
|
290
|
+
_spawned.Add(test);
|
|
291
|
+
|
|
292
|
+
EmptyMessageAwareComponent component = test.GetComponent<EmptyMessageAwareComponent>();
|
|
293
|
+
MessageRegistrationToken token = GetToken(component);
|
|
294
|
+
|
|
295
|
+
int lastSeenCount = 0;
|
|
296
|
+
int count = 0;
|
|
297
|
+
|
|
298
|
+
int finalCount = 0;
|
|
299
|
+
void ResetCount()
|
|
300
|
+
{
|
|
301
|
+
lastSeenCount = 0;
|
|
302
|
+
count = 0;
|
|
303
|
+
finalCount = 0;
|
|
304
|
+
}
|
|
305
|
+
|
|
306
|
+
Action assertion;
|
|
307
|
+
|
|
308
|
+
void PostProcessor(ref SimpleTargetedMessage message)
|
|
309
|
+
{
|
|
310
|
+
assertion.Invoke();
|
|
311
|
+
}
|
|
312
|
+
|
|
313
|
+
count = 1;
|
|
314
|
+
assertion = () =>
|
|
315
|
+
{
|
|
316
|
+
Assert.AreEqual(lastSeenCount + 1, count);
|
|
317
|
+
};
|
|
318
|
+
|
|
319
|
+
SimpleTargetedMessage message = new();
|
|
320
|
+
Run(() => new[] { token.RegisterComponentTargetedPostProcessor<SimpleTargetedMessage>(component, PostProcessor) },
|
|
321
|
+
() => message.EmitComponentTargeted(component),
|
|
322
|
+
() =>
|
|
323
|
+
{
|
|
324
|
+
lastSeenCount = count++;
|
|
325
|
+
finalCount = count;
|
|
326
|
+
},
|
|
327
|
+
() =>
|
|
328
|
+
{
|
|
329
|
+
Assert.AreEqual(finalCount - 1, lastSeenCount);
|
|
330
|
+
Assert.AreEqual(finalCount, count);
|
|
331
|
+
},
|
|
332
|
+
token);
|
|
333
|
+
|
|
334
|
+
ResetCount();
|
|
335
|
+
assertion = () =>
|
|
336
|
+
{
|
|
337
|
+
Assert.AreEqual(lastSeenCount + 1, count);
|
|
338
|
+
lastSeenCount = count;
|
|
339
|
+
};
|
|
340
|
+
Run(() => new[] { token.RegisterComponentTargetedPostProcessor<SimpleTargetedMessage>(component, PostProcessor), token.RegisterComponentTargeted<SimpleTargetedMessage>(component, _ => ++count) },
|
|
341
|
+
() => message.EmitComponentTargeted(component),
|
|
342
|
+
() =>
|
|
343
|
+
{
|
|
344
|
+
Assert.AreEqual(lastSeenCount, count);
|
|
345
|
+
finalCount = count;
|
|
346
|
+
},
|
|
347
|
+
() =>
|
|
348
|
+
{
|
|
349
|
+
Assert.AreEqual(finalCount, lastSeenCount);
|
|
350
|
+
Assert.AreEqual(finalCount, count);
|
|
351
|
+
},
|
|
352
|
+
token,
|
|
353
|
+
synchronizeDeregistrations: true);
|
|
354
|
+
|
|
355
|
+
ResetCount();
|
|
356
|
+
assertion = () =>
|
|
357
|
+
{
|
|
358
|
+
++count;
|
|
359
|
+
};
|
|
360
|
+
Run(() => new[] { token.RegisterComponentTargetedPostProcessor<SimpleTargetedMessage>(component, PostProcessor), token.RegisterComponentTargetedPostProcessor<SimpleTargetedMessage>(component, PostProcessor) },
|
|
361
|
+
() => message.EmitComponentTargeted(component),
|
|
362
|
+
() => Assert.AreEqual(++lastSeenCount, count),
|
|
363
|
+
() => { Assert.AreEqual(lastSeenCount, count); },
|
|
364
|
+
token,
|
|
365
|
+
synchronizeDeregistrations: true);
|
|
366
|
+
|
|
367
|
+
ResetCount();
|
|
368
|
+
assertion = () =>
|
|
369
|
+
{
|
|
370
|
+
Assert.Fail("Should never be called, we're emitting the wrong thing");
|
|
371
|
+
};
|
|
372
|
+
Run(() => new[] { token.RegisterComponentTargetedPostProcessor<SimpleTargetedMessage>(component, PostProcessor)},
|
|
373
|
+
() => message.EmitGameObjectTargeted(test),
|
|
374
|
+
() =>
|
|
375
|
+
{
|
|
376
|
+
Assert.AreEqual(0, count);
|
|
377
|
+
Assert.AreEqual(0, lastSeenCount);
|
|
378
|
+
},
|
|
379
|
+
() =>
|
|
380
|
+
{
|
|
381
|
+
Assert.AreEqual(0, count);
|
|
382
|
+
Assert.AreEqual(0, lastSeenCount);
|
|
383
|
+
},
|
|
384
|
+
token);
|
|
385
|
+
|
|
386
|
+
yield break;
|
|
387
|
+
}
|
|
388
|
+
|
|
389
|
+
[UnityTest]
|
|
390
|
+
public IEnumerator ComponentTargetedWithoutTargeting()
|
|
391
|
+
{
|
|
392
|
+
GameObject test = new(nameof(ComponentTargetedWithoutTargeting), typeof(EmptyMessageAwareComponent));
|
|
393
|
+
_spawned.Add(test);
|
|
394
|
+
|
|
395
|
+
EmptyMessageAwareComponent component = test.GetComponent<EmptyMessageAwareComponent>();
|
|
396
|
+
MessageRegistrationToken token = GetToken(component);
|
|
397
|
+
|
|
398
|
+
int lastSeenCount = 0;
|
|
399
|
+
int count = 0;
|
|
400
|
+
|
|
401
|
+
int finalCount = 0;
|
|
402
|
+
void ResetCount()
|
|
403
|
+
{
|
|
404
|
+
lastSeenCount = 0;
|
|
405
|
+
count = 0;
|
|
406
|
+
finalCount = 0;
|
|
407
|
+
}
|
|
408
|
+
|
|
409
|
+
Action assertion;
|
|
410
|
+
|
|
411
|
+
void PostProcessor(ref InstanceId target, ref SimpleTargetedMessage message)
|
|
412
|
+
{
|
|
413
|
+
assertion.Invoke();
|
|
414
|
+
}
|
|
415
|
+
|
|
416
|
+
count = 1;
|
|
417
|
+
assertion = () =>
|
|
418
|
+
{
|
|
419
|
+
Assert.AreEqual(lastSeenCount + 1, count);
|
|
420
|
+
};
|
|
421
|
+
|
|
422
|
+
SimpleTargetedMessage message = new();
|
|
423
|
+
Run(() => new[] { token.RegisterTargetedWithoutTargetingPostProcessor<SimpleTargetedMessage>(PostProcessor) },
|
|
424
|
+
() => message.EmitComponentTargeted(component),
|
|
425
|
+
() =>
|
|
426
|
+
{
|
|
427
|
+
lastSeenCount = count++;
|
|
428
|
+
finalCount = count;
|
|
429
|
+
},
|
|
430
|
+
() =>
|
|
431
|
+
{
|
|
432
|
+
Assert.AreEqual(finalCount - 1, lastSeenCount);
|
|
433
|
+
Assert.AreEqual(finalCount, count);
|
|
434
|
+
},
|
|
435
|
+
token);
|
|
436
|
+
|
|
437
|
+
ResetCount();
|
|
438
|
+
assertion = () =>
|
|
439
|
+
{
|
|
440
|
+
Assert.AreEqual(lastSeenCount + 1, count);
|
|
441
|
+
lastSeenCount = count;
|
|
442
|
+
};
|
|
443
|
+
Run(() => new[] { token.RegisterTargetedWithoutTargetingPostProcessor<SimpleTargetedMessage>(PostProcessor), token.RegisterComponentTargeted<SimpleTargetedMessage>(component, _ => ++count) },
|
|
444
|
+
() => message.EmitComponentTargeted(component),
|
|
445
|
+
() =>
|
|
446
|
+
{
|
|
447
|
+
Assert.AreEqual(lastSeenCount, count);
|
|
448
|
+
finalCount = count;
|
|
449
|
+
},
|
|
450
|
+
() =>
|
|
451
|
+
{
|
|
452
|
+
Assert.AreEqual(finalCount, lastSeenCount);
|
|
453
|
+
Assert.AreEqual(finalCount, count);
|
|
454
|
+
},
|
|
455
|
+
token,
|
|
456
|
+
synchronizeDeregistrations: true);
|
|
457
|
+
|
|
458
|
+
ResetCount();
|
|
459
|
+
assertion = () =>
|
|
460
|
+
{
|
|
461
|
+
++count;
|
|
462
|
+
};
|
|
463
|
+
Run(() => new[] { token.RegisterTargetedWithoutTargetingPostProcessor<SimpleTargetedMessage>(PostProcessor), token.RegisterTargetedWithoutTargetingPostProcessor<SimpleTargetedMessage>(PostProcessor) },
|
|
464
|
+
() => message.EmitComponentTargeted(component),
|
|
465
|
+
() => Assert.AreEqual(++lastSeenCount, count),
|
|
466
|
+
() => { Assert.AreEqual(lastSeenCount, count); },
|
|
467
|
+
token,
|
|
468
|
+
synchronizeDeregistrations: true);
|
|
469
|
+
|
|
470
|
+
ResetCount();
|
|
471
|
+
|
|
472
|
+
yield break;
|
|
473
|
+
}
|
|
474
|
+
|
|
475
|
+
[UnityTest]
|
|
476
|
+
public IEnumerator GameObjectBroadcast()
|
|
477
|
+
{
|
|
478
|
+
GameObject test = new(nameof(GameObjectBroadcast), typeof(EmptyMessageAwareComponent));
|
|
479
|
+
_spawned.Add(test);
|
|
480
|
+
|
|
481
|
+
EmptyMessageAwareComponent component = test.GetComponent<EmptyMessageAwareComponent>();
|
|
482
|
+
MessageRegistrationToken token = GetToken(component);
|
|
483
|
+
|
|
484
|
+
int lastSeenCount = 0;
|
|
485
|
+
int count = 0;
|
|
486
|
+
|
|
487
|
+
int finalCount = 0;
|
|
488
|
+
void ResetCount()
|
|
489
|
+
{
|
|
490
|
+
lastSeenCount = 0;
|
|
491
|
+
count = 0;
|
|
492
|
+
finalCount = 0;
|
|
493
|
+
}
|
|
494
|
+
|
|
495
|
+
Action assertion;
|
|
496
|
+
|
|
497
|
+
void PostProcessor(ref SimpleBroadcastMessage message)
|
|
498
|
+
{
|
|
499
|
+
assertion.Invoke();
|
|
500
|
+
}
|
|
501
|
+
|
|
502
|
+
count = 1;
|
|
503
|
+
assertion = () =>
|
|
504
|
+
{
|
|
505
|
+
Assert.AreEqual(lastSeenCount + 1, count);
|
|
506
|
+
};
|
|
507
|
+
|
|
508
|
+
SimpleBroadcastMessage message = new();
|
|
509
|
+
Run(() => new[] { token.RegisterGameObjectBroadcastPostProcessor<SimpleBroadcastMessage>(test, PostProcessor) },
|
|
510
|
+
() => message.EmitGameObjectBroadcast(test),
|
|
511
|
+
() =>
|
|
512
|
+
{
|
|
513
|
+
lastSeenCount = count++;
|
|
514
|
+
finalCount = count;
|
|
515
|
+
},
|
|
516
|
+
() =>
|
|
517
|
+
{
|
|
518
|
+
Assert.AreEqual(finalCount - 1, lastSeenCount);
|
|
519
|
+
Assert.AreEqual(finalCount, count);
|
|
520
|
+
},
|
|
521
|
+
token);
|
|
522
|
+
|
|
523
|
+
ResetCount();
|
|
524
|
+
assertion = () =>
|
|
525
|
+
{
|
|
526
|
+
Assert.AreEqual(lastSeenCount + 1, count, "GameObjectBroadcast was not handled!");
|
|
527
|
+
lastSeenCount = count;
|
|
528
|
+
};
|
|
529
|
+
Run(() => new[] { token.RegisterGameObjectBroadcastPostProcessor<SimpleBroadcastMessage>(test, PostProcessor), token.RegisterGameObjectBroadcast<SimpleBroadcastMessage>(test, _ => ++count) },
|
|
530
|
+
() => message.EmitGameObjectBroadcast(test),
|
|
531
|
+
() =>
|
|
532
|
+
{
|
|
533
|
+
Assert.AreEqual(lastSeenCount, count, "GameObjectBroadcast PostProcessor was not run!");
|
|
534
|
+
finalCount = count;
|
|
535
|
+
},
|
|
536
|
+
() =>
|
|
537
|
+
{
|
|
538
|
+
Assert.AreEqual(finalCount, lastSeenCount);
|
|
539
|
+
Assert.AreEqual(finalCount, count);
|
|
540
|
+
},
|
|
541
|
+
token,
|
|
542
|
+
synchronizeDeregistrations: true);
|
|
543
|
+
|
|
544
|
+
ResetCount();
|
|
545
|
+
assertion = () =>
|
|
546
|
+
{
|
|
547
|
+
++count;
|
|
548
|
+
};
|
|
549
|
+
Run(() => new[] { token.RegisterGameObjectBroadcastPostProcessor<SimpleBroadcastMessage>(test, PostProcessor), token.RegisterGameObjectBroadcastPostProcessor<SimpleBroadcastMessage>(test, PostProcessor) },
|
|
550
|
+
() => message.EmitGameObjectBroadcast(test),
|
|
551
|
+
() => Assert.AreEqual(++lastSeenCount, count, "GameObjectBroadcast PostProcessor was ran twice!"),
|
|
552
|
+
() => { Assert.AreEqual(lastSeenCount, count, "GameObjectPostProcessor ran without any receivers subscribed!"); },
|
|
553
|
+
token,
|
|
554
|
+
synchronizeDeregistrations: true);
|
|
555
|
+
|
|
556
|
+
ResetCount();
|
|
557
|
+
assertion = () =>
|
|
558
|
+
{
|
|
559
|
+
Assert.Fail("Should never be called, we're emitting the wrong thing");
|
|
560
|
+
};
|
|
561
|
+
Run(() => new[] { token.RegisterGameObjectBroadcastPostProcessor<SimpleBroadcastMessage>(test, PostProcessor)},
|
|
562
|
+
() => message.EmitComponentBroadcast(component),
|
|
563
|
+
() =>
|
|
564
|
+
{
|
|
565
|
+
Assert.AreEqual(0, count);
|
|
566
|
+
Assert.AreEqual(0, lastSeenCount);
|
|
567
|
+
},
|
|
568
|
+
() =>
|
|
569
|
+
{
|
|
570
|
+
Assert.AreEqual(0, count);
|
|
571
|
+
Assert.AreEqual(0, lastSeenCount);
|
|
572
|
+
},
|
|
573
|
+
token);
|
|
574
|
+
|
|
575
|
+
yield break;
|
|
576
|
+
}
|
|
577
|
+
|
|
578
|
+
[UnityTest]
|
|
579
|
+
public IEnumerator GameObjectBroadcastWithoutSource()
|
|
580
|
+
{
|
|
581
|
+
GameObject test = new(nameof(GameObjectBroadcastWithoutSource), typeof(EmptyMessageAwareComponent));
|
|
582
|
+
_spawned.Add(test);
|
|
583
|
+
|
|
584
|
+
EmptyMessageAwareComponent component = test.GetComponent<EmptyMessageAwareComponent>();
|
|
585
|
+
MessageRegistrationToken token = GetToken(component);
|
|
586
|
+
|
|
587
|
+
int lastSeenCount = 0;
|
|
588
|
+
int count = 0;
|
|
589
|
+
|
|
590
|
+
int finalCount = 0;
|
|
591
|
+
void ResetCount()
|
|
592
|
+
{
|
|
593
|
+
lastSeenCount = 0;
|
|
594
|
+
count = 0;
|
|
595
|
+
finalCount = 0;
|
|
596
|
+
}
|
|
597
|
+
|
|
598
|
+
Action assertion;
|
|
599
|
+
|
|
600
|
+
void PostProcessor(ref InstanceId target, ref SimpleBroadcastMessage message)
|
|
601
|
+
{
|
|
602
|
+
assertion.Invoke();
|
|
603
|
+
}
|
|
604
|
+
|
|
605
|
+
count = 1;
|
|
606
|
+
assertion = () =>
|
|
607
|
+
{
|
|
608
|
+
Assert.AreEqual(lastSeenCount + 1, count);
|
|
609
|
+
};
|
|
610
|
+
|
|
611
|
+
SimpleBroadcastMessage message = new();
|
|
612
|
+
Run(() => new[] { token.RegisterBroadcastWithoutSourcePostProcessor<SimpleBroadcastMessage>(PostProcessor) },
|
|
613
|
+
() => message.EmitGameObjectBroadcast(test),
|
|
614
|
+
() =>
|
|
615
|
+
{
|
|
616
|
+
lastSeenCount = count++;
|
|
617
|
+
finalCount = count;
|
|
618
|
+
},
|
|
619
|
+
() =>
|
|
620
|
+
{
|
|
621
|
+
Assert.AreEqual(finalCount - 1, lastSeenCount);
|
|
622
|
+
Assert.AreEqual(finalCount, count);
|
|
623
|
+
},
|
|
624
|
+
token);
|
|
625
|
+
|
|
626
|
+
ResetCount();
|
|
627
|
+
assertion = () =>
|
|
628
|
+
{
|
|
629
|
+
Assert.AreEqual(lastSeenCount + 1, count, "GameObjectBroadcast was not handled!");
|
|
630
|
+
lastSeenCount = count;
|
|
631
|
+
};
|
|
632
|
+
Run(() => new[] { token.RegisterBroadcastWithoutSourcePostProcessor<SimpleBroadcastMessage>(PostProcessor), token.RegisterGameObjectBroadcast<SimpleBroadcastMessage>(test, _ => ++count) },
|
|
633
|
+
() => message.EmitGameObjectBroadcast(test),
|
|
634
|
+
() =>
|
|
635
|
+
{
|
|
636
|
+
Assert.AreEqual(lastSeenCount, count, "GameObjectBroadcast PostProcessor was not run!");
|
|
637
|
+
finalCount = count;
|
|
638
|
+
},
|
|
639
|
+
() =>
|
|
640
|
+
{
|
|
641
|
+
Assert.AreEqual(finalCount, lastSeenCount);
|
|
642
|
+
Assert.AreEqual(finalCount, count);
|
|
643
|
+
},
|
|
644
|
+
token,
|
|
645
|
+
synchronizeDeregistrations: true);
|
|
646
|
+
|
|
647
|
+
ResetCount();
|
|
648
|
+
assertion = () =>
|
|
649
|
+
{
|
|
650
|
+
++count;
|
|
651
|
+
};
|
|
652
|
+
Run(() => new[] { token.RegisterBroadcastWithoutSourcePostProcessor<SimpleBroadcastMessage>(PostProcessor), token.RegisterBroadcastWithoutSourcePostProcessor<SimpleBroadcastMessage>(PostProcessor) },
|
|
653
|
+
() => message.EmitGameObjectBroadcast(test),
|
|
654
|
+
() => Assert.AreEqual(++lastSeenCount, count, "GameObjectBroadcast PostProcessor was ran twice!"),
|
|
655
|
+
() => { Assert.AreEqual(lastSeenCount, count, "GameObjectPostProcessor ran without any receivers subscribed!"); },
|
|
656
|
+
token,
|
|
657
|
+
synchronizeDeregistrations: true);
|
|
658
|
+
|
|
659
|
+
yield break;
|
|
660
|
+
}
|
|
661
|
+
|
|
662
|
+
[UnityTest]
|
|
663
|
+
public IEnumerator ComponentBroadcast()
|
|
664
|
+
{
|
|
665
|
+
GameObject test = new(nameof(ComponentBroadcast), typeof(EmptyMessageAwareComponent));
|
|
666
|
+
_spawned.Add(test);
|
|
667
|
+
|
|
668
|
+
EmptyMessageAwareComponent component = test.GetComponent<EmptyMessageAwareComponent>();
|
|
669
|
+
MessageRegistrationToken token = GetToken(component);
|
|
670
|
+
|
|
671
|
+
int lastSeenCount = 0;
|
|
672
|
+
int count = 0;
|
|
673
|
+
|
|
674
|
+
int finalCount = 0;
|
|
675
|
+
void ResetCount()
|
|
676
|
+
{
|
|
677
|
+
lastSeenCount = 0;
|
|
678
|
+
count = 0;
|
|
679
|
+
finalCount = 0;
|
|
680
|
+
}
|
|
681
|
+
|
|
682
|
+
Action assertion;
|
|
683
|
+
|
|
684
|
+
void PostProcessor(ref SimpleBroadcastMessage message)
|
|
685
|
+
{
|
|
686
|
+
assertion.Invoke();
|
|
687
|
+
}
|
|
688
|
+
|
|
689
|
+
count = 1;
|
|
690
|
+
assertion = () =>
|
|
691
|
+
{
|
|
692
|
+
Assert.AreEqual(lastSeenCount + 1, count);
|
|
693
|
+
};
|
|
694
|
+
|
|
695
|
+
SimpleBroadcastMessage message = new();
|
|
696
|
+
Run(() => new[] { token.RegisterComponentBroadcastPostProcessor<SimpleBroadcastMessage>(component, PostProcessor) },
|
|
697
|
+
() => message.EmitComponentBroadcast(component),
|
|
698
|
+
() =>
|
|
699
|
+
{
|
|
700
|
+
lastSeenCount = count++;
|
|
701
|
+
finalCount = count;
|
|
702
|
+
},
|
|
703
|
+
() =>
|
|
704
|
+
{
|
|
705
|
+
Assert.AreEqual(finalCount - 1, lastSeenCount);
|
|
706
|
+
Assert.AreEqual(finalCount, count);
|
|
707
|
+
},
|
|
708
|
+
token);
|
|
709
|
+
|
|
710
|
+
ResetCount();
|
|
711
|
+
assertion = () =>
|
|
712
|
+
{
|
|
713
|
+
Assert.AreEqual(lastSeenCount + 1, count);
|
|
714
|
+
lastSeenCount = count;
|
|
715
|
+
};
|
|
716
|
+
Run(() => new[] { token.RegisterComponentBroadcastPostProcessor<SimpleBroadcastMessage>(component, PostProcessor), token.RegisterComponentBroadcast<SimpleBroadcastMessage>(component, _ => ++count) },
|
|
717
|
+
() => message.EmitComponentBroadcast(component),
|
|
718
|
+
() =>
|
|
719
|
+
{
|
|
720
|
+
Assert.AreEqual(lastSeenCount, count);
|
|
721
|
+
finalCount = count;
|
|
722
|
+
},
|
|
723
|
+
() =>
|
|
724
|
+
{
|
|
725
|
+
Assert.AreEqual(finalCount, lastSeenCount);
|
|
726
|
+
Assert.AreEqual(finalCount, count);
|
|
727
|
+
},
|
|
728
|
+
token,
|
|
729
|
+
synchronizeDeregistrations: true);
|
|
730
|
+
|
|
731
|
+
ResetCount();
|
|
732
|
+
assertion = () =>
|
|
733
|
+
{
|
|
734
|
+
++count;
|
|
735
|
+
};
|
|
736
|
+
Run(() => new[] { token.RegisterComponentBroadcastPostProcessor<SimpleBroadcastMessage>(component, PostProcessor), token.RegisterComponentBroadcastPostProcessor<SimpleBroadcastMessage>(component, PostProcessor) },
|
|
737
|
+
() => message.EmitComponentBroadcast(component),
|
|
738
|
+
() => Assert.AreEqual(++lastSeenCount, count),
|
|
739
|
+
() => { Assert.AreEqual(lastSeenCount, count); },
|
|
740
|
+
token,
|
|
741
|
+
synchronizeDeregistrations: true);
|
|
742
|
+
|
|
743
|
+
ResetCount();
|
|
744
|
+
assertion = () =>
|
|
745
|
+
{
|
|
746
|
+
Assert.Fail("Should never be called, we're emitting the wrong thing");
|
|
747
|
+
};
|
|
748
|
+
Run(() => new[] { token.RegisterComponentBroadcastPostProcessor<SimpleBroadcastMessage>(component, PostProcessor) },
|
|
749
|
+
() => message.EmitGameObjectBroadcast(test),
|
|
750
|
+
() =>
|
|
751
|
+
{
|
|
752
|
+
Assert.AreEqual(0, count);
|
|
753
|
+
Assert.AreEqual(0, lastSeenCount);
|
|
754
|
+
},
|
|
755
|
+
() =>
|
|
756
|
+
{
|
|
757
|
+
Assert.AreEqual(0, count);
|
|
758
|
+
Assert.AreEqual(0, lastSeenCount);
|
|
759
|
+
},
|
|
760
|
+
token);
|
|
761
|
+
|
|
762
|
+
yield break;
|
|
763
|
+
}
|
|
764
|
+
|
|
765
|
+
[UnityTest]
|
|
766
|
+
public IEnumerator ComponentBroadcastWithoutSource()
|
|
767
|
+
{
|
|
768
|
+
GameObject test = new(nameof(ComponentBroadcastWithoutSource), typeof(EmptyMessageAwareComponent));
|
|
769
|
+
_spawned.Add(test);
|
|
770
|
+
|
|
771
|
+
EmptyMessageAwareComponent component = test.GetComponent<EmptyMessageAwareComponent>();
|
|
772
|
+
MessageRegistrationToken token = GetToken(component);
|
|
773
|
+
|
|
774
|
+
int lastSeenCount = 0;
|
|
775
|
+
int count = 0;
|
|
776
|
+
|
|
777
|
+
int finalCount = 0;
|
|
778
|
+
void ResetCount()
|
|
779
|
+
{
|
|
780
|
+
lastSeenCount = 0;
|
|
781
|
+
count = 0;
|
|
782
|
+
finalCount = 0;
|
|
783
|
+
}
|
|
784
|
+
|
|
785
|
+
Action assertion;
|
|
786
|
+
|
|
787
|
+
void PostProcessor(ref InstanceId source, ref SimpleBroadcastMessage message)
|
|
788
|
+
{
|
|
789
|
+
assertion.Invoke();
|
|
790
|
+
}
|
|
791
|
+
|
|
792
|
+
count = 1;
|
|
793
|
+
assertion = () =>
|
|
794
|
+
{
|
|
795
|
+
Assert.AreEqual(lastSeenCount + 1, count);
|
|
796
|
+
};
|
|
797
|
+
|
|
798
|
+
SimpleBroadcastMessage message = new();
|
|
799
|
+
Run(() => new[] { token.RegisterBroadcastWithoutSourcePostProcessor<SimpleBroadcastMessage>(PostProcessor) },
|
|
800
|
+
() => message.EmitComponentBroadcast(component),
|
|
801
|
+
() =>
|
|
802
|
+
{
|
|
803
|
+
lastSeenCount = count++;
|
|
804
|
+
finalCount = count;
|
|
805
|
+
},
|
|
806
|
+
() =>
|
|
807
|
+
{
|
|
808
|
+
Assert.AreEqual(finalCount - 1, lastSeenCount);
|
|
809
|
+
Assert.AreEqual(finalCount, count);
|
|
810
|
+
},
|
|
811
|
+
token);
|
|
812
|
+
|
|
813
|
+
ResetCount();
|
|
814
|
+
assertion = () =>
|
|
815
|
+
{
|
|
816
|
+
Assert.AreEqual(lastSeenCount + 1, count);
|
|
817
|
+
lastSeenCount = count;
|
|
818
|
+
};
|
|
819
|
+
Run(() => new[] { token.RegisterBroadcastWithoutSourcePostProcessor<SimpleBroadcastMessage>(PostProcessor), token.RegisterComponentBroadcast<SimpleBroadcastMessage>(component, _ => ++count) },
|
|
820
|
+
() => message.EmitComponentBroadcast(component),
|
|
821
|
+
() =>
|
|
822
|
+
{
|
|
823
|
+
Assert.AreEqual(lastSeenCount, count);
|
|
824
|
+
finalCount = count;
|
|
825
|
+
},
|
|
826
|
+
() =>
|
|
827
|
+
{
|
|
828
|
+
Assert.AreEqual(finalCount, lastSeenCount);
|
|
829
|
+
Assert.AreEqual(finalCount, count);
|
|
830
|
+
},
|
|
831
|
+
token,
|
|
832
|
+
synchronizeDeregistrations: true);
|
|
833
|
+
|
|
834
|
+
ResetCount();
|
|
835
|
+
assertion = () =>
|
|
836
|
+
{
|
|
837
|
+
++count;
|
|
838
|
+
};
|
|
839
|
+
Run(() => new[] { token.RegisterBroadcastWithoutSourcePostProcessor<SimpleBroadcastMessage>(PostProcessor), token.RegisterBroadcastWithoutSourcePostProcessor<SimpleBroadcastMessage>(PostProcessor) },
|
|
840
|
+
() => message.EmitComponentBroadcast(component),
|
|
841
|
+
() => Assert.AreEqual(++lastSeenCount, count),
|
|
842
|
+
() => { Assert.AreEqual(lastSeenCount, count); },
|
|
843
|
+
token,
|
|
844
|
+
synchronizeDeregistrations: true);
|
|
845
|
+
|
|
846
|
+
yield break;
|
|
847
|
+
}
|
|
848
|
+
}
|
|
849
|
+
}
|