MaterialSlotTests.cs 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129
  1. using NUnit.Framework;
  2. using UnityEngine;
  3. using UnityEditor.Graphing;
  4. using UnityEditor.ShaderGraph.Internal;
  5. namespace UnityEditor.ShaderGraph.UnitTests
  6. {
  7. [TestFixture]
  8. class MaterialSlotTests
  9. {
  10. private GraphData m_Graph;
  11. private TestNode m_NodeA;
  12. class TestNode : AbstractMaterialNode
  13. {
  14. public const int V1In = 1;
  15. public const int V2In = 2;
  16. public const int V3In = 3;
  17. public const int V4In = 4;
  18. public readonly Vector1MaterialSlot slot1;
  19. public readonly Vector2MaterialSlot slot2;
  20. public readonly Vector3MaterialSlot slot3;
  21. public readonly Vector4MaterialSlot slot4;
  22. public TestNode()
  23. {
  24. slot1 = new Vector1MaterialSlot(V1In, "V1In", "V1In", SlotType.Input, 1);
  25. AddSlot(slot1);
  26. slot2 = new Vector2MaterialSlot(V2In, "V2In", "V2In", SlotType.Input, Vector2.one);
  27. AddSlot(slot2);
  28. slot3 = new Vector3MaterialSlot(V3In, "V3In", "V3In", SlotType.Input, Vector3.one);
  29. AddSlot(slot3);
  30. slot4 = new Vector4MaterialSlot(V4In, "V4In", "V4In", SlotType.Input, Vector4.one);
  31. AddSlot(slot4);
  32. }
  33. }
  34. [OneTimeSetUp]
  35. public void RunBeforeAnyTests()
  36. {
  37. Debug.unityLogger.logHandler = new ConsoleLogHandler();
  38. }
  39. [SetUp]
  40. public void TestSetUp()
  41. {
  42. m_Graph = new GraphData();
  43. m_NodeA = new TestNode();
  44. m_NodeA.precision = Precision.Half;
  45. m_Graph.AddNode(m_NodeA);
  46. }
  47. [Test]
  48. public void SlotDisplayNameIsCorrect()
  49. {
  50. Assert.AreEqual("V1In(1)", m_NodeA.slot1.displayName);
  51. Assert.AreEqual("V2In(2)", m_NodeA.slot2.displayName);
  52. Assert.AreEqual("V3In(3)", m_NodeA.slot3.displayName);
  53. Assert.AreEqual("V4In(4)", m_NodeA.slot4.displayName);
  54. }
  55. [Test]
  56. public void CanUpdateMaterialSlotDefaultValue()
  57. {
  58. var slot = m_NodeA.slot1;
  59. slot.value = 1;
  60. Assert.AreEqual(1, slot.defaultValue);
  61. }
  62. [Test]
  63. public void CanUpdateMaterialSlotCurrentValue()
  64. {
  65. var slot = m_NodeA.slot1;
  66. slot.value = 1;
  67. Assert.AreEqual(1, 1);
  68. }
  69. /* [Test]
  70. public void MaterialSlotCanGeneratePropertyUsagesForPreview()
  71. {
  72. string expected = string.Format("{0} {1};{2}", m_NodeA.precision, m_NodeA.GetVariableNameForSlot(TestNode.V1In), Environment.NewLine);
  73. var slot = m_NodeA.slot;
  74. var visitor = new ShaderGenerator();
  75. slot.GeneratePropertyUsages(visitor, GenerationMode.Preview);
  76. Assert.AreEqual(expected, visitor.GetShaderString(0));
  77. }*/
  78. [Test]
  79. public void MaterialSlotReturnsValidDefaultValue()
  80. {
  81. string expected = string.Format("{0}", m_NodeA.GetVariableNameForSlot(TestNode.V1In));
  82. var result = m_NodeA.slot1.GetDefaultValue(GenerationMode.Preview);
  83. Assert.AreEqual(expected, result);
  84. m_NodeA.slot1.value = 6;
  85. result = m_NodeA.slot1.GetDefaultValue(GenerationMode.ForReals);
  86. Assert.AreEqual("6", result);
  87. m_NodeA.slot2.value = new Vector4(6, 6, 6, 1);
  88. result = m_NodeA.slot2.GetDefaultValue(GenerationMode.ForReals, ConcretePrecision.Half);
  89. Assert.AreEqual("half2 (6, 6)", result);
  90. m_NodeA.slot3.value = new Vector4(6, 6, 6, 1);
  91. result = m_NodeA.slot3.GetDefaultValue(GenerationMode.ForReals, ConcretePrecision.Half);
  92. Assert.AreEqual("half3 (6, 6, 6)", result);
  93. m_NodeA.slot4.value = new Vector4(6, 6, 6, 1);
  94. result = m_NodeA.slot4.GetDefaultValue(GenerationMode.ForReals, ConcretePrecision.Half);
  95. Assert.AreEqual("half4 (6, 6, 6, 1)", result);
  96. }
  97. /* [Test]
  98. public void MaterialSlotThrowsWhenNoOwner()
  99. {
  100. var slot = new MaterialSlot(0, string.Empty, string.Empty, SlotType.Input, SlotValueType.Vector1, Vector4.zero);
  101. Assert.Throws<Exception>(() => slot.GeneratePropertyUsages(new ShaderGenerator(), GenerationMode.Preview));
  102. Assert.Throws<Exception>(() => slot.GetDefaultValue(GenerationMode.Preview));
  103. }*/
  104. }
  105. }