TReturn GetTestHolder <TReturn, TTest, TAction>(TAction action) where TTest : AbstractTest <TAction> where TReturn : class { Test = TestFactory.Create <TTest>(action); return(Activator.CreateInstance(typeof(TReturn), Test) as TReturn); }
static List <(Type Type, object Object)> GetTypedParameters(ITestInternal test) { var typedParameters = new List <(Type, object)>(); if (test.TryGetParameters(out var parameters)) { foreach (var parameter in parameters) { var type = parameter.GetType(); typedParameters.Add((type, parameter)); } } return(typedParameters); }
public TestTaskRunner(ITestInternal test) { Test = test; _action = TestActionFactory.Create(Test); _source = new CancellationTokenSource(); if (Test.Timeout > 0) { _token = _source.Token; _timer = new System.Timers.Timer(Test.Timeout); _timer.AutoReset = false; _timer.Elapsed += (sender, args) => _source.Cancel(); } }
static Action <CancellationToken> CreateActionDinamically(ITestInternal test) { var typedParameters = GetTypedParameters(test); if (_actionCreators.TryGetValue(typedParameters.Count(), out var method)) { if (method.IsGenericMethod) { method = method.MakeGenericMethod(typedParameters.Select(a => a.Type).ToArray()); } var arguments = new List <object>(typedParameters.Select(a => a.Object)); arguments.Insert(0, test); return((Action <CancellationToken>)method.Invoke(null, arguments.ToArray())); } throw new NotImplementedException($"TestFactory cannot create action for {test.GetType().Name}"); }
public static Action <CancellationToken> Create(ITestInternal test) => CreateActionDinamically(test);
public ParameterBuilder(ITestInternal buildee) : base(new TestOptions(buildee)) { }
public TestOptions(ITestInternal test) => Test = test;