public void TestFromUrl()
{
// set everything to non default values to test that all settings are converted
var connectionString =
"mongodb://user1:password1@somehost/?" +
"connect=direct;connectTimeout=123;uuidRepresentation=pythonLegacy;ipv6=true;" +
"maxIdleTime=124;maxLifeTime=125;maxPoolSize=126;minPoolSize=127;" +
"readPreference=secondary;readPreferenceTags=a:1,b:2;readPreferenceTags=c:3,d:4;secondaryAcceptableLatency=128;socketTimeout=129;" +
"ssl=true;sslVerifyCertificate=false;waitqueuesize=130;waitQueueTimeout=131;" +
"w=1;fsync=true;journal=true;w=2;wtimeout=131";
var builder = new MongoUrlBuilder(connectionString);
var url = builder.ToMongoUrl();
var settings = MongoClientSettings.FromUrl(url);
Assert.AreEqual(url.ConnectionMode, settings.ConnectionMode);
Assert.AreEqual(url.ConnectTimeout, settings.ConnectTimeout);
Assert.AreEqual("{}", settings.CredentialsStore.ToString());
Assert.AreEqual(url.DefaultCredentials, settings.DefaultCredentials);
Assert.AreEqual(url.GuidRepresentation, settings.GuidRepresentation);
Assert.AreEqual(url.IPv6, settings.IPv6);
Assert.AreEqual(url.MaxConnectionIdleTime, settings.MaxConnectionIdleTime);
Assert.AreEqual(url.MaxConnectionLifeTime, settings.MaxConnectionLifeTime);
Assert.AreEqual(url.MaxConnectionPoolSize, settings.MaxConnectionPoolSize);
Assert.AreEqual(url.MinConnectionPoolSize, settings.MinConnectionPoolSize);
Assert.AreEqual(url.ReadPreference, settings.ReadPreference);
Assert.AreEqual(url.ReplicaSetName, settings.ReplicaSetName);
Assert.AreEqual(url.SecondaryAcceptableLatency, settings.SecondaryAcceptableLatency);
Assert.IsTrue(url.Servers.SequenceEqual(settings.Servers));
Assert.AreEqual(url.SocketTimeout, settings.SocketTimeout);
Assert.AreEqual(url.UseSsl, settings.UseSsl);
Assert.AreEqual(url.VerifySslCertificate, settings.VerifySslCertificate);
Assert.AreEqual(url.ComputedWaitQueueSize, settings.WaitQueueSize);
Assert.AreEqual(url.WaitQueueTimeout, settings.WaitQueueTimeout);
Assert.AreEqual(url.GetWriteConcern(true), settings.WriteConcern);
}