PropertyNodeTests.cs 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522
  1. using System;
  2. using UnityEngine;
  3. namespace UnityEditor.ShaderGraph.UnitTests
  4. {
  5. /* [TestFixture]
  6. public class PropertyNodeTests
  7. {
  8. private class TestPropertyNode : PropertyNode
  9. {
  10. public const string TestPropertyName = "TestName";
  11. public override PropertyType propertyType
  12. {
  13. get { return PropertyType.Float; }
  14. }
  15. public override PreviewProperty GetPreviewProperty()
  16. {
  17. return new PreviewProperty()
  18. {
  19. m_Name = TestPropertyName
  20. };
  21. }
  22. }
  23. private UnityEngine.MaterialGraph.MaterialGraph m_Graph;
  24. private Vector1Node m_Vector1Node;
  25. private Vector2Node m_Vector2Node;
  26. private Vector3Node m_Vector3Node;
  27. private Vector4Node m_Vector4Node;
  28. private ColorNode m_ColorNode;
  29. // private Texture2DNode m_TextureNode;
  30. private TestPropertyNode m_PropertyNode;
  31. private const string kPropertyName = "PropertyName";
  32. public const string kDescription = "NewDescription";
  33. [TestFixtureSetUp]
  34. public void RunBeforeAnyTests()
  35. {
  36. Debug.unityLogger.logHandler = new ConsoleLogHandler();
  37. }
  38. [SetUp]
  39. public void TestSetUp()
  40. {
  41. m_Graph = new UnityEngine.MaterialGraph.MaterialGraph();
  42. m_Vector1Node = new Vector1Node();
  43. m_Vector2Node = new Vector2Node();
  44. m_Vector3Node = new Vector3Node();
  45. m_Vector4Node = new Vector4Node();
  46. m_ColorNode = new ColorNode();
  47. // m_TextureNode = new Texture2DNode();
  48. m_PropertyNode = new TestPropertyNode();
  49. m_Graph.AddNode(m_Vector1Node);
  50. m_Graph.AddNode(m_Vector2Node);
  51. m_Graph.AddNode(m_Vector3Node);
  52. m_Graph.AddNode(m_Vector4Node);
  53. m_Graph.AddNode(m_ColorNode);
  54. m_Graph.AddNode(m_TextureNode);
  55. m_Graph.AddNode(m_PropertyNode);
  56. }
  57. /* [Test]
  58. public void TestExposedPropertyReturnsRawName()
  59. {
  60. m_PropertyNode.exposedState = PropertyNode.ExposedState.Exposed;
  61. m_PropertyNode.propertyName = kPropertyName;
  62. Assert.AreEqual(kPropertyName + "_Uniform", m_PropertyNode.propertyName);
  63. }
  64. [Test]
  65. public void TestNonExposedPropertyReturnsGeneratedName()
  66. {
  67. var expected = string.Format("{0}_{1}_Uniform", m_PropertyNode.name, m_PropertyNode.guid.ToString().Replace("-", "_"));
  68. m_PropertyNode.exposedState = PropertyNode.ExposedState.NotExposed;
  69. m_PropertyNode.propertyName = kPropertyName;
  70. Assert.AreEqual(expected, m_PropertyNode.propertyName);
  71. }
  72. [Test]
  73. public void TestPropertyNodeDescriptionWorks()
  74. {
  75. m_PropertyNode.propertyName = kPropertyName;
  76. m_PropertyNode.description = kDescription;
  77. Assert.AreEqual(kDescription, m_PropertyNode.description);
  78. }
  79. [Test]
  80. public void TestPropertyNodeDescriptionReturnsPropertyNameWhenNoDescriptionSet()
  81. {
  82. m_PropertyNode.propertyName = kPropertyName;
  83. m_PropertyNode.description = string.Empty;
  84. Assert.AreEqual(kPropertyName, m_PropertyNode.description);
  85. }
  86. [Test]
  87. public void TestPropertyNodeReturnsPreviewProperty()
  88. {
  89. var props = new List<PreviewProperty>();
  90. m_PropertyNode.CollectPreviewMaterialProperties(props);
  91. Assert.AreEqual(props.Count, 1);
  92. Assert.AreEqual(TestPropertyNode.TestPropertyName, props[0].m_Name);
  93. }
  94. [Test]
  95. public void TestDuplicatedPropertyNameGeneratesErrorWhenExposed()
  96. {
  97. const string failName = "SameName";
  98. m_Vector1Node.exposedState = PropertyNode.ExposedState.Exposed;
  99. m_Vector1Node.propertyName = failName;
  100. m_Vector2Node.exposedState = PropertyNode.ExposedState.Exposed;
  101. m_Vector2Node.propertyName = failName;
  102. m_Vector1Node.ValidateNode();
  103. m_Vector2Node.ValidateNode();
  104. Assert.IsTrue(m_Vector1Node.hasError);
  105. Assert.IsTrue(m_Vector2Node.hasError);
  106. }
  107. [Test]
  108. public void TestDuplicatedPropertyNameGeneratesNoErrorWhenNotExposed()
  109. {
  110. const string failName = "SameName";
  111. m_Vector1Node.exposedState = PropertyNode.ExposedState.NotExposed;
  112. m_Vector1Node.propertyName = failName;
  113. m_Vector2Node.exposedState = PropertyNode.ExposedState.Exposed;
  114. m_Vector2Node.propertyName = failName;
  115. m_Vector1Node.ValidateNode();
  116. m_Vector2Node.ValidateNode();
  117. Assert.IsFalse(m_Vector1Node.hasError);
  118. Assert.IsFalse(m_Vector2Node.hasError);
  119. }*
  120. [Test]
  121. public void TestPropertyExposedOnSubgraphReturnsFalse()
  122. {
  123. var subGraph = new SubGraph();
  124. var subNode = new TestPropertyNode();
  125. subNode.exposedState = PropertyNode.ExposedState.Exposed;
  126. subGraph.AddNode(subNode);
  127. Assert.AreEqual(PropertyNode.ExposedState.NotExposed, subNode.exposedState);
  128. m_PropertyNode.exposedState = PropertyNode.ExposedState.Exposed;
  129. Assert.AreEqual(PropertyNode.ExposedState.Exposed, m_PropertyNode.exposedState);
  130. }
  131. [Test]
  132. public void TestVector1NodeTypeIsCorrect()
  133. {
  134. Assert.AreEqual(PropertyType.Float, m_Vector1Node.propertyType);
  135. }
  136. [Test]
  137. public void TestVector1NodeReturnsCorrectValue()
  138. {
  139. m_Vector1Node.value = 0.6f;
  140. Assert.AreEqual(0.6f, m_Vector1Node.value);
  141. }
  142. [Test]
  143. public void TestVector1NodeReturnsPreviewProperty()
  144. {
  145. var props = new List<PreviewProperty>();
  146. m_Vector1Node.value = 0.6f;
  147. m_Vector1Node.CollectPreviewMaterialProperties(props);
  148. Assert.AreEqual(props.Count, 1);
  149. Assert.AreEqual(m_Vector1Node.propertyName, props[0].m_Name);
  150. Assert.AreEqual(m_Vector1Node.propertyType, props[0].m_PropType);
  151. Assert.AreEqual(0.6f, props[0].m_Float);
  152. }
  153. [Test]
  154. public void TestVector1NodeGeneratesCorrectPropertyBlock()
  155. {
  156. m_Vector1Node.value = 0.6f;
  157. m_Vector1Node.exposedState = PropertyNode.ExposedState.NotExposed;
  158. var generator = new PropertyGenerator();
  159. m_Vector1Node.GeneratePropertyBlock(generator, GenerationMode.ForReals);
  160. Assert.AreEqual(string.Empty, generator.GetShaderString(0));
  161. var expected = m_Vector1Node.propertyName
  162. + "(\""
  163. + m_Vector1Node.description
  164. + "\", Float) = "
  165. + m_Vector1Node.value
  166. + Environment.NewLine;
  167. m_Vector1Node.exposedState = PropertyNode.ExposedState.Exposed;
  168. m_Vector1Node.GeneratePropertyBlock(generator, GenerationMode.ForReals);
  169. Assert.AreEqual(expected, generator.GetShaderString(0));
  170. }
  171. [Test]
  172. public void TestVector1NodeGeneratesCorrectPropertyUsages()
  173. {
  174. m_Vector1Node.value = 0.6f;
  175. m_Vector1Node.exposedState = PropertyNode.ExposedState.NotExposed;
  176. var generator = new ShaderGenerator();
  177. m_Vector1Node.GeneratePropertyUsages(generator, GenerationMode.ForReals);
  178. Assert.AreEqual(string.Empty, generator.GetShaderString(0));
  179. var expected = m_Vector1Node.precision
  180. + " "
  181. + m_Vector1Node.propertyName
  182. + ";"
  183. + Environment.NewLine;
  184. m_Vector1Node.exposedState = PropertyNode.ExposedState.Exposed;
  185. m_Vector1Node.GeneratePropertyUsages(generator, GenerationMode.ForReals);
  186. Assert.AreEqual(expected, generator.GetShaderString(0));
  187. }
  188. [Test]
  189. public void TestVector2NodeTypeIsCorrect()
  190. {
  191. Assert.AreEqual(PropertyType.Vector2, m_Vector2Node.propertyType);
  192. }
  193. [Test]
  194. public void TestVector2NodeReturnsCorrectValue()
  195. {
  196. var value = new Vector2(0.6f, 0.7f);
  197. m_Vector2Node.value = value;
  198. Assert.AreEqual(value, m_Vector2Node.value);
  199. }
  200. [Test]
  201. public void TestVector2NodeReturnsPreviewProperty()
  202. {
  203. var value = new Vector2(0.6f, 0.7f);
  204. var props = new List<PreviewProperty>();
  205. m_Vector2Node.value = value;
  206. m_Vector2Node.CollectPreviewMaterialProperties(props);
  207. Assert.AreEqual(props.Count, 1);
  208. Assert.AreEqual(m_Vector2Node.propertyName, props[0].m_Name);
  209. Assert.AreEqual(m_Vector2Node.propertyType, props[0].m_PropType);
  210. Assert.AreEqual(value, m_Vector2Node.value);
  211. }
  212. [Test]
  213. public void TestVector2NodeGeneratesCorrectPropertyBlock()
  214. {
  215. var value = new Vector2(0.6f, 0.7f);
  216. m_Vector2Node.value = value;
  217. m_Vector2Node.exposedState = PropertyNode.ExposedState.NotExposed;
  218. var generator = new PropertyGenerator();
  219. m_Vector2Node.GeneratePropertyBlock(generator, GenerationMode.ForReals);
  220. Assert.AreEqual(string.Empty, generator.GetShaderString(0));
  221. var expected = m_Vector2Node.propertyName
  222. + "(\""
  223. + m_Vector2Node.description
  224. + "\", Vector) = ("
  225. + m_Vector2Node.value.x
  226. + ","
  227. + m_Vector2Node.value.y
  228. + ",0,0)"
  229. + Environment.NewLine;
  230. m_Vector2Node.exposedState = PropertyNode.ExposedState.Exposed;
  231. m_Vector2Node.GeneratePropertyBlock(generator, GenerationMode.ForReals);
  232. Assert.AreEqual(expected, generator.GetShaderString(0));
  233. }
  234. [Test]
  235. public void TestVector2NodeGeneratesCorrectPropertyUsages()
  236. {
  237. var value = new Vector2(0.6f, 0.7f);
  238. m_Vector2Node.value = value;
  239. m_Vector2Node.exposedState = PropertyNode.ExposedState.NotExposed;
  240. var generator = new ShaderGenerator();
  241. m_Vector2Node.GeneratePropertyUsages(generator, GenerationMode.ForReals);
  242. Assert.AreEqual(string.Empty, generator.GetShaderString(0));
  243. var expected = m_Vector2Node.precision
  244. + "2 "
  245. + m_Vector2Node.propertyName
  246. + ";"
  247. + Environment.NewLine;
  248. m_Vector2Node.exposedState = PropertyNode.ExposedState.Exposed;
  249. m_Vector2Node.GeneratePropertyUsages(generator, GenerationMode.ForReals);
  250. Assert.AreEqual(expected, generator.GetShaderString(0));
  251. }
  252. [Test]
  253. public void TestVector3NodeTypeIsCorrect()
  254. {
  255. Assert.AreEqual(PropertyType.Vector3, m_Vector3Node.propertyType);
  256. }
  257. [Test]
  258. public void TestVector3NodeReturnsCorrectValue()
  259. {
  260. var value = new Vector3(0.6f, 0.7f, 0.4f);
  261. m_Vector3Node.value = value;
  262. Assert.AreEqual(value, m_Vector3Node.value);
  263. }
  264. [Test]
  265. public void TestVector3NodeReturnsPreviewProperty()
  266. {
  267. var value = new Vector3(0.6f, 0.7f, 0.4f);
  268. var props = new List<PreviewProperty>();
  269. m_Vector3Node.value = value;
  270. m_Vector3Node.CollectPreviewMaterialProperties(props);
  271. Assert.AreEqual(props.Count, 1);
  272. Assert.AreEqual(m_Vector3Node.propertyName, props[0].m_Name);
  273. Assert.AreEqual(m_Vector3Node.propertyType, props[0].m_PropType);
  274. Assert.AreEqual(value, m_Vector3Node.value);
  275. }
  276. [Test]
  277. public void TestVector3NodeGeneratesCorrectPropertyBlock()
  278. {
  279. var value = new Vector3(0.6f, 0.7f, 0.4f);
  280. m_Vector3Node.value = value;
  281. m_Vector3Node.exposedState = PropertyNode.ExposedState.NotExposed;
  282. var generator = new PropertyGenerator();
  283. m_Vector3Node.GeneratePropertyBlock(generator, GenerationMode.ForReals);
  284. Assert.AreEqual(string.Empty, generator.GetShaderString(0));
  285. var expected = m_Vector3Node.propertyName
  286. + "(\""
  287. + m_Vector3Node.description
  288. + "\", Vector) = ("
  289. + m_Vector3Node.value.x
  290. + ","
  291. + m_Vector3Node.value.y
  292. + ","
  293. + m_Vector3Node.value.z
  294. + ",0)"
  295. + Environment.NewLine;
  296. m_Vector3Node.exposedState = PropertyNode.ExposedState.Exposed;
  297. m_Vector3Node.GeneratePropertyBlock(generator, GenerationMode.ForReals);
  298. Assert.AreEqual(expected, generator.GetShaderString(0));
  299. }
  300. [Test]
  301. public void TestVector3NodeGeneratesCorrectPropertyUsages()
  302. {
  303. var value = new Vector3(0.6f, 0.7f, 0.4f);
  304. m_Vector3Node.value = value;
  305. m_Vector3Node.exposedState = PropertyNode.ExposedState.NotExposed;
  306. var generator = new ShaderGenerator();
  307. m_Vector3Node.GeneratePropertyUsages(generator, GenerationMode.ForReals);
  308. Assert.AreEqual(string.Empty, generator.GetShaderString(0));
  309. var expected = m_Vector3Node.precision
  310. + "3 "
  311. + m_Vector3Node.propertyName
  312. + ";"
  313. + Environment.NewLine;
  314. m_Vector3Node.exposedState = PropertyNode.ExposedState.Exposed;
  315. m_Vector3Node.GeneratePropertyUsages(generator, GenerationMode.ForReals);
  316. Assert.AreEqual(expected, generator.GetShaderString(0));
  317. }
  318. [Test]
  319. public void TestVector4NodeTypeIsCorrect()
  320. {
  321. Assert.AreEqual(PropertyType.Vector4, m_Vector4Node.propertyType);
  322. }
  323. [Test]
  324. public void TestVector4NodeReturnsCorrectValue()
  325. {
  326. var value = new Vector4(0.6f, 0.7f, 0.4f, 0.3f);
  327. m_Vector4Node.value = value;
  328. Assert.AreEqual(value, m_Vector4Node.value);
  329. }
  330. [Test]
  331. public void TestVector4NodeReturnsPreviewProperty()
  332. {
  333. var value = new Vector4(0.6f, 0.7f, 0.4f, 0.3f);
  334. var props = new List<PreviewProperty>();
  335. m_Vector4Node.value = value;
  336. m_Vector4Node.CollectPreviewMaterialProperties(props);
  337. Assert.AreEqual(props.Count, 1);
  338. Assert.AreEqual(m_Vector4Node.propertyName, props[0].m_Name);
  339. Assert.AreEqual(m_Vector4Node.propertyType, props[0].m_PropType);
  340. Assert.AreEqual(value, m_Vector4Node.value);
  341. }
  342. [Test]
  343. public void TestVector4NodeGeneratesCorrectPropertyBlock()
  344. {
  345. var value = new Vector4(0.6f, 0.7f, 0.4f, 0.3f);
  346. m_Vector4Node.value = value;
  347. m_Vector4Node.exposedState = PropertyNode.ExposedState.NotExposed;
  348. var generator = new PropertyGenerator();
  349. m_Vector4Node.GeneratePropertyBlock(generator, GenerationMode.ForReals);
  350. Assert.AreEqual(string.Empty, generator.GetShaderString(0));
  351. var expected = m_Vector4Node.propertyName
  352. + "(\""
  353. + m_Vector4Node.description
  354. + "\", Vector) = ("
  355. + m_Vector4Node.value.x
  356. + ","
  357. + m_Vector4Node.value.y
  358. + ","
  359. + m_Vector4Node.value.z
  360. + ","
  361. + m_Vector4Node.value.w
  362. + ")"
  363. + Environment.NewLine;
  364. m_Vector4Node.exposedState = PropertyNode.ExposedState.Exposed;
  365. m_Vector4Node.GeneratePropertyBlock(generator, GenerationMode.ForReals);
  366. Assert.AreEqual(expected, generator.GetShaderString(0));
  367. }
  368. [Test]
  369. public void TestVector4NodeGeneratesCorrectPropertyUsages()
  370. {
  371. var value = new Vector4(0.6f, 0.7f, 0.4f, 0.3f);
  372. m_Vector4Node.value = value;
  373. m_Vector4Node.exposedState = PropertyNode.ExposedState.NotExposed;
  374. var generator = new ShaderGenerator();
  375. m_Vector4Node.GeneratePropertyUsages(generator, GenerationMode.ForReals);
  376. Assert.AreEqual(string.Empty, generator.GetShaderString(0));
  377. var expected = m_Vector4Node.precision
  378. + "4 "
  379. + m_Vector4Node.propertyName
  380. + ";"
  381. + Environment.NewLine;
  382. m_Vector4Node.exposedState = PropertyNode.ExposedState.Exposed;
  383. m_Vector4Node.GeneratePropertyUsages(generator, GenerationMode.ForReals);
  384. Assert.AreEqual(expected, generator.GetShaderString(0));
  385. }
  386. [Test]
  387. public void TestColorNodeTypeIsCorrect()
  388. {
  389. Assert.AreEqual(PropertyType.Color, m_ColorNode.propertyType);
  390. }
  391. [Test]
  392. public void TestColorNodeReturnsCorrectValue()
  393. {
  394. var value = new Color(0.6f, 0.7f, 0.4f, 0.3f);
  395. m_ColorNode.color = value;
  396. Assert.AreEqual(value, m_ColorNode.color);
  397. }
  398. [Test]
  399. public void TestColorNodeReturnsPreviewProperty()
  400. {
  401. var value = new Color(0.6f, 0.7f, 0.4f, 0.3f);
  402. var props = new List<PreviewProperty>();
  403. m_ColorNode.color = value;
  404. m_ColorNode.CollectPreviewMaterialProperties(props);
  405. Assert.AreEqual(props.Count, 1);
  406. Assert.AreEqual(m_ColorNode.propertyName, props[0].m_Name);
  407. Assert.AreEqual(m_ColorNode.propertyType, props[0].m_PropType);
  408. Assert.AreEqual(value, m_ColorNode.color);
  409. }
  410. [Test]
  411. public void TestColorNodeGeneratesCorrectPropertyBlock()
  412. {
  413. var value = new Color(0.6f, 0.7f, 0.4f, 0.3f);
  414. m_ColorNode.color = value;
  415. m_ColorNode.exposedState = PropertyNode.ExposedState.NotExposed;
  416. var generator = new PropertyGenerator();
  417. m_ColorNode.GeneratePropertyBlock(generator, GenerationMode.ForReals);
  418. Assert.AreEqual(string.Empty, generator.GetShaderString(0));
  419. var expected = m_ColorNode.propertyName
  420. + "(\""
  421. + m_ColorNode.description
  422. + "\", Color) = ("
  423. + m_ColorNode.color.r
  424. + ","
  425. + m_ColorNode.color.g
  426. + ","
  427. + m_ColorNode.color.b
  428. + ","
  429. + m_ColorNode.color.a
  430. + ")"
  431. + Environment.NewLine;
  432. m_ColorNode.exposedState = PropertyNode.ExposedState.Exposed;
  433. m_ColorNode.GeneratePropertyBlock(generator, GenerationMode.ForReals);
  434. Assert.AreEqual(expected, generator.GetShaderString(0));
  435. }
  436. [Test]
  437. public void TestColorNodeGeneratesCorrectPropertyUsages()
  438. {
  439. var value = new Color(0.6f, 0.7f, 0.4f, 0.3f);
  440. m_ColorNode.color = value;
  441. m_ColorNode.exposedState = PropertyNode.ExposedState.NotExposed;
  442. var generator = new ShaderGenerator();
  443. m_ColorNode.GeneratePropertyUsages(generator, GenerationMode.ForReals);
  444. Assert.AreEqual(string.Empty, generator.GetShaderString(0));
  445. var expected = m_ColorNode.precision
  446. + "4 "
  447. + m_ColorNode.propertyName
  448. + ";"
  449. + Environment.NewLine;
  450. m_ColorNode.exposedState = PropertyNode.ExposedState.Exposed;
  451. m_ColorNode.GeneratePropertyUsages(generator, GenerationMode.ForReals);
  452. Assert.AreEqual(expected, generator.GetShaderString(0));
  453. }
  454. }*/
  455. }