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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
[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); }
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); }
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); }
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); }
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); }
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); }
private CodeString Run(SelfClosingPair pair, CodeString original, Keys input) { var sut = new SelfClosingPairCompletionService(null); return(sut.Execute(pair, original, input)); }