public void CreateServerMonitorFactory_should_return_expected_result(int connectTimeoutMilliseconds, int heartbeatTimeoutMilliseconds, int expectedServerMonitorConnectTimeoutMilliseconds, int expectedServerMonitorSocketTimeoutMilliseconds) { var connectTimeout = TimeSpan.FromMilliseconds(connectTimeoutMilliseconds); var authenticators = new[] { new DefaultAuthenticator(new UsernamePasswordCredential("source", "username", "password")) }; var heartbeatTimeout = TimeSpan.FromMilliseconds(heartbeatTimeoutMilliseconds); var expectedServerMonitorConnectTimeout = TimeSpan.FromMilliseconds(expectedServerMonitorConnectTimeoutMilliseconds); var expectedServerMonitorSocketTimeout = TimeSpan.FromMilliseconds(expectedServerMonitorSocketTimeoutMilliseconds); var subject = new ClusterBuilder() .ConfigureTcp(s => s.With(connectTimeout: connectTimeout)) .ConfigureConnection(s => s.With(authenticators: authenticators)) .ConfigureServer(s => s.With(heartbeatTimeout: heartbeatTimeout)); var result = (ServerMonitorFactory)subject.CreateServerMonitorFactory(); var serverMonitorConnectionFactory = (BinaryConnectionFactory)result._connectionFactory(); var serverMonitorConnectionSettings = serverMonitorConnectionFactory._settings(); serverMonitorConnectionSettings.Authenticators.Should().HaveCount(0); var serverMonitorStreamFactory = (TcpStreamFactory)serverMonitorConnectionFactory._streamFactory(); var serverMonitorTcpStreamSettings = serverMonitorStreamFactory._settings(); serverMonitorTcpStreamSettings.ConnectTimeout.Should().Be(expectedServerMonitorConnectTimeout); serverMonitorTcpStreamSettings.ReadTimeout.Should().Be(expectedServerMonitorSocketTimeout); serverMonitorTcpStreamSettings.WriteTimeout.Should().Be(expectedServerMonitorSocketTimeout); var eventSuscriber = result._eventSubscriber(); var serverSettings = result._settings(); }