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

FixedSlotTests.cs 8.1KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238
  1. using NUnit.Framework;
  2. using UnityEngine;
  3. using UnityEditor.Graphing;
  4. namespace UnityEditor.ShaderGraph.UnitTests
  5. {
  6. [TestFixture]
  7. class FixedSlotTests
  8. {
  9. private GraphData m_Graph;
  10. private TestNode m_NodeA;
  11. private TestNode m_NodeB;
  12. class TestNode : AbstractMaterialNode
  13. {
  14. public const int V1Out = 0;
  15. public const int V2Out = 1;
  16. public const int V3Out = 2;
  17. public const int V4Out = 3;
  18. public const int BoolOut = 8;
  19. public const int TexOut = 10;
  20. public const int V1In = 4;
  21. public const int V2In = 5;
  22. public const int V3In = 6;
  23. public const int V4In = 7;
  24. public const int BoolIn = 9;
  25. public TestNode()
  26. {
  27. AddSlot(new Vector1MaterialSlot(V1Out, "V1Out", "V1Out", SlotType.Output, 0));
  28. AddSlot(new Vector2MaterialSlot(V2Out, "V2Out", "V2Out", SlotType.Output, Vector4.zero));
  29. AddSlot(new Vector3MaterialSlot(V3Out, "V3Out", "V3Out", SlotType.Output, Vector4.zero));
  30. AddSlot(new Vector4MaterialSlot(V4Out, "V4Out", "V4Out", SlotType.Output, Vector4.zero));
  31. AddSlot(new BooleanMaterialSlot(BoolOut, "BOut", "BOut", SlotType.Output, false));
  32. AddSlot(new Texture2DMaterialSlot(TexOut, "TOut", "TOut", SlotType.Output));
  33. AddSlot(new Vector1MaterialSlot(V1In, "V1In", "V1In", SlotType.Input, 0));
  34. AddSlot(new Vector2MaterialSlot(V2In, "V2In", "V2In", SlotType.Input, Vector4.zero));
  35. AddSlot(new Vector3MaterialSlot(V3In, "V3In", "V3In", SlotType.Input, Vector4.zero));
  36. AddSlot(new Vector4MaterialSlot(V4In, "V4In", "V4In", SlotType.Input, Vector4.zero));
  37. AddSlot(new BooleanMaterialSlot(BoolIn, "BIn", "BIn", SlotType.Input, false));
  38. }
  39. }
  40. [OneTimeSetUp]
  41. public void RunBeforeAnyTests()
  42. {
  43. Debug.unityLogger.logHandler = new ConsoleLogHandler();
  44. }
  45. [SetUp]
  46. public void TestSetUp()
  47. {
  48. m_Graph = new GraphData();
  49. m_NodeA = new TestNode();
  50. m_NodeB = new TestNode();
  51. m_Graph.AddNode(m_NodeA);
  52. m_Graph.AddNode(m_NodeB);
  53. }
  54. [Test]
  55. public void ConnectV1ToV1Works()
  56. {
  57. m_Graph.Connect(m_NodeA.GetSlotReference(TestNode.V1Out), m_NodeB.GetSlotReference(TestNode.V1In));
  58. Assert.IsFalse(m_NodeB.hasError);
  59. }
  60. [Test]
  61. public void ConnectBoolToV1Works()
  62. {
  63. m_Graph.Connect(m_NodeA.GetSlotReference(TestNode.BoolOut), m_NodeB.GetSlotReference(TestNode.V1In));
  64. Assert.IsFalse(m_NodeB.hasError);
  65. }
  66. [Test]
  67. public void ConnectV1ToV2Works()
  68. {
  69. m_Graph.Connect(m_NodeA.GetSlotReference(TestNode.V1Out), m_NodeB.GetSlotReference(TestNode.V2In));
  70. Assert.IsFalse(m_NodeB.hasError);
  71. }
  72. [Test]
  73. public void ConnectBoolToV2Works()
  74. {
  75. m_Graph.Connect(m_NodeA.GetSlotReference(TestNode.BoolOut), m_NodeB.GetSlotReference(TestNode.V2In));
  76. Assert.IsFalse(m_NodeB.hasError);
  77. }
  78. [Test]
  79. public void ConnectV1ToV3Works()
  80. {
  81. m_Graph.Connect(m_NodeA.GetSlotReference(TestNode.V1Out), m_NodeB.GetSlotReference(TestNode.V3In));
  82. Assert.IsFalse(m_NodeB.hasError);
  83. }
  84. [Test]
  85. public void ConnectBoolToV3Works()
  86. {
  87. m_Graph.Connect(m_NodeA.GetSlotReference(TestNode.BoolOut), m_NodeB.GetSlotReference(TestNode.V3In));
  88. Assert.IsFalse(m_NodeB.hasError);
  89. }
  90. [Test]
  91. public void ConnectV1ToV4Works()
  92. {
  93. m_Graph.Connect(m_NodeA.GetSlotReference(TestNode.V1Out), m_NodeB.GetSlotReference(TestNode.V4In));
  94. Assert.IsFalse(m_NodeB.hasError);
  95. }
  96. [Test]
  97. public void ConnectBoolToV4Works()
  98. {
  99. m_Graph.Connect(m_NodeA.GetSlotReference(TestNode.BoolOut), m_NodeB.GetSlotReference(TestNode.V4In));
  100. Assert.IsFalse(m_NodeB.hasError);
  101. }
  102. [Test]
  103. public void ConnectV2ToV1Works()
  104. {
  105. m_Graph.Connect(m_NodeA.GetSlotReference(TestNode.V2Out), m_NodeB.GetSlotReference(TestNode.V1In));
  106. Assert.IsFalse(m_NodeB.hasError);
  107. }
  108. [Test]
  109. public void ConnectV2ToBoolWorks()
  110. {
  111. m_Graph.Connect(m_NodeA.GetSlotReference(TestNode.V2Out), m_NodeB.GetSlotReference(TestNode.BoolIn));
  112. Assert.IsFalse(m_NodeB.hasError);
  113. }
  114. [Test]
  115. public void ConnectV2ToV2Works()
  116. {
  117. m_Graph.Connect(m_NodeA.GetSlotReference(TestNode.V2Out), m_NodeB.GetSlotReference(TestNode.V2In));
  118. Assert.IsFalse(m_NodeB.hasError);
  119. }
  120. [Test]
  121. public void ConnectV2ToV3Works()
  122. {
  123. m_Graph.Connect(m_NodeA.GetSlotReference(TestNode.V2Out), m_NodeB.GetSlotReference(TestNode.V3In));
  124. Assert.IsFalse(m_NodeB.hasError);
  125. }
  126. [Test]
  127. public void ConnectV2ToV4Works()
  128. {
  129. m_Graph.Connect(m_NodeA.GetSlotReference(TestNode.V2Out), m_NodeB.GetSlotReference(TestNode.V4In));
  130. Assert.IsFalse(m_NodeB.hasError);
  131. }
  132. [Test]
  133. public void ConnectV3ToV1Works()
  134. {
  135. m_Graph.Connect(m_NodeA.GetSlotReference(TestNode.V3Out), m_NodeB.GetSlotReference(TestNode.V1In));
  136. Assert.IsFalse(m_NodeB.hasError);
  137. }
  138. [Test]
  139. public void ConnectV3ToBoolWorks()
  140. {
  141. m_Graph.Connect(m_NodeA.GetSlotReference(TestNode.V3Out), m_NodeB.GetSlotReference(TestNode.BoolIn));
  142. Assert.IsFalse(m_NodeB.hasError);
  143. }
  144. [Test]
  145. public void ConnectV3ToV2Works()
  146. {
  147. m_Graph.Connect(m_NodeA.GetSlotReference(TestNode.V3Out), m_NodeB.GetSlotReference(TestNode.V2In));
  148. Assert.IsFalse(m_NodeB.hasError);
  149. }
  150. [Test]
  151. public void ConnectV3ToV3Works()
  152. {
  153. m_Graph.Connect(m_NodeA.GetSlotReference(TestNode.V3Out), m_NodeB.GetSlotReference(TestNode.V3In));
  154. Assert.IsFalse(m_NodeB.hasError);
  155. }
  156. [Test]
  157. public void ConnectV3ToV4Works()
  158. {
  159. m_Graph.Connect(m_NodeA.GetSlotReference(TestNode.V3Out), m_NodeB.GetSlotReference(TestNode.V4In));
  160. Assert.IsFalse(m_NodeB.hasError);
  161. }
  162. [Test]
  163. public void ConnectV4ToV1Works()
  164. {
  165. m_Graph.Connect(m_NodeA.GetSlotReference(TestNode.V4Out), m_NodeB.GetSlotReference(TestNode.V1In));
  166. Assert.IsFalse(m_NodeB.hasError);
  167. }
  168. [Test]
  169. public void ConnectV4ToBoolWorks()
  170. {
  171. m_Graph.Connect(m_NodeA.GetSlotReference(TestNode.V4Out), m_NodeB.GetSlotReference(TestNode.BoolIn));
  172. Assert.IsFalse(m_NodeB.hasError);
  173. }
  174. [Test]
  175. public void ConnectV4ToV2Works()
  176. {
  177. m_Graph.Connect(m_NodeA.GetSlotReference(TestNode.V4Out), m_NodeB.GetSlotReference(TestNode.V2In));
  178. Assert.IsFalse(m_NodeB.hasError);
  179. }
  180. [Test]
  181. public void ConnectV4ToV3Works()
  182. {
  183. m_Graph.Connect(m_NodeA.GetSlotReference(TestNode.V4Out), m_NodeB.GetSlotReference(TestNode.V3In));
  184. Assert.IsFalse(m_NodeB.hasError);
  185. }
  186. [Test]
  187. public void ConnectV4ToV4Works()
  188. {
  189. m_Graph.Connect(m_NodeA.GetSlotReference(TestNode.V4Out), m_NodeB.GetSlotReference(TestNode.V4In));
  190. Assert.IsFalse(m_NodeB.hasError);
  191. }
  192. [Test]
  193. public void ConnectBoolToBoolWorks()
  194. {
  195. m_Graph.Connect(m_NodeA.GetSlotReference(TestNode.BoolOut), m_NodeB.GetSlotReference(TestNode.BoolIn));
  196. Assert.IsFalse(m_NodeB.hasError);
  197. }
  198. [Test]
  199. public void ConnectTexToBoolFails()
  200. {
  201. m_Graph.Connect(m_NodeA.GetSlotReference(TestNode.TexOut), m_NodeB.GetSlotReference(TestNode.BoolIn));
  202. Assert.IsTrue(m_NodeB.hasError);
  203. }
  204. }
  205. }