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);
}
}