You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
522 lines
21 KiB
522 lines
21 KiB
using System; |
|
using UnityEngine; |
|
|
|
namespace UnityEditor.ShaderGraph.UnitTests |
|
{ |
|
/* [TestFixture] |
|
public class PropertyNodeTests |
|
{ |
|
private class TestPropertyNode : PropertyNode |
|
{ |
|
public const string TestPropertyName = "TestName"; |
|
|
|
public override PropertyType propertyType |
|
{ |
|
get { return PropertyType.Float; } |
|
} |
|
|
|
public override PreviewProperty GetPreviewProperty() |
|
{ |
|
return new PreviewProperty() |
|
{ |
|
m_Name = TestPropertyName |
|
}; |
|
} |
|
} |
|
|
|
private UnityEngine.MaterialGraph.MaterialGraph m_Graph; |
|
private Vector1Node m_Vector1Node; |
|
private Vector2Node m_Vector2Node; |
|
private Vector3Node m_Vector3Node; |
|
private Vector4Node m_Vector4Node; |
|
private ColorNode m_ColorNode; |
|
// private Texture2DNode m_TextureNode; |
|
private TestPropertyNode m_PropertyNode; |
|
|
|
private const string kPropertyName = "PropertyName"; |
|
public const string kDescription = "NewDescription"; |
|
|
|
[TestFixtureSetUp] |
|
public void RunBeforeAnyTests() |
|
{ |
|
Debug.unityLogger.logHandler = new ConsoleLogHandler(); |
|
} |
|
|
|
[SetUp] |
|
public void TestSetUp() |
|
{ |
|
m_Graph = new UnityEngine.MaterialGraph.MaterialGraph(); |
|
m_Vector1Node = new Vector1Node(); |
|
m_Vector2Node = new Vector2Node(); |
|
m_Vector3Node = new Vector3Node(); |
|
m_Vector4Node = new Vector4Node(); |
|
m_ColorNode = new ColorNode(); |
|
// m_TextureNode = new Texture2DNode(); |
|
m_PropertyNode = new TestPropertyNode(); |
|
|
|
m_Graph.AddNode(m_Vector1Node); |
|
m_Graph.AddNode(m_Vector2Node); |
|
m_Graph.AddNode(m_Vector3Node); |
|
m_Graph.AddNode(m_Vector4Node); |
|
m_Graph.AddNode(m_ColorNode); |
|
m_Graph.AddNode(m_TextureNode); |
|
m_Graph.AddNode(m_PropertyNode); |
|
} |
|
|
|
/* [Test] |
|
public void TestExposedPropertyReturnsRawName() |
|
{ |
|
m_PropertyNode.exposedState = PropertyNode.ExposedState.Exposed; |
|
m_PropertyNode.propertyName = kPropertyName; |
|
Assert.AreEqual(kPropertyName + "_Uniform", m_PropertyNode.propertyName); |
|
} |
|
|
|
[Test] |
|
public void TestNonExposedPropertyReturnsGeneratedName() |
|
{ |
|
var expected = string.Format("{0}_{1}_Uniform", m_PropertyNode.name, m_PropertyNode.guid.ToString().Replace("-", "_")); |
|
m_PropertyNode.exposedState = PropertyNode.ExposedState.NotExposed; |
|
m_PropertyNode.propertyName = kPropertyName; |
|
|
|
Assert.AreEqual(expected, m_PropertyNode.propertyName); |
|
} |
|
|
|
[Test] |
|
public void TestPropertyNodeDescriptionWorks() |
|
{ |
|
m_PropertyNode.propertyName = kPropertyName; |
|
m_PropertyNode.description = kDescription; |
|
Assert.AreEqual(kDescription, m_PropertyNode.description); |
|
} |
|
|
|
[Test] |
|
public void TestPropertyNodeDescriptionReturnsPropertyNameWhenNoDescriptionSet() |
|
{ |
|
m_PropertyNode.propertyName = kPropertyName; |
|
m_PropertyNode.description = string.Empty; |
|
Assert.AreEqual(kPropertyName, m_PropertyNode.description); |
|
} |
|
|
|
[Test] |
|
public void TestPropertyNodeReturnsPreviewProperty() |
|
{ |
|
var props = new List<PreviewProperty>(); |
|
m_PropertyNode.CollectPreviewMaterialProperties(props); |
|
Assert.AreEqual(props.Count, 1); |
|
Assert.AreEqual(TestPropertyNode.TestPropertyName, props[0].m_Name); |
|
} |
|
|
|
[Test] |
|
public void TestDuplicatedPropertyNameGeneratesErrorWhenExposed() |
|
{ |
|
const string failName = "SameName"; |
|
|
|
m_Vector1Node.exposedState = PropertyNode.ExposedState.Exposed; |
|
m_Vector1Node.propertyName = failName; |
|
m_Vector2Node.exposedState = PropertyNode.ExposedState.Exposed; |
|
m_Vector2Node.propertyName = failName; |
|
|
|
m_Vector1Node.ValidateNode(); |
|
m_Vector2Node.ValidateNode(); |
|
Assert.IsTrue(m_Vector1Node.hasError); |
|
Assert.IsTrue(m_Vector2Node.hasError); |
|
} |
|
|
|
[Test] |
|
public void TestDuplicatedPropertyNameGeneratesNoErrorWhenNotExposed() |
|
{ |
|
const string failName = "SameName"; |
|
|
|
m_Vector1Node.exposedState = PropertyNode.ExposedState.NotExposed; |
|
m_Vector1Node.propertyName = failName; |
|
m_Vector2Node.exposedState = PropertyNode.ExposedState.Exposed; |
|
m_Vector2Node.propertyName = failName; |
|
|
|
m_Vector1Node.ValidateNode(); |
|
m_Vector2Node.ValidateNode(); |
|
Assert.IsFalse(m_Vector1Node.hasError); |
|
Assert.IsFalse(m_Vector2Node.hasError); |
|
}* |
|
|
|
[Test] |
|
public void TestPropertyExposedOnSubgraphReturnsFalse() |
|
{ |
|
var subGraph = new SubGraph(); |
|
var subNode = new TestPropertyNode(); |
|
subNode.exposedState = PropertyNode.ExposedState.Exposed; |
|
subGraph.AddNode(subNode); |
|
Assert.AreEqual(PropertyNode.ExposedState.NotExposed, subNode.exposedState); |
|
|
|
m_PropertyNode.exposedState = PropertyNode.ExposedState.Exposed; |
|
Assert.AreEqual(PropertyNode.ExposedState.Exposed, m_PropertyNode.exposedState); |
|
} |
|
|
|
[Test] |
|
public void TestVector1NodeTypeIsCorrect() |
|
{ |
|
Assert.AreEqual(PropertyType.Float, m_Vector1Node.propertyType); |
|
} |
|
|
|
[Test] |
|
public void TestVector1NodeReturnsCorrectValue() |
|
{ |
|
m_Vector1Node.value = 0.6f; |
|
Assert.AreEqual(0.6f, m_Vector1Node.value); |
|
} |
|
|
|
[Test] |
|
public void TestVector1NodeReturnsPreviewProperty() |
|
{ |
|
var props = new List<PreviewProperty>(); |
|
m_Vector1Node.value = 0.6f; |
|
m_Vector1Node.CollectPreviewMaterialProperties(props); |
|
Assert.AreEqual(props.Count, 1); |
|
Assert.AreEqual(m_Vector1Node.propertyName, props[0].m_Name); |
|
Assert.AreEqual(m_Vector1Node.propertyType, props[0].m_PropType); |
|
Assert.AreEqual(0.6f, props[0].m_Float); |
|
} |
|
|
|
[Test] |
|
public void TestVector1NodeGeneratesCorrectPropertyBlock() |
|
{ |
|
m_Vector1Node.value = 0.6f; |
|
m_Vector1Node.exposedState = PropertyNode.ExposedState.NotExposed; |
|
var generator = new PropertyGenerator(); |
|
m_Vector1Node.GeneratePropertyBlock(generator, GenerationMode.ForReals); |
|
Assert.AreEqual(string.Empty, generator.GetShaderString(0)); |
|
|
|
var expected = m_Vector1Node.propertyName |
|
+ "(\"" |
|
+ m_Vector1Node.description |
|
+ "\", Float) = " |
|
+ m_Vector1Node.value |
|
+ Environment.NewLine; |
|
|
|
m_Vector1Node.exposedState = PropertyNode.ExposedState.Exposed; |
|
m_Vector1Node.GeneratePropertyBlock(generator, GenerationMode.ForReals); |
|
Assert.AreEqual(expected, generator.GetShaderString(0)); |
|
} |
|
|
|
[Test] |
|
public void TestVector1NodeGeneratesCorrectPropertyUsages() |
|
{ |
|
m_Vector1Node.value = 0.6f; |
|
m_Vector1Node.exposedState = PropertyNode.ExposedState.NotExposed; |
|
var generator = new ShaderGenerator(); |
|
m_Vector1Node.GeneratePropertyUsages(generator, GenerationMode.ForReals); |
|
Assert.AreEqual(string.Empty, generator.GetShaderString(0)); |
|
|
|
var expected = m_Vector1Node.precision |
|
+ " " |
|
+ m_Vector1Node.propertyName |
|
+ ";" |
|
+ Environment.NewLine; |
|
|
|
m_Vector1Node.exposedState = PropertyNode.ExposedState.Exposed; |
|
m_Vector1Node.GeneratePropertyUsages(generator, GenerationMode.ForReals); |
|
Assert.AreEqual(expected, generator.GetShaderString(0)); |
|
} |
|
|
|
[Test] |
|
public void TestVector2NodeTypeIsCorrect() |
|
{ |
|
Assert.AreEqual(PropertyType.Vector2, m_Vector2Node.propertyType); |
|
} |
|
|
|
[Test] |
|
public void TestVector2NodeReturnsCorrectValue() |
|
{ |
|
var value = new Vector2(0.6f, 0.7f); |
|
m_Vector2Node.value = value; |
|
Assert.AreEqual(value, m_Vector2Node.value); |
|
} |
|
|
|
[Test] |
|
public void TestVector2NodeReturnsPreviewProperty() |
|
{ |
|
var value = new Vector2(0.6f, 0.7f); |
|
var props = new List<PreviewProperty>(); |
|
m_Vector2Node.value = value; |
|
m_Vector2Node.CollectPreviewMaterialProperties(props); |
|
Assert.AreEqual(props.Count, 1); |
|
Assert.AreEqual(m_Vector2Node.propertyName, props[0].m_Name); |
|
Assert.AreEqual(m_Vector2Node.propertyType, props[0].m_PropType); |
|
Assert.AreEqual(value, m_Vector2Node.value); |
|
} |
|
|
|
[Test] |
|
public void TestVector2NodeGeneratesCorrectPropertyBlock() |
|
{ |
|
var value = new Vector2(0.6f, 0.7f); |
|
m_Vector2Node.value = value; |
|
m_Vector2Node.exposedState = PropertyNode.ExposedState.NotExposed; |
|
var generator = new PropertyGenerator(); |
|
m_Vector2Node.GeneratePropertyBlock(generator, GenerationMode.ForReals); |
|
Assert.AreEqual(string.Empty, generator.GetShaderString(0)); |
|
|
|
var expected = m_Vector2Node.propertyName |
|
+ "(\"" |
|
+ m_Vector2Node.description |
|
+ "\", Vector) = (" |
|
+ m_Vector2Node.value.x |
|
+ "," |
|
+ m_Vector2Node.value.y |
|
+ ",0,0)" |
|
+ Environment.NewLine; |
|
|
|
m_Vector2Node.exposedState = PropertyNode.ExposedState.Exposed; |
|
m_Vector2Node.GeneratePropertyBlock(generator, GenerationMode.ForReals); |
|
Assert.AreEqual(expected, generator.GetShaderString(0)); |
|
} |
|
|
|
[Test] |
|
public void TestVector2NodeGeneratesCorrectPropertyUsages() |
|
{ |
|
var value = new Vector2(0.6f, 0.7f); |
|
m_Vector2Node.value = value; |
|
m_Vector2Node.exposedState = PropertyNode.ExposedState.NotExposed; |
|
var generator = new ShaderGenerator(); |
|
m_Vector2Node.GeneratePropertyUsages(generator, GenerationMode.ForReals); |
|
Assert.AreEqual(string.Empty, generator.GetShaderString(0)); |
|
|
|
var expected = m_Vector2Node.precision |
|
+ "2 " |
|
+ m_Vector2Node.propertyName |
|
+ ";" |
|
+ Environment.NewLine; |
|
|
|
m_Vector2Node.exposedState = PropertyNode.ExposedState.Exposed; |
|
m_Vector2Node.GeneratePropertyUsages(generator, GenerationMode.ForReals); |
|
Assert.AreEqual(expected, generator.GetShaderString(0)); |
|
} |
|
|
|
[Test] |
|
public void TestVector3NodeTypeIsCorrect() |
|
{ |
|
Assert.AreEqual(PropertyType.Vector3, m_Vector3Node.propertyType); |
|
} |
|
|
|
[Test] |
|
public void TestVector3NodeReturnsCorrectValue() |
|
{ |
|
var value = new Vector3(0.6f, 0.7f, 0.4f); |
|
m_Vector3Node.value = value; |
|
Assert.AreEqual(value, m_Vector3Node.value); |
|
} |
|
|
|
[Test] |
|
public void TestVector3NodeReturnsPreviewProperty() |
|
{ |
|
var value = new Vector3(0.6f, 0.7f, 0.4f); |
|
var props = new List<PreviewProperty>(); |
|
m_Vector3Node.value = value; |
|
m_Vector3Node.CollectPreviewMaterialProperties(props); |
|
Assert.AreEqual(props.Count, 1); |
|
Assert.AreEqual(m_Vector3Node.propertyName, props[0].m_Name); |
|
Assert.AreEqual(m_Vector3Node.propertyType, props[0].m_PropType); |
|
Assert.AreEqual(value, m_Vector3Node.value); |
|
} |
|
|
|
[Test] |
|
public void TestVector3NodeGeneratesCorrectPropertyBlock() |
|
{ |
|
var value = new Vector3(0.6f, 0.7f, 0.4f); |
|
m_Vector3Node.value = value; |
|
m_Vector3Node.exposedState = PropertyNode.ExposedState.NotExposed; |
|
var generator = new PropertyGenerator(); |
|
m_Vector3Node.GeneratePropertyBlock(generator, GenerationMode.ForReals); |
|
Assert.AreEqual(string.Empty, generator.GetShaderString(0)); |
|
|
|
var expected = m_Vector3Node.propertyName |
|
+ "(\"" |
|
+ m_Vector3Node.description |
|
+ "\", Vector) = (" |
|
+ m_Vector3Node.value.x |
|
+ "," |
|
+ m_Vector3Node.value.y |
|
+ "," |
|
+ m_Vector3Node.value.z |
|
+ ",0)" |
|
+ Environment.NewLine; |
|
|
|
m_Vector3Node.exposedState = PropertyNode.ExposedState.Exposed; |
|
m_Vector3Node.GeneratePropertyBlock(generator, GenerationMode.ForReals); |
|
Assert.AreEqual(expected, generator.GetShaderString(0)); |
|
} |
|
|
|
[Test] |
|
public void TestVector3NodeGeneratesCorrectPropertyUsages() |
|
{ |
|
var value = new Vector3(0.6f, 0.7f, 0.4f); |
|
m_Vector3Node.value = value; |
|
m_Vector3Node.exposedState = PropertyNode.ExposedState.NotExposed; |
|
var generator = new ShaderGenerator(); |
|
m_Vector3Node.GeneratePropertyUsages(generator, GenerationMode.ForReals); |
|
Assert.AreEqual(string.Empty, generator.GetShaderString(0)); |
|
|
|
var expected = m_Vector3Node.precision |
|
+ "3 " |
|
+ m_Vector3Node.propertyName |
|
+ ";" |
|
+ Environment.NewLine; |
|
|
|
m_Vector3Node.exposedState = PropertyNode.ExposedState.Exposed; |
|
m_Vector3Node.GeneratePropertyUsages(generator, GenerationMode.ForReals); |
|
Assert.AreEqual(expected, generator.GetShaderString(0)); |
|
} |
|
|
|
[Test] |
|
public void TestVector4NodeTypeIsCorrect() |
|
{ |
|
Assert.AreEqual(PropertyType.Vector4, m_Vector4Node.propertyType); |
|
} |
|
|
|
[Test] |
|
public void TestVector4NodeReturnsCorrectValue() |
|
{ |
|
var value = new Vector4(0.6f, 0.7f, 0.4f, 0.3f); |
|
m_Vector4Node.value = value; |
|
Assert.AreEqual(value, m_Vector4Node.value); |
|
} |
|
|
|
[Test] |
|
public void TestVector4NodeReturnsPreviewProperty() |
|
{ |
|
var value = new Vector4(0.6f, 0.7f, 0.4f, 0.3f); |
|
var props = new List<PreviewProperty>(); |
|
m_Vector4Node.value = value; |
|
m_Vector4Node.CollectPreviewMaterialProperties(props); |
|
Assert.AreEqual(props.Count, 1); |
|
Assert.AreEqual(m_Vector4Node.propertyName, props[0].m_Name); |
|
Assert.AreEqual(m_Vector4Node.propertyType, props[0].m_PropType); |
|
Assert.AreEqual(value, m_Vector4Node.value); |
|
} |
|
|
|
[Test] |
|
public void TestVector4NodeGeneratesCorrectPropertyBlock() |
|
{ |
|
var value = new Vector4(0.6f, 0.7f, 0.4f, 0.3f); |
|
m_Vector4Node.value = value; |
|
m_Vector4Node.exposedState = PropertyNode.ExposedState.NotExposed; |
|
var generator = new PropertyGenerator(); |
|
m_Vector4Node.GeneratePropertyBlock(generator, GenerationMode.ForReals); |
|
Assert.AreEqual(string.Empty, generator.GetShaderString(0)); |
|
|
|
var expected = m_Vector4Node.propertyName |
|
+ "(\"" |
|
+ m_Vector4Node.description |
|
+ "\", Vector) = (" |
|
+ m_Vector4Node.value.x |
|
+ "," |
|
+ m_Vector4Node.value.y |
|
+ "," |
|
+ m_Vector4Node.value.z |
|
+ "," |
|
+ m_Vector4Node.value.w |
|
+ ")" |
|
+ Environment.NewLine; |
|
|
|
m_Vector4Node.exposedState = PropertyNode.ExposedState.Exposed; |
|
m_Vector4Node.GeneratePropertyBlock(generator, GenerationMode.ForReals); |
|
Assert.AreEqual(expected, generator.GetShaderString(0)); |
|
} |
|
|
|
[Test] |
|
public void TestVector4NodeGeneratesCorrectPropertyUsages() |
|
{ |
|
var value = new Vector4(0.6f, 0.7f, 0.4f, 0.3f); |
|
m_Vector4Node.value = value; |
|
m_Vector4Node.exposedState = PropertyNode.ExposedState.NotExposed; |
|
var generator = new ShaderGenerator(); |
|
m_Vector4Node.GeneratePropertyUsages(generator, GenerationMode.ForReals); |
|
Assert.AreEqual(string.Empty, generator.GetShaderString(0)); |
|
|
|
var expected = m_Vector4Node.precision |
|
+ "4 " |
|
+ m_Vector4Node.propertyName |
|
+ ";" |
|
+ Environment.NewLine; |
|
|
|
m_Vector4Node.exposedState = PropertyNode.ExposedState.Exposed; |
|
m_Vector4Node.GeneratePropertyUsages(generator, GenerationMode.ForReals); |
|
Assert.AreEqual(expected, generator.GetShaderString(0)); |
|
} |
|
|
|
[Test] |
|
public void TestColorNodeTypeIsCorrect() |
|
{ |
|
Assert.AreEqual(PropertyType.Color, m_ColorNode.propertyType); |
|
} |
|
|
|
[Test] |
|
public void TestColorNodeReturnsCorrectValue() |
|
{ |
|
var value = new Color(0.6f, 0.7f, 0.4f, 0.3f); |
|
m_ColorNode.color = value; |
|
Assert.AreEqual(value, m_ColorNode.color); |
|
} |
|
|
|
[Test] |
|
public void TestColorNodeReturnsPreviewProperty() |
|
{ |
|
var value = new Color(0.6f, 0.7f, 0.4f, 0.3f); |
|
var props = new List<PreviewProperty>(); |
|
m_ColorNode.color = value; |
|
m_ColorNode.CollectPreviewMaterialProperties(props); |
|
Assert.AreEqual(props.Count, 1); |
|
Assert.AreEqual(m_ColorNode.propertyName, props[0].m_Name); |
|
Assert.AreEqual(m_ColorNode.propertyType, props[0].m_PropType); |
|
Assert.AreEqual(value, m_ColorNode.color); |
|
} |
|
|
|
[Test] |
|
public void TestColorNodeGeneratesCorrectPropertyBlock() |
|
{ |
|
var value = new Color(0.6f, 0.7f, 0.4f, 0.3f); |
|
m_ColorNode.color = value; |
|
m_ColorNode.exposedState = PropertyNode.ExposedState.NotExposed; |
|
var generator = new PropertyGenerator(); |
|
m_ColorNode.GeneratePropertyBlock(generator, GenerationMode.ForReals); |
|
Assert.AreEqual(string.Empty, generator.GetShaderString(0)); |
|
|
|
var expected = m_ColorNode.propertyName |
|
+ "(\"" |
|
+ m_ColorNode.description |
|
+ "\", Color) = (" |
|
+ m_ColorNode.color.r |
|
+ "," |
|
+ m_ColorNode.color.g |
|
+ "," |
|
+ m_ColorNode.color.b |
|
+ "," |
|
+ m_ColorNode.color.a |
|
+ ")" |
|
+ Environment.NewLine; |
|
|
|
m_ColorNode.exposedState = PropertyNode.ExposedState.Exposed; |
|
m_ColorNode.GeneratePropertyBlock(generator, GenerationMode.ForReals); |
|
Assert.AreEqual(expected, generator.GetShaderString(0)); |
|
} |
|
|
|
[Test] |
|
public void TestColorNodeGeneratesCorrectPropertyUsages() |
|
{ |
|
var value = new Color(0.6f, 0.7f, 0.4f, 0.3f); |
|
m_ColorNode.color = value; |
|
m_ColorNode.exposedState = PropertyNode.ExposedState.NotExposed; |
|
var generator = new ShaderGenerator(); |
|
m_ColorNode.GeneratePropertyUsages(generator, GenerationMode.ForReals); |
|
Assert.AreEqual(string.Empty, generator.GetShaderString(0)); |
|
|
|
var expected = m_ColorNode.precision |
|
+ "4 " |
|
+ m_ColorNode.propertyName |
|
+ ";" |
|
+ Environment.NewLine; |
|
|
|
m_ColorNode.exposedState = PropertyNode.ExposedState.Exposed; |
|
m_ColorNode.GeneratePropertyUsages(generator, GenerationMode.ForReals); |
|
Assert.AreEqual(expected, generator.GetShaderString(0)); |
|
} |
|
}*/ |
|
}
|
|
|