Inheritance: global::System.Configuration.ApplicationSettingsBase
		public void TestStartupModeConnect()
		{
			var mocks = new MockRepository();

			var form = new Form(); // Visual Studio main window.
			var toolWindowControl = new ToolWindowControl {Dock = DockStyle.Fill}; // To Do tool window control.
			form.Controls.Add(toolWindowControl);
			DTE2 application;
			AddIn addin;

			using (mocks.Record())
			{
				MockDte(mocks, form, toolWindowControl, out application, out addin);
			}

			var settings = new Settings
			               	{
			               		Uri = new Uri("http://localhost/tp2"),
			               		Login = "******",
			               		DecryptedPassword = "******",
			               		AutoLogin = true,
			               		AutoRefresh = false,
			               	};
			settings.Save();

			using (mocks.Playback())
			{
				Array array = null;

				// Create addin instance.
				var connect = new Connect();

				Console.WriteLine("Test started");

				// Display Visual Studio main window.
				form.Show();

				// Connect addin instance to Visual Studio.
				connect.OnConnection(application, ext_ConnectMode.ext_cm_Startup, addin, ref array);
				connect.OnStartupComplete(ref array);

				// Check command statuses.
				vsCommandStatus status = vsCommandStatus.vsCommandStatusUnsupported;
				object tmp = null;

				connect.QueryStatus(addin.ProgID + "." + Connect.CmdLogin, vsCommandStatusTextWanted.vsCommandStatusTextWantedNone,
				                    ref status, ref tmp);
				Assert.AreEqual(vsCommandStatus.vsCommandStatusSupported, status);

				connect.QueryStatus(addin.ProgID + "." + Connect.CmdLogout, vsCommandStatusTextWanted.vsCommandStatusTextWantedNone,
				                    ref status, ref tmp);
				Assert.AreEqual(vsCommandStatus.vsCommandStatusSupported | vsCommandStatus.vsCommandStatusEnabled, status);

				connect.QueryStatus(addin.ProgID + "." + Connect.CmdToDoList,
				                    vsCommandStatusTextWanted.vsCommandStatusTextWantedNone, ref status, ref tmp);
				Assert.AreEqual(vsCommandStatus.vsCommandStatusSupported | vsCommandStatus.vsCommandStatusEnabled, status);

				connect.QueryStatus(addin.ProgID + "." + Connect.CmdOptions, vsCommandStatusTextWanted.vsCommandStatusTextWantedNone,
				                    ref status, ref tmp);
				Assert.AreEqual(vsCommandStatus.vsCommandStatusSupported | vsCommandStatus.vsCommandStatusEnabled, status);

				// Execute some commands.
				bool handled = false;
				connect.Exec(addin.ProgID + "." + Connect.CmdToDoList, vsCommandExecOption.vsCommandExecOptionDoDefault, ref tmp,
				             ref tmp, ref handled);
				Assert.IsTrue(handled);

				form.Closed += (sender, e) =>
				               	{
				               		// Disconnect addin instance from Visual Studio.
				               		connect.OnDisconnection(ext_DisconnectMode.ext_dm_HostShutdown, ref array);
				               		Console.WriteLine("Test ended");
				               	};
				Application.Run(form);
			}
		}
		/// <summary>
		/// Implements the OnStartupComplete method of the IDTExtensibility2 interface. Receives notification that the host application has completed loading.
		/// </summary>
		/// <param name='custom'>
		/// Array of parameters that are host application specific.
		/// </param>
		/// <seealso class='IDTExtensibility2' />
		public void OnStartupComplete(ref Array custom)
		{
			try
			{
				var settings = new Settings();
				if (settings.AutoLogin)
				{
					_toolWindow.Visible = true;
					_controller.Connect(false);
				}
			}
			catch (Exception ex)
			{
				_listener.WriteLine(ex);
			}
		}