public void WhenNoInputs_ThenEmptyArrayReturned() { var mps = new MethodParameterService(); var parms = mps.GetParams(new string [] { }, typeof(FakeFunction).GetTypeInfo().GetMethod("NoInputs", new Type [] { })); parms.Should().BeEmpty(); }
public void WhenSingleStringWithDefaultInput_ThenDefaultReturned() { var mps = new MethodParameterService(); var parms = mps.GetParams(new string[] { }, typeof(FakeFunction).GetTypeInfo().GetMethod("DefaultStringInput", new Type[] { typeof(string) })); parms.Count().Should().Be(1); parms.Single().Should().Be("default"); }
private async Task ExecuteStepAsync(object instance, Step step) { var functionMethods = instance.GetType() .GetRuntimeMethods() .Where(m => m.Name == step.Function.MethodName); if (!functionMethods.Any()) { throw new ArgumentException($"Method {step.Function.MethodName} not found on type {instance.GetType().Name}."); } var method = functionMethods.First(); var parameters = new MethodParameterService().GetParams(step.Function.PositionalMethodParameterValues?.ToArray(), method); if (IsAsyncMethod(method)) { await((Task)method.Invoke(instance, parameters)); } else { method.Invoke(instance, parameters); } }