[Test] Add unit tests for base code
This commit is contained in:
188
Assets/Tests/EditMode/AppleHillsUtilsTests.cs
Normal file
188
Assets/Tests/EditMode/AppleHillsUtilsTests.cs
Normal file
@@ -0,0 +1,188 @@
|
||||
using NUnit.Framework;
|
||||
using UnityEngine;
|
||||
using Utils;
|
||||
using UnityEngine.TestTools;
|
||||
|
||||
namespace Tests.EditMode
|
||||
{
|
||||
public class AppleHillsUtilsTests
|
||||
{
|
||||
private GameObject sourceObject;
|
||||
private GameObject targetObject;
|
||||
private SpriteRenderer sourceRenderer;
|
||||
private SpriteRenderer targetRenderer;
|
||||
private Sprite testSprite1;
|
||||
private Sprite testSprite2;
|
||||
private Material testMaterial1;
|
||||
private Material testMaterial2;
|
||||
|
||||
[SetUp]
|
||||
public void SetUp()
|
||||
{
|
||||
// Create test GameObjects with SpriteRenderer components
|
||||
sourceObject = new GameObject("SourceObject");
|
||||
targetObject = new GameObject("TargetObject");
|
||||
sourceRenderer = sourceObject.AddComponent<SpriteRenderer>();
|
||||
targetRenderer = targetObject.AddComponent<SpriteRenderer>();
|
||||
|
||||
// Create test sprites (1x1 pixel textures)
|
||||
Texture2D texture1 = new Texture2D(1, 1);
|
||||
texture1.SetPixel(0, 0, Color.red);
|
||||
texture1.Apply();
|
||||
testSprite1 = Sprite.Create(texture1, new Rect(0, 0, 1, 1), Vector2.zero);
|
||||
|
||||
Texture2D texture2 = new Texture2D(1, 1);
|
||||
texture2.SetPixel(0, 0, Color.blue);
|
||||
texture2.Apply();
|
||||
testSprite2 = Sprite.Create(texture2, new Rect(0, 0, 1, 1), Vector2.zero);
|
||||
|
||||
// Create test materials
|
||||
testMaterial1 = new Material(Shader.Find("Sprites/Default"));
|
||||
testMaterial1.name = "TestMaterial1";
|
||||
testMaterial2 = new Material(Shader.Find("Sprites/Default"));
|
||||
testMaterial2.name = "TestMaterial2";
|
||||
|
||||
// Initialize target with different values to ensure they change
|
||||
targetRenderer.sprite = testSprite2;
|
||||
targetRenderer.color = Color.blue;
|
||||
targetRenderer.flipX = true;
|
||||
targetRenderer.flipY = true;
|
||||
targetRenderer.sharedMaterial = testMaterial2;
|
||||
targetRenderer.drawMode = SpriteDrawMode.Tiled;
|
||||
targetRenderer.size = new Vector2(10, 10);
|
||||
targetRenderer.maskInteraction = SpriteMaskInteraction.VisibleInsideMask;
|
||||
targetRenderer.sortingOrder = 10;
|
||||
targetRenderer.enabled = false;
|
||||
targetObject.transform.localScale = new Vector3(2, 2, 2);
|
||||
}
|
||||
|
||||
[TearDown]
|
||||
public void TearDown()
|
||||
{
|
||||
// Clean up created objects
|
||||
Object.DestroyImmediate(sourceObject);
|
||||
Object.DestroyImmediate(targetObject);
|
||||
Object.DestroyImmediate(testSprite1);
|
||||
Object.DestroyImmediate(testSprite2);
|
||||
Object.DestroyImmediate(testMaterial1);
|
||||
Object.DestroyImmediate(testMaterial2);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void CopySpriteRendererProperties_CopiesAllProperties()
|
||||
{
|
||||
// Arrange - Set source properties
|
||||
sourceRenderer.sprite = testSprite1;
|
||||
sourceRenderer.color = Color.red;
|
||||
sourceRenderer.flipX = false;
|
||||
sourceRenderer.flipY = false;
|
||||
sourceRenderer.sharedMaterial = testMaterial1;
|
||||
sourceRenderer.drawMode = SpriteDrawMode.Simple;
|
||||
sourceRenderer.size = new Vector2(5, 5);
|
||||
sourceRenderer.maskInteraction = SpriteMaskInteraction.VisibleOutsideMask;
|
||||
sourceRenderer.sortingOrder = 5;
|
||||
sourceRenderer.enabled = true;
|
||||
sourceObject.transform.localScale = new Vector3(1, 1, 1);
|
||||
|
||||
// Act
|
||||
AppleHillsUtils.CopySpriteRendererProperties(sourceRenderer, targetRenderer);
|
||||
|
||||
// Assert
|
||||
Assert.AreEqual(sourceRenderer.sprite, targetRenderer.sprite, "Sprite should be copied");
|
||||
Assert.AreEqual(sourceRenderer.color, targetRenderer.color, "Color should be copied");
|
||||
Assert.AreEqual(sourceRenderer.flipX, targetRenderer.flipX, "FlipX should be copied");
|
||||
Assert.AreEqual(sourceRenderer.flipY, targetRenderer.flipY, "FlipY should be copied");
|
||||
Assert.AreEqual(sourceRenderer.sharedMaterial, targetRenderer.sharedMaterial, "Material should be copied");
|
||||
Assert.AreEqual(sourceRenderer.drawMode, targetRenderer.drawMode, "DrawMode should be copied");
|
||||
Assert.AreEqual(sourceRenderer.size, targetRenderer.size, "Size should be copied");
|
||||
Assert.AreEqual(sourceRenderer.maskInteraction, targetRenderer.maskInteraction, "MaskInteraction should be copied");
|
||||
Assert.AreEqual(sourceRenderer.sortingLayerID, targetRenderer.sortingLayerID, "SortingLayerID should be copied");
|
||||
Assert.AreEqual(sourceRenderer.sortingOrder, targetRenderer.sortingOrder, "SortingOrder should be copied");
|
||||
Assert.IsTrue(targetRenderer.enabled, "Enabled should be set to true");
|
||||
Assert.AreEqual(sourceRenderer.transform.localScale, targetRenderer.transform.localScale, "LocalScale should be copied");
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void CopySpriteRendererProperties_NullSource_DoesNothing()
|
||||
{
|
||||
// Arrange - Store original values
|
||||
var originalSprite = targetRenderer.sprite;
|
||||
var originalColor = targetRenderer.color;
|
||||
var originalFlipX = targetRenderer.flipX;
|
||||
var originalFlipY = targetRenderer.flipY;
|
||||
var originalMaterial = targetRenderer.sharedMaterial;
|
||||
var originalDrawMode = targetRenderer.drawMode;
|
||||
var originalSize = targetRenderer.size;
|
||||
var originalMaskInteraction = targetRenderer.maskInteraction;
|
||||
var originalSortingLayerID = targetRenderer.sortingLayerID;
|
||||
var originalSortingOrder = targetRenderer.sortingOrder;
|
||||
var originalEnabled = targetRenderer.enabled;
|
||||
var originalScale = targetRenderer.transform.localScale;
|
||||
|
||||
// Act
|
||||
AppleHillsUtils.CopySpriteRendererProperties(null, targetRenderer);
|
||||
|
||||
// Assert - Nothing should change
|
||||
Assert.AreEqual(originalSprite, targetRenderer.sprite, "Sprite should not change");
|
||||
Assert.AreEqual(originalColor, targetRenderer.color, "Color should not change");
|
||||
Assert.AreEqual(originalFlipX, targetRenderer.flipX, "FlipX should not change");
|
||||
Assert.AreEqual(originalFlipY, targetRenderer.flipY, "FlipY should not change");
|
||||
Assert.AreEqual(originalMaterial, targetRenderer.sharedMaterial, "Material should not change");
|
||||
Assert.AreEqual(originalDrawMode, targetRenderer.drawMode, "DrawMode should not change");
|
||||
Assert.AreEqual(originalSize, targetRenderer.size, "Size should not change");
|
||||
Assert.AreEqual(originalMaskInteraction, targetRenderer.maskInteraction, "MaskInteraction should not change");
|
||||
Assert.AreEqual(originalSortingLayerID, targetRenderer.sortingLayerID, "SortingLayerID should not change");
|
||||
Assert.AreEqual(originalSortingOrder, targetRenderer.sortingOrder, "SortingOrder should not change");
|
||||
Assert.AreEqual(originalEnabled, targetRenderer.enabled, "Enabled should not change");
|
||||
Assert.AreEqual(originalScale, targetRenderer.transform.localScale, "LocalScale should not change");
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void CopySpriteRendererProperties_NullTarget_DoesNotThrow()
|
||||
{
|
||||
// Arrange
|
||||
sourceRenderer.sprite = testSprite1;
|
||||
|
||||
// Act & Assert - Should not throw an exception
|
||||
Assert.DoesNotThrow(() => AppleHillsUtils.CopySpriteRendererProperties(sourceRenderer, null));
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void CopySpriteRendererProperties_BothNull_DoesNotThrow()
|
||||
{
|
||||
// Act & Assert - Should not throw an exception
|
||||
Assert.DoesNotThrow(() => AppleHillsUtils.CopySpriteRendererProperties(null, null));
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void CopySpriteRendererProperties_DifferentProperties_CorrectlyCopies()
|
||||
{
|
||||
// Arrange - Set source with mixed properties
|
||||
sourceRenderer.sprite = testSprite1;
|
||||
sourceRenderer.color = new Color(0.5f, 0.5f, 0.5f, 0.7f); // Semi-transparent gray
|
||||
sourceRenderer.flipX = true;
|
||||
sourceRenderer.flipY = false;
|
||||
sourceRenderer.sharedMaterial = testMaterial1;
|
||||
sourceRenderer.drawMode = SpriteDrawMode.Sliced;
|
||||
sourceRenderer.size = new Vector2(3.5f, 2.5f);
|
||||
sourceRenderer.sortingOrder = 42;
|
||||
sourceObject.transform.localScale = new Vector3(0.5f, 1.5f, 1f); // Non-uniform scale
|
||||
|
||||
// The exact warning message format matters - match it precisely
|
||||
LogAssert.Expect(LogType.Warning, "Sprite Tiling might not appear correctly because the Sprite used is not generated with Full Rect. To fix this, change the Mesh Type in the Sprite's import setting to Full Rect");
|
||||
|
||||
// Act
|
||||
AppleHillsUtils.CopySpriteRendererProperties(sourceRenderer, targetRenderer);
|
||||
|
||||
// Assert
|
||||
Assert.AreEqual(testSprite1, targetRenderer.sprite, "Sprite should match");
|
||||
Assert.AreEqual(new Color(0.5f, 0.5f, 0.5f, 0.7f), targetRenderer.color, "Color should match including alpha");
|
||||
Assert.IsTrue(targetRenderer.flipX, "FlipX should be true");
|
||||
Assert.IsFalse(targetRenderer.flipY, "FlipY should be false");
|
||||
Assert.AreEqual(SpriteDrawMode.Sliced, targetRenderer.drawMode, "DrawMode should be Sliced");
|
||||
Assert.AreEqual(new Vector2(3.5f, 2.5f), targetRenderer.size, "Size should match exactly");
|
||||
Assert.AreEqual(42, targetRenderer.sortingOrder, "SortingOrder should be 42");
|
||||
Assert.AreEqual(new Vector3(0.5f, 1.5f, 1f), targetRenderer.transform.localScale, "Non-uniform scale should match");
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user