31 lines
872 B
C#
31 lines
872 B
C#
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); // 只构建一次
|
|
}
|
|
}
|
|
}
|