public void SpuriousNavigatedEvents_AreIgnored()
{
var browser = new BrowserStub();
string target = "http://any old web address";
var isolator = new NavigationIsolator();
isolator.Navigate(browser, target);
Assert.That(browser.NavigateTarget, Is.EqualTo(target));
var browser2 = new BrowserStub();
string target2 = "http://some other web address";
isolator.Navigate(browser2, target2);
Assert.That(browser.NavigateTarget, Is.EqualTo(target), "Second navigation should not have proceeded at once");
Assert.That(browser2.NavigateTarget, Is.EqualTo(null), "Second navigation should not have proceeded at once");
browser.RaiseNavigated(this, new EventArgs()); // got the event notification, but still busy.
Assert.That(browser.NavigateTarget, Is.EqualTo(target), "Second navigation should not have proceeded even on Navigated while browser still busy");
Assert.That(browser2.NavigateTarget, Is.EqualTo(null), "Second navigation should not have proceeded even on Navigated while browser still busy");
browser.NormalTermination();
Assert.That(browser2.NavigateTarget, Is.EqualTo(target2), "Second navigation should have proceeded when first completed (and browser no longer busy)");
browser2.NormalTermination();
Assert.That(browser.EventHandlerCount, Is.EqualTo(0), "event handlers should be removed once last navigation completed");
Assert.That(browser2.EventHandlerCount, Is.EqualTo(0), "event handlers should be removed once last navigation completed");
}