SelectionProviderTests.cs 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. using System;
  2. using UnityEngine;
  3. using UnityEditor;
  4. using NUnit.Framework;
  5. using LLM.Editor.Analysis;
  6. using System.Collections.Generic;
  7. using Object = UnityEngine.Object;
  8. namespace LLM.Editor.Tests.Unit
  9. {
  10. [TestFixture]
  11. public class SelectionProviderTests
  12. {
  13. private GameObject _testSceneObject;
  14. [SetUp]
  15. public void SetUp()
  16. {
  17. _testSceneObject = new GameObject("TestSceneObject");
  18. }
  19. [TearDown]
  20. public void TearDown()
  21. {
  22. if (_testSceneObject != null)
  23. {
  24. Object.DestroyImmediate(_testSceneObject);
  25. }
  26. // Clear selection to ensure no pollution between tests
  27. Selection.objects = Array.Empty<Object>();
  28. }
  29. [Test]
  30. public void GetContext_WithNoSelection_ReturnsStringMessage()
  31. {
  32. // Arrange
  33. Selection.objects = Array.Empty<Object>();
  34. var provider = new SelectionProvider();
  35. // Act
  36. var context = provider.GetContext(null, null);
  37. // Assert
  38. Assert.IsInstanceOf<string>(context);
  39. Assert.AreEqual("No objects are currently selected in the editor.", context);
  40. }
  41. [Test]
  42. public void GetContext_WithSceneObjectSelected_ReturnsCorrectData()
  43. {
  44. // Arrange
  45. Selection.activeObject = _testSceneObject;
  46. var provider = new SelectionProvider();
  47. // Act
  48. var context = provider.GetContext(null, null);
  49. // Assert
  50. Assert.IsInstanceOf<List<SelectionProvider.SelectionResult>>(context);
  51. var results = (List<SelectionProvider.SelectionResult>)context;
  52. Assert.AreEqual(1, results.Count);
  53. var result = results[0];
  54. Assert.AreEqual("TestSceneObject", result.name);
  55. Assert.AreEqual(_testSceneObject.GetInstanceID().ToString(), result.id);
  56. Assert.AreEqual("UnityEngine.GameObject", result.type);
  57. Assert.IsTrue(result.isSceneObject);
  58. Assert.IsNull(result.assetPath);
  59. }
  60. [Test]
  61. public void GetContext_WithAssetSelected_ReturnsCorrectData()
  62. {
  63. // Arrange
  64. var guids = AssetDatabase.FindAssets("t:ScriptableObject AnalyzerSettings");
  65. Assume.That(guids, Is.Not.Empty, "Required 'AnalyzerSettings.asset' not found for test.");
  66. var path = AssetDatabase.GUIDToAssetPath(guids[0]);
  67. var asset = AssetDatabase.LoadAssetAtPath<Object>(path);
  68. Selection.activeObject = asset;
  69. var provider = new SelectionProvider();
  70. // Act
  71. var context = provider.GetContext(null, null);
  72. // Assert
  73. Assert.IsInstanceOf<List<SelectionProvider.SelectionResult>>(context);
  74. var results = (List<SelectionProvider.SelectionResult>)context;
  75. Assert.AreEqual(1, results.Count);
  76. var result = results[0];
  77. Assert.AreEqual("AnalyzerSettings", result.name);
  78. Assert.AreEqual(guids[0], result.id);
  79. Assert.AreEqual("IntelligentProjectAnalyzer.Analyzer.AnalyzerSettings", result.type);
  80. Assert.IsFalse(result.isSceneObject);
  81. Assert.AreEqual(path, result.assetPath);
  82. }
  83. }
  84. }