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 =>