123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119 |
- using System.Collections.Generic;
- using NUnit.Framework;
- using UnityEngine;
- using UnityEditor.Graphing;
- using UnityEditor.ShaderGraph.Internal;
-
- namespace UnityEditor.ShaderGraph.UnitTests
- {
- [TestFixture]
- class BlockNodeTests
- {
- static BlockFieldDescriptor s_DescriptorA = new BlockFieldDescriptor("Test", "BlockA", string.Empty, new FloatControl(0.5f), ShaderStage.Fragment, true);
- static BlockFieldDescriptor s_DescriptorB = new BlockFieldDescriptor("Test", "BlockB", string.Empty, new NormalControl(CoordinateSpace.World), ShaderStage.Fragment, true);
-
- static Vector3MaterialSlot s_MaterialSlot = new Vector3MaterialSlot(0, "Test", "BlockB", SlotType.Input, Vector3.one);
- static CustomSlotBlockFieldDescriptor s_CustomSlotDescriptor = new CustomSlotBlockFieldDescriptor("Test", "CustomBlock", string.Empty,
- () => { return new Vector3MaterialSlot(0, "Test", "BlockB", SlotType.Input, Vector3.one); });
-
- [OneTimeSetUp]
- public void RunBeforeAnyTests()
- {
- Debug.unityLogger.logHandler = new ConsoleLogHandler();
- }
-
- [Test]
- public void CanGatherBlockDescriptors()
- {
- GraphData graph = new GraphData();
- graph.AddContexts();
-
- Assert.IsNotNull(graph.blockFieldDescriptors);
- Assert.AreNotEqual(0, graph.blockFieldDescriptors.Count);
- }
-
- [Test]
- public void CanInitializeBlockNode()
- {
- var node = new BlockNode();
- node.Init(s_DescriptorA);
-
- Assert.IsNotNull(node.descriptor);
- Assert.AreEqual(s_DescriptorA, node.descriptor);
- Assert.AreEqual("Test.BlockA", $"{node.descriptor.tag}.{node.descriptor.name}");
- }
-
- [Test]
- public void CanCreateSlotFromBlockDescriptor()
- {
- var node = new BlockNode();
- node.Init(s_DescriptorA);
- List<MaterialSlot> slots = new List<MaterialSlot>();
- node.GetSlots(slots);
-
- Assert.IsNotNull(slots);
- Assert.AreEqual(1, slots.Count);
-
- var vector3Slot = slots[0] as Vector1MaterialSlot;
- Assert.IsNotNull(vector3Slot);
- Assert.AreEqual(0, vector3Slot.id);
- Assert.AreEqual(s_DescriptorA.displayName, vector3Slot.RawDisplayName());
- Assert.AreEqual(s_DescriptorA.name, vector3Slot.shaderOutputName);
- Assert.AreEqual(SlotType.Input, vector3Slot.slotType);
- Assert.AreEqual(((FloatControl)s_DescriptorA.control).value, vector3Slot.value);
- Assert.AreEqual(s_DescriptorA.shaderStage.GetShaderStageCapability(), vector3Slot.stageCapability);
- }
-
- [Test]
- public void CanCreateSlotFromCustomSlotBlockDescriptor()
- {
- var node = new BlockNode();
- node.Init(s_CustomSlotDescriptor);
- List<MaterialSlot> slots = new List<MaterialSlot>();
- node.GetSlots(slots);
-
- Assert.IsNotNull(slots);
- Assert.AreEqual(1, slots.Count);
- Assert.AreNotEqual(s_MaterialSlot, slots[0]); //We actually WANT to create a new slot in this case
- Assert.AreEqual(s_MaterialSlot.displayName, slots[0].displayName);
- Assert.AreEqual(s_MaterialSlot.valueType, slots[0].valueType);
- Assert.AreEqual(s_MaterialSlot.value, ((Vector3MaterialSlot)slots[0]).value);
- }
-
- [Test]
- public void CanGetRequirementsFromBlockNode()
- {
- var node = new BlockNode();
- node.Init(s_DescriptorB);
-
- var iMayRequireNormals = node as IMayRequireNormal;
- Assert.IsNotNull(iMayRequireNormals);
-
- var neededCoordinateSpace = iMayRequireNormals.RequiresNormal(ShaderStageCapability.Fragment);
- Assert.AreEqual(NeededCoordinateSpace.World, neededCoordinateSpace);
- }
-
- [Test]
- public void CanSerializeDescriptor()
- {
- var node = new BlockNode();
- node.Init(s_DescriptorA);
- node.OnBeforeSerialize();
-
- Assert.AreEqual("Test.BlockA", node.serializedDescriptor);
- }
-
- [Test]
- public void CanGetBlockIndex()
- {
- GraphData graph = new GraphData();
- graph.AddContexts();
-
- var node = new BlockNode();
- node.Init(s_DescriptorA);
- graph.AddBlock(node, graph.fragmentContext, 0);
-
- Assert.AreEqual(0, node.index);
- }
- }
- }
|