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); // 只构建一次 } } }