public void GetOutputValueCastsValueType()
        {
            var node   = new TestNodeA();
            var actual = node.GetOutputValue <float>("Output");

            Assert.AreEqual(6f, actual);
        }
        public void GetOutputValueDefaultsToInstanceField()
        {
            var node   = new TestNodeA();
            var actual = node.GetOutputValue <int>("Output");

            Assert.AreEqual(6, actual);
        }
        public void GetOutputPortThrowsOnUnknownPort()
        {
            var node = new TestNodeA();

            Assert.Throws <ArgumentException>(
                () => node.GetOutputValue <int>("Bad Port")
                );
        }
        public void GetOutputValueReadsInputPortValues()
        {
            var graph = ScriptableObject.CreateInstance <TestGraph>();
            var node1 = new TestNodeA();
            var node2 = new TestNodeA();

            graph.AddNode(node1);
            graph.AddNode(node2);

            graph.AddEdge(
                node1.GetPort("Output"),
                node2.GetPort("Input")
                );

            var actual = node2.GetOutputValue <int>("Output");

            // node1.OnRequestValue() + node2.OnRequestValue()
            var expected = (5 + 1) + 1;

            Assert.AreEqual(expected, actual);
        }