public void GetServiceManager_GetByDocumentHandle_ShouldSucceed()
        {
            var handle = CreateDocumentHandle();
              var addInManager = new HtmlDocumentHandleRegistry (new FakeServiceManagerFactory(), new FakeEventDispatcherFactory());

              addInManager.RegisterDocumentHandle (handle, new FakeScriptingHost());

              Assert.That (() => addInManager.GetServiceManager (handle), Is.InstanceOf<FakeServiceManager>());
        }
        public void GetServiceManager_DocumentHandleDoesNotExist_ShouldThrowInvalidOperation()
        {
            var handle = CreateDocumentHandle();
              var addInManager = new HtmlDocumentHandleRegistry (new FakeServiceManagerFactory(), new FakeEventDispatcherFactory());

              Assert.That (
              () => addInManager.GetServiceManager (handle),
              Throws.InvalidOperationException.With.Message.EqualTo (string.Format (c_documentNotRegisteredFormatString, handle)));
        }
        public void RegisterDocumentHandle_DocumentHandleAlreadyExists_ShouldThrowInvalidOperation()
        {
            var handle = CreateDocumentHandle();
              var addInManager = new HtmlDocumentHandleRegistry (new FakeServiceManagerFactory(), new FakeEventDispatcherFactory());

              addInManager.RegisterDocumentHandle (handle, new FakeScriptingHost());

              Assert.That (
              () => addInManager.RegisterDocumentHandle (handle, new FakeScriptingHost()),
              Throws.InvalidOperationException.With.Message.EqualTo (string.Format (c_documentAlreadyRegisteredFormatString, handle)));
        }
        public void UnregisterDocumentHandle_RemoveDocumentHandle_ShouldSucceed()
        {
            var handle = CreateDocumentHandle();
              var addInManager = new HtmlDocumentHandleRegistry (new FakeServiceManagerFactory(), new FakeEventDispatcherFactory());

              var count = addInManager.EventDispatcherCount;
              addInManager.RegisterDocumentHandle (handle, new FakeScriptingHost());

              Assert.That (() => addInManager.UnregisterDocumentHandle (handle), Throws.Nothing);
              Assert.That (count, Is.EqualTo (addInManager.EventDispatcherCount));
        }
        public void RegisterDocumentHandle_AddMultipleDocuments_ShouldSucceed()
        {
            var addInManager = new HtmlDocumentHandleRegistry (new FakeServiceManagerFactory(), new FakeEventDispatcherFactory());

              addInManager.RegisterDocumentHandle (CreateDocumentHandle(), new FakeScriptingHost());
              addInManager.RegisterDocumentHandle (CreateDocumentHandle(), new FakeScriptingHost());
              addInManager.RegisterDocumentHandle (CreateDocumentHandle(), new FakeScriptingHost());
              addInManager.RegisterDocumentHandle (CreateDocumentHandle(), new FakeScriptingHost());

              Assert.That (addInManager.EventDispatcherCount, Is.EqualTo (4));
        }