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,596 @@
|
|
|
1
|
+
namespace DxMessaging.Tests.Runtime.Core
|
|
2
|
+
{
|
|
3
|
+
using DxMessaging.Core;
|
|
4
|
+
using Scripts.Components;
|
|
5
|
+
using Scripts.Messages;
|
|
6
|
+
using System.Collections;
|
|
7
|
+
using DxMessaging.Core.Extensions;
|
|
8
|
+
using NUnit.Framework;
|
|
9
|
+
using UnityEngine;
|
|
10
|
+
using UnityEngine.TestTools;
|
|
11
|
+
using DxMessaging.Core.Messages;
|
|
12
|
+
|
|
13
|
+
public sealed class TargetedTests : MessagingTestBase
|
|
14
|
+
{
|
|
15
|
+
[UnityTest]
|
|
16
|
+
public IEnumerator SimpleGameObjectTargetedNormal()
|
|
17
|
+
{
|
|
18
|
+
GameObject test1 = new(nameof(SimpleGameObjectTargetedNormal) + "1", typeof(EmptyMessageAwareComponent));
|
|
19
|
+
_spawned.Add(test1);
|
|
20
|
+
GameObject test2 = new(nameof(SimpleGameObjectTargetedNormal) + "2", typeof(EmptyMessageAwareComponent));
|
|
21
|
+
_spawned.Add(test2);
|
|
22
|
+
EmptyMessageAwareComponent component1 = test1.GetComponent<EmptyMessageAwareComponent>();
|
|
23
|
+
EmptyMessageAwareComponent component2 = test2.GetComponent<EmptyMessageAwareComponent>();
|
|
24
|
+
|
|
25
|
+
int test1TargetedCount = 0;
|
|
26
|
+
int test2TargetedCount = 0;
|
|
27
|
+
|
|
28
|
+
MessageRegistrationToken token1 = GetToken(component1);
|
|
29
|
+
MessageRegistrationToken token2 = GetToken(component2);
|
|
30
|
+
|
|
31
|
+
_ = token1.RegisterGameObjectTargeted<SimpleTargetedMessage>(test1, _ => ++test1TargetedCount);
|
|
32
|
+
_ = token2.RegisterGameObjectTargeted<SimpleTargetedMessage>(test2, _ => ++test2TargetedCount);
|
|
33
|
+
|
|
34
|
+
SimpleTargetedMessage message = new();
|
|
35
|
+
message.EmitGameObjectTargeted(test1);
|
|
36
|
+
Assert.AreEqual(1, test1TargetedCount);
|
|
37
|
+
Assert.AreEqual(0, test2TargetedCount);
|
|
38
|
+
|
|
39
|
+
message.EmitGameObjectTargeted(test2);
|
|
40
|
+
Assert.AreEqual(1, test1TargetedCount);
|
|
41
|
+
Assert.AreEqual(1, test2TargetedCount);
|
|
42
|
+
|
|
43
|
+
GameObject test3 = new(nameof(SimpleGameObjectTargetedNormal) + "3");
|
|
44
|
+
_spawned.Add(test3);
|
|
45
|
+
message.EmitGameObjectTargeted(test3);
|
|
46
|
+
Assert.AreEqual(1, test1TargetedCount);
|
|
47
|
+
Assert.AreEqual(1, test2TargetedCount);
|
|
48
|
+
|
|
49
|
+
_ = test3.AddComponent<EmptyMessageAwareComponent>();
|
|
50
|
+
message.EmitGameObjectTargeted(test3);
|
|
51
|
+
Assert.AreEqual(1, test1TargetedCount);
|
|
52
|
+
Assert.AreEqual(1, test2TargetedCount);
|
|
53
|
+
|
|
54
|
+
for (int i = 0; i < 100; ++i)
|
|
55
|
+
{
|
|
56
|
+
message.EmitGameObjectTargeted(test1);
|
|
57
|
+
Assert.AreEqual(2 + i, test1TargetedCount);
|
|
58
|
+
Assert.AreEqual(1 + i, test2TargetedCount);
|
|
59
|
+
|
|
60
|
+
message.EmitGameObjectTargeted(test2);
|
|
61
|
+
Assert.AreEqual(2 + i, test1TargetedCount);
|
|
62
|
+
Assert.AreEqual(2 + i, test2TargetedCount);
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
yield break;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
[UnityTest]
|
|
69
|
+
public IEnumerator SimpleGameObjectTargetedNoCopy()
|
|
70
|
+
{
|
|
71
|
+
GameObject test1 = new(nameof(SimpleGameObjectTargetedNoCopy) + "1", typeof(EmptyMessageAwareComponent));
|
|
72
|
+
_spawned.Add(test1);
|
|
73
|
+
GameObject test2 = new(nameof(SimpleGameObjectTargetedNoCopy) + "2", typeof(EmptyMessageAwareComponent));
|
|
74
|
+
_spawned.Add(test2);
|
|
75
|
+
EmptyMessageAwareComponent component1 = test1.GetComponent<EmptyMessageAwareComponent>();
|
|
76
|
+
EmptyMessageAwareComponent component2 = test2.GetComponent<EmptyMessageAwareComponent>();
|
|
77
|
+
|
|
78
|
+
int test1TargetedCount = 0;
|
|
79
|
+
void Test1Receive(ref SimpleTargetedMessage message)
|
|
80
|
+
{
|
|
81
|
+
++test1TargetedCount;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
int test2TargetedCount = 0;
|
|
85
|
+
void Test2Receive(ref SimpleTargetedMessage message)
|
|
86
|
+
{
|
|
87
|
+
++test2TargetedCount;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
MessageRegistrationToken token1 = GetToken(component1);
|
|
91
|
+
MessageRegistrationToken token2 = GetToken(component2);
|
|
92
|
+
|
|
93
|
+
_ = token1.RegisterGameObjectTargeted<SimpleTargetedMessage>(test1, Test1Receive);
|
|
94
|
+
_ = token2.RegisterGameObjectTargeted<SimpleTargetedMessage>(test2, Test2Receive);
|
|
95
|
+
|
|
96
|
+
SimpleTargetedMessage message = new();
|
|
97
|
+
message.EmitGameObjectTargeted(test1);
|
|
98
|
+
Assert.AreEqual(1, test1TargetedCount);
|
|
99
|
+
Assert.AreEqual(0, test2TargetedCount);
|
|
100
|
+
|
|
101
|
+
message.EmitGameObjectTargeted(test2);
|
|
102
|
+
Assert.AreEqual(1, test1TargetedCount);
|
|
103
|
+
Assert.AreEqual(1, test2TargetedCount);
|
|
104
|
+
|
|
105
|
+
GameObject test3 = new(nameof(SimpleGameObjectTargetedNoCopy) + "3");
|
|
106
|
+
message.EmitGameObjectTargeted(test3);
|
|
107
|
+
Assert.AreEqual(1, test1TargetedCount);
|
|
108
|
+
Assert.AreEqual(1, test2TargetedCount);
|
|
109
|
+
|
|
110
|
+
_ = test3.AddComponent<EmptyMessageAwareComponent>();
|
|
111
|
+
_spawned.Add(test3);
|
|
112
|
+
message.EmitGameObjectTargeted(test3);
|
|
113
|
+
Assert.AreEqual(1, test1TargetedCount);
|
|
114
|
+
Assert.AreEqual(1, test2TargetedCount);
|
|
115
|
+
|
|
116
|
+
for (int i = 0; i < 100; ++i)
|
|
117
|
+
{
|
|
118
|
+
message.EmitGameObjectTargeted(test1);
|
|
119
|
+
Assert.AreEqual(2 + i, test1TargetedCount);
|
|
120
|
+
Assert.AreEqual(1 + i, test2TargetedCount);
|
|
121
|
+
|
|
122
|
+
message.EmitGameObjectTargeted(test2);
|
|
123
|
+
Assert.AreEqual(2 + i, test1TargetedCount);
|
|
124
|
+
Assert.AreEqual(2 + i, test2TargetedCount);
|
|
125
|
+
}
|
|
126
|
+
yield break;
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
[UnityTest]
|
|
130
|
+
public IEnumerator SimpleGameObjectTargetedDualMode()
|
|
131
|
+
{
|
|
132
|
+
GameObject test1 = new(nameof(SimpleGameObjectTargetedDualMode) + "1", typeof(EmptyMessageAwareComponent));
|
|
133
|
+
_spawned.Add(test1);
|
|
134
|
+
GameObject test2 = new(nameof(SimpleGameObjectTargetedDualMode) + "2", typeof(EmptyMessageAwareComponent));
|
|
135
|
+
_spawned.Add(test2);
|
|
136
|
+
EmptyMessageAwareComponent component1 = test1.GetComponent<EmptyMessageAwareComponent>();
|
|
137
|
+
EmptyMessageAwareComponent component2 = test2.GetComponent<EmptyMessageAwareComponent>();
|
|
138
|
+
|
|
139
|
+
int test1ReceiveCount = 0;
|
|
140
|
+
void Test1Receive(ref SimpleTargetedMessage message)
|
|
141
|
+
{
|
|
142
|
+
++test1ReceiveCount;
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
int test2ReceiveCount = 0;
|
|
146
|
+
void Test2Receive(ref SimpleTargetedMessage message)
|
|
147
|
+
{
|
|
148
|
+
++test2ReceiveCount;
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
MessageRegistrationToken token1 = GetToken(component1);
|
|
152
|
+
MessageRegistrationToken token2 = GetToken(component2);
|
|
153
|
+
|
|
154
|
+
_ = token1.RegisterGameObjectTargeted<SimpleTargetedMessage>(test1, Test1Receive);
|
|
155
|
+
_ = token1.RegisterGameObjectTargeted<SimpleTargetedMessage>(test1, _ => ++test1ReceiveCount);
|
|
156
|
+
_ = token2.RegisterGameObjectTargeted<SimpleTargetedMessage>(test2, Test2Receive);
|
|
157
|
+
|
|
158
|
+
SimpleTargetedMessage message = new();
|
|
159
|
+
message.EmitGameObjectTargeted(test1);
|
|
160
|
+
Assert.AreEqual(2, test1ReceiveCount);
|
|
161
|
+
Assert.AreEqual(0, test2ReceiveCount);
|
|
162
|
+
|
|
163
|
+
message.EmitGameObjectTargeted(test2);
|
|
164
|
+
Assert.AreEqual(2, test1ReceiveCount);
|
|
165
|
+
Assert.AreEqual(1, test2ReceiveCount);
|
|
166
|
+
|
|
167
|
+
GameObject test3 = new(nameof(SimpleGameObjectTargetedDualMode) + "3");
|
|
168
|
+
_spawned.Add(test3);
|
|
169
|
+
message.EmitGameObjectTargeted(test3);
|
|
170
|
+
Assert.AreEqual(2, test1ReceiveCount);
|
|
171
|
+
Assert.AreEqual(1, test2ReceiveCount);
|
|
172
|
+
|
|
173
|
+
_ = test3.AddComponent<EmptyMessageAwareComponent>();
|
|
174
|
+
message.EmitGameObjectTargeted(test3);
|
|
175
|
+
Assert.AreEqual(2, test1ReceiveCount);
|
|
176
|
+
Assert.AreEqual(1, test2ReceiveCount);
|
|
177
|
+
|
|
178
|
+
for (int i = 0; i < 100; ++i)
|
|
179
|
+
{
|
|
180
|
+
message.EmitGameObjectTargeted(test1);
|
|
181
|
+
Assert.AreEqual(2 + (1 + i) * 2, test1ReceiveCount);
|
|
182
|
+
Assert.AreEqual(1 + i, test2ReceiveCount);
|
|
183
|
+
|
|
184
|
+
message.EmitGameObjectTargeted(test2);
|
|
185
|
+
Assert.AreEqual(2 + (1 + i) * 2, test1ReceiveCount);
|
|
186
|
+
Assert.AreEqual(2 + i, test2ReceiveCount);
|
|
187
|
+
}
|
|
188
|
+
yield break;
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
[UnityTest]
|
|
192
|
+
public IEnumerator SimpleComponentTargetedNormal()
|
|
193
|
+
{
|
|
194
|
+
GameObject test1 = new(nameof(SimpleComponentTargetedNormal) + "1", typeof(EmptyMessageAwareComponent));
|
|
195
|
+
_spawned.Add(test1);
|
|
196
|
+
GameObject test2 = new(nameof(SimpleComponentTargetedNormal) + "3", typeof(EmptyMessageAwareComponent));
|
|
197
|
+
_spawned.Add(test2);
|
|
198
|
+
EmptyMessageAwareComponent component1 = test1.GetComponent<EmptyMessageAwareComponent>();
|
|
199
|
+
EmptyMessageAwareComponent component2 = test2.GetComponent<EmptyMessageAwareComponent>();
|
|
200
|
+
|
|
201
|
+
int test1ReceiveCount = 0;
|
|
202
|
+
int test2ReceiveCount = 0;
|
|
203
|
+
|
|
204
|
+
MessageRegistrationToken token1 = GetToken(component1);
|
|
205
|
+
MessageRegistrationToken token2 = GetToken(component2);
|
|
206
|
+
|
|
207
|
+
_ = token1.RegisterComponentTargeted<SimpleTargetedMessage>(component1, _ => ++test1ReceiveCount);
|
|
208
|
+
_ = token2.RegisterComponentTargeted<SimpleTargetedMessage>(component2, _ => ++test2ReceiveCount);
|
|
209
|
+
|
|
210
|
+
SimpleTargetedMessage message = new();
|
|
211
|
+
message.EmitComponentTargeted(component1);
|
|
212
|
+
Assert.AreEqual(1, test1ReceiveCount);
|
|
213
|
+
Assert.AreEqual(0, test2ReceiveCount);
|
|
214
|
+
|
|
215
|
+
message.EmitComponentTargeted(component2);
|
|
216
|
+
Assert.AreEqual(1, test1ReceiveCount);
|
|
217
|
+
Assert.AreEqual(1, test2ReceiveCount);
|
|
218
|
+
|
|
219
|
+
GameObject test3 = new(nameof(SimpleComponentTargetedNormal) + "3");
|
|
220
|
+
_spawned.Add(test3);
|
|
221
|
+
message.EmitComponentTargeted(test3.transform);
|
|
222
|
+
Assert.AreEqual(1, test1ReceiveCount);
|
|
223
|
+
Assert.AreEqual(1, test2ReceiveCount);
|
|
224
|
+
|
|
225
|
+
EmptyMessageAwareComponent component3 = test3.AddComponent<EmptyMessageAwareComponent>();
|
|
226
|
+
message.EmitComponentTargeted(component3);
|
|
227
|
+
Assert.AreEqual(1, test1ReceiveCount);
|
|
228
|
+
Assert.AreEqual(1, test2ReceiveCount);
|
|
229
|
+
|
|
230
|
+
for (int i = 0; i < 100; ++i)
|
|
231
|
+
{
|
|
232
|
+
message.EmitComponentTargeted(component1);
|
|
233
|
+
Assert.AreEqual(2 + i, test1ReceiveCount);
|
|
234
|
+
Assert.AreEqual(1 + i, test2ReceiveCount);
|
|
235
|
+
|
|
236
|
+
message.EmitComponentTargeted(component2);
|
|
237
|
+
Assert.AreEqual(2 + i, test1ReceiveCount);
|
|
238
|
+
Assert.AreEqual(2 + i, test2ReceiveCount);
|
|
239
|
+
}
|
|
240
|
+
|
|
241
|
+
yield break;
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
[UnityTest]
|
|
245
|
+
public IEnumerator SimpleComponentTargetedNoCopy()
|
|
246
|
+
{
|
|
247
|
+
GameObject test1 = new(nameof(SimpleComponentTargetedNoCopy) + "1", typeof(EmptyMessageAwareComponent));
|
|
248
|
+
_spawned.Add(test1);
|
|
249
|
+
GameObject test2 = new(nameof(SimpleComponentTargetedNoCopy) + "2", typeof(EmptyMessageAwareComponent));
|
|
250
|
+
_spawned.Add(test2);
|
|
251
|
+
EmptyMessageAwareComponent component1 = test1.GetComponent<EmptyMessageAwareComponent>();
|
|
252
|
+
EmptyMessageAwareComponent component2 = test2.GetComponent<EmptyMessageAwareComponent>();
|
|
253
|
+
|
|
254
|
+
int test1ReceiveCount = 0;
|
|
255
|
+
void Test1Receive(ref SimpleTargetedMessage message)
|
|
256
|
+
{
|
|
257
|
+
++test1ReceiveCount;
|
|
258
|
+
}
|
|
259
|
+
|
|
260
|
+
int test2ReceiveCount = 0;
|
|
261
|
+
void Test2Receive(ref SimpleTargetedMessage message)
|
|
262
|
+
{
|
|
263
|
+
++test2ReceiveCount;
|
|
264
|
+
}
|
|
265
|
+
|
|
266
|
+
MessageRegistrationToken token1 = GetToken(component1);
|
|
267
|
+
MessageRegistrationToken token2 = GetToken(component2);
|
|
268
|
+
|
|
269
|
+
_ = token1.RegisterComponentTargeted<SimpleTargetedMessage>(component1, Test1Receive);
|
|
270
|
+
_ = token2.RegisterComponentTargeted<SimpleTargetedMessage>(component2, Test2Receive);
|
|
271
|
+
|
|
272
|
+
SimpleTargetedMessage message = new();
|
|
273
|
+
message.EmitComponentTargeted(component1);
|
|
274
|
+
Assert.AreEqual(1, test1ReceiveCount);
|
|
275
|
+
Assert.AreEqual(0, test2ReceiveCount);
|
|
276
|
+
|
|
277
|
+
message.EmitComponentTargeted(component2);
|
|
278
|
+
Assert.AreEqual(1, test1ReceiveCount);
|
|
279
|
+
Assert.AreEqual(1, test2ReceiveCount);
|
|
280
|
+
|
|
281
|
+
GameObject test3 = new(nameof(SimpleComponentTargetedNoCopy) + "3");
|
|
282
|
+
_spawned.Add(test3);
|
|
283
|
+
message.EmitComponentTargeted(test3.transform);
|
|
284
|
+
Assert.AreEqual(1, test1ReceiveCount);
|
|
285
|
+
Assert.AreEqual(1, test2ReceiveCount);
|
|
286
|
+
|
|
287
|
+
EmptyMessageAwareComponent component3 = test3.AddComponent<EmptyMessageAwareComponent>();
|
|
288
|
+
message.EmitComponentTargeted(component3);
|
|
289
|
+
Assert.AreEqual(1, test1ReceiveCount);
|
|
290
|
+
Assert.AreEqual(1, test2ReceiveCount);
|
|
291
|
+
|
|
292
|
+
for (int i = 0; i < 100; ++i)
|
|
293
|
+
{
|
|
294
|
+
message.EmitComponentTargeted(component1);
|
|
295
|
+
Assert.AreEqual(2 + i, test1ReceiveCount);
|
|
296
|
+
Assert.AreEqual(1 + i, test2ReceiveCount);
|
|
297
|
+
|
|
298
|
+
message.EmitComponentTargeted(component2);
|
|
299
|
+
Assert.AreEqual(2 + i, test1ReceiveCount);
|
|
300
|
+
Assert.AreEqual(2 + i, test2ReceiveCount);
|
|
301
|
+
}
|
|
302
|
+
|
|
303
|
+
yield break;
|
|
304
|
+
}
|
|
305
|
+
|
|
306
|
+
[UnityTest]
|
|
307
|
+
public IEnumerator SimpleComponentTargetedDualMode()
|
|
308
|
+
{
|
|
309
|
+
GameObject test1 = new(nameof(SimpleComponentTargetedDualMode) + "1", typeof(EmptyMessageAwareComponent));
|
|
310
|
+
_spawned.Add(test1);
|
|
311
|
+
GameObject test2 = new(nameof(SimpleComponentTargetedDualMode) + "2", typeof(EmptyMessageAwareComponent));
|
|
312
|
+
_spawned.Add(test2);
|
|
313
|
+
EmptyMessageAwareComponent component1 = test1.GetComponent<EmptyMessageAwareComponent>();
|
|
314
|
+
EmptyMessageAwareComponent component2 = test2.GetComponent<EmptyMessageAwareComponent>();
|
|
315
|
+
|
|
316
|
+
int test1ReceiveCount = 0;
|
|
317
|
+
void Test1Receive(ref SimpleTargetedMessage message)
|
|
318
|
+
{
|
|
319
|
+
++test1ReceiveCount;
|
|
320
|
+
}
|
|
321
|
+
|
|
322
|
+
int test2ReceiveCount = 0;
|
|
323
|
+
void Test2Receive(ref SimpleTargetedMessage message)
|
|
324
|
+
{
|
|
325
|
+
++test2ReceiveCount;
|
|
326
|
+
}
|
|
327
|
+
|
|
328
|
+
MessageRegistrationToken token1 = GetToken(component1);
|
|
329
|
+
MessageRegistrationToken token2 = GetToken(component2);
|
|
330
|
+
|
|
331
|
+
_ = token1.RegisterComponentTargeted<SimpleTargetedMessage>(component1, Test1Receive);
|
|
332
|
+
_ = token1.RegisterComponentTargeted<SimpleTargetedMessage>(component1, _ => ++test1ReceiveCount);
|
|
333
|
+
_ = token2.RegisterComponentTargeted<SimpleTargetedMessage>(component2, Test2Receive);
|
|
334
|
+
|
|
335
|
+
SimpleTargetedMessage message = new();
|
|
336
|
+
message.EmitComponentTargeted(component1);
|
|
337
|
+
Assert.AreEqual(2, test1ReceiveCount);
|
|
338
|
+
Assert.AreEqual(0, test2ReceiveCount);
|
|
339
|
+
|
|
340
|
+
message.EmitComponentTargeted(component2);
|
|
341
|
+
Assert.AreEqual(2, test1ReceiveCount);
|
|
342
|
+
Assert.AreEqual(1, test2ReceiveCount);
|
|
343
|
+
|
|
344
|
+
GameObject test3 = new(nameof(SimpleComponentTargetedDualMode) + "3");
|
|
345
|
+
_spawned.Add(test3);
|
|
346
|
+
message.EmitComponentTargeted(test3.transform);
|
|
347
|
+
Assert.AreEqual(2, test1ReceiveCount);
|
|
348
|
+
Assert.AreEqual(1, test2ReceiveCount);
|
|
349
|
+
|
|
350
|
+
EmptyMessageAwareComponent component3 = test3.AddComponent<EmptyMessageAwareComponent>();
|
|
351
|
+
message.EmitComponentTargeted(component3);
|
|
352
|
+
Assert.AreEqual(2, test1ReceiveCount);
|
|
353
|
+
Assert.AreEqual(1, test2ReceiveCount);
|
|
354
|
+
|
|
355
|
+
for (int i = 0; i < 100; ++i)
|
|
356
|
+
{
|
|
357
|
+
message.EmitComponentTargeted(component1);
|
|
358
|
+
Assert.AreEqual(2 + (i + 1) * 2, test1ReceiveCount);
|
|
359
|
+
Assert.AreEqual(1 + i, test2ReceiveCount);
|
|
360
|
+
|
|
361
|
+
message.EmitComponentTargeted(component2);
|
|
362
|
+
Assert.AreEqual(2 + (i + 1) * 2, test1ReceiveCount);
|
|
363
|
+
Assert.AreEqual(2 + i, test2ReceiveCount);
|
|
364
|
+
}
|
|
365
|
+
|
|
366
|
+
yield break;
|
|
367
|
+
}
|
|
368
|
+
|
|
369
|
+
[UnityTest]
|
|
370
|
+
public IEnumerator SimpleTargetedWithoutTargetingNormal()
|
|
371
|
+
{
|
|
372
|
+
GameObject test1 = new(nameof(SimpleTargetedWithoutTargetingNormal) + "1", typeof(EmptyMessageAwareComponent));
|
|
373
|
+
_spawned.Add(test1);
|
|
374
|
+
GameObject test2 = new(nameof(SimpleTargetedWithoutTargetingNormal) + "2", typeof(EmptyMessageAwareComponent));
|
|
375
|
+
_spawned.Add(test2);
|
|
376
|
+
EmptyMessageAwareComponent component1 = test1.GetComponent<EmptyMessageAwareComponent>();
|
|
377
|
+
EmptyMessageAwareComponent component2 = test2.GetComponent<EmptyMessageAwareComponent>();
|
|
378
|
+
|
|
379
|
+
int test1ReceiveCount = 0;
|
|
380
|
+
void Test1Receive(InstanceId id, SimpleTargetedMessage message)
|
|
381
|
+
{
|
|
382
|
+
++test1ReceiveCount;
|
|
383
|
+
}
|
|
384
|
+
|
|
385
|
+
int test2ReceiveCount = 0;
|
|
386
|
+
void Test2Receive(InstanceId id, SimpleTargetedMessage message)
|
|
387
|
+
{
|
|
388
|
+
++test2ReceiveCount;
|
|
389
|
+
}
|
|
390
|
+
|
|
391
|
+
MessageRegistrationToken token1 = GetToken(component1);
|
|
392
|
+
MessageRegistrationToken token2 = GetToken(component2);
|
|
393
|
+
|
|
394
|
+
_ = token1.RegisterTargetedWithoutTargeting<SimpleTargetedMessage>(Test1Receive);
|
|
395
|
+
_ = token2.RegisterTargetedWithoutTargeting<SimpleTargetedMessage>(Test2Receive);
|
|
396
|
+
|
|
397
|
+
SimpleTargetedMessage message = new();
|
|
398
|
+
message.EmitComponentTargeted(component1);
|
|
399
|
+
Assert.AreEqual(1, test1ReceiveCount);
|
|
400
|
+
Assert.AreEqual(1, test2ReceiveCount);
|
|
401
|
+
|
|
402
|
+
message.EmitComponentTargeted(component2);
|
|
403
|
+
Assert.AreEqual(2, test1ReceiveCount);
|
|
404
|
+
Assert.AreEqual(2, test2ReceiveCount);
|
|
405
|
+
|
|
406
|
+
GameObject test3 = new(nameof(SimpleTargetedWithoutTargetingNormal) + "3");
|
|
407
|
+
_spawned.Add(test3);
|
|
408
|
+
message.EmitComponentTargeted(test3.transform);
|
|
409
|
+
Assert.AreEqual(3, test1ReceiveCount);
|
|
410
|
+
Assert.AreEqual(3, test2ReceiveCount);
|
|
411
|
+
|
|
412
|
+
EmptyMessageAwareComponent component3 = test3.AddComponent<EmptyMessageAwareComponent>();
|
|
413
|
+
message.EmitComponentTargeted(component3);
|
|
414
|
+
Assert.AreEqual(4, test1ReceiveCount);
|
|
415
|
+
Assert.AreEqual(4, test2ReceiveCount);
|
|
416
|
+
|
|
417
|
+
for (int i = 0; i < 100; ++i)
|
|
418
|
+
{
|
|
419
|
+
message.EmitGameObjectTargeted(test1);
|
|
420
|
+
Assert.AreEqual(5 + (i * 2), test1ReceiveCount);
|
|
421
|
+
Assert.AreEqual(5 + (i * 2), test2ReceiveCount);
|
|
422
|
+
|
|
423
|
+
message.EmitComponentTargeted(component2);
|
|
424
|
+
Assert.AreEqual(4 + ((i + 1) * 2), test1ReceiveCount);
|
|
425
|
+
Assert.AreEqual(4 + ((i + 1) * 2), test2ReceiveCount);
|
|
426
|
+
}
|
|
427
|
+
|
|
428
|
+
yield break;
|
|
429
|
+
}
|
|
430
|
+
|
|
431
|
+
[UnityTest]
|
|
432
|
+
public IEnumerator SimpleTargetedWithoutTargetingNoCopy()
|
|
433
|
+
{
|
|
434
|
+
GameObject test1 = new(nameof(SimpleTargetedWithoutTargetingNoCopy) + "1", typeof(EmptyMessageAwareComponent));
|
|
435
|
+
_spawned.Add(test1);
|
|
436
|
+
GameObject test2 = new(nameof(SimpleTargetedWithoutTargetingNoCopy) + "2", typeof(EmptyMessageAwareComponent));
|
|
437
|
+
_spawned.Add(test2);
|
|
438
|
+
EmptyMessageAwareComponent component1 = test1.GetComponent<EmptyMessageAwareComponent>();
|
|
439
|
+
EmptyMessageAwareComponent component2 = test2.GetComponent<EmptyMessageAwareComponent>();
|
|
440
|
+
|
|
441
|
+
int test1ReceiveCount = 0;
|
|
442
|
+
void Test1Receive(ref InstanceId id, ref SimpleTargetedMessage message)
|
|
443
|
+
{
|
|
444
|
+
++test1ReceiveCount;
|
|
445
|
+
}
|
|
446
|
+
|
|
447
|
+
int test2ReceiveCount = 0;
|
|
448
|
+
void Test2Receive(ref InstanceId id, ref SimpleTargetedMessage message)
|
|
449
|
+
{
|
|
450
|
+
++test2ReceiveCount;
|
|
451
|
+
}
|
|
452
|
+
|
|
453
|
+
MessageRegistrationToken token1 = GetToken(component1);
|
|
454
|
+
MessageRegistrationToken token2 = GetToken(component2);
|
|
455
|
+
|
|
456
|
+
_ = token1.RegisterTargetedWithoutTargeting<SimpleTargetedMessage>(Test1Receive);
|
|
457
|
+
_ = token2.RegisterTargetedWithoutTargeting<SimpleTargetedMessage>(Test2Receive);
|
|
458
|
+
|
|
459
|
+
SimpleTargetedMessage message = new();
|
|
460
|
+
message.EmitComponentTargeted(component1);
|
|
461
|
+
Assert.AreEqual(1, test1ReceiveCount);
|
|
462
|
+
Assert.AreEqual(1, test2ReceiveCount);
|
|
463
|
+
|
|
464
|
+
message.EmitComponentTargeted(component2);
|
|
465
|
+
Assert.AreEqual(2, test1ReceiveCount);
|
|
466
|
+
Assert.AreEqual(2, test2ReceiveCount);
|
|
467
|
+
|
|
468
|
+
GameObject test3 = new(nameof(SimpleTargetedWithoutTargetingNoCopy) + "3");
|
|
469
|
+
_spawned.Add(test3);
|
|
470
|
+
message.EmitComponentTargeted(test3.transform);
|
|
471
|
+
Assert.AreEqual(3, test1ReceiveCount);
|
|
472
|
+
Assert.AreEqual(3, test2ReceiveCount);
|
|
473
|
+
|
|
474
|
+
EmptyMessageAwareComponent component3 = test3.AddComponent<EmptyMessageAwareComponent>();
|
|
475
|
+
message.EmitComponentTargeted(component3);
|
|
476
|
+
Assert.AreEqual(4, test1ReceiveCount);
|
|
477
|
+
Assert.AreEqual(4, test2ReceiveCount);
|
|
478
|
+
|
|
479
|
+
for (int i = 0; i < 100; ++i)
|
|
480
|
+
{
|
|
481
|
+
message.EmitGameObjectTargeted(test1);
|
|
482
|
+
Assert.AreEqual(5 + (i * 2), test1ReceiveCount);
|
|
483
|
+
Assert.AreEqual(5 + (i * 2), test2ReceiveCount);
|
|
484
|
+
|
|
485
|
+
message.EmitComponentTargeted(component2);
|
|
486
|
+
Assert.AreEqual(4 + ((i + 1) * 2), test1ReceiveCount);
|
|
487
|
+
Assert.AreEqual(4 + ((i + 1) * 2), test2ReceiveCount);
|
|
488
|
+
}
|
|
489
|
+
|
|
490
|
+
yield break;
|
|
491
|
+
}
|
|
492
|
+
|
|
493
|
+
[UnityTest]
|
|
494
|
+
public IEnumerator SimpleTargetedWithoutTargetingDualMode()
|
|
495
|
+
{
|
|
496
|
+
GameObject test1 = new(nameof(SimpleTargetedWithoutTargetingDualMode) + "1", typeof(EmptyMessageAwareComponent));
|
|
497
|
+
_spawned.Add(test1);
|
|
498
|
+
GameObject test2 = new(nameof(SimpleTargetedWithoutTargetingDualMode) + "2", typeof(EmptyMessageAwareComponent));
|
|
499
|
+
_spawned.Add(test2);
|
|
500
|
+
EmptyMessageAwareComponent component1 = test1.GetComponent<EmptyMessageAwareComponent>();
|
|
501
|
+
EmptyMessageAwareComponent component2 = test2.GetComponent<EmptyMessageAwareComponent>();
|
|
502
|
+
|
|
503
|
+
int test1ReceiveCount = 0;
|
|
504
|
+
void Test1Receive(ref InstanceId id, ref SimpleTargetedMessage message)
|
|
505
|
+
{
|
|
506
|
+
++test1ReceiveCount;
|
|
507
|
+
}
|
|
508
|
+
|
|
509
|
+
int test2ReceiveCount = 0;
|
|
510
|
+
void Test2Receive(InstanceId id, SimpleTargetedMessage message)
|
|
511
|
+
{
|
|
512
|
+
++test2ReceiveCount;
|
|
513
|
+
}
|
|
514
|
+
|
|
515
|
+
// Assign them to the same token for simplicity
|
|
516
|
+
MessageRegistrationToken token1 = GetToken(component1);
|
|
517
|
+
|
|
518
|
+
_ = token1.RegisterTargetedWithoutTargeting<SimpleTargetedMessage>(Test1Receive);
|
|
519
|
+
_ = token1.RegisterTargetedWithoutTargeting<SimpleTargetedMessage>(Test2Receive);
|
|
520
|
+
|
|
521
|
+
SimpleTargetedMessage message = new();
|
|
522
|
+
message.EmitComponentTargeted(component1);
|
|
523
|
+
Assert.AreEqual(1, test1ReceiveCount);
|
|
524
|
+
Assert.AreEqual(1, test2ReceiveCount);
|
|
525
|
+
|
|
526
|
+
message.EmitComponentTargeted(component2);
|
|
527
|
+
Assert.AreEqual(2, test1ReceiveCount);
|
|
528
|
+
Assert.AreEqual(2, test2ReceiveCount);
|
|
529
|
+
|
|
530
|
+
GameObject test3 = new(nameof(SimpleTargetedWithoutTargetingDualMode) + "3");
|
|
531
|
+
_spawned.Add(test3);
|
|
532
|
+
message.EmitComponentTargeted(test3.transform);
|
|
533
|
+
Assert.AreEqual(3, test1ReceiveCount);
|
|
534
|
+
Assert.AreEqual(3, test2ReceiveCount);
|
|
535
|
+
|
|
536
|
+
EmptyMessageAwareComponent component3 = test3.AddComponent<EmptyMessageAwareComponent>();
|
|
537
|
+
message.EmitComponentTargeted(component3);
|
|
538
|
+
Assert.AreEqual(4, test1ReceiveCount);
|
|
539
|
+
Assert.AreEqual(4, test2ReceiveCount);
|
|
540
|
+
|
|
541
|
+
for (int i = 0; i < 100; ++i)
|
|
542
|
+
{
|
|
543
|
+
message.EmitGameObjectTargeted(test1);
|
|
544
|
+
Assert.AreEqual(5 + (i * 2), test1ReceiveCount);
|
|
545
|
+
Assert.AreEqual(5 + (i * 2), test2ReceiveCount);
|
|
546
|
+
|
|
547
|
+
message.EmitComponentTargeted(component2);
|
|
548
|
+
Assert.AreEqual(4 + ((i + 1) * 2), test1ReceiveCount);
|
|
549
|
+
Assert.AreEqual(4 + ((i + 1) * 2), test2ReceiveCount);
|
|
550
|
+
}
|
|
551
|
+
|
|
552
|
+
yield break;
|
|
553
|
+
}
|
|
554
|
+
|
|
555
|
+
[UnityTest]
|
|
556
|
+
public IEnumerator TargetedUntyped()
|
|
557
|
+
{
|
|
558
|
+
GameObject test = new(nameof(TargetedUntyped) + "1", typeof(EmptyMessageAwareComponent));
|
|
559
|
+
_spawned.Add(test);
|
|
560
|
+
|
|
561
|
+
int gameObjectCount = 0;
|
|
562
|
+
int componentCount = 0;
|
|
563
|
+
|
|
564
|
+
void ReceiveGameObject(ref SimpleTargetedMessage message)
|
|
565
|
+
{
|
|
566
|
+
++gameObjectCount;
|
|
567
|
+
}
|
|
568
|
+
|
|
569
|
+
void ReceiveComponent(ref SimpleTargetedMessage message)
|
|
570
|
+
{
|
|
571
|
+
++componentCount;
|
|
572
|
+
}
|
|
573
|
+
|
|
574
|
+
EmptyMessageAwareComponent component = test.GetComponent<EmptyMessageAwareComponent>();
|
|
575
|
+
MessageRegistrationToken token = GetToken(component);
|
|
576
|
+
token.RegisterGameObjectTargeted<SimpleTargetedMessage>(test, ReceiveGameObject);
|
|
577
|
+
token.RegisterComponentTargeted<SimpleTargetedMessage>(component, ReceiveComponent);
|
|
578
|
+
|
|
579
|
+
ITargetedMessage message = new SimpleTargetedMessage();
|
|
580
|
+
message.EmitComponentTargeted(component);
|
|
581
|
+
Assert.AreEqual(1, componentCount);
|
|
582
|
+
Assert.AreEqual(0, gameObjectCount);
|
|
583
|
+
message.EmitGameObjectTargeted(test);
|
|
584
|
+
Assert.AreEqual(1, componentCount);
|
|
585
|
+
Assert.AreEqual(1, gameObjectCount);
|
|
586
|
+
message.EmitComponentTargeted(component);
|
|
587
|
+
Assert.AreEqual(2, componentCount);
|
|
588
|
+
Assert.AreEqual(1, gameObjectCount);
|
|
589
|
+
message.EmitGameObjectTargeted(test);
|
|
590
|
+
Assert.AreEqual(2, componentCount);
|
|
591
|
+
Assert.AreEqual(2, gameObjectCount);
|
|
592
|
+
|
|
593
|
+
yield break;
|
|
594
|
+
}
|
|
595
|
+
}
|
|
596
|
+
}
|