mirror of
https://github.com/wwiinnddyy/LanMountainDesktop.git
synced 2026-06-20 23:54:26 +08:00
49 lines
1.5 KiB
C#
49 lines
1.5 KiB
C#
using System.Text;
|
|
using LanMountainDesktop.PluginSdk;
|
|
using Xunit;
|
|
|
|
namespace LanMountainDesktop.Tests;
|
|
|
|
public sealed class PluginManifestRuntimeTests
|
|
{
|
|
[Fact]
|
|
public void Load_WhenRuntimeIsMissing_DefaultsToInProcess()
|
|
{
|
|
const string json = """
|
|
{
|
|
"id": "plugin.runtime.default",
|
|
"name": "Runtime Default",
|
|
"entranceAssembly": "Plugin.dll"
|
|
}
|
|
""";
|
|
|
|
using var stream = new MemoryStream(Encoding.UTF8.GetBytes(json));
|
|
var manifest = LanMountainDesktop.PluginSdk.PluginManifest.Load(stream, "plugin.json");
|
|
|
|
Assert.NotNull(manifest.Runtime);
|
|
Assert.Equal(PluginRuntimeModes.InProcess, manifest.Runtime!.Mode);
|
|
Assert.Equal(PluginRuntimeMode.InProcess, manifest.RuntimeMode);
|
|
}
|
|
|
|
[Fact]
|
|
public void Load_WhenRuntimeModeIsInvalid_ThrowsHelpfulError()
|
|
{
|
|
const string json = """
|
|
{
|
|
"id": "plugin.runtime.invalid",
|
|
"name": "Runtime Invalid",
|
|
"entranceAssembly": "Plugin.dll",
|
|
"runtime": {
|
|
"mode": "shared-worker"
|
|
}
|
|
}
|
|
""";
|
|
|
|
using var stream = new MemoryStream(Encoding.UTF8.GetBytes(json));
|
|
var ex = Assert.Throws<InvalidOperationException>(() => LanMountainDesktop.PluginSdk.PluginManifest.Load(stream, "plugin.json"));
|
|
|
|
Assert.Contains("runtime.mode", ex.Message);
|
|
Assert.Contains("shared-worker", ex.Message);
|
|
}
|
|
}
|