using UnityEngine; using NUnit.Framework; using LLM.Editor.Analysis; using System.Collections.Generic; namespace LLM.Editor.Tests.Unit { [TestFixture] public class ProjectSettingsProviderTests { private ProjectSettingsProvider _provider; [SetUp] public void SetUp() { _provider = new ProjectSettingsProvider(); } [Test] public void GetContext_WithValidSettings_ReturnsSettingsDictionary() { // Arrange var qualifier = "QualitySettings"; // Act var context = _provider.GetContext(null, qualifier); // Assert Assert.IsInstanceOf>(context); var settings = (Dictionary)context; // Check for a known property in QualitySettings Assert.IsTrue(settings.ContainsKey("currentLevel")); Assert.AreEqual(QualitySettings.GetQualityLevel(), (int)settings["currentLevel"]); } [Test] public void GetContext_WithAnotherValidSettings_ReturnsTimeManagerData() { // Arrange var qualifier = "TimeManager"; // Act var context = _provider.GetContext(null, qualifier); // Assert Assert.IsInstanceOf>(context); var settings = (Dictionary)context; // Check for a known property in TimeManager using its programmatic C# name. Assert.IsTrue(settings.ContainsKey("fixedDeltaTime")); Assert.AreEqual(Time.fixedDeltaTime, (float)(double)settings["fixedDeltaTime"], 0.0001f); } [Test] public void GetContext_WithInvalidSettings_ReturnsErrorString() { // Arrange var qualifier = "NonExistentSettingsFile"; // Act var context = _provider.GetContext(null, qualifier); // Assert Assert.IsInstanceOf(context); Assert.IsTrue(((string)context).StartsWith("Error: Could not find project settings file")); } [Test] public void GetContext_WithNullQualifier_ReturnsErrorString() { // Arrange & Act var context = _provider.GetContext(null, null); // Assert Assert.IsInstanceOf(context); Assert.IsTrue(((string)context).StartsWith("Error: A settings asset name (qualifier) is required")); } } }