Skip to main content
Glama
Singtaa
by Singtaa
GameObjectResolverTests.cs4.58 kB
using NUnit.Framework; using UnityEditor; using UnityEditor.SceneManagement; using UnityEngine; namespace UnityMcp.Tests { [TestFixture] public class GameObjectResolverTests { [SetUp] public void SetUp() { EditorSceneManager.NewScene(NewSceneSetup.EmptyScene, NewSceneMode.Single); } [Test] public void TryResolve_EmptyIdentifier_ReturnsFalse() { var result = GameObjectResolver.TryResolve("", out var go, out var error); Assert.IsFalse(result); Assert.IsNull(go); Assert.IsNotEmpty(error); } [Test] public void TryResolve_NullIdentifier_ReturnsFalse() { var result = GameObjectResolver.TryResolve(null, out var go, out var error); Assert.IsFalse(result); Assert.IsNull(go); Assert.IsNotEmpty(error); } [Test] public void TryResolve_ValidInstanceId_ReturnsGameObject() { var testGo = new GameObject("TestObject"); var instanceId = testGo.GetInstanceID(); var result = GameObjectResolver.TryResolve($"#{instanceId}", out var go, out var error); Assert.IsTrue(result); Assert.AreEqual(testGo, go); Assert.IsNull(error); Object.DestroyImmediate(testGo); } [Test] public void TryResolve_InvalidInstanceId_ReturnsFalse() { var result = GameObjectResolver.TryResolve("#99999999", out var go, out var error); Assert.IsFalse(result); Assert.IsNull(go); Assert.IsNotEmpty(error); } [Test] public void TryResolve_InvalidInstanceIdFormat_ReturnsFalse() { var result = GameObjectResolver.TryResolve("#notanumber", out var go, out var error); Assert.IsFalse(result); Assert.IsNull(go); Assert.That(error, Does.Contain("Invalid instanceId")); } [Test] public void TryResolve_SimplePath_ReturnsGameObject() { var testGo = new GameObject("TestObject"); var result = GameObjectResolver.TryResolve("TestObject", out var go, out var error); Assert.IsTrue(result); Assert.AreEqual(testGo, go); Assert.IsNull(error); Object.DestroyImmediate(testGo); } [Test] public void TryResolve_NestedPath_ReturnsGameObject() { var parent = new GameObject("Parent"); var child = new GameObject("Child"); child.transform.SetParent(parent.transform); var result = GameObjectResolver.TryResolve("Parent/Child", out var go, out var error); Assert.IsTrue(result); Assert.AreEqual(child, go); Assert.IsNull(error); Object.DestroyImmediate(parent); } [Test] public void TryResolve_NonExistentPath_ReturnsFalse() { var result = GameObjectResolver.TryResolve("NonExistent/Path", out var go, out var error); Assert.IsFalse(result); Assert.IsNull(go); Assert.That(error, Does.Contain("not found")); } [Test] public void GetPath_ReturnsCorrectPath() { var parent = new GameObject("Parent"); var child = new GameObject("Child"); var grandchild = new GameObject("Grandchild"); child.transform.SetParent(parent.transform); grandchild.transform.SetParent(child.transform); var path = GameObjectResolver.GetPath(grandchild); Assert.AreEqual("Parent/Child/Grandchild", path); Object.DestroyImmediate(parent); } [Test] public void GetPath_RootObject_ReturnsName() { var testGo = new GameObject("RootObject"); var path = GameObjectResolver.GetPath(testGo); Assert.AreEqual("RootObject", path); Object.DestroyImmediate(testGo); } [Test] public void GetPath_NullObject_ReturnsEmpty() { var path = GameObjectResolver.GetPath(null); Assert.AreEqual("", path); } [Test] public void GetQualifiedPath_IncludesSceneName() { var testGo = new GameObject("TestObject"); var path = GameObjectResolver.GetQualifiedPath(testGo); Assert.That(path, Does.Contain(":/")); Assert.That(path, Does.EndWith("/TestObject")); Object.DestroyImmediate(testGo); } } }

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Singtaa/UnityMCP'

If you have feedback or need assistance with the MCP directory API, please join our Discord server