Fix TagHelper directive tests to fail when expected.

- Prior to this change the equals bits were falling back to the type comparison that `ChunkGenerator` exposes.
This commit is contained in:
N. Taylor Mullen 2016-05-17 15:24:35 -07:00
parent 852642de84
commit cdea6fd3fb
5 changed files with 69 additions and 8 deletions

3
.gitignore vendored
View File

@ -28,4 +28,5 @@ project.lock.json
*.ncrunchsolution *.ncrunchsolution
*.*sdf *.*sdf
*.ipch *.ipch
.build/ .build/
.vs/

View File

@ -1,7 +1,9 @@
// Copyright (c) .NET Foundation. All rights reserved. // Copyright (c) .NET Foundation. All rights reserved.
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System;
using Microsoft.AspNetCore.Razor.Parser.SyntaxTree; using Microsoft.AspNetCore.Razor.Parser.SyntaxTree;
using Microsoft.Extensions.Internal;
namespace Microsoft.AspNetCore.Razor.Chunks.Generators namespace Microsoft.AspNetCore.Razor.Chunks.Generators
{ {
@ -35,5 +37,23 @@ namespace Microsoft.AspNetCore.Razor.Chunks.Generators
{ {
context.ChunkTreeBuilder.AddAddTagHelperChunk(_lookupText, target); context.ChunkTreeBuilder.AddAddTagHelperChunk(_lookupText, target);
} }
/// <inheritdoc />
public override bool Equals(object obj)
{
var other = obj as AddTagHelperChunkGenerator;
return base.Equals(other) &&
string.Equals(_lookupText, other._lookupText, StringComparison.Ordinal);
}
/// <inheritdoc />
public override int GetHashCode()
{
var combiner = HashCodeCombiner.Start();
combiner.Add(base.GetHashCode());
combiner.Add(_lookupText, StringComparer.Ordinal);
return combiner.CombinedHash;
}
} }
} }

View File

@ -1,7 +1,9 @@
// Copyright (c) .NET Foundation. All rights reserved. // Copyright (c) .NET Foundation. All rights reserved.
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System;
using Microsoft.AspNetCore.Razor.Parser.SyntaxTree; using Microsoft.AspNetCore.Razor.Parser.SyntaxTree;
using Microsoft.Extensions.Internal;
namespace Microsoft.AspNetCore.Razor.Chunks.Generators namespace Microsoft.AspNetCore.Razor.Chunks.Generators
{ {
@ -35,5 +37,23 @@ namespace Microsoft.AspNetCore.Razor.Chunks.Generators
{ {
context.ChunkTreeBuilder.AddRemoveTagHelperChunk(_lookupText, target); context.ChunkTreeBuilder.AddRemoveTagHelperChunk(_lookupText, target);
} }
/// <inheritdoc />
public override bool Equals(object obj)
{
var other = obj as RemoveTagHelperChunkGenerator;
return base.Equals(other) &&
string.Equals(_lookupText, other._lookupText, StringComparison.Ordinal);
}
/// <inheritdoc />
public override int GetHashCode()
{
var combiner = HashCodeCombiner.Start();
combiner.Add(base.GetHashCode());
combiner.Add(_lookupText, StringComparer.Ordinal);
return combiner.CombinedHash;
}
} }
} }

View File

@ -1,7 +1,9 @@
// Copyright (c) .NET Foundation. All rights reserved. // Copyright (c) .NET Foundation. All rights reserved.
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System;
using Microsoft.AspNetCore.Razor.Parser.SyntaxTree; using Microsoft.AspNetCore.Razor.Parser.SyntaxTree;
using Microsoft.Extensions.Internal;
namespace Microsoft.AspNetCore.Razor.Chunks.Generators namespace Microsoft.AspNetCore.Razor.Chunks.Generators
{ {
@ -36,5 +38,23 @@ namespace Microsoft.AspNetCore.Razor.Chunks.Generators
{ {
context.ChunkTreeBuilder.AddTagHelperPrefixDirectiveChunk(_prefix, target); context.ChunkTreeBuilder.AddTagHelperPrefixDirectiveChunk(_prefix, target);
} }
/// <inheritdoc />
public override bool Equals(object obj)
{
var other = obj as TagHelperPrefixDirectiveChunkGenerator;
return base.Equals(other) &&
string.Equals(_prefix, other._prefix, StringComparison.Ordinal);
}
/// <inheritdoc />
public override int GetHashCode()
{
var combiner = HashCodeCombiner.Start();
combiner.Add(base.GetHashCode());
combiner.Add(_prefix, StringComparer.Ordinal);
return combiner.CombinedHash;
}
} }
} }

View File

