CI / build-test (push) Failing after 1m8s
Add MrGameEng.AI utility-AI module; format codebase with CSharpier New MrGameEng.AI module (ResponseCurve, Consideration, UtilityAction, UtilityAi selector, Blackboard) plus CSharpier formatting applied across the whole engine. Documents the CSharpier convention in CLAUDE.md. @
65 lines
1.5 KiB
C#
65 lines
1.5 KiB
C#
using Microsoft.Xna.Framework;
|
|
using MrGameEng.AI;
|
|
using Xunit;
|
|
|
|
namespace MrGameEng.AI.Tests;
|
|
|
|
public class BlackboardTests
|
|
{
|
|
[Fact]
|
|
public void SetThenTryGet_RoundTripsTypedValues()
|
|
{
|
|
var board = new Blackboard();
|
|
board.Set("target", new Vector2(3f, 4f));
|
|
|
|
Assert.True(board.TryGet<Vector2>("target", out var value));
|
|
Assert.Equal(new Vector2(3f, 4f), value);
|
|
}
|
|
|
|
[Fact]
|
|
public void TryGet_ReturnsFalse_OnMissingKeyOrTypeMismatch()
|
|
{
|
|
var board = new Blackboard();
|
|
board.Set("count", 5);
|
|
|
|
Assert.False(board.TryGet<int>("missing", out _));
|
|
Assert.False(board.TryGet<string>("count", out _)); // wrong type
|
|
}
|
|
|
|
[Fact]
|
|
public void GetOrDefault_FallsBackWhenAbsent()
|
|
{
|
|
var board = new Blackboard();
|
|
|
|
Assert.Equal(42, board.GetOrDefault("hp", 42));
|
|
board.Set("hp", 7);
|
|
Assert.Equal(7, board.GetOrDefault("hp", 42));
|
|
}
|
|
|
|
[Fact]
|
|
public void Set_OverwritesExistingValue()
|
|
{
|
|
var board = new Blackboard();
|
|
board.Set("k", 1);
|
|
board.Set("k", 2);
|
|
|
|
Assert.Equal(2, board.GetOrDefault("k", 0));
|
|
Assert.Equal(1, board.Count);
|
|
}
|
|
|
|
[Fact]
|
|
public void RemoveAndClear_DropKeys()
|
|
{
|
|
var board = new Blackboard();
|
|
board.Set("a", 1);
|
|
board.Set("b", 2);
|
|
|
|
Assert.True(board.Remove("a"));
|
|
Assert.False(board.Remove("a"));
|
|
Assert.True(board.Has("b"));
|
|
|
|
board.Clear();
|
|
Assert.Equal(0, board.Count);
|
|
}
|
|
}
|