Exemplo n.º 1
0
        public void HtmlManipulator_Initialises_TextContent_IsDirty_To_False()
        {
            var manipulator = new TextManipulator();

            _Manipulators.Add(manipulator);

            SetResponseContent(MimeType.Html, "a");
            _Manipulator.ManipulateResponseStream(_Environment.Environment);

            Assert.IsFalse(manipulator.TextContent.IsDirty);
        }
Exemplo n.º 2
0
        public void JavascriptManipulator_Initialises_TextContent_IsDirty_To_False()
        {
            var manipulator = new TextManipulator();

            _TextManipulators.Add(manipulator);

            SetResponseContent(MimeType.Javascript, "a");
            _Pipeline.BuildAndCallMiddleware(_JavascriptManipulator.AppFuncBuilder, _Environment.Environment);

            Assert.IsFalse(manipulator.TextContent.IsDirty);
        }
        public void Test_ProcessOutput()
        {
            string expectedResult = System.IO.File.ReadAllText(@"C:\Users\joela\OneDrive\Documents\Desktop\IT Shit\BuilderWire\Output\Output.txt");
            string refArticle     = System.IO.File.ReadAllText(@"C:\Users\joela\OneDrive\Documents\Desktop\IT Shit\BuilderWire\Input\Article.txt");
            string refWords       = System.IO.File.ReadAllText(@"C:\Users\joela\OneDrive\Documents\Desktop\IT Shit\BuilderWire\Input\Words.txt");
            string abbrev         = "mr.,mrs.,e.g.";

            var textManipulatorTest = new TextManipulator();
            var actualResult        = textManipulatorTest.ProcessOutput(refArticle, refWords, abbrev);

            Assert.AreEqual(expectedResult, actualResult);
        }
Exemplo n.º 4
0
        /// <summary>
        /// Asserts that after user writes text it will be replaced
        /// </summary>
        /// <param name="baseText">Text, $ tag marks cursor </param>
        /// <param name="userInput">Text to input at cursor ($)</param>
        /// <param name="expectedOutput">Final text with replacements</param>
        public void AssertReplacement(string baseText, string userInput, string expectedOutput)
        {
            (int cursor, string inputText, string span) = TestUtils.PrepareTextWithSpan(baseText, userInput);

            TextManipulator manipulator = new TextManipulator(inputText, cursor);

            var change        = new TextChange(cursor, userInput, cursor, span);
            var manipulations = manipulator.ManipulateText(change);
            var actualOutput  = ApplyManipulations(inputText, manipulations);

            Assert.Equal(expectedOutput, actualOutput);
        }
Exemplo n.º 5
0
        public void JavascriptManipulator_ManipulateResponseStream_Calls_Any_Registered_Manipulators()
        {
            var manipulator = new TextManipulator();

            _TextManipulators.Add(manipulator);

            SetResponseContent(MimeType.Javascript, "a");
            _Pipeline.BuildAndCallMiddleware(_JavascriptManipulator.AppFuncBuilder, _Environment.Environment);

            Assert.AreEqual(1, manipulator.CallCount);
            Assert.AreSame(_Environment.Environment, manipulator.Environment);
            Assert.AreEqual("a", manipulator.TextContent.Content);
        }
Exemplo n.º 6
0
        public void HtmlManipulator_ManipulateResponseStream_Calls_Any_Registered_Manipulators()
        {
            var manipulator = new TextManipulator();

            _Manipulators.Add(manipulator);

            SetResponseContent(MimeType.Html, "a");
            _Manipulator.ManipulateResponseStream(_Environment.Environment);

            Assert.AreEqual(1, manipulator.CallCount);
            Assert.AreSame(_Environment.Environment, manipulator.Environment);
            Assert.AreEqual("a", manipulator.TextContent.Content);
        }
