public void GenericInputTypeIsSolved(ClassType t, string methodName, Type connectedType, int methodParameterIndex, Type expectedInputType) { Type methodDeclaringType = t == ClassType.Plain ? typeof(C) : typeof(D <>); FunctionCallNodeModel call = GraphModel.CreateNode <FunctionCallNodeModel>("funcNode", Vector2.zero); call.GraphModel = GraphModel; call.MethodInfo = methodDeclaringType.GetMethod(methodName); Assert.NotNull(call.MethodInfo); var param = call.MethodInfo.GetParameters()[methodParameterIndex]; call.DefineNode(); var p = new PortModel { Direction = Direction.Output, PortType = PortType.Data, DataType = connectedType.GenerateTypeHandle(Stencil), }; var parameterPort = call.GetPortForParameter(param.Name); call.OnConnection(parameterPort, p); Assert.That(parameterPort.DataType, Is.EqualTo(expectedInputType.GenerateTypeHandle(Stencil))); }
public void GenericOutputTypeIsSolved(ClassType t, string methodName, Type connectedType, int methodParameterIndex, Type expectedOutputType) { Type methodDeclaringType = t == ClassType.Plain ? typeof(C) : typeof(D <>); FunctionCallNodeModel call = GraphModel.CreateNode <FunctionCallNodeModel>("funcNode", Vector2.zero); call.GraphModel = GraphModel; call.MethodInfo = methodDeclaringType.GetMethod(methodName); Assert.That(call.MethodInfo, Is.Not.Null); call.DefineNode(); IPortModel parameterPort; if (methodParameterIndex == k_InstanceIndex) { Assert.That(call.MethodInfo.IsStatic || call.MethodInfo.IsConstructor, Is.False); parameterPort = call.InstancePort; } else { var param = call.MethodInfo.GetParameters()[methodParameterIndex]; parameterPort = call.GetPortForParameter(param.Name); } var p = new PortModel { Direction = Direction.Output, PortType = PortType.Data, DataType = connectedType.GenerateTypeHandle(Stencil), }; call.OnConnection(parameterPort, p); if (expectedOutputType != typeof(void)) { Assert.That(call.OutputPort.DataType, Is.EqualTo(expectedOutputType.GenerateTypeHandle(Stencil))); } }