diff --git a/src/Directory.Build.props b/src/Directory.Build.props index 68dcd4a5..a2499c76 100644 --- a/src/Directory.Build.props +++ b/src/Directory.Build.props @@ -1,14 +1,13 @@ - 7.0.0-preview + 7.0.1-preview 8.0 true true true - $([System.DateTime]::Now.ToString(yyyy)) Marek Magdziak - Copyright 2016-$(CurrentYear) $(Authors) et al. All rights reserved. + Copyright 2016-2019 $(Authors) et al. All rights reserved. MIT false logo.64x64.png diff --git a/src/Directory.Build.targets b/src/Directory.Build.targets index 6535dc36..84811902 100644 --- a/src/Directory.Build.targets +++ b/src/Directory.Build.targets @@ -3,6 +3,7 @@ opencover $(MSBuildThisFileDirectory)../.coverage/$(AssemblyName)/ + [GraphQL-Parser]* diff --git a/src/GraphQLParser.Tests/MemoryTests.cs b/src/GraphQLParser.Tests/MemoryTests.cs index a9e48895..d0e02d54 100644 --- a/src/GraphQLParser.Tests/MemoryTests.cs +++ b/src/GraphQLParser.Tests/MemoryTests.cs @@ -1,3 +1,4 @@ +using System; using Shouldly; using Xunit; @@ -14,6 +15,9 @@ public void Operators() rom.Length.ShouldBe(6); rom.GetHashCode().ShouldNotBe(0); + (rom == new ROM(rom)).ShouldBeTrue(); + (rom != new ROM(rom)).ShouldBeFalse(); + (rom == str).ShouldBeTrue(); (str == rom).ShouldBeTrue(); (rom != str).ShouldBeFalse(); @@ -24,11 +28,38 @@ public void Operators() rom2.Length.ShouldBe(5); rom2.GetHashCode().ShouldNotBe(0); rom2.GetHashCode().ShouldNotBe(rom.GetHashCode()); + rom.Slice(6).GetHashCode().ShouldBe(0); (rom2 == str).ShouldBeFalse(); (str == rom2).ShouldBeFalse(); (rom2 != str).ShouldBeTrue(); (str != rom2).ShouldBeTrue(); } + + [Fact] + public void Equals_Should_Work() + { + var str = "string"; + ROM rom = str; + rom.Equals(rom).ShouldBeTrue(); + rom.Equals((object)rom).ShouldBeTrue(); + rom.Equals((object)str).ShouldBeFalse(); + rom.Equals("strin").ShouldBeFalse(); + } + + [Fact] + public void ImplicitCast() + { + ROM rom1 = "abc"; + ReadOnlyMemory mem = rom1; + + mem.Span[0].ShouldBe('a'); + mem.Span[1].ShouldBe('b'); + mem.Span[2].ShouldBe('c'); + + ROM rom2 = new char[] { 'd', 'e' }; + rom2.Span[0].ShouldBe('d'); + rom2.Span[1].ShouldBe('e'); + } } } diff --git a/src/GraphQLParser.Tests/TokenTests.cs b/src/GraphQLParser.Tests/TokenTests.cs new file mode 100644 index 00000000..73a0845a --- /dev/null +++ b/src/GraphQLParser.Tests/TokenTests.cs @@ -0,0 +1,43 @@ +using System; +using Shouldly; +using Xunit; + +namespace GraphQLParser.Tests +{ + public class TokenTests + { + [Theory] + [InlineData(TokenKind.EOF, null, "EOF")] + [InlineData(TokenKind.BANG, null, "!")] + [InlineData(TokenKind.DOLLAR, null, "$")] + [InlineData(TokenKind.PAREN_L, null, "(")] + [InlineData(TokenKind.PAREN_R, null, ")")] + [InlineData(TokenKind.SPREAD, null, "...")] + [InlineData(TokenKind.COLON, null, ":")] + [InlineData(TokenKind.EQUALS, null, "=")] + [InlineData(TokenKind.AT, null, "@")] + [InlineData(TokenKind.BRACKET_L, null, "[")] + [InlineData(TokenKind.BRACKET_R, null, "]")] + [InlineData(TokenKind.BRACE_L, null, "{")] + [InlineData(TokenKind.PIPE, null, "|")] + [InlineData(TokenKind.BRACE_R, null, "}")] + + [InlineData(TokenKind.NAME, "abc", "Name \"abc\"")] + [InlineData(TokenKind.INT, "42", "Int \"42\"")] + [InlineData(TokenKind.FLOAT, "4.2", "Float \"4.2\"")] + [InlineData(TokenKind.STRING, "def", "String \"def\"")] + [InlineData(TokenKind.COMMENT, "xyz", "# \"xyz\"")] + [InlineData(TokenKind.UNKNOWN, "???", "Unknown \"???\"")] + public void ToStringTest(TokenKind kind, string value, string expectedDescription) + { + var token = new Token(kind, value, 0, 0); + token.ToString().ShouldBe(expectedDescription); + } + + [Fact] + public void NotSupported_Token_Should_Throw() + { + Should.Throw(() => new Token((TokenKind)999, "", 0, 0).ToString()); + } + } +} diff --git a/src/GraphQLParser/Token.cs b/src/GraphQLParser/Token.cs index 9aa03e9d..9113e8c1 100644 --- a/src/GraphQLParser/Token.cs +++ b/src/GraphQLParser/Token.cs @@ -1,3 +1,5 @@ +using System; + namespace GraphQLParser { /// @@ -71,7 +73,8 @@ public Token(TokenKind kind, ROM value, int start, int end) TokenKind.FLOAT => "Float", TokenKind.STRING => "String", TokenKind.COMMENT => "#", - _ => string.Empty + TokenKind.UNKNOWN => "Unknown", + _ => throw new NotSupportedException(kind.ToString()) }; private bool HasUniqueValue =>