Aucune description
Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.

MaterialSlotTests.cs 4.6KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130
  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. m_NodeA.SetOverrideActiveState(AbstractMaterialNode.ActiveState.ExplicitActive);
  47. }
  48. [Test]
  49. public void SlotDisplayNameIsCorrect()
  50. {
  51. Assert.AreEqual("V1In(1)", m_NodeA.slot1.displayName);
  52. Assert.AreEqual("V2In(2)", m_NodeA.slot2.displayName);
  53. Assert.AreEqual("V3In(3)", m_NodeA.slot3.displayName);
  54. Assert.AreEqual("V4In(4)", m_NodeA.slot4.displayName);
  55. }
  56. [Test]
  57. public void CanUpdateMaterialSlotDefaultValue()
  58. {
  59. var slot = m_NodeA.slot1;
  60. slot.value = 1;
  61. Assert.AreEqual(1, slot.defaultValue);
  62. }
  63. [Test]
  64. public void CanUpdateMaterialSlotCurrentValue()
  65. {
  66. var slot = m_NodeA.slot1;
  67. slot.value = 1;
  68. Assert.AreEqual(1, 1);
  69. }
  70. /* [Test]
  71. public void MaterialSlotCanGeneratePropertyUsagesForPreview()
  72. {
  73. string expected = string.Format("{0} {1};{2}", m_NodeA.precision, m_NodeA.GetVariableNameForSlot(TestNode.V1In), Environment.NewLine);
  74. var slot = m_NodeA.slot;
  75. var visitor = new ShaderGenerator();
  76. slot.GeneratePropertyUsages(visitor, GenerationMode.Preview);
  77. Assert.AreEqual(expected, visitor.GetShaderString(0));
  78. }*/
  79. [Test]
  80. public void MaterialSlotReturnsValidDefaultValue()
  81. {
  82. string expected = string.Format("{0}", m_NodeA.GetVariableNameForSlot(TestNode.V1In));
  83. var result = m_NodeA.slot1.GetDefaultValue(GenerationMode.Preview);
  84. Assert.AreEqual(expected, result);
  85. m_NodeA.slot1.value = 6;
  86. result = m_NodeA.slot1.GetDefaultValue(GenerationMode.ForReals, ConcretePrecision.Half);
  87. Assert.AreEqual("half(6)", result);
  88. m_NodeA.slot2.value = new Vector4(6, 6, 6, 1);
  89. result = m_NodeA.slot2.GetDefaultValue(GenerationMode.ForReals, ConcretePrecision.Half);
  90. Assert.AreEqual("half2 (6, 6)", result);
  91. m_NodeA.slot3.value = new Vector4(6, 6, 6, 1);
  92. result = m_NodeA.slot3.GetDefaultValue(GenerationMode.ForReals, ConcretePrecision.Half);
  93. Assert.AreEqual("half3 (6, 6, 6)", result);
  94. m_NodeA.slot4.value = new Vector4(6, 6, 6, 1);
  95. result = m_NodeA.slot4.GetDefaultValue(GenerationMode.ForReals, ConcretePrecision.Half);
  96. Assert.AreEqual("half4 (6, 6, 6, 1)", result);
  97. }
  98. /* [Test]
  99. public void MaterialSlotThrowsWhenNoOwner()
  100. {
  101. var slot = new MaterialSlot(0, string.Empty, string.Empty, SlotType.Input, SlotValueType.Vector1, Vector4.zero);
  102. Assert.Throws<Exception>(() => slot.GeneratePropertyUsages(new ShaderGenerator(), GenerationMode.Preview));
  103. Assert.Throws<Exception>(() => slot.GetDefaultValue(GenerationMode.Preview));
  104. }*/
  105. }
  106. }