VR4Medical/ICI/Library/PackageCache/com.unity.learn.iet-framework@4bd5247958fc/Tests/Editor/MaterialPropertyModifiedCriterionTests.cs
2025-07-29 13:45:50 +03:00

94 lines
2.9 KiB
C#

using NUnit.Framework;
using UnityEditor.SceneManagement;
using UnityEngine;
using UnityObject = UnityEngine.Object;
namespace Unity.Tutorials.Core.Editor.Tests
{
class MaterialPropertyModifiedCriterionTests : CriterionTestBase<MaterialPropertyModifiedCriterion>
{
Material m_Material = null;
[SetUp]
public void Setup()
{
EditorSceneManager.OpenScene(GetTestAssetPath("EmptyTestScene.unity"));
SaveActiveScene();
m_Material = new Material(Shader.Find("Standard"));
}
[TearDown]
public void Teardown()
{
UnityObject.DestroyImmediate(m_Material);
}
// TODO Pretty much all of these tets crash 2019.1
#if !UNITY_2019_1_OR_NEWER
[UnityTest]
public IEnumerator WhenPropertyPathIsEmpty_IsNotCompleted()
{
m_Criterion.target.Update(m_Material);
yield return null;
Assert.IsFalse(m_Criterion.completed);
}
[UnityTest]
public IEnumerator WhenTargetIsEmpty_IsNotCompleted()
{
m_Criterion.target = null;
yield return null;
Assert.IsFalse(m_Criterion.completed);
}
MaterialProperty FindProperty(string path, Material material)
{
UnityObject[] mats = new[] { material };
return MaterialEditor.GetMaterialProperty(mats, path);
}
[UnityTest]
public IEnumerator WhenDifferentPropertyOnTheSameTargetIsModified_IsNotCompleted()
{
m_Criterion.target.Update(m_Material);
m_Criterion.materialPropertyPath = "_Color";
var matallicProperty = FindProperty("_Metallic", m_Material);
matallicProperty.floatValue = 0.5f;
yield return null;
Assert.IsFalse(m_Criterion.completed);
}
[UnityTest]
public IEnumerator WhenSamePropertyOnDifferentTargetIsModified_IsNotCompleted()
{
m_Criterion.target.Update(m_Material);
m_Criterion.materialPropertyPath = "_Color";
var otherMaterial = new Material(Shader.Find("Standard"));
var colorProperty = FindProperty("_Color", otherMaterial);
colorProperty.colorValue = Color.red;
yield return null;
Assert.IsFalse(m_Criterion.completed);
}
[UnityTest]
public IEnumerator WhenSamePropertyOnTargetIsModified_IsCompleted()
{
m_Criterion.target.Update(m_Material);
m_Criterion.materialPropertyPath = "_Color";
m_Criterion.StopTesting();
m_Criterion.StartTesting();
var colorProperty = FindProperty("_Color", m_Material);
colorProperty.colorValue = Color.red;
yield return null;
Assert.IsTrue(m_Criterion.completed);
}
#endif
}
}