FindAssetsProviderTests.cs 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  1. using NUnit.Framework;
  2. using UnityEngine;
  3. using UnityEditor;
  4. using System.IO;
  5. using LLM.Editor.Analysis;
  6. using System.Linq;
  7. namespace LLM.Editor.Tests.Unit
  8. {
  9. [TestFixture]
  10. public class FindAssetsProviderTests
  11. {
  12. private const string TestFolderName = "TempFindAssetsTest";
  13. private string _testRootPath;
  14. private string _testMaterialPath;
  15. private string _testScriptPath;
  16. [SetUp]
  17. public void SetUp()
  18. {
  19. _testRootPath = Path.Combine(Application.dataPath, TestFolderName);
  20. Directory.CreateDirectory(_testRootPath);
  21. // Create a test material
  22. _testMaterialPath = $"Assets/{TestFolderName}/MyTestMaterial.mat";
  23. AssetDatabase.CreateAsset(new Material(Shader.Find("Standard")), _testMaterialPath);
  24. // Create a test script
  25. _testScriptPath = Path.Combine(_testRootPath, "MyTestScript.cs");
  26. File.WriteAllText(_testScriptPath, "public class MyTestScript {}");
  27. AssetDatabase.Refresh();
  28. }
  29. [TearDown]
  30. public void TearDown()
  31. {
  32. if (Directory.Exists(_testRootPath))
  33. {
  34. Directory.Delete(_testRootPath, true);
  35. File.Delete(_testRootPath + ".meta");
  36. AssetDatabase.Refresh();
  37. }
  38. }
  39. [Test]
  40. public void GetContext_WithStandardQuery_FindsAssets()
  41. {
  42. // Arrange
  43. var provider = new FindAssetsProvider();
  44. var query = $"MyTestMaterial t:Material";
  45. // Act
  46. var context = provider.GetContext(null, query);
  47. // Assert
  48. Assert.IsInstanceOf<FindAssetsProvider.AssetInfo[]>(context);
  49. var results = (FindAssetsProvider.AssetInfo[])context;
  50. Assert.AreEqual(1, results.Length);
  51. Assert.AreEqual("MyTestMaterial.mat", results[0].name);
  52. }
  53. [Test]
  54. public void GetContext_WithGlobPattern_FindsAssets()
  55. {
  56. // Arrange
  57. var provider = new FindAssetsProvider();
  58. var globPattern = $"{TestFolderName}/*.cs";
  59. // Act
  60. var context = provider.GetContext(null, globPattern);
  61. // Assert
  62. Assert.IsInstanceOf<FindAssetsProvider.AssetInfo[]>(context);
  63. var results = (FindAssetsProvider.AssetInfo[])context;
  64. Assert.AreEqual(1, results.Length);
  65. Assert.AreEqual("MyTestScript.cs", results[0].name);
  66. }
  67. [Test]
  68. public void GetContext_WithNoResultsQuery_ReturnsEmptyArray()
  69. {
  70. // Arrange
  71. var provider = new FindAssetsProvider();
  72. var query = "NonExistentAsset t:Texture";
  73. // Act
  74. var context = provider.GetContext(null, query);
  75. // Assert
  76. Assert.IsInstanceOf<FindAssetsProvider.AssetInfo[]>(context);
  77. var results = (FindAssetsProvider.AssetInfo[])context;
  78. Assert.AreEqual(0, results.Length);
  79. }
  80. [Test]
  81. public void GetContext_WithEmptyQualifier_ReturnsError()
  82. {
  83. // Arrange
  84. var provider = new FindAssetsProvider();
  85. // Act
  86. var context = provider.GetContext(null, "");
  87. // Assert
  88. Assert.IsInstanceOf<string>(context);
  89. Assert.IsTrue(((string)context).Contains("A query string (qualifier) is required"));
  90. }
  91. }
  92. }