Files
mrgameeng/tests/MrGameEng.AI.Tests/BlackboardTests.cs
T
Leonid Pershin fd6343bd09
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.
@
2026-06-12 07:19:10 +03:00

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);
}
}