Exemplo n.º 7
0
        /// <summary>
        /// Asserts that after user writes text it will be replaced
        /// </summary>
        /// <param name="baseText">Text, $ tag marks cursor </param>
        /// <param name="userInput">Text to input at cursor ($)</param>
        /// <param name="expectedOutput">Final text with replacements</param>
        public void AssertInsertion(string baseText, string userInput, string expectedOutput)
        {
            (int cursor, string text) = TestUtils.PrepareTextWithCursor(baseText);
            var inputText = baseText.Replace("$", userInput);

            TextManipulator manipulator = new TextManipulator(inputText, cursor);

            var change        = new TextChange(cursor, userInput, cursor, "");
            var manipulations = manipulator.ManipulateText(change);
            var actualOutput  = ApplyManipulations(inputText, manipulations);

            Assert.Equal(expectedOutput, actualOutput);
        }
        private async Task ApplyTextManipulations(DidChangeTextDocumentParams request, string text, string buffer, string changedBuffer, int position, int deletedCharacters)
        {
            TextManipulator textManipulator = new TextManipulator(changedBuffer, position);
            var             manipulations   = textManipulator.ManipulateText(new TextChangeAdapter(position, text, buffer.Substring(position, deletedCharacters)));

            if (manipulations.Count == 0)
            {
                return;
            }

            var edits = manipulations.Select(n =>
            {
                var start = Utils.OffsetToPosition(n.Start, changedBuffer);

                switch (n.Type)
                {
                case ManipulationType.Insert:
                    return(new TextEdit()
                    {
                        NewText = n.Text,
                        Range = new Range(start, start)
                    });

                case ManipulationType.Delete:
                    var end = Utils.OffsetToPosition(n.End, changedBuffer);
                    return(new TextEdit()
                    {
                        NewText = "",
                        Range = new Range(start, end)
                    });

                default:
                    throw new NotSupportedException();
                }
            }).ToList();

            if (edits.Count > 0)
            {
                await _router.ApplyWorkspaceEdit(new ApplyWorkspaceEditParams()
                {
                    Edit = new WorkspaceEdit()
                    {
                        DocumentChanges = new Container <WorkspaceEditDocumentChange>(new WorkspaceEditDocumentChange(new TextDocumentEdit()
                        {
                            TextDocument = request.TextDocument,
                            Edits        = new TextEditContainer(edits)
                        }))
                    }
                });
            }
        }
Exemplo n.º 9
0
        public void JavascriptManipulator_ManipulateResponseStream_Writes_Manipulated_Response()
        {
            var manipulator = new TextManipulator {
                Callback = (env, content) => content.Content = "b"
            };

            _TextManipulators.Add(manipulator);

            SetResponseContent(MimeType.Javascript, "a");
            _Pipeline.BuildAndCallMiddleware(_JavascriptManipulator.AppFuncBuilder, _Environment.Environment);

            var textContent = GetResponseContent();

            Assert.AreEqual("b", textContent.Content);
            Assert.AreNotEqual(0, _Environment.ResponseBody.Position);    // MemoryStream will throw an exception if you read this after it's been disposed
        }
Exemplo n.º 10
0
        public void HtmlManipulator_ManipulateResponseStream_Writes_Manipulated_Response()
        {
            var manipulator = new TextManipulator {
                Callback = (env, content) => content.Content = "b"
            };

            _Manipulators.Add(manipulator);

            SetResponseContent(MimeType.Html, "a");
            _Manipulator.ManipulateResponseStream(_Environment.Environment);

            var textContent = GetResponseContent();

            Assert.AreEqual("b", textContent.Content);
            Assert.AreNotEqual(0, _Environment.Response.Body.Position);    // MemoryStream will throw an exception if you read this after it's been disposed
        }
Exemplo n.º 11
0
        public void JavascriptManipulator_ManipulateResponseStream_Only_Writes_Dirty_TextContent()
        {
            var manipulator = new TextManipulator {
                Callback = (env, content) => {
                    content.Content = "b";
                    content.IsDirty = false;
                }
            };

            _TextManipulators.Add(manipulator);

            SetResponseContent(MimeType.Javascript, "a");
            _Pipeline.BuildAndCallMiddleware(_JavascriptManipulator.AppFuncBuilder, _Environment.Environment);

            var textContent = GetResponseContent();

            Assert.AreEqual("a", textContent.Content);
        }
Exemplo n.º 12
0
        public void HtmlManipulator_ManipulateResponseStream_Only_Writes_Dirty_TextContent()
        {
            var manipulator = new TextManipulator {
                Callback = (env, content) => {
                    content.Content = "b";
                    content.IsDirty = false;
                }
            };

            _Manipulators.Add(manipulator);

            SetResponseContent(MimeType.Html, "a");
            _Manipulator.ManipulateResponseStream(_Environment.Environment);

            var textContent = GetResponseContent();

            Assert.AreEqual("a", textContent.Content);
        }
        private void TextBuffer_Changed(object sender, TextContentChangedEventArgs e)
        {
            if (_isChangingText)
            {
                return;
            }

            try
            {
                if (_buffer.Properties.TryGetProperty <XamlBufferMetadata>(typeof(XamlBufferMetadata), out var metadata) &&
                    metadata.CompletionMetadata != null)
                {
                    var sw   = Stopwatch.StartNew();
                    var pos  = _textView.Caret.Position.BufferPosition;
                    var text = _buffer.CurrentSnapshot.GetText();


                    foreach (Microsoft.VisualStudio.Text.ITextChange change in e.Changes.ToList())
                    {
                        var textManipulator = new TextManipulator(text, change.NewPosition);
                        var avaloniaChange  = new TextChangeAdapter(change);
                        var manipulations   = textManipulator.ManipulateText(avaloniaChange);
                        if (manipulations?.Count > 0)
                        {
                            _isChangingText = true;
                            ApplyManipulations(manipulations);
                            Log.Logger.Verbose("XAML manipulation took {Time}", sw.Elapsed);
                        }
                    }
                    sw.Stop();
                }
            }
            finally
            {
                _isChangingText = false;
            }
        }