コード例 #1
0
        public Uri Navigate( DocumentLocator locator, ILocatorMacroResolver macroResolver )
        {
            Contract.RequiresNotNull( locator, "locator" );
            Contract.RequiresNotNull( macroResolver, "macroResolver" );

            return NavigateToFinalSite( locator.Fragments, macroResolver );
        }
コード例 #2
0
        public void FindDocument_Returns_Null_If_No_Matching_Document_In_DTE_Documents_Collection(
            [Frozen] DTE2 dte,
            [Frozen] IRunningDocumentTable runningDocumentTable,
            DocumentLocator sut,
            string documentPath,
            IRunningDocumentInfo info,
            Document[] documents,
            Documents documentCollection,
            uint docCookie)
        {
            runningDocumentTable
            .GetDocumentInfo(docCookie)
            .Returns(info);
            info.Moniker
            .Returns(documentPath);
            dte.Documents
            .Returns(documentCollection);
            documentCollection.GetEnumerator()
            .Returns(documents.GetEnumerator());

            var result = sut.FindDocument(docCookie);

            result
            .Should()
            .BeNull();
        }
コード例 #3
0
        public void Validate_IsValid_DoesNotThrows()
        {
            var locator = new DocumentLocator(
                new Request("http://test1.org"),
                new Response("http://test2.org"));

            RecursiveValidator.Validate(locator);
        }
コード例 #4
0
        public void Fragments_Add_ValueAdded()
        {
            var locator = new DocumentLocator();

            locator.Fragments.Add(new Request("http://test1.org"));

            Assert.That(locator.Fragments[0].UrlString, Is.EqualTo("http://test1.org"));
        }
コード例 #5
0
        public void Fragments_Add_ChangeIsNotified()
        {
            var locator = new DocumentLocator();
            var counter = new CollectionChangedCounter(locator.Fragments);

            locator.Fragments.Add(new Request("http://test1.org"));

            Assert.That(counter.Count, Is.EqualTo(1));
        }
コード例 #6
0
        public void Clone_WhenCalled_AllMembersAreCloned()
        {
            var locator = new DocumentLocator(
                new Request("http://test1.org"),
                new Response("http://test2.org"));

            var clone = FigureDescriptorFactory.Clone(locator);

            Assert.That(clone.Fragments[0].UrlString, Is.EqualTo("http://test1.org"));
            Assert.That(clone.Fragments[1].UrlString, Is.EqualTo("http://test2.org"));
        }
コード例 #7
0
        public int CalculateLocationUID(DocumentLocator locator)
        {
            int hashCode = 0;

            foreach (var resolver in myResolvers)
            {
                hashCode = (hashCode + resolver.CalculateLocationUID(locator)) * 251;
            }

            return(hashCode);
        }
コード例 #8
0
        public int CalculateLocationUID(DocumentLocator locator)
        {
            int hashCode = 0;

            foreach (var fragment in locator.Fragments)
            {
                hashCode = (hashCode + fragment.UrlString.GetHashCode()) * 251;
            }

            return(hashCode);
        }
コード例 #9
0
        public void FindDocument_Will_ThrowIfNotOnUIThread(
            [Frozen] IThreadHelper threadHelper,
            DocumentLocator sut,
            uint docCookie)
        {
            sut.FindDocument(docCookie);

            threadHelper
            .Received(1)
            .ThrowIfNotOnUIThread();
        }
コード例 #10
0
        public int CalculateLocationUID(DocumentLocator locator)
        {
            int hashCode = 0;

            foreach (var fragment in locator.Fragments)
            {
                hashCode = (hashCode + CalculateLocationUID(fragment)) * 251;
            }

            return(hashCode);
        }
コード例 #11
0
        public void FindDocument_Gets_DocumentInfo(
            [Frozen] IRunningDocumentTable runningDocumentTable,
            DocumentLocator sut,
            uint docCookie)
        {
            sut.FindDocument(docCookie);

            runningDocumentTable
            .Received(1)
            .GetDocumentInfo(docCookie);
        }
コード例 #12
0
        public void Navigate(DocumentType docType, DocumentLocator locator, ILocatorMacroResolver macroResolver)
        {
            var url = myNavigator.Navigate(locator, macroResolver);

            if (url == null)
            {
                return;
            }

            var loader = DocumentLoaderFactory.CreateLoader(docType, Browser);

            Document = loader.Load(url);
        }
コード例 #13
0
        public void Clone_WhenCalled_CollectionsAreMutableAndObservable()
        {
            var locator = new DocumentLocator(new Request("http://test1.org"));

            var clone = FigureDescriptorFactory.Clone(locator);

            var dump = SpecDumper.Dump(locator);

            var counter = new CollectionChangedCounter(clone.Fragments);

            clone.Fragments.Add(new Response("http://test2.org"));
            Assert.That(counter.Count, Is.EqualTo(1));
        }
コード例 #14
0
ファイル: DocumentBrowser.cs プロジェクト: bg0jr/RaynMaker
        public void Navigate(DocumentType docType, DocumentLocator locator, ILocatorMacroResolver macroResolver)
        {
            var uri = myNavigator.Navigate(locator, macroResolver);

            myLogger.Info("Url from navigator: {0}", uri);

            var documentLoader = DocumentLoaderFactory.CreateLoader(docType);

            Document = documentLoader.Load(uri);

            if (DocumentCompleted != null)
            {
                DocumentCompleted(Document);
            }
        }
コード例 #15
0
ファイル: CachingNavigator.cs プロジェクト: bg0jr/RaynMaker
        public Uri Navigate(DocumentLocator locator, ILocatorMacroResolver macroResolver)
        {
            // TODO: key for caching would need include the locator with patterns + kind of hashcode from resolver
            // (e.g. including hash of all known macros)

            var key = macroResolver.CalculateLocationUID(locator);

            var uri = myCache.TryGet(key);

            if (uri == null)
            {
                uri = myNavigator.Navigate(locator, macroResolver);
                uri = myCache.Add(key, uri);
            }

            return(uri);
        }
コード例 #16
0
        protected override async Task InitializeAsync(
            CancellationToken cancellationToken,
            IProgress <ServiceProgressData> progress)
        {
            var dte = await GetServiceAsync(typeof(SDTE)) as DTE2;

            if (dte is null)
            {
                return;
            }

            var runningDocumentTable = new RunningDocumentTableWrapper(
                new RunningDocumentTable(this));

            var textFormatters = new ITextFormatter[]
            {
                new RemoveAndSortUsingsCommand(dte),
                new TrailingWhiteSpaceRemover(),
                new TrailingLineBreakRemover(),
            };

            var threadHelper    = new ThreadHelperWrapper();
            var documentLocator = new DocumentLocator(
                dte,
                runningDocumentTable,
                threadHelper);

            var documentFormatter = new DocumentFormatter(
                dte,
                new VsTextViewProvider(this),
                new UndoProvider(),
                threadHelper,
                textFormatters);

            var eventHandler = new DocumentEventHandler(
                documentLocator,
                documentFormatter);

            runningDocumentTable.Advise(eventHandler);
        }
コード例 #17
0
 public static void Navigate(this IDocumentBrowser self, DocumentType docType, DocumentLocator locator)
 {
     self.Navigate(docType, locator, new NullLocatorMacroResolver());
 }