com.wallstop-studios.dxmessaging 2.0.0-rc12 → 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 -162
- 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 -364
- package/README.md.meta +7 -7
- package/Runtime/Core/Attributes/DxAutoMessageTypeAttribute.cs +7 -7
- package/Runtime/Core/Attributes/DxAutoMessageTypeAttribute.cs.meta +2 -2
- package/Runtime/Core/Attributes/DxBroadcastMessageAttribute.cs +7 -7
- package/Runtime/Core/Attributes/DxBroadcastMessageAttribute.cs.meta +2 -2
- package/Runtime/Core/Attributes/DxTargetedMessageAttribute.cs +7 -7
- package/Runtime/Core/Attributes/DxTargetedMessageAttribute.cs.meta +2 -2
- package/Runtime/Core/Attributes/DxUntargetedMessageAttribute.cs +7 -7
- package/Runtime/Core/Attributes/DxUntargetedMessageAttribute.cs.meta +2 -2
- package/Runtime/Core/Attributes.meta +2 -2
- package/Runtime/Core/Extensions/MessageExtensions.cs +342 -342
- 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 -105
- 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 -27
- package/Runtime/Core/Messages/ITargetedMessage.cs.meta +11 -11
- package/Runtime/Core/Messages/IUntargetedMessage.cs +27 -27
- package/Runtime/Core/Messages/IUntargetedMessage.cs.meta +11 -11
- package/Runtime/Core/Messages.meta +8 -8
- package/Runtime/Core/MessagingDebug.cs +70 -70
- 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 -92
- package/SourceGenerators/WallstopStudios.DxMessaging.SourceGenerators/DxAutoMessageTypeGenerator.cs.meta +11 -11
- package/SourceGenerators/WallstopStudios.DxMessaging.SourceGenerators/DxBroadcastMessageGenerator.cs +94 -94
- package/SourceGenerators/WallstopStudios.DxMessaging.SourceGenerators/DxBroadcastMessageGenerator.cs.meta +2 -2
- package/SourceGenerators/WallstopStudios.DxMessaging.SourceGenerators/DxTargetedMessageGenerator.cs +94 -94
- package/SourceGenerators/WallstopStudios.DxMessaging.SourceGenerators/DxTargetedMessageGenerator.cs.meta +2 -2
- package/SourceGenerators/WallstopStudios.DxMessaging.SourceGenerators/DxUntargetedMessageGenerator.cs +94 -94
- 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 -190
- package/Tests/Runtime/Core/GlobalAcceptAllTests.cs.meta +11 -11
- package/Tests/Runtime/Core/MessagingTestBase.cs +185 -185
- package/Tests/Runtime/Core/MessagingTestBase.cs.meta +11 -11
- package/Tests/Runtime/Core/NominalTests.cs +1740 -1740
- package/Tests/Runtime/Core/PostProcessorTests.cs +1236 -1236
- package/Tests/Runtime/Core/PostProcessorTests.cs.meta +11 -11
- package/Tests/Runtime/Core/RegistrationTests.cs +1266 -1266
- 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 -186
- 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.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,185 +1,185 @@
|
|
|
1
|
-
namespace DxMessaging.Tests.Runtime.Core
|
|
2
|
-
{
|
|
3
|
-
using System;
|
|
4
|
-
using System.Collections;
|
|
5
|
-
using System.Collections.Generic;
|
|
6
|
-
using System.Diagnostics;
|
|
7
|
-
using System.Linq;
|
|
8
|
-
using System.Reflection;
|
|
9
|
-
using DxMessaging.Core;
|
|
10
|
-
using DxMessaging.Core.MessageBus;
|
|
11
|
-
using NUnit.Framework;
|
|
12
|
-
using Unity;
|
|
13
|
-
using UnityEngine;
|
|
14
|
-
using UnityEngine.TestTools;
|
|
15
|
-
using Debug = UnityEngine.Debug;
|
|
16
|
-
using Object = UnityEngine.Object;
|
|
17
|
-
using Random = System.Random;
|
|
18
|
-
|
|
19
|
-
public abstract class MessagingTestBase
|
|
20
|
-
{
|
|
21
|
-
protected int _numRegistrations;
|
|
22
|
-
protected readonly List<GameObject> _spawned = new();
|
|
23
|
-
protected readonly Random _random = new();
|
|
24
|
-
|
|
25
|
-
[SetUp]
|
|
26
|
-
public virtual void Setup()
|
|
27
|
-
{
|
|
28
|
-
MessagingDebug.LogFunction = (level, message) =>
|
|
29
|
-
{
|
|
30
|
-
switch (level)
|
|
31
|
-
{
|
|
32
|
-
case LogLevel.Debug:
|
|
33
|
-
case LogLevel.Info:
|
|
34
|
-
Debug.Log(message);
|
|
35
|
-
return;
|
|
36
|
-
case LogLevel.Warn:
|
|
37
|
-
Debug.LogWarning(message);
|
|
38
|
-
return;
|
|
39
|
-
case LogLevel.Error:
|
|
40
|
-
Debug.LogError(message);
|
|
41
|
-
return;
|
|
42
|
-
}
|
|
43
|
-
};
|
|
44
|
-
MessageBus messageBus = MessageHandler.MessageBus;
|
|
45
|
-
Assert.IsNotNull(messageBus);
|
|
46
|
-
messageBus.Log.Enabled = true;
|
|
47
|
-
_numRegistrations = 150;
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
[TearDown]
|
|
51
|
-
public virtual void Cleanup()
|
|
52
|
-
{
|
|
53
|
-
foreach (GameObject spawned in _spawned)
|
|
54
|
-
{
|
|
55
|
-
if (spawned == null)
|
|
56
|
-
{
|
|
57
|
-
continue;
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
Object.Destroy(spawned);
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
_spawned.Clear();
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
[UnitySetUp]
|
|
67
|
-
public virtual IEnumerator UnitySetup()
|
|
68
|
-
{
|
|
69
|
-
return WaitUntilMessageHandlerIsFresh();
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
protected void Run(
|
|
73
|
-
Func<IEnumerable<MessageRegistrationHandle>> register,
|
|
74
|
-
Action emit,
|
|
75
|
-
Action assert,
|
|
76
|
-
Action finalAssert,
|
|
77
|
-
MessageRegistrationToken token,
|
|
78
|
-
bool synchronizeDeregistrations = false
|
|
79
|
-
)
|
|
80
|
-
{
|
|
81
|
-
HashSet<MessageRegistrationHandle> handles = new();
|
|
82
|
-
try
|
|
83
|
-
{
|
|
84
|
-
List<List<MessageRegistrationHandle>> indexedRegistrations = new(_numRegistrations);
|
|
85
|
-
for (int i = 0; i < _numRegistrations; ++i)
|
|
86
|
-
{
|
|
87
|
-
List<MessageRegistrationHandle> registrations = register().ToList();
|
|
88
|
-
foreach (MessageRegistrationHandle handle in registrations)
|
|
89
|
-
{
|
|
90
|
-
handles.Add(handle);
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
indexedRegistrations.Add(registrations);
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
if (synchronizeDeregistrations)
|
|
97
|
-
{
|
|
98
|
-
foreach (
|
|
99
|
-
int index in Enumerable
|
|
100
|
-
.Range(0, indexedRegistrations.Count)
|
|
101
|
-
.OrderBy(_ => _random.Next())
|
|
102
|
-
)
|
|
103
|
-
{
|
|
104
|
-
emit();
|
|
105
|
-
assert();
|
|
106
|
-
foreach (MessageRegistrationHandle handle in indexedRegistrations[index])
|
|
107
|
-
{
|
|
108
|
-
handles.Remove(handle);
|
|
109
|
-
token.RemoveRegistration(handle);
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
|
-
}
|
|
113
|
-
else
|
|
114
|
-
{
|
|
115
|
-
foreach (
|
|
116
|
-
MessageRegistrationHandle handle in handles
|
|
117
|
-
.OrderBy(_ => _random.Next())
|
|
118
|
-
.ToList()
|
|
119
|
-
)
|
|
120
|
-
{
|
|
121
|
-
emit();
|
|
122
|
-
assert();
|
|
123
|
-
handles.Remove(handle);
|
|
124
|
-
token.RemoveRegistration(handle);
|
|
125
|
-
}
|
|
126
|
-
}
|
|
127
|
-
|
|
128
|
-
emit();
|
|
129
|
-
finalAssert();
|
|
130
|
-
emit();
|
|
131
|
-
finalAssert();
|
|
132
|
-
}
|
|
133
|
-
finally
|
|
134
|
-
{
|
|
135
|
-
foreach (MessageRegistrationHandle handle in handles)
|
|
136
|
-
{
|
|
137
|
-
token.RemoveRegistration(handle);
|
|
138
|
-
}
|
|
139
|
-
}
|
|
140
|
-
}
|
|
141
|
-
|
|
142
|
-
protected MessageRegistrationToken GetToken(MessageAwareComponent component)
|
|
143
|
-
{
|
|
144
|
-
// Reach inside and grab the token
|
|
145
|
-
FieldInfo field = typeof(MessageAwareComponent).GetField(
|
|
146
|
-
"_messageRegistrationToken",
|
|
147
|
-
BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic
|
|
148
|
-
);
|
|
149
|
-
Assert.IsNotNull(field);
|
|
150
|
-
MessageRegistrationToken token = field.GetValue(component) as MessageRegistrationToken;
|
|
151
|
-
Assert.IsNotNull(token);
|
|
152
|
-
return token;
|
|
153
|
-
}
|
|
154
|
-
|
|
155
|
-
protected IEnumerator WaitUntilMessageHandlerIsFresh()
|
|
156
|
-
{
|
|
157
|
-
Setup();
|
|
158
|
-
MessageBus messageBus = MessageHandler.MessageBus;
|
|
159
|
-
Assert.IsNotNull(messageBus);
|
|
160
|
-
|
|
161
|
-
Stopwatch timer = Stopwatch.StartNew();
|
|
162
|
-
|
|
163
|
-
bool IsStale()
|
|
164
|
-
{
|
|
165
|
-
return messageBus.RegisteredUntargeted != 0
|
|
166
|
-
|| messageBus.RegisteredTargeted != 0
|
|
167
|
-
|| messageBus.RegisteredBroadcast != 0;
|
|
168
|
-
}
|
|
169
|
-
|
|
170
|
-
while (IsStale() && timer.Elapsed < TimeSpan.FromSeconds(2.5))
|
|
171
|
-
{
|
|
172
|
-
yield return null;
|
|
173
|
-
}
|
|
174
|
-
|
|
175
|
-
Assert.IsFalse(
|
|
176
|
-
IsStale(),
|
|
177
|
-
"MessageHandler had {0} Untargeted registrations, {1} Targeted registrations, {2} Broadcast registrations. Registration log: {3}.",
|
|
178
|
-
messageBus.RegisteredUntargeted,
|
|
179
|
-
messageBus.RegisteredTargeted,
|
|
180
|
-
messageBus.RegisteredBroadcast,
|
|
181
|
-
messageBus.Log
|
|
182
|
-
);
|
|
183
|
-
}
|
|
184
|
-
}
|
|
185
|
-
}
|
|
1
|
+
namespace DxMessaging.Tests.Runtime.Core
|
|
2
|
+
{
|
|
3
|
+
using System;
|
|
4
|
+
using System.Collections;
|
|
5
|
+
using System.Collections.Generic;
|
|
6
|
+
using System.Diagnostics;
|
|
7
|
+
using System.Linq;
|
|
8
|
+
using System.Reflection;
|
|
9
|
+
using DxMessaging.Core;
|
|
10
|
+
using DxMessaging.Core.MessageBus;
|
|
11
|
+
using NUnit.Framework;
|
|
12
|
+
using Unity;
|
|
13
|
+
using UnityEngine;
|
|
14
|
+
using UnityEngine.TestTools;
|
|
15
|
+
using Debug = UnityEngine.Debug;
|
|
16
|
+
using Object = UnityEngine.Object;
|
|
17
|
+
using Random = System.Random;
|
|
18
|
+
|
|
19
|
+
public abstract class MessagingTestBase
|
|
20
|
+
{
|
|
21
|
+
protected int _numRegistrations;
|
|
22
|
+
protected readonly List<GameObject> _spawned = new();
|
|
23
|
+
protected readonly Random _random = new();
|
|
24
|
+
|
|
25
|
+
[SetUp]
|
|
26
|
+
public virtual void Setup()
|
|
27
|
+
{
|
|
28
|
+
MessagingDebug.LogFunction = (level, message) =>
|
|
29
|
+
{
|
|
30
|
+
switch (level)
|
|
31
|
+
{
|
|
32
|
+
case LogLevel.Debug:
|
|
33
|
+
case LogLevel.Info:
|
|
34
|
+
Debug.Log(message);
|
|
35
|
+
return;
|
|
36
|
+
case LogLevel.Warn:
|
|
37
|
+
Debug.LogWarning(message);
|
|
38
|
+
return;
|
|
39
|
+
case LogLevel.Error:
|
|
40
|
+
Debug.LogError(message);
|
|
41
|
+
return;
|
|
42
|
+
}
|
|
43
|
+
};
|
|
44
|
+
MessageBus messageBus = MessageHandler.MessageBus;
|
|
45
|
+
Assert.IsNotNull(messageBus);
|
|
46
|
+
messageBus.Log.Enabled = true;
|
|
47
|
+
_numRegistrations = 150;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
[TearDown]
|
|
51
|
+
public virtual void Cleanup()
|
|
52
|
+
{
|
|
53
|
+
foreach (GameObject spawned in _spawned)
|
|
54
|
+
{
|
|
55
|
+
if (spawned == null)
|
|
56
|
+
{
|
|
57
|
+
continue;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
Object.Destroy(spawned);
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
_spawned.Clear();
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
[UnitySetUp]
|
|
67
|
+
public virtual IEnumerator UnitySetup()
|
|
68
|
+
{
|
|
69
|
+
return WaitUntilMessageHandlerIsFresh();
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
protected void Run(
|
|
73
|
+
Func<IEnumerable<MessageRegistrationHandle>> register,
|
|
74
|
+
Action emit,
|
|
75
|
+
Action assert,
|
|
76
|
+
Action finalAssert,
|
|
77
|
+
MessageRegistrationToken token,
|
|
78
|
+
bool synchronizeDeregistrations = false
|
|
79
|
+
)
|
|
80
|
+
{
|
|
81
|
+
HashSet<MessageRegistrationHandle> handles = new();
|
|
82
|
+
try
|
|
83
|
+
{
|
|
84
|
+
List<List<MessageRegistrationHandle>> indexedRegistrations = new(_numRegistrations);
|
|
85
|
+
for (int i = 0; i < _numRegistrations; ++i)
|
|
86
|
+
{
|
|
87
|
+
List<MessageRegistrationHandle> registrations = register().ToList();
|
|
88
|
+
foreach (MessageRegistrationHandle handle in registrations)
|
|
89
|
+
{
|
|
90
|
+
handles.Add(handle);
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
indexedRegistrations.Add(registrations);
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
if (synchronizeDeregistrations)
|
|
97
|
+
{
|
|
98
|
+
foreach (
|
|
99
|
+
int index in Enumerable
|
|
100
|
+
.Range(0, indexedRegistrations.Count)
|
|
101
|
+
.OrderBy(_ => _random.Next())
|
|
102
|
+
)
|
|
103
|
+
{
|
|
104
|
+
emit();
|
|
105
|
+
assert();
|
|
106
|
+
foreach (MessageRegistrationHandle handle in indexedRegistrations[index])
|
|
107
|
+
{
|
|
108
|
+
handles.Remove(handle);
|
|
109
|
+
token.RemoveRegistration(handle);
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
else
|
|
114
|
+
{
|
|
115
|
+
foreach (
|
|
116
|
+
MessageRegistrationHandle handle in handles
|
|
117
|
+
.OrderBy(_ => _random.Next())
|
|
118
|
+
.ToList()
|
|
119
|
+
)
|
|
120
|
+
{
|
|
121
|
+
emit();
|
|
122
|
+
assert();
|
|
123
|
+
handles.Remove(handle);
|
|
124
|
+
token.RemoveRegistration(handle);
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
emit();
|
|
129
|
+
finalAssert();
|
|
130
|
+
emit();
|
|
131
|
+
finalAssert();
|
|
132
|
+
}
|
|
133
|
+
finally
|
|
134
|
+
{
|
|
135
|
+
foreach (MessageRegistrationHandle handle in handles)
|
|
136
|
+
{
|
|
137
|
+
token.RemoveRegistration(handle);
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
protected MessageRegistrationToken GetToken(MessageAwareComponent component)
|
|
143
|
+
{
|
|
144
|
+
// Reach inside and grab the token
|
|
145
|
+
FieldInfo field = typeof(MessageAwareComponent).GetField(
|
|
146
|
+
"_messageRegistrationToken",
|
|
147
|
+
BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic
|
|
148
|
+
);
|
|
149
|
+
Assert.IsNotNull(field);
|
|
150
|
+
MessageRegistrationToken token = field.GetValue(component) as MessageRegistrationToken;
|
|
151
|
+
Assert.IsNotNull(token);
|
|
152
|
+
return token;
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
protected IEnumerator WaitUntilMessageHandlerIsFresh()
|
|
156
|
+
{
|
|
157
|
+
Setup();
|
|
158
|
+
MessageBus messageBus = MessageHandler.MessageBus;
|
|
159
|
+
Assert.IsNotNull(messageBus);
|
|
160
|
+
|
|
161
|
+
Stopwatch timer = Stopwatch.StartNew();
|
|
162
|
+
|
|
163
|
+
bool IsStale()
|
|
164
|
+
{
|
|
165
|
+
return messageBus.RegisteredUntargeted != 0
|
|
166
|
+
|| messageBus.RegisteredTargeted != 0
|
|
167
|
+
|| messageBus.RegisteredBroadcast != 0;
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
while (IsStale() && timer.Elapsed < TimeSpan.FromSeconds(2.5))
|
|
171
|
+
{
|
|
172
|
+
yield return null;
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
Assert.IsFalse(
|
|
176
|
+
IsStale(),
|
|
177
|
+
"MessageHandler had {0} Untargeted registrations, {1} Targeted registrations, {2} Broadcast registrations. Registration log: {3}.",
|
|
178
|
+
messageBus.RegisteredUntargeted,
|
|
179
|
+
messageBus.RegisteredTargeted,
|
|
180
|
+
messageBus.RegisteredBroadcast,
|
|
181
|
+
messageBus.Log
|
|
182
|
+
);
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
fileFormatVersion: 2
|
|
2
|
-
guid: 7535cc8753fc96548b025f5407a513eb
|
|
3
|
-
MonoImporter:
|
|
4
|
-
externalObjects: {}
|
|
5
|
-
serializedVersion: 2
|
|
6
|
-
defaultReferences: []
|
|
7
|
-
executionOrder: 0
|
|
8
|
-
icon: {instanceID: 0}
|
|
9
|
-
userData:
|
|
10
|
-
assetBundleName:
|
|
11
|
-
assetBundleVariant:
|
|
1
|
+
fileFormatVersion: 2
|
|
2
|
+
guid: 7535cc8753fc96548b025f5407a513eb
|
|
3
|
+
MonoImporter:
|
|
4
|
+
externalObjects: {}
|
|
5
|
+
serializedVersion: 2
|
|
6
|
+
defaultReferences: []
|
|
7
|
+
executionOrder: 0
|
|
8
|
+
icon: {instanceID: 0}
|
|
9
|
+
userData:
|
|
10
|
+
assetBundleName:
|
|
11
|
+
assetBundleVariant:
|