SourceCodeProviderTests.cs 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. using NUnit.Framework;
  2. using UnityEngine;
  3. using UnityEditor;
  4. using System.IO;
  5. using LLM.Editor.Analysis;
  6. namespace LLM.Editor.Tests.Unit
  7. {
  8. [TestFixture]
  9. public class SourceCodeProviderTests
  10. {
  11. private const string TestScriptName = "TestSourceCodeProviderScript.cs";
  12. private const string TestScriptContent = "public class TestSourceCodeProviderScript {}";
  13. private string _testScriptPath;
  14. [SetUp]
  15. public void SetUp()
  16. {
  17. _testScriptPath = Path.Combine(Application.dataPath, TestScriptName);
  18. File.WriteAllText(_testScriptPath, TestScriptContent);
  19. AssetDatabase.Refresh();
  20. }
  21. [TearDown]
  22. public void TearDown()
  23. {
  24. if (File.Exists(_testScriptPath))
  25. {
  26. File.Delete(_testScriptPath);
  27. File.Delete(_testScriptPath + ".meta");
  28. AssetDatabase.Refresh();
  29. }
  30. }
  31. [Test]
  32. public void GetContext_WithValidMonoScript_ReturnsFileContent()
  33. {
  34. // Arrange
  35. var provider = new SourceCodeProvider();
  36. var scriptAsset = AssetDatabase.LoadAssetAtPath<MonoScript>($"Assets/{TestScriptName}");
  37. Assume.That(scriptAsset, Is.Not.Null, "Setup failed: Could not load test script asset.");
  38. // Act
  39. var context = provider.GetContext(scriptAsset, null);
  40. // Assert
  41. Assert.IsInstanceOf<string>(context);
  42. Assert.AreEqual(TestScriptContent, context);
  43. }
  44. [Test]
  45. public void GetContext_WithNonScriptAsset_ReturnsError()
  46. {
  47. // Arrange
  48. var provider = new SourceCodeProvider();
  49. var material = new Material(Shader.Find("Standard")); // Create a non-script asset
  50. // Act
  51. var context = provider.GetContext(material, null);
  52. // Assert
  53. Assert.IsInstanceOf<string>(context);
  54. Assert.IsTrue(((string)context).StartsWith("Error: Target must be a MonoScript"));
  55. }
  56. [Test]
  57. public void GetContext_WithNullTarget_ReturnsError()
  58. {
  59. // Arrange
  60. var provider = new SourceCodeProvider();
  61. // Act
  62. var context = provider.GetContext(null, null);
  63. // Assert
  64. Assert.IsInstanceOf<string>(context);
  65. Assert.IsTrue(((string)context).StartsWith("Error: Target must be a MonoScript"));
  66. }
  67. }
  68. }