UnityGame/Library/PackageCache/com.unity.shadergraph/Tests/Editor/UnitTests/UtilityTests.cs

105 lines
5.4 KiB
C#
Raw Normal View History

2024-10-27 10:53:47 +03:00
using NUnit.Framework;
using UnityEditor.Graphing;
using UnityEditor.ShaderGraph;
namespace UnityEditor.ShaderGraph.UnitTests
{
class UtilityTests
{
[Test]
public void ConvertToValidHLSLIdentifier()
{
Assert.AreEqual(NodeUtils.ConvertToValidHLSLIdentifier(""), "_");
Assert.AreEqual(NodeUtils.ConvertToValidHLSLIdentifier(" "), "_");
Assert.AreEqual(NodeUtils.ConvertToValidHLSLIdentifier("_"), "_");
Assert.AreEqual(NodeUtils.ConvertToValidHLSLIdentifier("9"), "_9");
Assert.AreEqual(NodeUtils.ConvertToValidHLSLIdentifier("q"), "q");
Assert.AreEqual(NodeUtils.ConvertToValidHLSLIdentifier("b#"), "b");
Assert.AreEqual(NodeUtils.ConvertToValidHLSLIdentifier("{t"), "t");
Assert.AreEqual(NodeUtils.ConvertToValidHLSLIdentifier("&Y~"), "Y");
Assert.AreEqual(NodeUtils.ConvertToValidHLSLIdentifier("a_Az_Z0_9_"), "a_Az_Z0_9_");
Assert.AreEqual(NodeUtils.ConvertToValidHLSLIdentifier(" a_Az_Z0_9_"), "a_Az_Z0_9_");
Assert.AreEqual(NodeUtils.ConvertToValidHLSLIdentifier("a_Az_Z0_9_ "), "a_Az_Z0_9_");
Assert.AreEqual(NodeUtils.ConvertToValidHLSLIdentifier(" a_Az_Z0_9_ "), "a_Az_Z0_9_");
Assert.AreEqual(NodeUtils.ConvertToValidHLSLIdentifier(" a_Az_Z0_9_"), "a_Az_Z0_9_");
Assert.AreEqual(NodeUtils.ConvertToValidHLSLIdentifier("a_Az_Z0_9_ "), "a_Az_Z0_9_");
Assert.AreEqual(NodeUtils.ConvertToValidHLSLIdentifier(" a_Az_Z0_9_ "), "a_Az_Z0_9_");
Assert.AreEqual(NodeUtils.ConvertToValidHLSLIdentifier("_ _"), "_"); // double underscore sequences are not valid
Assert.AreEqual(NodeUtils.ConvertToValidHLSLIdentifier(" "), "_");
Assert.AreEqual(NodeUtils.ConvertToValidHLSLIdentifier("*1 "), "_1");
Assert.AreEqual(NodeUtils.ConvertToValidHLSLIdentifier(" *-(1)"), "_1");
Assert.AreEqual(NodeUtils.ConvertToValidHLSLIdentifier("*z-1>"), "z_1");
Assert.AreEqual(NodeUtils.ConvertToValidHLSLIdentifier("*^#@$w)!(r+-"), "w_r");
Assert.AreEqual(NodeUtils.ConvertToValidHLSLIdentifier(" 1 var * q-30 ( 0 ) (1) "), "_1_var_q_30_0_1");
}
[Test]
public void DeduplicateName()
{
string[] existingNames = new string[]
{
"a",
"b",
"c",
"qwerty",
"qwerty_1",
"qwerty_3",
"b_1",
"qwerty_4",
"b2",
"b3",
"_",
"_1",
"a (1)",
"a (2)",
"a (3)",
"b (2)",
"b_1 (1)"
};
Assert.AreEqual(GraphUtil.DeduplicateName(existingNames, "{0}_{1}", "a"), "a_1");
Assert.AreEqual(GraphUtil.DeduplicateName(existingNames, "{0}_{1}", "b"), "b_2");
Assert.AreEqual(GraphUtil.DeduplicateName(existingNames, "{0}_{1}", "qwert"), "qwert");
Assert.AreEqual(GraphUtil.DeduplicateName(existingNames, "{0}_{1}", "qwerty"), "qwerty_2");
Assert.AreEqual(GraphUtil.DeduplicateName(existingNames, "{0}_{1}", "qwerty_1"), "qwerty_2");
Assert.AreEqual(GraphUtil.DeduplicateName(existingNames, "{0}_{1}", "qwerty_4"), "qwerty_2");
Assert.AreEqual(GraphUtil.DeduplicateName(existingNames, "{0}_{1}", "asdf"), "asdf");
Assert.AreEqual(GraphUtil.DeduplicateName(existingNames, "{0}_{1}", "d_1"), "d_1");
Assert.AreEqual(GraphUtil.DeduplicateName(existingNames, "{0}_{1}", "_1"), "_2");
// this one actually outputs "__1" .. but not going to fix it now
// Assert.AreEqual(GraphUtil.DeduplicateName(existingNames, "{0}_{1}", "_"), "_2");
Assert.AreEqual(GraphUtil.DeduplicateName(existingNames, "{0} ({1})", "a"), "a (4)");
Assert.AreEqual(GraphUtil.DeduplicateName(existingNames, "{0} ({1})", "b"), "b (1)");
Assert.AreEqual(GraphUtil.DeduplicateName(existingNames, "{0} ({1})", "b (2)"), "b (1)");
Assert.AreEqual(GraphUtil.DeduplicateName(existingNames, "{0} ({1})", "b_1"), "b_1 (2)");
Assert.AreEqual(GraphUtil.DeduplicateName(existingNames, "{0} ({1})", "c"), "c (1)");
}
[Test]
public void IsHLSLKeyword()
{
Assert.IsTrue(NodeUtils.IsHLSLKeyword("min16uint"));
Assert.IsTrue(NodeUtils.IsHLSLKeyword("float2"));
Assert.IsTrue(NodeUtils.IsHLSLKeyword("uint4x4"));
Assert.IsTrue(NodeUtils.IsHLSLKeyword("bool2x2"));
Assert.IsTrue(NodeUtils.IsHLSLKeyword("half1x1"));
Assert.IsTrue(NodeUtils.IsHLSLKeyword("StructuredBuffer"));
Assert.IsTrue(NodeUtils.IsHLSLKeyword("texture"));
Assert.IsTrue(NodeUtils.IsHLSLKeyword("while"));
Assert.IsTrue(NodeUtils.IsHLSLKeyword("true"));
Assert.IsTrue(NodeUtils.IsHLSLKeyword("NULL"));
Assert.IsFalse(NodeUtils.IsHLSLKeyword("x"));
Assert.IsFalse(NodeUtils.IsHLSLKeyword("var"));
Assert.IsFalse(NodeUtils.IsHLSLKeyword("float5"));
Assert.IsFalse(NodeUtils.IsHLSLKeyword("tex"));
Assert.IsFalse(NodeUtils.IsHLSLKeyword("Texture"));
Assert.IsFalse(NodeUtils.IsHLSLKeyword("_0"));
Assert.IsFalse(NodeUtils.IsHLSLKeyword(""));
Assert.IsFalse(NodeUtils.IsHLSLKeyword("103"));
}
}
}