您最多选择25个主题 主题必须以中文或者字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符
 
 
 
 

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));
}
}
}