using NUnit.Framework; using UnityEngine; using UnityEngine.TestTools; using LLM.Editor.Commands; using LLM.Editor.Data; using LLM.Editor.Helper; namespace LLM.Editor.Tests.Unit { [TestFixture] public class DisplayMessageCommandTests { private CommandContext _context; [SetUp] public void SetUp() { _context = new CommandContext(); } [Test] public void Execute_WithSuccessOutcome_LogsInfoMessage() { // Arrange var message = "This is a success message."; var parameters = new DisplayMessageParams { outcome = CommandOutcome.Success, message = message }; var command = new DisplayMessageCommand(parameters.ToJson()); // Assert that a green log message is expected LogAssert.Expect(LogType.Log, $"[MCP]: {message}"); // Act var outcome = command.Execute(_context); // Assert Assert.AreEqual(CommandOutcome.Success, outcome); } [Test] public void Execute_WithErrorOutcome_LogsErrorMessage() { // Arrange var message = "This is an error message."; var parameters = new DisplayMessageParams { outcome = CommandOutcome.Error, message = message }; var command = new DisplayMessageCommand(parameters.ToJson()); // Assert that a red error log message is expected LogAssert.Expect(LogType.Error, $"[MCP]: {message}"); // Act var outcome = command.Execute(_context); // Assert Assert.AreEqual(CommandOutcome.Success, outcome, "The command itself should succeed even when displaying an error."); } [Test] public void Execute_WithEmptyMessage_ReturnsError() { // Arrange var parameters = new DisplayMessageParams { outcome = CommandOutcome.Success, message = "" }; var command = new DisplayMessageCommand(parameters.ToJson()); // Assert LogAssert.Expect(LogType.Error, "[DisplayMessageCommand] Parameters are invalid or message is empty."); // Act var outcome = command.Execute(_context); // Assert Assert.AreEqual(CommandOutcome.Error, outcome); } [Test] public void Execute_WithNullParams_ReturnsError() { // Arrange var command = new DisplayMessageCommand((string)null); // Assert LogAssert.Expect(LogType.Error, "[DisplayMessageCommand] Parameters are invalid or message is empty."); // Act var outcome = command.Execute(_context); // Assert Assert.AreEqual(CommandOutcome.Error, outcome); } } }