public static void Each(ITestOutputHelper output, AtemServerClientPool pool, Func <Lazy <ImmutableList <ICommand> >, ICommand, IEnumerable <ICommand> > handler, string[] cases, Action <AtemMockServerWrapper> runner) { cases = cases.Where(c => !string.IsNullOrEmpty(c)).ToArray(); Assert.NotEmpty(cases); cases.ForEach(caseId => { using var helper = new AtemMockServerWrapper(output, pool, handler, caseId); runner(helper); }); }
public AtemMockServerWrapper(ITestOutputHelper output, AtemServerClientPool pool, Func <Lazy <ImmutableList <ICommand> >, ICommand, IEnumerable <ICommand> > handler, string caseId) { _output = output; _pool = pool; _handler = handler; _case = _pool.GetCase(caseId); SdkClient = _case.SelectSdkClient(); Server.ActiveConnectionId = SdkClient.Id; var resetEvent = new ManualResetEvent(false); void TmpHandler(object o) => resetEvent.Set(); SdkClient.OnSdkStateChange += TmpHandler; Server.ResetClient(SdkClient.Id); resetEvent.WaitOne(2000); // TODO - monitor result SdkClient.OnSdkStateChange -= TmpHandler; Helper = new AtemTestHelper(SdkClient, _output, _case.Server, _pool.StateSettings); }