public AtemTestHelper(AtemSdkClientWrapper client, ITestOutputHelper output, AtemMockServer mockServer, AtemStateBuilderSettings stateSettings) { _mockServer = mockServer; SdkClient = client; Output = output; StateSettings = stateSettings; SyncStates(); _mockServer.LibReceive += LibAtemReceive; AssertStatesMatch(); }
private void RunTest(string caseId) { if (caseId == "") { return; } var commandData = DumpParser.BuildCommands(DeviceTestCases.Version, caseId); /* * var result = new List<string>(); * foreach (byte[] payload in commandData) * { * foreach (ParsedCommand rawCmd in ReceivedPacket.ParseCommands(payload)) * { * if (CommandParser.Parse(caseId.Item1, rawCmd) == null) * { * _output.WriteLine("{0} - {1}", rawCmd.Name, rawCmd.BodyLength); * result.Add(rawCmd.Name); * } * } * } * Assert.Empty(result); * // */ using var server = new AtemMockServer("127.0.0.1", commandData, DeviceTestCases.Version); var stateSettings = new AtemStateBuilderSettings(); using var helper = new AtemSdkClientWrapper("127.0.0.1", stateSettings, 1); var libAtemState = AtemTestHelper.SanitiseStateIncompabalities(DeviceTestCases.Version, GetLibAtemState(stateSettings, "127.0.0.1")); var sdkState = helper.BuildState(); List <string> before = AtemStateComparer.AreEqual(sdkState, libAtemState); if (before.Count != 0 && _output != null) { _output.WriteLine("state mismatch:"); before.ForEach(_output.WriteLine); } Assert.Empty(before); }
// public AtemClient LibAtemClient { get; } // private bool _isDisposing; // private bool _libAtemConnected; public AtemMockServerPoolItem(string caseId, AtemStateBuilderSettings builderSettings, string bindIp) { _builderSettings = builderSettings; _bindIp = bindIp; _sdkClients = new Queue <AtemSdkClientWrapper>(); _updatingClients = new List <AtemSdkClientWrapper>(); _nextSdkId = 0; List <byte[]> payloads = DumpParser.BuildCommands(DeviceTestCases.Version, caseId); // IReadOnlyList<ICommand> commands = DumpParser.ParseToCommands(DeviceTestCases.Version, payloads); // Build the device profile // var deviceProfileBuilder = new DeviceProfile.DeviceProfileHandler(); // deviceProfileBuilder.HandleCommands(null, commands); // DeviceProfile = deviceProfileBuilder.Profile; // Build a default state // var state = new AtemState(); // commands.ForEach(cmd => AtemStateBuilder.Update(state, cmd, builderSettings)); // DefaultState = state; Server = new AtemMockServer(bindIp, payloads, DeviceTestCases.Version); /* * var connectionEvent = new AutoResetEvent(false); * LibAtemClient = new AtemClient(bindIp, false); * LibAtemClient.OnDisconnect += o => { Assert.True(_isDisposing, "LibAtem: Disconnect before disposing"); }; * LibAtemClient.OnConnection += o => * { * Assert.False(_libAtemConnected, "LibAtem: Got reconnect"); * _libAtemConnected = true; * connectionEvent.Set(); * }; * LibAtemClient.Connect(); * * //SdkClient = new AtemSdkClientWrapper(bindIp", StateSettings); * * Assert.True(connectionEvent.WaitOne(TimeSpan.FromSeconds(3)), "LibAtem: Connection attempt timed out"); */ }