public void Equals_False_WhenExpected(AutoCompleteEditHandler leftObject, object rightObject) { // Arrange & Act var result = leftObject.Equals(rightObject); // Assert Assert.False(result); }
public void GetHashCode_ReturnsSameValue_WhenEqual( AutoCompleteEditHandler leftObject, AutoCompleteEditHandler rightObject) { // Arrange & Act var leftResult = leftObject.GetHashCode(); var rightResult = rightObject.GetHashCode(); // Assert Assert.Equal(leftResult, rightResult); }
protected virtual void SectionDirective() { var nested = Context.IsWithin(BlockType.Section); var errorReported = false; // Set the block and span type Context.CurrentBlock.Type = BlockType.Section; // Verify we're on "section" and accept AssertDirective(SyntaxConstants.CSharp.SectionKeyword); var startLocation = CurrentLocation; AcceptAndMoveNext(); if (nested) { Context.OnError( startLocation, RazorResources.FormatParseError_Sections_Cannot_Be_Nested(RazorResources.SectionExample_CS), Span.GetContent().Value.Length); errorReported = true; } var whitespace = ReadWhile(IsSpacingToken(includeNewLines: true, includeComments: false)); // Get the section name var sectionName = string.Empty; if (!Required(CSharpSymbolType.Identifier, errorIfNotFound: true, errorBase: RazorResources.FormatParseError_Unexpected_Character_At_Section_Name_Start)) { if (!errorReported) { errorReported = true; } PutCurrentBack(); PutBack(whitespace); AcceptWhile(IsSpacingToken(includeNewLines: false, includeComments: false)); } else { Accept(whitespace); sectionName = CurrentSymbol.Content; AcceptAndMoveNext(); } Context.CurrentBlock.ChunkGenerator = new SectionChunkGenerator(sectionName); var errorLocation = CurrentLocation; whitespace = ReadWhile(IsSpacingToken(includeNewLines: true, includeComments: false)); // Get the starting brace var sawStartingBrace = At(CSharpSymbolType.LeftBrace); if (!sawStartingBrace) { if (!errorReported) { errorReported = true; Context.OnError( errorLocation, RazorResources.ParseError_MissingOpenBraceAfterSection, length: 1 /* { */); } PutCurrentBack(); PutBack(whitespace); AcceptWhile(IsSpacingToken(includeNewLines: false, includeComments: false)); Optional(CSharpSymbolType.NewLine); Output(SpanKind.MetaCode); CompleteBlock(); return; } else { Accept(whitespace); } var startingBraceLocation = CurrentLocation; // Set up edit handler var editHandler = new AutoCompleteEditHandler(Language.TokenizeString, autoCompleteAtEndOfSpan: true); Span.EditHandler = editHandler; Span.Accept(CurrentSymbol); // Output Metacode then switch to section parser Output(SpanKind.MetaCode); SectionBlock("{", "}", caseSensitive: true); Span.ChunkGenerator = SpanChunkGenerator.Null; // Check for the terminating "}" if (!Optional(CSharpSymbolType.RightBrace)) { editHandler.AutoCompleteString = "}"; Context.OnError( startingBraceLocation, RazorResources.FormatParseError_Expected_EndOfBlock_Before_EOF( SyntaxConstants.CSharp.SectionKeyword, Language.GetSample(CSharpSymbolType.RightBrace), Language.GetSample(CSharpSymbolType.LeftBrace)), length: 1 /* } */); } else { Span.EditHandler.AcceptedCharacters = AcceptedCharacters.None; } CompleteBlock(insertMarkerIfNecessary: false, captureWhitespaceToEndOfLine: true); Output(SpanKind.MetaCode); return; }
protected virtual void FunctionsDirective() { // Set the block type Context.CurrentBlock.Type = BlockType.Functions; // Verify we're on "functions" and accept AssertDirective(SyntaxConstants.CSharp.FunctionsKeyword); var block = new Block(CurrentSymbol); AcceptAndMoveNext(); AcceptWhile(IsSpacingToken(includeNewLines: true, includeComments: false)); if (!At(CSharpSymbolType.LeftBrace)) { Context.OnError( CurrentLocation, RazorResources.FormatParseError_Expected_X(Language.GetSample(CSharpSymbolType.LeftBrace)), length: 1 /* { */); CompleteBlock(); Output(SpanKind.MetaCode); return; } else { Span.EditHandler.AcceptedCharacters = AcceptedCharacters.None; } // Capture start point and continue var blockStart = CurrentLocation; AcceptAndMoveNext(); // Output what we've seen and continue Output(SpanKind.MetaCode); var editHandler = new AutoCompleteEditHandler(Language.TokenizeString); Span.EditHandler = editHandler; Balance(BalancingModes.NoErrorOnFailure, CSharpSymbolType.LeftBrace, CSharpSymbolType.RightBrace, blockStart); Span.ChunkGenerator = new TypeMemberChunkGenerator(); if (!At(CSharpSymbolType.RightBrace)) { editHandler.AutoCompleteString = "}"; Context.OnError( blockStart, RazorResources.FormatParseError_Expected_EndOfBlock_Before_EOF(block.Name, "}", "{"), length: 1 /* } */); CompleteBlock(); Output(SpanKind.Code); } else { Output(SpanKind.Code); Assert(CSharpSymbolType.RightBrace); Span.ChunkGenerator = SpanChunkGenerator.Null; Span.EditHandler.AcceptedCharacters = AcceptedCharacters.None; AcceptAndMoveNext(); CompleteBlock(); Output(SpanKind.MetaCode); } }