Ingen beskrivning
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.

UtilityTests.cs 5.4KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. using NUnit.Framework;
  2. using UnityEditor.Graphing;
  3. using UnityEditor.ShaderGraph;
  4. namespace UnityEditor.ShaderGraph.UnitTests
  5. {
  6. class UtilityTests
  7. {
  8. [Test]
  9. public void ConvertToValidHLSLIdentifier()
  10. {
  11. Assert.AreEqual(NodeUtils.ConvertToValidHLSLIdentifier(""), "_");
  12. Assert.AreEqual(NodeUtils.ConvertToValidHLSLIdentifier(" "), "_");
  13. Assert.AreEqual(NodeUtils.ConvertToValidHLSLIdentifier("_"), "_");
  14. Assert.AreEqual(NodeUtils.ConvertToValidHLSLIdentifier("9"), "_9");
  15. Assert.AreEqual(NodeUtils.ConvertToValidHLSLIdentifier("q"), "q");
  16. Assert.AreEqual(NodeUtils.ConvertToValidHLSLIdentifier("b#"), "b");
  17. Assert.AreEqual(NodeUtils.ConvertToValidHLSLIdentifier("{t"), "t");
  18. Assert.AreEqual(NodeUtils.ConvertToValidHLSLIdentifier("&Y~"), "Y");
  19. Assert.AreEqual(NodeUtils.ConvertToValidHLSLIdentifier("a_Az_Z0_9_"), "a_Az_Z0_9_");
  20. Assert.AreEqual(NodeUtils.ConvertToValidHLSLIdentifier(" a_Az_Z0_9_"), "a_Az_Z0_9_");
  21. Assert.AreEqual(NodeUtils.ConvertToValidHLSLIdentifier("a_Az_Z0_9_ "), "a_Az_Z0_9_");
  22. Assert.AreEqual(NodeUtils.ConvertToValidHLSLIdentifier(" a_Az_Z0_9_ "), "a_Az_Z0_9_");
  23. Assert.AreEqual(NodeUtils.ConvertToValidHLSLIdentifier(" a_Az_Z0_9_"), "a_Az_Z0_9_");
  24. Assert.AreEqual(NodeUtils.ConvertToValidHLSLIdentifier("a_Az_Z0_9_ "), "a_Az_Z0_9_");
  25. Assert.AreEqual(NodeUtils.ConvertToValidHLSLIdentifier(" a_Az_Z0_9_ "), "a_Az_Z0_9_");
  26. Assert.AreEqual(NodeUtils.ConvertToValidHLSLIdentifier("_ _"), "_"); // double underscore sequences are not valid
  27. Assert.AreEqual(NodeUtils.ConvertToValidHLSLIdentifier(" "), "_");
  28. Assert.AreEqual(NodeUtils.ConvertToValidHLSLIdentifier("*1 "), "_1");
  29. Assert.AreEqual(NodeUtils.ConvertToValidHLSLIdentifier(" *-(1)"), "_1");
  30. Assert.AreEqual(NodeUtils.ConvertToValidHLSLIdentifier("*z-1>"), "z_1");
  31. Assert.AreEqual(NodeUtils.ConvertToValidHLSLIdentifier("*^#@$w)!(r+-"), "w_r");
  32. Assert.AreEqual(NodeUtils.ConvertToValidHLSLIdentifier(" 1 var * q-30 ( 0 ) (1) "), "_1_var_q_30_0_1");
  33. }
  34. [Test]
  35. public void DeduplicateName()
  36. {
  37. string[] existingNames = new string[]
  38. {
  39. "a",
  40. "b",
  41. "c",
  42. "qwerty",
  43. "qwerty_1",
  44. "qwerty_3",
  45. "b_1",
  46. "qwerty_4",
  47. "b2",
  48. "b3",
  49. "_",
  50. "_1",
  51. "a (1)",
  52. "a (2)",
  53. "a (3)",
  54. "b (2)",
  55. "b_1 (1)"
  56. };
  57. Assert.AreEqual(GraphUtil.DeduplicateName(existingNames, "{0}_{1}", "a"), "a_1");
  58. Assert.AreEqual(GraphUtil.DeduplicateName(existingNames, "{0}_{1}", "b"), "b_2");
  59. Assert.AreEqual(GraphUtil.DeduplicateName(existingNames, "{0}_{1}", "qwert"), "qwert");
  60. Assert.AreEqual(GraphUtil.DeduplicateName(existingNames, "{0}_{1}", "qwerty"), "qwerty_2");
  61. Assert.AreEqual(GraphUtil.DeduplicateName(existingNames, "{0}_{1}", "qwerty_1"), "qwerty_2");
  62. Assert.AreEqual(GraphUtil.DeduplicateName(existingNames, "{0}_{1}", "qwerty_4"), "qwerty_2");
  63. Assert.AreEqual(GraphUtil.DeduplicateName(existingNames, "{0}_{1}", "asdf"), "asdf");
  64. Assert.AreEqual(GraphUtil.DeduplicateName(existingNames, "{0}_{1}", "d_1"), "d_1");
  65. Assert.AreEqual(GraphUtil.DeduplicateName(existingNames, "{0}_{1}", "_1"), "_2");
  66. // this one actually outputs "__1" .. but not going to fix it now
  67. // Assert.AreEqual(GraphUtil.DeduplicateName(existingNames, "{0}_{1}", "_"), "_2");
  68. Assert.AreEqual(GraphUtil.DeduplicateName(existingNames, "{0} ({1})", "a"), "a (4)");
  69. Assert.AreEqual(GraphUtil.DeduplicateName(existingNames, "{0} ({1})", "b"), "b (1)");
  70. Assert.AreEqual(GraphUtil.DeduplicateName(existingNames, "{0} ({1})", "b (2)"), "b (1)");
  71. Assert.AreEqual(GraphUtil.DeduplicateName(existingNames, "{0} ({1})", "b_1"), "b_1 (2)");
  72. Assert.AreEqual(GraphUtil.DeduplicateName(existingNames, "{0} ({1})", "c"), "c (1)");
  73. }
  74. [Test]
  75. public void IsHLSLKeyword()
  76. {
  77. Assert.IsTrue(NodeUtils.IsHLSLKeyword("min16uint"));
  78. Assert.IsTrue(NodeUtils.IsHLSLKeyword("float2"));
  79. Assert.IsTrue(NodeUtils.IsHLSLKeyword("uint4x4"));
  80. Assert.IsTrue(NodeUtils.IsHLSLKeyword("bool2x2"));
  81. Assert.IsTrue(NodeUtils.IsHLSLKeyword("half1x1"));
  82. Assert.IsTrue(NodeUtils.IsHLSLKeyword("StructuredBuffer"));
  83. Assert.IsTrue(NodeUtils.IsHLSLKeyword("texture"));
  84. Assert.IsTrue(NodeUtils.IsHLSLKeyword("while"));
  85. Assert.IsTrue(NodeUtils.IsHLSLKeyword("true"));
  86. Assert.IsTrue(NodeUtils.IsHLSLKeyword("NULL"));
  87. Assert.IsFalse(NodeUtils.IsHLSLKeyword("x"));
  88. Assert.IsFalse(NodeUtils.IsHLSLKeyword("var"));
  89. Assert.IsFalse(NodeUtils.IsHLSLKeyword("float5"));
  90. Assert.IsFalse(NodeUtils.IsHLSLKeyword("tex"));
  91. Assert.IsFalse(NodeUtils.IsHLSLKeyword("Texture"));
  92. Assert.IsFalse(NodeUtils.IsHLSLKeyword("_0"));
  93. Assert.IsFalse(NodeUtils.IsHLSLKeyword(""));
  94. Assert.IsFalse(NodeUtils.IsHLSLKeyword("103"));
  95. }
  96. }
  97. }