Files
sharpemu/tests/SharpEmu.Libs.Tests/GUI/PerGameSettingsTests.cs
T
2026-07-20 01:30:13 +03:00

61 lines
1.7 KiB
C#

// Copyright (C) 2026 SharpEmu Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later
using SharpEmu.GUI;
using Xunit;
namespace SharpEmu.Libs.Tests.GUI;
public sealed class PerGameSettingsTests
{
// Invalid entries must not reach Environment.SetEnvironmentVariable.
[Fact]
public void NormalizeFromJson_NullOrEmptyToggleEntries_AreFilteredOut()
{
const string json = """
{ "EnvironmentToggles": [null, "SHARPEMU_TRACE", ""] }
""";
var settings = PerGameSettings.NormalizeFromJson(json);
Assert.NotNull(settings);
Assert.Equal(["SHARPEMU_TRACE"], settings.EnvironmentToggles);
}
// A null list means that the global setting should be inherited.
[Fact]
public void NormalizeFromJson_NullToggleList_StaysNull()
{
const string json = """{ "EnvironmentToggles": null }""";
var settings = PerGameSettings.NormalizeFromJson(json);
Assert.NotNull(settings);
Assert.Null(settings.EnvironmentToggles);
}
[Fact]
public void NormalizeFromJson_EmptyToggleList_StaysEmpty()
{
const string json = """{ "EnvironmentToggles": [] }""";
var settings = PerGameSettings.NormalizeFromJson(json);
Assert.NotNull(settings);
Assert.Empty(Assert.IsType<List<string>>(settings.EnvironmentToggles));
}
[Fact]
public void NormalizeFromJson_ValidToggles_ArePreserved()
{
const string json = """
{ "EnvironmentToggles": ["SHARPEMU_TRACE", "SHARPEMU_NO_JIT"] }
""";
var settings = PerGameSettings.NormalizeFromJson(json);
Assert.NotNull(settings);
Assert.Equal(["SHARPEMU_TRACE", "SHARPEMU_NO_JIT"], settings.EnvironmentToggles);
}
}