76 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			76 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
| using System;
 | |
| 
 | |
| namespace UnityEngine.TestTools
 | |
| {
 | |
|     /// <summary>
 | |
|     /// PrebuildSetup attribute run if the test or test class is in the current test run. The test is included either by running all tests or setting a filter that includes the test. If multiple tests reference the same pre-built setup or post-build cleanup, then it only runs once.
 | |
|     /// </summary>
 | |
|     [AttributeUsage(AttributeTargets.Assembly | AttributeTargets.Class | AttributeTargets.Method)]
 | |
|     public class PrebuildSetupAttribute : Attribute
 | |
|     {
 | |
|         /// <summary>
 | |
|         ///  Initializes and returns an instance of PrebuildSetupAttribute by type.
 | |
|         /// </summary>
 | |
|         /// <param name="targetClass">The type of the target class.</param>
 | |
|         public PrebuildSetupAttribute(Type targetClass)
 | |
|         {
 | |
|             TargetClass = targetClass;
 | |
|         }
 | |
| 
 | |
|         /// <summary>
 | |
|         /// Initializes a new instance of the <see cref="PrebuildSetupAttribute"/> class with a target class name.
 | |
|         /// </summary>
 | |
|         /// <param name="targetClassName">The name of the class to target for finding an IPrebuildSetup implementation to run for this test.</param>
 | |
|         /// <example>
 | |
|         /// <code>
 | |
|         /// [TestFixture]
 | |
|         /// public class CreateSpriteTest : IPrebuildSetup
 | |
|         /// {
 | |
|         ///     Texture2D m_Texture;
 | |
|         ///     Sprite m_Sprite;
 | |
|         ///
 | |
|         ///     public void Setup()
 | |
|         ///     {
 | |
|         ///
 | |
|         ///         #if UNITY_EDITOR
 | |
|         ///
 | |
|         ///         var spritePath = "Assets/Resources/Circle.png";
 | |
|         ///         var ti = UnityEditor.AssetImporter.GetAtPath(spritePath) as UnityEditor.TextureImporter;
 | |
|         ///         ti.textureCompression = UnityEditor.TextureImporterCompression.Uncompressed;
 | |
|         ///         ti.SaveAndReimport();
 | |
|         ///
 | |
|         ///         #endif
 | |
|         ///     }
 | |
|         ///
 | |
|         ///     [SetUp]
 | |
|         ///     public void SetUpTest()
 | |
|         ///     {
 | |
|         ///         m_Texture = Resources.Load<Texture2D>("Circle");
 | |
|         ///     }
 | |
|         ///
 | |
|         ///     [Test]
 | |
|         ///     public void WhenNullTextureIsPassed_CreateShouldReturnNullSprite()
 | |
|         ///     {
 | |
|         ///
 | |
|         ///         // Check with Valid Texture.
 | |
|         ///         LogAssert.Expect(LogType.Log, "Circle Sprite Created");
 | |
|         ///         Sprite.Create(m_Texture, new Rect(0, 0, m_Texture.width, m_Texture.height), new Vector2(0.5f, 0.5f));
 | |
|         ///         Debug.Log("Circle Sprite Created");
 | |
|         ///
 | |
|         ///         // Check with NULL Texture. Should return NULL Sprite.
 | |
|         ///         m_Sprite = Sprite.Create(null, new Rect(0, 0, m_Texture.width, m_Texture.heig`t), new Vector2(0.5f, 0.5f));
 | |
|         ///         Assert.That(m_Sprite, Is.Null, "Sprite created with null texture should be null");
 | |
|         ///     }
 | |
|         /// }
 | |
|         /// </code>
 | |
|         /// <para>Tip: Use `#if UNITY_EDITOR` if you want to access Editor only APIs, but the setup/cleanup is inside a **Play Mode** assembly.</para>
 | |
|         /// </example>
 | |
|         public PrebuildSetupAttribute(string targetClassName)
 | |
|         {
 | |
|             TargetClass = AttributeHelper.GetTargetClassFromName(targetClassName, typeof(IPrebuildSetup));
 | |
|         }
 | |
| 
 | |
|         internal Type TargetClass { get; private set; }
 | |
|     }
 | |
| }
 |