// 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>(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); } }