Skip to main content
Glama
Singtaa
by Singtaa
GameObjectToolsTests.cs6.05 kB
using Newtonsoft.Json.Linq; using NUnit.Framework; using UnityEditor.SceneManagement; using UnityEngine; namespace UnityMcp.Tests { [TestFixture] public class GameObjectToolsTests { [SetUp] public void SetUp() { EditorSceneManager.NewScene(NewSceneSetup.EmptyScene, NewSceneMode.Single); } [TearDown] public void TearDown() { // Clean up all test objects var objects = Object.FindObjectsByType<GameObject>(FindObjectsSortMode.None); foreach (var obj in objects) { Object.DestroyImmediate(obj); } } [Test] public void Create_WithName_CreatesGameObject() { var args = new JObject { ["name"] = "TestObject" }; var result = Tools_GameObject.Create(args); Assert.IsFalse(result.isError); var go = GameObject.Find("TestObject"); Assert.IsNotNull(go); } [Test] public void Create_WithPrimitive_CreatesMesh() { var args = new JObject { ["name"] = "TestCube", ["primitive"] = "Cube" }; var result = Tools_GameObject.Create(args); Assert.IsFalse(result.isError); var go = GameObject.Find("TestCube"); Assert.IsNotNull(go); Assert.IsNotNull(go.GetComponent<MeshFilter>()); Assert.IsNotNull(go.GetComponent<MeshRenderer>()); } [Test] public void Create_WithParent_SetsParent() { var parent = new GameObject("Parent"); var args = new JObject { ["name"] = "Child", ["parent"] = "Parent" }; var result = Tools_GameObject.Create(args); Assert.IsFalse(result.isError); var child = GameObject.Find("Child"); Assert.IsNotNull(child); Assert.AreEqual(parent.transform, child.transform.parent); } [Test] public void Delete_ExistingObject_RemovesIt() { var go = new GameObject("ToDelete"); var args = new JObject { ["target"] = "ToDelete" }; var result = Tools_GameObject.Delete(args); Assert.IsFalse(result.isError); Assert.IsNull(GameObject.Find("ToDelete")); } [Test] public void Delete_NonExistent_ReturnsError() { var args = new JObject { ["target"] = "NonExistent" }; var result = Tools_GameObject.Delete(args); Assert.IsTrue(result.isError); } [Test] public void Find_ByName_ReturnsMatches() { new GameObject("Player"); new GameObject("PlayerController"); new GameObject("Enemy"); var args = new JObject { ["name"] = "Player" }; var result = Tools_GameObject.Find(args); Assert.IsFalse(result.isError); var json = JArray.Parse(result.content[0].text); Assert.AreEqual(2, json.Count); } [Test] public void Find_ByTag_ReturnsMatches() { var go1 = new GameObject("TaggedObject1"); var go2 = new GameObject("TaggedObject2"); var go3 = new GameObject("UntaggedObject"); go1.tag = "MainCamera"; go2.tag = "MainCamera"; var args = new JObject { ["tag"] = "MainCamera" }; var result = Tools_GameObject.Find(args); Assert.IsFalse(result.isError); var json = JArray.Parse(result.content[0].text); Assert.AreEqual(2, json.Count); } [Test] public void Find_ByPath_ReturnsSingleMatch() { var parent = new GameObject("Parent"); var child = new GameObject("Child"); child.transform.SetParent(parent.transform); var args = new JObject { ["path"] = "Parent/Child" }; var result = Tools_GameObject.Find(args); Assert.IsFalse(result.isError); var json = JArray.Parse(result.content[0].text); Assert.AreEqual(1, json.Count); } [Test] public void SetActive_DisablesGameObject() { var go = new GameObject("TestObject"); Assert.IsTrue(go.activeSelf); var args = new JObject { ["target"] = "TestObject", ["active"] = false }; var result = Tools_GameObject.SetActive(args); Assert.IsFalse(result.isError); Assert.IsFalse(go.activeSelf); } [Test] public void SetParent_ReparentsGameObject() { var parent = new GameObject("NewParent"); var child = new GameObject("Child"); Assert.IsNull(child.transform.parent); var args = new JObject { ["target"] = "Child", ["parent"] = "NewParent" }; var result = Tools_GameObject.SetParent(args); Assert.IsFalse(result.isError); Assert.AreEqual(parent.transform, child.transform.parent); } [Test] public void Rename_ChangesName() { var go = new GameObject("OldName"); var args = new JObject { ["target"] = "OldName", ["name"] = "NewName" }; var result = Tools_GameObject.Rename(args); Assert.IsFalse(result.isError); Assert.AreEqual("NewName", go.name); } [Test] public void Duplicate_CreatesClone() { var original = new GameObject("Original"); var args = new JObject { ["target"] = "Original" }; var result = Tools_GameObject.Duplicate(args); Assert.IsFalse(result.isError); // Should have 2 objects named "Original" now var objects = Object.FindObjectsByType<GameObject>(FindObjectsSortMode.None); var count = 0; foreach (var obj in objects) { if (obj.name == "Original") count++; } Assert.AreEqual(2, count); } } }

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