@ -78,7 +78,7 @@ namespace Microsoft.AspNetCore.Razor.Test.Parser.CSharp
.MetaCode(SyntaxConstants.CSharp.TagHelperPrefixKeyword + " ") .MetaCode(SyntaxConstants.CSharp.TagHelperPrefixKeyword + " ")
.Accepts(AcceptedCharacters.None), .Accepts(AcceptedCharacters.None),
Factory.Code("\"Foo") Factory.Code("\"Foo")
.AsTagHelperPrefixDirective("Foo")), .AsTagHelperPrefixDirective("\"Foo")),
new RazorError( new RazorError(
RazorResources.ParseError_Unterminated_String_Literal, RazorResources.ParseError_Unterminated_String_Literal,
absoluteIndex: 17, lineIndex: 0, columnIndex: 17, length: 1), absoluteIndex: 17, lineIndex: 0, columnIndex: 17, length: 1),
@ -98,7 +98,7 @@ namespace Microsoft.AspNetCore.Razor.Test.Parser.CSharp
.MetaCode(SyntaxConstants.CSharp.TagHelperPrefixKeyword + " ") .MetaCode(SyntaxConstants.CSharp.TagHelperPrefixKeyword + " ")
.Accepts(AcceptedCharacters.None), .Accepts(AcceptedCharacters.None),
Factory.Code("Foo \"") Factory.Code("Foo \"")
.AsTagHelperPrefixDirective("Foo")), .AsTagHelperPrefixDirective("Foo \"")),
new RazorError( new RazorError(
RazorResources.ParseError_Unterminated_String_Literal, RazorResources.ParseError_Unterminated_String_Literal,
absoluteIndex: 23, lineIndex: 0, columnIndex: 23, length: 1), absoluteIndex: 23, lineIndex: 0, columnIndex: 23, length: 1),
@ -183,7 +183,7 @@ namespace Microsoft.AspNetCore.Razor.Test.Parser.CSharp
Factory.MetaCode(SyntaxConstants.CSharp.RemoveTagHelperKeyword + " ") Factory.MetaCode(SyntaxConstants.CSharp.RemoveTagHelperKeyword + " ")
.Accepts(AcceptedCharacters.None), .Accepts(AcceptedCharacters.None),
Factory.Code("\"Foo") Factory.Code("\"Foo")
.AsRemoveTagHelper("Foo")), .AsRemoveTagHelper("\"Foo")),
new RazorError( new RazorError(
RazorResources.ParseError_Unterminated_String_Literal, RazorResources.ParseError_Unterminated_String_Literal,
absoluteIndex: 17, lineIndex: 0, columnIndex: 17, length: 1), absoluteIndex: 17, lineIndex: 0, columnIndex: 17, length: 1),
@ -202,7 +202,7 @@ namespace Microsoft.AspNetCore.Razor.Test.Parser.CSharp
Factory.MetaCode(SyntaxConstants.CSharp.RemoveTagHelperKeyword + " ") Factory.MetaCode(SyntaxConstants.CSharp.RemoveTagHelperKeyword + " ")
.Accepts(AcceptedCharacters.None), .Accepts(AcceptedCharacters.None),
Factory.Code("Foo\"") Factory.Code("Foo\"")
.AsRemoveTagHelper("Foo") .AsRemoveTagHelper("Foo\"")
.Accepts(AcceptedCharacters.AnyExceptNewline)), .Accepts(AcceptedCharacters.AnyExceptNewline)),
new RazorError( new RazorError(
RazorResources.ParseError_Unterminated_String_Literal, RazorResources.ParseError_Unterminated_String_Literal,
@ -258,7 +258,7 @@ namespace Microsoft.AspNetCore.Razor.Test.Parser.CSharp
Factory.MetaCode(SyntaxConstants.CSharp.AddTagHelperKeyword + " ") Factory.MetaCode(SyntaxConstants.CSharp.AddTagHelperKeyword + " ")
.Accepts(AcceptedCharacters.None), .Accepts(AcceptedCharacters.None),
Factory.Code("Foo, Bar ") Factory.Code("Foo, Bar ")
.AsAddTagHelper("Foo, Bar"))); .AsAddTagHelper("Foo, Bar")));
} }
[Fact] [Fact]
@ -286,7 +286,7 @@ namespace Microsoft.AspNetCore.Razor.Test.Parser.CSharp
Factory.MetaCode(SyntaxConstants.CSharp.AddTagHelperKeyword + " ") Factory.MetaCode(SyntaxConstants.CSharp.AddTagHelperKeyword + " ")
.Accepts(AcceptedCharacters.None), .Accepts(AcceptedCharacters.None),
Factory.Code("\"Foo") Factory.Code("\"Foo")
.AsAddTagHelper("Foo")), .AsAddTagHelper("\"Foo")),
new RazorError( new RazorError(
RazorResources.ParseError_Unterminated_String_Literal, RazorResources.ParseError_Unterminated_String_Literal,
absoluteIndex: 14, lineIndex: 0, columnIndex: 14, length: 1), absoluteIndex: 14, lineIndex: 0, columnIndex: 14, length: 1),
@ -305,7 +305,7 @@ namespace Microsoft.AspNetCore.Razor.Test.Parser.CSharp
Factory.MetaCode(SyntaxConstants.CSharp.AddTagHelperKeyword + " ") Factory.MetaCode(SyntaxConstants.CSharp.AddTagHelperKeyword + " ")
.Accepts(AcceptedCharacters.None), .Accepts(AcceptedCharacters.None),
Factory.Code("Foo\"") Factory.Code("Foo\"")
.AsAddTagHelper("Foo") .AsAddTagHelper("Foo\"")
.Accepts(AcceptedCharacters.AnyExceptNewline)), .Accepts(AcceptedCharacters.AnyExceptNewline)),
new RazorError( new RazorError(
RazorResources.ParseError_Unterminated_String_Literal, RazorResources.ParseError_Unterminated_String_Literal,