feat: make Unity integration optional
This commit is contained in:
27 files changed
+916
-69
No files matched your search
@@ -0,0 +1,43 @@
|
||||
#if SHRINK_EVENTBUS_HAS_SHARED_RUNTIME
|
||||
using System;
|
||||
using NUnit.Framework;
|
||||
using ShrinkSDK.Runtime;
|
||||
|
||||
namespace ShrinkEventBus.Integration.Tests
|
||||
{
|
||||
public sealed class SharedDispatcherTests
|
||||
{
|
||||
private sealed class Dispatcher : IShrinkMainThreadDispatcher
|
||||
{
|
||||
public bool IsMainThread => false;
|
||||
public Action Pending;
|
||||
public bool TryPost(Action action) { Pending = action; return true; }
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void AdapterPreservesAffinityAndPostsThroughSharedDispatcher()
|
||||
{
|
||||
var original = ShrinkEventBusRuntime.MainThreadDispatcher;
|
||||
try
|
||||
{
|
||||
var dispatcher = new Dispatcher();
|
||||
var adapter = new ShrinkSharedMainThreadDispatcher(dispatcher);
|
||||
ShrinkEventBusRuntime.ConfigureMainThreadDispatcher(adapter);
|
||||
Assert.IsFalse(ShrinkEventBusRuntime.MainThreadDispatcher.IsMainThread);
|
||||
var hits = 0;
|
||||
Assert.IsTrue(ShrinkEventBusRuntime.MainThreadDispatcher.TryPost(() => hits++));
|
||||
Assert.AreEqual(0, hits);
|
||||
dispatcher.Pending();
|
||||
Assert.AreEqual(1, hits);
|
||||
}
|
||||
finally { ShrinkEventBusRuntime.ConfigureMainThreadDispatcher(original); }
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void AdapterRejectsNullDispatcher()
|
||||
{
|
||||
Assert.Throws<ArgumentNullException>(() => new ShrinkSharedMainThreadDispatcher(null));
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@@ -0,0 +1,2 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 87e04bff7dc943dd9a8205b37e631c19
|
||||
@@ -0,0 +1,26 @@
|
||||
{
|
||||
"name": "ShrinkEventBus.Integration.Runtime.Tests",
|
||||
"references": [
|
||||
"ShrinkEventBus.Runtime",
|
||||
"ShrinkEventBus.Integration.Runtime",
|
||||
"ShrinkRuntime.Abstractions"
|
||||
],
|
||||
"includePlatforms": [
|
||||
"Editor"
|
||||
],
|
||||
"optionalUnityReferences": [
|
||||
"TestAssemblies"
|
||||
],
|
||||
"autoReferenced": false,
|
||||
"defineConstraints": [
|
||||
"UNITY_INCLUDE_TESTS",
|
||||
"SHRINK_EVENTBUS_HAS_SHARED_RUNTIME"
|
||||
],
|
||||
"versionDefines": [
|
||||
{
|
||||
"name": "com.cneicy.shrink-runtime-abstractions",
|
||||
"expression": "0.1.0",
|
||||
"define": "SHRINK_EVENTBUS_HAS_SHARED_RUNTIME"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,2 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 4062d02e94ea4577957d4185688d1454
|
||||
Reference in new issue
Block a user