您最多选择25个主题
主题必须以中文或者字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符
125 行
4.4 KiB
125 行
4.4 KiB
using System;
|
|
using System.Collections.Generic;
|
|
using System.IO;
|
|
using System.Linq;
|
|
using NUnit.Framework;
|
|
using UnityEngine;
|
|
using UnityEngine.Graphing;
|
|
using UnityEngine.MaterialGraph;
|
|
|
|
namespace UnityEditor.MaterialGraph.IntegrationTests
|
|
{
|
|
[TestFixture]
|
|
public class PropertyNodeTests
|
|
{
|
|
private PixelGraph m_Graph;
|
|
private TextureNode m_TextureNode;
|
|
|
|
[TestFixtureSetUp]
|
|
public void RunBeforeAnyTests()
|
|
{
|
|
Debug.logger.logHandler = new ConsoleLogHandler();
|
|
}
|
|
|
|
private static readonly string[] s_TexturePath =
|
|
{
|
|
"Assets",
|
|
"UnityShaderEditor",
|
|
"Editor",
|
|
"Testing",
|
|
"IntegrationTests",
|
|
"Textures",
|
|
"MudDiffuse.tif"
|
|
};
|
|
|
|
private static Texture2D FindTestTexture()
|
|
{
|
|
var texturePath = s_TexturePath.Aggregate(Path.Combine);
|
|
return AssetDatabase.LoadAssetAtPath<Texture2D>(texturePath);
|
|
}
|
|
|
|
[SetUp]
|
|
public void TestSetUp()
|
|
{
|
|
m_Graph = new PixelGraph();
|
|
m_TextureNode = new TextureNode();
|
|
m_Graph.AddNode(m_TextureNode);
|
|
}
|
|
|
|
[Test]
|
|
public void TestTextureNodeTypeIsCorrect()
|
|
{
|
|
Assert.AreEqual(PropertyType.Texture2D, m_TextureNode.propertyType);
|
|
}
|
|
|
|
[Test]
|
|
public void TestTextureNodeReturnsCorrectValue()
|
|
{
|
|
m_TextureNode.defaultTexture = FindTestTexture();
|
|
Assert.AreEqual(FindTestTexture(), m_TextureNode.defaultTexture);
|
|
|
|
m_TextureNode.textureType = TextureType.Bump;
|
|
Assert.AreEqual(TextureType.Bump, m_TextureNode.textureType);
|
|
}
|
|
|
|
[Test]
|
|
public void TestTextureNodeReturnsPreviewProperty()
|
|
{
|
|
var props = new List<PreviewProperty>();
|
|
m_TextureNode.defaultTexture = FindTestTexture();
|
|
m_TextureNode.CollectPreviewMaterialProperties(props);
|
|
Assert.AreEqual(1, props.Count);
|
|
Assert.AreEqual(m_TextureNode.propertyName, props[0].m_Name);
|
|
Assert.AreEqual(m_TextureNode.propertyType, props[0].m_PropType);
|
|
Assert.AreEqual(m_TextureNode.defaultTexture, props[0].m_Texture);
|
|
Assert.AreEqual(FindTestTexture(), m_TextureNode.defaultTexture);
|
|
}
|
|
|
|
[Test]
|
|
public void TestTextureNodeGeneratesCorrectPropertyBlock()
|
|
{
|
|
m_TextureNode.defaultTexture = null;
|
|
m_TextureNode.textureType = TextureType.Bump;
|
|
m_TextureNode.exposedState = PropertyNode.ExposedState.NotExposed;
|
|
var generator = new PropertyGenerator();
|
|
m_TextureNode.GeneratePropertyBlock(generator, GenerationMode.SurfaceShader);
|
|
|
|
var expected1 = "[NonModifiableTextureData] "
|
|
+ m_TextureNode.propertyName
|
|
+ "(\""
|
|
+ m_TextureNode.description
|
|
+ "\", 2D) = \"bump\" {}"
|
|
+ Environment.NewLine;
|
|
Assert.AreEqual(expected1, generator.GetShaderString(0));
|
|
|
|
var expected2 = m_TextureNode.propertyName
|
|
+ "(\""
|
|
+ m_TextureNode.description
|
|
+ "\", 2D) = \"bump\" {}"
|
|
+ Environment.NewLine;
|
|
m_TextureNode.exposedState = PropertyNode.ExposedState.Exposed;
|
|
generator = new PropertyGenerator();
|
|
m_TextureNode.GeneratePropertyBlock(generator, GenerationMode.SurfaceShader);
|
|
Assert.AreEqual(expected2, generator.GetShaderString(0));
|
|
}
|
|
|
|
[Test]
|
|
public void TestTextureNodeGeneratesCorrectPropertyUsages()
|
|
{
|
|
m_TextureNode.defaultTexture = null;
|
|
m_TextureNode.exposedState = PropertyNode.ExposedState.NotExposed;
|
|
var generator = new ShaderGenerator();
|
|
m_TextureNode.GeneratePropertyUsages(generator, GenerationMode.SurfaceShader);
|
|
var expected = "sampler2D "
|
|
+ m_TextureNode.propertyName
|
|
+ ";"
|
|
+ Environment.NewLine;
|
|
Assert.AreEqual(expected, generator.GetShaderString(0));
|
|
|
|
m_TextureNode.exposedState = PropertyNode.ExposedState.Exposed;
|
|
generator = new ShaderGenerator();
|
|
m_TextureNode.GeneratePropertyUsages(generator, GenerationMode.SurfaceShader);
|
|
Assert.AreEqual(expected, generator.GetShaderString(0));
|
|
}
|
|
}
|
|
}
|