Initial commit: AIGame Unity client with URP, HybridCLR, YooAsset and tooling.
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -0,0 +1,130 @@
|
||||
using System.IO;
|
||||
using System.Text.RegularExpressions;
|
||||
using NUnit.Framework;
|
||||
using Unity.Pipeline.Config;
|
||||
using UnityEngine;
|
||||
using UnityEngine.TestTools;
|
||||
|
||||
namespace Unity.Pipeline.Tests.Editor
|
||||
{
|
||||
class RuntimePipelineConfigTests
|
||||
{
|
||||
[SetUp]
|
||||
public void SetUp()
|
||||
{
|
||||
RuntimePipelineResourceTestGuard.AssertNoConfigAssetExists();
|
||||
}
|
||||
|
||||
[TearDown]
|
||||
public void TearDown()
|
||||
{
|
||||
RuntimePipelineResourceTestGuard.DeleteConfigIfExists();
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void DefaultValues_AreSecure()
|
||||
{
|
||||
var config = ScriptableObject.CreateInstance<RuntimePipelineConfig>();
|
||||
|
||||
Assert.IsFalse(config.enableInBuilds, "enableInBuilds should default to false for security");
|
||||
Assert.AreEqual(0, config.port, "Port should default to 0 for auto-assignment");
|
||||
Assert.IsTrue(config.autoStart, "Should default to auto-start");
|
||||
Assert.AreEqual(10, config.maxWorkItemsPerFrame, "Should have a reasonable default for work items per frame");
|
||||
|
||||
Object.DestroyImmediate(config);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Load_SettingsFileExists_FindsIt()
|
||||
{
|
||||
var config = ScriptableObject.CreateInstance<RuntimePipelineConfig>();
|
||||
config.enableInBuilds = true;
|
||||
config.Save();
|
||||
Object.DestroyImmediate(config);
|
||||
|
||||
var loaded = RuntimePipelineConfig.Load();
|
||||
|
||||
Assert.IsNotNull(loaded, "Load() should find the settings file written by Save()");
|
||||
Assert.IsTrue(loaded.enableInBuilds);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Load_NoSettingsFile_ReturnsNull()
|
||||
{
|
||||
Assert.IsNull(RuntimePipelineConfig.Load());
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void SaveThenLoad_RoundTripsAllFields()
|
||||
{
|
||||
var config = ScriptableObject.CreateInstance<RuntimePipelineConfig>();
|
||||
config.enableInBuilds = true;
|
||||
config.port = 7912;
|
||||
config.requestTimeoutMs = 45000;
|
||||
config.enableAuditLogging = false;
|
||||
config.autoStart = false;
|
||||
config.maxWorkItemsPerFrame = 25;
|
||||
config.Save();
|
||||
Object.DestroyImmediate(config);
|
||||
|
||||
var loaded = RuntimePipelineConfig.Load();
|
||||
|
||||
Assert.IsNotNull(loaded);
|
||||
Assert.IsTrue(loaded.enableInBuilds);
|
||||
Assert.AreEqual(7912, loaded.port);
|
||||
Assert.AreEqual(45000, loaded.requestTimeoutMs);
|
||||
Assert.IsFalse(loaded.enableAuditLogging);
|
||||
Assert.IsFalse(loaded.autoStart);
|
||||
Assert.AreEqual(25, loaded.maxWorkItemsPerFrame);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void GetLiveMaxWorkItemsPerFrame_NoSettingsFile_ReturnsFallback()
|
||||
{
|
||||
Assert.AreEqual(42, RuntimePipelineConfig.GetLiveMaxWorkItemsPerFrame(42));
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void GetLiveMaxWorkItemsPerFrame_SettingsFileExists_ReturnsCurrentValue()
|
||||
{
|
||||
var config = ScriptableObject.CreateInstance<RuntimePipelineConfig>();
|
||||
config.maxWorkItemsPerFrame = 33;
|
||||
config.Save();
|
||||
Object.DestroyImmediate(config);
|
||||
|
||||
Assert.AreEqual(33, RuntimePipelineConfig.GetLiveMaxWorkItemsPerFrame(10));
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void GetLiveMaxWorkItemsPerFrame_FileChangedSinceLastRead_ReturnsUpdatedValue()
|
||||
{
|
||||
var config = ScriptableObject.CreateInstance<RuntimePipelineConfig>();
|
||||
config.maxWorkItemsPerFrame = 15;
|
||||
config.Save();
|
||||
Object.DestroyImmediate(config);
|
||||
var first = RuntimePipelineConfig.GetLiveMaxWorkItemsPerFrame(10);
|
||||
|
||||
var updated = ScriptableObject.CreateInstance<RuntimePipelineConfig>();
|
||||
updated.maxWorkItemsPerFrame = 40;
|
||||
updated.Save();
|
||||
Object.DestroyImmediate(updated);
|
||||
var second = RuntimePipelineConfig.GetLiveMaxWorkItemsPerFrame(10);
|
||||
|
||||
Assert.AreEqual(15, first);
|
||||
Assert.AreEqual(40, second, "A later Save() must be picked up on the next call");
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Load_CorruptSettingsFile_ReturnsNullAndLogsWarning()
|
||||
{
|
||||
var path = Path.Combine(Path.GetDirectoryName(Application.dataPath), "ProjectSettings/Packages/com.unity.pipeline/RuntimePipelineConfig.json");
|
||||
Directory.CreateDirectory(Path.GetDirectoryName(path));
|
||||
File.WriteAllText(path, "{ not valid json");
|
||||
|
||||
LogAssert.Expect(LogType.Warning, new Regex("Pipeline: could not read runtime settings.*"));
|
||||
var loaded = RuntimePipelineConfig.Load();
|
||||
|
||||
Assert.IsNull(loaded);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user