diff --git a/Assets/Tests/EditMode/AI/AiScriptTests.cs b/Assets/Tests/EditMode/AI/AiScriptTests.cs new file mode 100644 index 00000000..efb6a863 --- /dev/null +++ b/Assets/Tests/EditMode/AI/AiScriptTests.cs @@ -0,0 +1,30 @@ +using NUnit.Framework; +using BaseGames.AI; + +namespace BaseGames.Tests.EditMode.AI +{ + public class AiScriptTests + { + sealed class SampleAi : AiScript + { + public int BuildCount; + protected override void Build(BrainBuilder b) + { + BuildCount++; + b.Entry("A"); + b.State("A").To("B").When(c => c.Sensor.SeesPlayer(), "SeesPlayer"); + b.State("B"); + } + } + + [Test] + public void GetOrBuildGraph_ReturnsSameSharedInstance() + { + var script = new SampleAi(); + var g1 = script.GetOrBuildGraph(); + var g2 = script.GetOrBuildGraph(); + Assert.AreSame(g1, g2); // flyweight:同一引用 + Assert.AreEqual(1, script.BuildCount); // 只构建一次 + } + } +} diff --git a/Assets/Tests/EditMode/AI/AiScriptTests.cs.meta b/Assets/Tests/EditMode/AI/AiScriptTests.cs.meta new file mode 100644 index 00000000..1689d607 --- /dev/null +++ b/Assets/Tests/EditMode/AI/AiScriptTests.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 9e6381340221cbb4c965e28d671c8a3c +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: