Beispiel #1
0
        public void CanTypeClosingChar()
        {
            var pair     = new SelfClosingPair('(', ')');
            var input    = pair.ClosingChar;
            var original = "foo = |".ToCodeString();

            Assert.IsFalse(Run(pair, original, input, out var result));
            Assert.IsNull(result);
        }
Beispiel #2
0
        public void UnhandledKey_ReturnsDefault()
        {
            var pair     = new SelfClosingPair('(', ')');
            var input    = Keys.A;
            var original = @"MsgBox |".ToCodeString();

            Assert.IsFalse(Run(pair, original, input, out var result));
            Assert.IsNull(result);
        }
Beispiel #3
0
        public void BackspacingInsideComment_BailsOut()
        {
            var pair     = new SelfClosingPair('(', ')');
            var input    = Keys.Back;
            var original = "' _\r\n    (|)".ToCodeString();

            Assert.IsFalse(Run(pair, original, input, out var result));
            Assert.IsNull(result);
        }
Beispiel #4
0
        public void DeletingOpeningCharRemovesPairedClosingChar_GivenOnlyThatOnTheLine()
        {
            var pair     = new SelfClosingPair('"', '"');
            var input    = Keys.Back;
            var original = $"{pair.OpeningChar}|{pair.ClosingChar}".ToCodeString();
            var expected = string.Empty;

            Assert.IsTrue(Run(pair, original, input, out var result));
            Assert.AreEqual(expected, result.Code);
        }
Beispiel #5
0
        public void PlacesCaretBetweenOpeningAndClosingChars_PreservesPosition()
        {
            var pair     = new SelfClosingPair('(', ')');
            var input    = pair.OpeningChar;
            var original = "foo = |".ToCodeString();
            var expected = "foo = (|)".ToCodeString();

            Assert.IsTrue(Run(pair, original, input, out var result));
            Assert.AreEqual(expected, result);
        }
Beispiel #6
0
        public void WhenNextPositionIsClosingChar_Nested_ClosingCharMovesSelection()
        {
            var pair     = new SelfClosingPair('(', ')');
            var input    = pair.ClosingChar;
            var original = @"foo = MsgBox(""""|)".ToCodeString();
            var expected = @"foo = MsgBox("""")|".ToCodeString();

            Assert.IsTrue(Run(pair, original, input, out var result));
            Assert.AreEqual(expected, result);
        }
Beispiel #7
0
        public void DeletingOpeningChar_CallStmtArgList()
        {
            var pair     = new SelfClosingPair('(', ')');
            var input    = Keys.Back;
            var original = "Call xy(|z)".ToCodeString();
            var expected = "Call xy|z".ToCodeString();

            Assert.IsTrue(Run(pair, original, input, out var result));
            Assert.AreEqual(expected, result);
        }
Beispiel #8
0
        public void DeletingOpeningChar_IndexExpr()
        {
            var pair     = new SelfClosingPair('(', ')');
            var input    = Keys.Back;
            var original = "foo = CInt(|z)".ToCodeString();
            var expected = "foo = CInt|z".ToCodeString();

            Assert.IsTrue(Run(pair, original, input, out var result));
            Assert.AreEqual(expected, result);
        }
Beispiel #9
0
        public void GivenEmptyIndentedLine_OpeningCharIsInsertedAtCaretPosition()
        {
            var pair     = new SelfClosingPair('"', '"');
            var input    = '"';
            var original = @"    |".ToCodeString();
            var expected = @"    ""|""".ToCodeString();

            Assert.IsTrue(Run(pair, original, input, out var result));
            Assert.AreEqual(expected, result);
        }
Beispiel #10
0
        public void WhenCaretBetweenOpeningAndClosingChars_BackspaceRemovesBoth_Indented()
        {
            var pair     = new SelfClosingPair('"', '"');
            var input    = Keys.Back;
            var original = @"    foo = ""|""".ToCodeString();
            var expected = @"    foo = |".ToCodeString();

            Assert.IsTrue(Run(pair, original, input, out var result));
            Assert.AreEqual(expected, result);
        }
Beispiel #11
0
        public void DeletingOpeningCharRemovesPairedClosingChar_Parens()
        {
            var pair     = new SelfClosingPair('(', ')');
            var input    = Keys.Back;
            var original = @"foo = (|2 + 2)".ToCodeString();
            var expected = @"foo = |2 + 2".ToCodeString();

            Assert.IsTrue(Run(pair, original, input, out var result));
            Assert.AreEqual(expected, result);
        }
Beispiel #12
0
        public void BackspacingWorksWhenCaretIsNotOnLastNonEmptyLine_ConcatOnNextLine()
        {
            var pair     = new SelfClosingPair('"', '"');
            var input    = Keys.Back;
            var original = "foo = \"\" _\r\n      & \"\" _\r\n      & \"|\" _\r\n      & \"\"".ToCodeString();
            var expected = "foo = \"\" _\r\n      & \"|\" _\r\n      & \"\"".ToCodeString();

            Assert.IsTrue(Run(pair, original, input, out var result));
            Assert.AreEqual(expected, result);
        }
Beispiel #13
0
        public void WhenBackspacingClearsLineContinuatedCaretLine_WithConcatenatedVbLf_PlacesCaretInsideStringOnPreviousLine()
        {
            var pair     = new SelfClosingPair('"', '"');
            var input    = Keys.Back;
            var original = "foo = \"test\" & vbLf & _\r\n     \"|\"".ToCodeString();
            var expected = "foo = \"test|\"".ToCodeString();

            Assert.IsTrue(Run(pair, original, input, out var result));
            Assert.AreEqual(expected, result);
        }
Beispiel #14
0
        public void DeleteKey_ReturnsDefault()
        {
            var pair     = new SelfClosingPair('(', ')');
            var input    = Keys.A;
            var original = @"MsgBox (|)".ToCodeString();

            var result = Run(pair, original, input);

            Assert.IsTrue(result == default);
        }
Beispiel #15
0
        public void WhenNextPositionIsClosingChar_OpeningCharInsertsNewPair()
        {
            var pair     = new SelfClosingPair('(', ')');
            var input    = pair.OpeningChar;
            var original = @"foo = MsgBox(|)".ToCodeString();
            var expected = @"foo = MsgBox((|))".ToCodeString();

            Assert.IsTrue(Run(pair, original, input, out var result));
            Assert.AreEqual(expected, result);
        }
Beispiel #16
0
        public void GivenOpeningCharInsidePair_ReturnsNestedPair()
        {
            var pair     = new SelfClosingPair('(', ')');
            var input    = pair.OpeningChar;
            var original = "(|)".ToCodeString();
            var expected = "((|))".ToCodeString();

            Assert.IsTrue(Run(pair, original, input, out var result));
            Assert.AreEqual(expected, result);
        }
Beispiel #17
0
        public void PlacesCaretBetweenOpeningAndClosingChars_NestedPair()
        {
            var pair     = new SelfClosingPair('"', '"');
            var input    = pair.OpeningChar;
            var original = "MsgBox (|)".ToCodeString();
            var expected = "MsgBox (\"|\")".ToCodeString();

            Assert.IsTrue(Run(pair, original, input, out var result));
            Assert.AreEqual(expected, result);
        }
Beispiel #18
0
        public void DeletingOpeningCharRemovesPairedClosingChar_StringDelimiter()
        {
            var pair     = new SelfClosingPair('"', '"');
            var input    = Keys.Back;
            var original = @"foo = ""|2 + 2""".ToCodeString();
            var expected = @"foo = |2 + 2".ToCodeString();

            var result = Run(pair, original, input);

            Assert.AreEqual(expected, result);
        }
Beispiel #19
0
        public void WhenCaretBetweenOpeningAndClosingChars_BackspaceRemovesBoth()
        {
            var pair     = new SelfClosingPair('(', ')');
            var input    = Keys.Back;
            var original = @"foo = MsgBox(|)".ToCodeString();
            var expected = @"foo = MsgBox|".ToCodeString();

            var result = Run(pair, original, input);

            Assert.AreEqual(expected, result);
        }
Beispiel #20
0
        [Test] // fixme: passes, but in-editor behavior seems different.
        public void DeletingPairInLogicalLine_SelectionRemainsOnThatLineIfNonEmpty()
        {
            var pair     = new SelfClosingPair('"', '"');
            var input    = Keys.Back;
            var original = @"foo = ""abc"" & _
      ""|"" & ""a""".ToCodeString();
            var expected = @"foo = ""abc"" & _
      | & ""a""".ToCodeString();

            Assert.IsTrue(Run(pair, original, input, out var result));
            Assert.AreEqual(expected, result);
        }
Beispiel #21
0
        private bool Run(SelfClosingPair pair, CodeString original, Keys input, out TestCodeString testResult)
        {
            var sut = new SelfClosingPairCompletionService();

            if (sut.Execute(pair, original, input, out var result))
            {
                testResult = new TestCodeString(result);
                return(true);
            }

            testResult = null;
            return(false);
        }
Beispiel #22
0
        public void DeletingMatchingPair_RemovesTrailingEmptyContinuatedLine()
        {
            var pair     = new SelfClosingPair('(', ')');
            var input    = Keys.Back;
            var original = @"foo = (| _
    (2 + 2) + 42 _
)
".ToCodeString();
            var expected = @"foo = | _
    (2 + 2) + 42".ToCodeString();

            Assert.IsTrue(Run(pair, original, input, out var result));
            Assert.AreEqual(expected, result);
        }
Beispiel #23
0
        public void GivenClosingCharForUnmatchedOpeningChar_SingleChar_SymetricPairBailsOut()
        {
            var pair = new SelfClosingPair('"', '"');

            if (!pair.IsSymetric)
            {
                Assert.Inconclusive("Pair symetry is inconsistent with the purpose of the test.");
            }

            var input    = pair.ClosingChar;
            var original = "\"|".ToCodeString();

            Assert.IsFalse(Run(pair, original, input, out var result));
            Assert.IsNull(result);
        }
Beispiel #24
0
        public void GivenOpeningCharInsideNonTerminatedStringLiteral_BailsOut()
        {
            var pair = new SelfClosingPair('(', ')');

            if (pair.IsSymetric)
            {
                Assert.Inconclusive("Pair symetry is inconsistent with the purpose of the test.");
            }

            var input    = pair.OpeningChar;
            var original = "MsgBox \"foo|".ToCodeString();

            Assert.IsFalse(Run(pair, original, input, out var result));
            Assert.IsNull(result);
        }
Beispiel #25
0
        public void DeletingOpeningCharRemovesPairedClosingChar_NestedParensMultiline()
        {
            var pair     = new SelfClosingPair('(', ')');
            var input    = Keys.Back;
            var original = @"
foo = (| _
    (2 + 2) + 42 _
)
".ToCodeString();
            var expected = @"
foo = | _
    (2 + 2) + 42 _

".ToCodeString();

            var result = Run(pair, original, input);

            Assert.AreEqual(expected, result);
        }
Beispiel #26
0
        private CodeString Run(SelfClosingPair pair, CodeString original, Keys input)
        {
            var sut = new SelfClosingPairCompletionService(null);

            return(sut.Execute(pair, original, input));
        }