com.wallstop-studios.dxmessaging 2.1.0 → 2.1.2
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/.github/workflows/dotnet-tests.yml +72 -0
- package/.lychee.toml +4 -2
- package/AGENTS.md +1 -0
- package/Docs/Comparisons.md +4 -4
- package/Docs/EmitShorthands.md +2 -2
- package/Docs/Helpers.md +90 -75
- package/Docs/Install.md +2 -1
- package/Docs/Patterns.md +1 -1
- package/Docs/Performance.md +13 -11
- package/Docs/QuickStart.md +1 -2
- package/Editor/Analyzers/Microsoft.CodeAnalysis.CSharp.dll +0 -0
- package/Editor/Analyzers/Microsoft.CodeAnalysis.CSharp.dll.meta +13 -2
- package/Editor/Analyzers/Microsoft.CodeAnalysis.dll +0 -0
- package/Editor/Analyzers/Microsoft.CodeAnalysis.dll.meta +11 -0
- package/Editor/Analyzers/System.Collections.Immutable.dll +0 -0
- package/Editor/Analyzers/System.Collections.Immutable.dll.meta +11 -0
- package/Editor/Analyzers/System.Reflection.Metadata.dll +0 -0
- package/Editor/Analyzers/System.Reflection.Metadata.dll.meta +13 -2
- package/Editor/Analyzers/System.Runtime.CompilerServices.Unsafe.dll +0 -0
- package/Editor/Analyzers/System.Runtime.CompilerServices.Unsafe.dll.meta +11 -0
- package/Editor/Analyzers/WallstopStudios.DxMessaging.SourceGenerators.dll +0 -0
- package/Editor/Analyzers/WallstopStudios.DxMessaging.SourceGenerators.dll.meta +3 -2
- package/Editor/AssemblyInfo.cs +3 -0
- package/Editor/AssemblyInfo.cs.meta +3 -0
- package/Editor/CustomEditors/MessagingComponentEditor.cs +21 -0
- package/Editor/SetupCscRsp.cs +133 -53
- package/Editor/Testing/MessagingComponentEditorHarness.cs +218 -0
- package/Editor/Testing/MessagingComponentEditorHarness.cs.meta +3 -0
- package/Editor/Testing.meta +3 -0
- package/README.md +9 -3
- package/Runtime/AssemblyInfo.cs +1 -0
- package/Runtime/Core/Attributes/DxAutoConstructorAttribute.cs +1 -1
- package/Runtime/Core/Attributes/DxBroadcastMessageAttribute.cs +1 -1
- package/Runtime/Core/Attributes/DxOptionalParameterAttribute.cs +1 -1
- package/Runtime/Core/Attributes/DxTargetedMessageAttribute.cs +1 -1
- package/Runtime/Core/Attributes/DxUntargetedMessageAttribute.cs +1 -1
- package/Runtime/Core/Diagnostics/MessageEmissionData.cs +26 -11
- package/Runtime/Core/Extensions/MessageBusExtensions.cs +2 -2
- package/Runtime/Core/Extensions/MessageExtensions.cs +2 -2
- package/Runtime/Core/InstanceId.cs +5 -3
- package/Runtime/Core/MessageBus/MessageBus.cs +4 -4
- package/Runtime/Core/MessageBus/MessageRegistrationBuilder.cs +2 -2
- package/Runtime/Core/MessageBus/MessagingRegistration.cs +3 -3
- package/Runtime/Core/MessageHandler.cs +34 -2
- package/Runtime/Core/MessageRegistrationToken.cs +2 -2
- package/Runtime/Core/Messages/IBroadcastMessage.cs +1 -1
- package/Runtime/Core/Messages/ITargetedMessage.cs +1 -1
- package/Runtime/Core/Messages/IUntargetedMessage.cs +1 -1
- package/Runtime/Unity/CurrentGlobalMessageBusProvider.cs +2 -0
- package/Runtime/Unity/InitialGlobalMessageBusProvider.cs +2 -0
- package/Runtime/Unity/Integrations/Reflex/ReflexRegistrationInstaller.cs +2 -0
- package/Runtime/Unity/Integrations/VContainer/VContainerRegistrationExtensions.cs +2 -0
- package/Runtime/Unity/Integrations/Zenject/ZenjectRegistrationInstaller.cs +2 -0
- package/Runtime/Unity/MessageAwareComponent.cs +2 -0
- package/Runtime/Unity/MessageBusProviderHandle.cs +4 -0
- package/Runtime/Unity/MessagingComponent.cs +27 -7
- package/Runtime/Unity/MessagingComponentInstaller.cs +2 -0
- package/Runtime/Unity/ScriptableMessageBusProvider.cs +2 -0
- package/Samples~/DI/Reflex/SampleInstaller.cs +6 -6
- package/Samples~/DI/VContainer/SampleLifetimeScope.cs +7 -9
- package/Samples~/DI/Zenject/SampleInstaller.cs +6 -8
- package/SourceGenerators/Directory.Build.props +9 -0
- package/{package-lock.json.meta → SourceGenerators/Directory.Build.props.meta} +2 -2
- package/SourceGenerators/WallstopStudios.DxMessaging.SourceGenerators/DxAutoConstructorGenerator.cs +19 -24
- package/SourceGenerators/WallstopStudios.DxMessaging.SourceGenerators/DxMessageIdGenerator.cs +87 -27
- package/SourceGenerators/WallstopStudios.DxMessaging.SourceGenerators/WallstopStudios.DxMessaging.SourceGenerators.csproj +24 -4
- package/SourceGenerators/WallstopStudios.DxMessaging.SourceGenerators.Tests/DocsSnippetCompilationTests.cs +193 -0
- package/SourceGenerators/WallstopStudios.DxMessaging.SourceGenerators.Tests/DocsSnippetCompilationTests.cs.meta +11 -0
- package/SourceGenerators/WallstopStudios.DxMessaging.SourceGenerators.Tests/DxAutoConstructorGeneratorDiagnosticsTests.cs +69 -0
- package/SourceGenerators/WallstopStudios.DxMessaging.SourceGenerators.Tests/DxAutoConstructorGeneratorDiagnosticsTests.cs.meta +11 -0
- package/SourceGenerators/WallstopStudios.DxMessaging.SourceGenerators.Tests/DxMessageIdGeneratorDiagnosticsTests.cs +66 -0
- package/SourceGenerators/WallstopStudios.DxMessaging.SourceGenerators.Tests/DxMessageIdGeneratorDiagnosticsTests.cs.meta +11 -0
- package/SourceGenerators/WallstopStudios.DxMessaging.SourceGenerators.Tests/GeneratorTestUtilities.cs +155 -0
- package/SourceGenerators/WallstopStudios.DxMessaging.SourceGenerators.Tests/GeneratorTestUtilities.cs.meta +11 -0
- package/SourceGenerators/WallstopStudios.DxMessaging.SourceGenerators.Tests/WallstopStudios.DxMessaging.SourceGenerators.Tests.csproj +20 -0
- package/SourceGenerators/WallstopStudios.DxMessaging.SourceGenerators.Tests/WallstopStudios.DxMessaging.SourceGenerators.Tests.csproj.meta +7 -0
- package/SourceGenerators/WallstopStudios.DxMessaging.SourceGenerators.Tests.meta +8 -0
- package/Tests/Editor/MessagingComponentEditorHarnessTests.cs +243 -0
- package/Tests/Editor/MessagingComponentEditorHarnessTests.cs.meta +3 -0
- package/Tests/Editor/MessagingComponentSerializationTests.cs +129 -0
- package/Tests/Editor/MessagingComponentSerializationTests.cs.meta +3 -0
- package/Tests/Editor/WallstopStudios.DxMessaging.Tests.Editor.asmdef +19 -0
- package/Tests/Editor/WallstopStudios.DxMessaging.Tests.Editor.asmdef.meta +3 -0
- package/Tests/Editor.meta +3 -0
- package/Tests/Runtime/Benchmarks/BenchmarkSession.cs +3 -0
- package/Tests/Runtime/Benchmarks/BenchmarkTestBase.cs +3 -0
- package/Tests/Runtime/Benchmarks/ComparisonPerformanceTests.cs +3 -0
- package/Tests/Runtime/Benchmarks/PerformanceTests.cs +137 -0
- package/Tests/Runtime/Core/AlternateBusTests.cs +3 -0
- package/Tests/Runtime/Core/BroadcastTests.cs +3 -0
- package/Tests/Runtime/Core/CyclicBufferTests.cs +3 -0
- package/Tests/Runtime/Core/DefaultBusFallbackTests.cs +5 -2
- package/Tests/Runtime/Core/DiagnosticsTests.cs +3 -0
- package/Tests/Runtime/Core/EdgeCaseTests.cs +3 -0
- package/Tests/Runtime/Core/EnablementTests.cs +3 -0
- package/Tests/Runtime/Core/Extensions/MessageExtensionsProviderTests.cs +2 -2
- package/Tests/Runtime/Core/GenericMessageTests.cs +3 -0
- package/Tests/Runtime/Core/GlobalAcceptAllTests.cs +3 -0
- package/Tests/Runtime/Core/InterceptorCancellationTests.cs +3 -0
- package/Tests/Runtime/Core/LifecycleTests.cs +3 -0
- package/Tests/Runtime/Core/MessageEmissionDataTests.cs +70 -0
- package/Tests/Runtime/Core/MessageEmissionDataTests.cs.meta +11 -0
- package/Tests/Runtime/Core/MessagingComponentLifecycleTests.cs +3 -0
- package/Tests/Runtime/Core/MessagingTestBase.cs +3 -0
- package/Tests/Runtime/Core/MutationDedupeTests.cs +3 -0
- package/Tests/Runtime/Core/MutationDestructionTests.cs +3 -0
- package/Tests/Runtime/Core/MutationDuringEmissionTests.cs +3 -0
- package/Tests/Runtime/Core/MutationGlobalAddTests.cs +3 -0
- package/Tests/Runtime/Core/MutationInterceptorTests.cs +3 -0
- package/Tests/Runtime/Core/MutationPostProcessorAcrossHandlersTests.cs +3 -0
- package/Tests/Runtime/Core/MutationPostProcessorMoreTests.cs +3 -0
- package/Tests/Runtime/Core/MutationPriorityTests.cs +3 -0
- package/Tests/Runtime/Core/NominalTests.cs +3 -0
- package/Tests/Runtime/Core/OrderingTests.cs +3 -0
- package/Tests/Runtime/Core/OverDeregistrationTests.cs +3 -0
- package/Tests/Runtime/Core/PostProcessorTests.cs +3 -0
- package/Tests/Runtime/Core/ReflexiveErrorTests.cs +3 -0
- package/Tests/Runtime/Core/ReflexiveMessageWarningTests.cs +4 -1
- package/Tests/Runtime/Core/ReflexiveTests.cs +3 -0
- package/Tests/Runtime/Core/RegistrationTests.cs +3 -0
- package/Tests/Runtime/Core/StringShorthandTests.cs +3 -0
- package/Tests/Runtime/Core/TargetedTests.cs +3 -0
- package/Tests/Runtime/Core/TypedShorthandTests.cs +3 -0
- package/Tests/Runtime/Core/UntargetedEquivalenceTests.cs +3 -0
- package/Tests/Runtime/Core/UntargetedPrefreezeTests.cs +14 -78
- package/Tests/Runtime/Core/UntargetedTests.cs +3 -0
- package/Tests/Runtime/Integrations/Reflex/ReflexIntegrationTests.cs +4 -1
- package/Tests/Runtime/Integrations/VContainer/VContainerIntegrationTests.cs +3 -0
- package/Tests/Runtime/Integrations/Zenject/ZenjectIntegrationTests.cs +3 -0
- package/Tests/Runtime/Scripts/Components/GenericMessageAwareComponent.cs +3 -0
- package/Tests/Runtime/Scripts/Components/ManualListenerComponent.cs +3 -0
- package/Tests/Runtime/Scripts/Components/ReflexiveReceiverComponent.cs +3 -0
- package/Tests/Runtime/TestUtilities/UnityFixtureBase.cs +3 -0
- package/Tests/Runtime/Unity/MessageBusProviderAssetTests.cs +3 -0
- package/Tests/Runtime/Unity/MessageBusProviderHandleTests.cs +87 -3
- package/Tests/Runtime/Unity/MessagingComponentInstallerSceneTests.cs +109 -0
- package/Tests/Runtime/Unity/MessagingComponentInstallerSceneTests.cs.meta +11 -0
- package/Tests/Runtime/Unity/MessagingComponentProviderIntegrationTests.cs +159 -17
- package/Tests/Runtime/WallstopStudios.DxMessaging.Tests.Runtime.csproj +20 -7
- package/package.json +1 -1
|
@@ -1,6 +1,8 @@
|
|
|
1
|
+
#if UNITY_2021_3_OR_NEWER
|
|
1
2
|
namespace DxMessaging.Tests.Runtime.Unity
|
|
2
3
|
{
|
|
3
4
|
using System.Collections;
|
|
5
|
+
using System.Collections.Generic;
|
|
4
6
|
using System.Text.RegularExpressions;
|
|
5
7
|
using DxMessaging.Core;
|
|
6
8
|
using DxMessaging.Core.MessageBus;
|
|
@@ -12,6 +14,29 @@ namespace DxMessaging.Tests.Runtime.Unity
|
|
|
12
14
|
|
|
13
15
|
public sealed class MessagingComponentProviderIntegrationTests
|
|
14
16
|
{
|
|
17
|
+
private readonly List<Object> _objectsToDestroy = new();
|
|
18
|
+
|
|
19
|
+
[SetUp]
|
|
20
|
+
public void SetUp()
|
|
21
|
+
{
|
|
22
|
+
_objectsToDestroy.Clear();
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
[TearDown]
|
|
26
|
+
public void TearDown()
|
|
27
|
+
{
|
|
28
|
+
for (int i = 0; i < _objectsToDestroy.Count; ++i)
|
|
29
|
+
{
|
|
30
|
+
Object obj = _objectsToDestroy[i];
|
|
31
|
+
if (obj != null)
|
|
32
|
+
{
|
|
33
|
+
Object.DestroyImmediate(obj);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
_objectsToDestroy.Clear();
|
|
38
|
+
}
|
|
39
|
+
|
|
15
40
|
[UnityTest]
|
|
16
41
|
public IEnumerator ConfigureWithProviderHandleRoutesThroughProviderBus()
|
|
17
42
|
{
|
|
@@ -19,9 +44,10 @@ namespace DxMessaging.Tests.Runtime.Unity
|
|
|
19
44
|
TestScriptableMessageBusProvider provider =
|
|
20
45
|
ScriptableObject.CreateInstance<TestScriptableMessageBusProvider>();
|
|
21
46
|
provider.Configure(messageBus);
|
|
47
|
+
Track(provider);
|
|
22
48
|
MessageBusProviderHandle handle = new(provider);
|
|
23
49
|
|
|
24
|
-
GameObject owner = new("MessagingComponentOwner");
|
|
50
|
+
GameObject owner = Track(new GameObject("MessagingComponentOwner"));
|
|
25
51
|
MessagingComponent messagingComponent = owner.AddComponent<MessagingComponent>();
|
|
26
52
|
messagingComponent.Configure(handle, MessageBusRebindMode.RebindActive);
|
|
27
53
|
|
|
@@ -34,9 +60,6 @@ namespace DxMessaging.Tests.Runtime.Unity
|
|
|
34
60
|
messageBus.UntargetedBroadcast(ref message);
|
|
35
61
|
|
|
36
62
|
Assert.AreEqual(1, listener.ReceivedCount);
|
|
37
|
-
|
|
38
|
-
Object.DestroyImmediate(owner);
|
|
39
|
-
Object.DestroyImmediate(provider);
|
|
40
63
|
}
|
|
41
64
|
|
|
42
65
|
[UnityTest]
|
|
@@ -46,14 +69,15 @@ namespace DxMessaging.Tests.Runtime.Unity
|
|
|
46
69
|
TestScriptableMessageBusProvider provider =
|
|
47
70
|
ScriptableObject.CreateInstance<TestScriptableMessageBusProvider>();
|
|
48
71
|
provider.Configure(messageBus);
|
|
72
|
+
Track(provider);
|
|
49
73
|
MessageBusProviderHandle handle = new(provider);
|
|
50
74
|
|
|
51
|
-
GameObject root = new("InstallerRoot");
|
|
75
|
+
GameObject root = Track(new GameObject("InstallerRoot"));
|
|
52
76
|
MessagingComponentInstaller installer =
|
|
53
77
|
root.AddComponent<MessagingComponentInstaller>();
|
|
54
78
|
installer.SetProvider(handle);
|
|
55
79
|
|
|
56
|
-
GameObject child = new("InstallerListener");
|
|
80
|
+
GameObject child = Track(new GameObject("InstallerListener"));
|
|
57
81
|
child.transform.SetParent(root.transform);
|
|
58
82
|
MessagingComponent messagingComponent = child.AddComponent<MessagingComponent>();
|
|
59
83
|
|
|
@@ -68,9 +92,6 @@ namespace DxMessaging.Tests.Runtime.Unity
|
|
|
68
92
|
messageBus.UntargetedBroadcast(ref message);
|
|
69
93
|
|
|
70
94
|
Assert.AreEqual(1, listener.ReceivedCount);
|
|
71
|
-
|
|
72
|
-
Object.DestroyImmediate(root);
|
|
73
|
-
Object.DestroyImmediate(provider);
|
|
74
95
|
}
|
|
75
96
|
|
|
76
97
|
[UnityTest]
|
|
@@ -79,7 +100,7 @@ namespace DxMessaging.Tests.Runtime.Unity
|
|
|
79
100
|
MessageBus messageBus = new();
|
|
80
101
|
TestProvider provider = new(messageBus);
|
|
81
102
|
|
|
82
|
-
GameObject owner = new("BuilderOwner");
|
|
103
|
+
GameObject owner = Track(new GameObject("BuilderOwner"));
|
|
83
104
|
MessagingComponent messagingComponent = owner.AddComponent<MessagingComponent>();
|
|
84
105
|
messagingComponent.Configure(provider, MessageBusRebindMode.RebindActive);
|
|
85
106
|
|
|
@@ -93,8 +114,6 @@ namespace DxMessaging.Tests.Runtime.Unity
|
|
|
93
114
|
Assert.AreSame(messageBus, lease.MessageBus);
|
|
94
115
|
Assert.IsFalse(lease.Token.Enabled);
|
|
95
116
|
}
|
|
96
|
-
|
|
97
|
-
Object.DestroyImmediate(owner);
|
|
98
117
|
yield break;
|
|
99
118
|
}
|
|
100
119
|
|
|
@@ -103,7 +122,7 @@ namespace DxMessaging.Tests.Runtime.Unity
|
|
|
103
122
|
{
|
|
104
123
|
MessageBus messageBus = new();
|
|
105
124
|
|
|
106
|
-
GameObject owner = new("OverrideOwner");
|
|
125
|
+
GameObject owner = Track(new GameObject("OverrideOwner"));
|
|
107
126
|
MessagingComponent messagingComponent = owner.AddComponent<MessagingComponent>();
|
|
108
127
|
messagingComponent.Configure(messageBus, MessageBusRebindMode.RebindActive);
|
|
109
128
|
|
|
@@ -116,18 +135,17 @@ namespace DxMessaging.Tests.Runtime.Unity
|
|
|
116
135
|
{
|
|
117
136
|
Assert.AreSame(messageBus, lease.MessageBus);
|
|
118
137
|
}
|
|
119
|
-
Object.DestroyImmediate(owner);
|
|
120
138
|
yield break;
|
|
121
139
|
}
|
|
122
140
|
|
|
123
141
|
[UnityTest]
|
|
124
142
|
public IEnumerator InstallerWithoutConfigurationLogsWarning()
|
|
125
143
|
{
|
|
126
|
-
GameObject root = new("InstallerWarningRoot");
|
|
144
|
+
GameObject root = Track(new GameObject("InstallerWarningRoot"));
|
|
127
145
|
MessagingComponentInstaller installer =
|
|
128
146
|
root.AddComponent<MessagingComponentInstaller>();
|
|
129
147
|
|
|
130
|
-
GameObject child = new("InstallerWarningChild");
|
|
148
|
+
GameObject child = Track(new GameObject("InstallerWarningChild"));
|
|
131
149
|
child.transform.SetParent(root.transform);
|
|
132
150
|
_ = child.AddComponent<MessagingComponent>();
|
|
133
151
|
|
|
@@ -141,7 +159,129 @@ namespace DxMessaging.Tests.Runtime.Unity
|
|
|
141
159
|
installer.ApplyConfiguration();
|
|
142
160
|
yield return null;
|
|
143
161
|
|
|
144
|
-
|
|
162
|
+
yield break;
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
[UnityTest]
|
|
166
|
+
public IEnumerator PreserveRegistrationsKeepsExistingHandlersOnOriginalBus()
|
|
167
|
+
{
|
|
168
|
+
MessageBus originalBus = new();
|
|
169
|
+
MessageBus newBus = new();
|
|
170
|
+
|
|
171
|
+
GameObject owner = Track(new GameObject("PreserveOwner"));
|
|
172
|
+
MessagingComponent messagingComponent = owner.AddComponent<MessagingComponent>();
|
|
173
|
+
messagingComponent.Configure(originalBus, MessageBusRebindMode.RebindActive);
|
|
174
|
+
|
|
175
|
+
TestListener originalListener = owner.AddComponent<TestListener>();
|
|
176
|
+
originalListener.Initialize(messagingComponent);
|
|
177
|
+
|
|
178
|
+
yield return null;
|
|
179
|
+
|
|
180
|
+
TestUntargetedMessage message = new(1);
|
|
181
|
+
originalBus.UntargetedBroadcast(ref message);
|
|
182
|
+
Assert.AreEqual(
|
|
183
|
+
1,
|
|
184
|
+
originalListener.ReceivedCount,
|
|
185
|
+
"Original listener should observe messages on the initial bus."
|
|
186
|
+
);
|
|
187
|
+
|
|
188
|
+
messagingComponent.Configure(newBus, MessageBusRebindMode.PreserveRegistrations);
|
|
189
|
+
|
|
190
|
+
message = new TestUntargetedMessage(2);
|
|
191
|
+
originalBus.UntargetedBroadcast(ref message);
|
|
192
|
+
Assert.AreEqual(
|
|
193
|
+
2,
|
|
194
|
+
originalListener.ReceivedCount,
|
|
195
|
+
"Existing listener should remain bound to the original bus when preserving registrations."
|
|
196
|
+
);
|
|
197
|
+
|
|
198
|
+
message = new TestUntargetedMessage(3);
|
|
199
|
+
newBus.UntargetedBroadcast(ref message);
|
|
200
|
+
Assert.AreEqual(
|
|
201
|
+
2,
|
|
202
|
+
originalListener.ReceivedCount,
|
|
203
|
+
"Existing listener should not observe messages on the new bus when preserving registrations."
|
|
204
|
+
);
|
|
205
|
+
|
|
206
|
+
TestListener newListener = owner.AddComponent<TestListener>();
|
|
207
|
+
newListener.Initialize(messagingComponent);
|
|
208
|
+
|
|
209
|
+
yield return null;
|
|
210
|
+
|
|
211
|
+
message = new TestUntargetedMessage(4);
|
|
212
|
+
newBus.UntargetedBroadcast(ref message);
|
|
213
|
+
Assert.AreEqual(
|
|
214
|
+
1,
|
|
215
|
+
newListener.ReceivedCount,
|
|
216
|
+
"New listener should bind to the new bus after preservation."
|
|
217
|
+
);
|
|
218
|
+
Assert.AreEqual(2, originalListener.ReceivedCount);
|
|
219
|
+
|
|
220
|
+
message = new TestUntargetedMessage(5);
|
|
221
|
+
originalBus.UntargetedBroadcast(ref message);
|
|
222
|
+
Assert.AreEqual(
|
|
223
|
+
1,
|
|
224
|
+
newListener.ReceivedCount,
|
|
225
|
+
"New listener should not observe messages sent on the original bus."
|
|
226
|
+
);
|
|
227
|
+
Assert.AreEqual(3, originalListener.ReceivedCount);
|
|
228
|
+
|
|
229
|
+
yield break;
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
[UnityTest]
|
|
233
|
+
public IEnumerator RebindActiveMovesExistingHandlersToNewBus()
|
|
234
|
+
{
|
|
235
|
+
MessageBus originalBus = new();
|
|
236
|
+
MessageBus newBus = new();
|
|
237
|
+
|
|
238
|
+
GameObject owner = Track(new GameObject("RebindOwner"));
|
|
239
|
+
MessagingComponent messagingComponent = owner.AddComponent<MessagingComponent>();
|
|
240
|
+
messagingComponent.Configure(originalBus, MessageBusRebindMode.RebindActive);
|
|
241
|
+
|
|
242
|
+
TestListener listener = owner.AddComponent<TestListener>();
|
|
243
|
+
listener.Initialize(messagingComponent);
|
|
244
|
+
|
|
245
|
+
yield return null;
|
|
246
|
+
|
|
247
|
+
TestUntargetedMessage message = new(1);
|
|
248
|
+
originalBus.UntargetedBroadcast(ref message);
|
|
249
|
+
Assert.AreEqual(
|
|
250
|
+
1,
|
|
251
|
+
listener.ReceivedCount,
|
|
252
|
+
"Listener should observe messages on the initial bus prior to rebind."
|
|
253
|
+
);
|
|
254
|
+
|
|
255
|
+
messagingComponent.Configure(newBus, MessageBusRebindMode.RebindActive);
|
|
256
|
+
|
|
257
|
+
message = new TestUntargetedMessage(2);
|
|
258
|
+
originalBus.UntargetedBroadcast(ref message);
|
|
259
|
+
Assert.AreEqual(
|
|
260
|
+
1,
|
|
261
|
+
listener.ReceivedCount,
|
|
262
|
+
"Listener should no longer receive messages on the original bus after rebinding."
|
|
263
|
+
);
|
|
264
|
+
|
|
265
|
+
message = new TestUntargetedMessage(3);
|
|
266
|
+
newBus.UntargetedBroadcast(ref message);
|
|
267
|
+
Assert.AreEqual(
|
|
268
|
+
2,
|
|
269
|
+
listener.ReceivedCount,
|
|
270
|
+
"Listener should observe messages on the new bus after rebinding."
|
|
271
|
+
);
|
|
272
|
+
|
|
273
|
+
yield break;
|
|
274
|
+
}
|
|
275
|
+
|
|
276
|
+
private T Track<T>(T unityObject)
|
|
277
|
+
where T : Object
|
|
278
|
+
{
|
|
279
|
+
if (unityObject != null)
|
|
280
|
+
{
|
|
281
|
+
_objectsToDestroy.Add(unityObject);
|
|
282
|
+
}
|
|
283
|
+
|
|
284
|
+
return unityObject;
|
|
145
285
|
}
|
|
146
286
|
|
|
147
287
|
private sealed class TestListener : MonoBehaviour
|
|
@@ -208,3 +348,5 @@ namespace DxMessaging.Tests.Runtime.Unity
|
|
|
208
348
|
}
|
|
209
349
|
}
|
|
210
350
|
}
|
|
351
|
+
|
|
352
|
+
#endif
|
|
@@ -1,7 +1,20 @@
|
|
|
1
|
-
<
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
1
|
+
<Project Sdk="Microsoft.NET.Sdk">
|
|
2
|
+
<PropertyGroup>
|
|
3
|
+
<TargetFramework>net8.0</TargetFramework>
|
|
4
|
+
<Nullable>disable</Nullable>
|
|
5
|
+
<ImplicitUsings>disable</ImplicitUsings>
|
|
6
|
+
<EnableDefaultCompileItems>false</EnableDefaultCompileItems>
|
|
7
|
+
<EnableDefaultNoneItems>false</EnableDefaultNoneItems>
|
|
8
|
+
<IsPackable>false</IsPackable>
|
|
9
|
+
<GenerateAssemblyInfo>false</GenerateAssemblyInfo>
|
|
10
|
+
<NoWarn>1701;1702</NoWarn>
|
|
11
|
+
</PropertyGroup>
|
|
12
|
+
<ItemGroup>
|
|
13
|
+
<None Include="Benchmarks\**\*.cs" LinkBase="Benchmarks" />
|
|
14
|
+
<None Include="Core\**\*.cs" LinkBase="Core" />
|
|
15
|
+
<None Include="Integrations\**\*.cs" LinkBase="Integrations" />
|
|
16
|
+
<None Include="Scripts\**\*.cs" LinkBase="Scripts" />
|
|
17
|
+
<None Include="TestUtilities\**\*.cs" LinkBase="TestUtilities" />
|
|
18
|
+
<None Include="Unity\**\*.cs" LinkBase="Unity" />
|
|
19
|
+
</ItemGroup>
|
|
20
|
+
</Project>
|