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