feat(linux): add graphical platform services
This commit is contained in:
parent
1628d9f587
commit
66f114b258
28 changed files with 1328 additions and 155 deletions
|
|
@ -0,0 +1,56 @@
|
|||
using AcDream.App.Platform;
|
||||
|
||||
namespace AcDream.App.Tests.Platform;
|
||||
|
||||
public sealed class GraphicalHostPlatformServicesTests
|
||||
{
|
||||
[Fact]
|
||||
public void CurrentPlatformOwnsPathsPacingAndNativeClosure()
|
||||
{
|
||||
GraphicalHostPlatformServices platform =
|
||||
GraphicalHostPlatformServices.Resolve();
|
||||
|
||||
Assert.NotNull(platform.Paths);
|
||||
Assert.NotNull(platform.FramePacingWaiters);
|
||||
Assert.Equal(3, platform.NativeDependencies.Count);
|
||||
Assert.All(
|
||||
platform.NativeDependencies,
|
||||
dependency =>
|
||||
{
|
||||
Assert.False(string.IsNullOrWhiteSpace(dependency.Feature));
|
||||
Assert.False(string.IsNullOrWhiteSpace(
|
||||
dependency.PublishedFileName));
|
||||
});
|
||||
|
||||
if (OperatingSystem.IsWindows())
|
||||
{
|
||||
Assert.Equal(
|
||||
GraphicalHostOperatingSystem.Windows,
|
||||
platform.OperatingSystem);
|
||||
Assert.StartsWith(
|
||||
"win-",
|
||||
platform.RuntimeIdentifier,
|
||||
StringComparison.Ordinal);
|
||||
Assert.Contains(
|
||||
platform.NativeDependencies,
|
||||
dependency =>
|
||||
dependency.PublishedFileName == "glfw3.dll");
|
||||
return;
|
||||
}
|
||||
|
||||
if (OperatingSystem.IsLinux())
|
||||
{
|
||||
Assert.Equal(
|
||||
GraphicalHostOperatingSystem.Linux,
|
||||
platform.OperatingSystem);
|
||||
Assert.Equal("linux-x64", platform.RuntimeIdentifier);
|
||||
Assert.Contains(
|
||||
platform.NativeDependencies,
|
||||
dependency =>
|
||||
dependency.PublishedFileName == "libglfw.so.3");
|
||||
return;
|
||||
}
|
||||
|
||||
throw new PlatformNotSupportedException();
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,66 @@
|
|||
using AcDream.App.Platform;
|
||||
using AcDream.Runtime.Platform;
|
||||
|
||||
namespace AcDream.App.Tests.Platform;
|
||||
|
||||
public sealed class GraphicalLegacyConfigurationMigratorTests
|
||||
: IDisposable
|
||||
{
|
||||
private readonly string _root = Path.Combine(
|
||||
Path.GetTempPath(),
|
||||
"acdream-l0-migration-" + Guid.NewGuid().ToString("N"));
|
||||
|
||||
[Fact]
|
||||
public void MissingCanonicalFilesAreCopiedWithoutOverwriting()
|
||||
{
|
||||
string legacy = Path.Combine(_root, "legacy");
|
||||
string canonical = Path.Combine(_root, "canonical");
|
||||
Directory.CreateDirectory(legacy);
|
||||
Directory.CreateDirectory(canonical);
|
||||
File.WriteAllText(
|
||||
Path.Combine(legacy, "settings.json"),
|
||||
"legacy-settings");
|
||||
File.WriteAllText(
|
||||
Path.Combine(legacy, "keybinds.json"),
|
||||
"legacy-keybinds");
|
||||
File.WriteAllText(
|
||||
Path.Combine(canonical, "keybinds.json"),
|
||||
"canonical-keybinds");
|
||||
var paths = new ApplicationPathSet(
|
||||
canonical,
|
||||
Path.Combine(_root, "data"),
|
||||
Path.Combine(_root, "cache"),
|
||||
legacy);
|
||||
|
||||
IReadOnlyList<string> migrated =
|
||||
GraphicalLegacyConfigurationMigrator.Migrate(paths);
|
||||
|
||||
Assert.Single(migrated);
|
||||
Assert.Equal(
|
||||
"legacy-settings",
|
||||
File.ReadAllText(paths.SettingsFile));
|
||||
Assert.Equal(
|
||||
"canonical-keybinds",
|
||||
File.ReadAllText(paths.KeyBindingsFile));
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void NoLegacyDirectoryProducesNoWrites()
|
||||
{
|
||||
var paths = new ApplicationPathSet(
|
||||
Path.Combine(_root, "canonical"),
|
||||
Path.Combine(_root, "data"),
|
||||
Path.Combine(_root, "cache"),
|
||||
LegacyConfigDirectory: null);
|
||||
|
||||
Assert.Empty(
|
||||
GraphicalLegacyConfigurationMigrator.Migrate(paths));
|
||||
Assert.False(Directory.Exists(paths.ConfigDirectory));
|
||||
}
|
||||
|
||||
public void Dispose()
|
||||
{
|
||||
if (Directory.Exists(_root))
|
||||
Directory.Delete(_root, recursive: true);
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue