Skip to content

Commit 4ee8e57

Browse files
authored
Add tests for ROM and Token (#123)
1 parent 416cc7b commit 4ee8e57

File tree

5 files changed

+81
-4
lines changed

5 files changed

+81
-4
lines changed

src/Directory.Build.props

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,13 @@
11
<Project>
22

33
<PropertyGroup>
4-
<VersionPrefix>7.0.0-preview</VersionPrefix>
4+
<VersionPrefix>7.0.1-preview</VersionPrefix>
55
<LangVersion>8.0</LangVersion>
66
<GenerateAssemblyInfo>true</GenerateAssemblyInfo>
77
<TreatWarningsAsErrors>true</TreatWarningsAsErrors>
88
<GenerateDocumentationFile>true</GenerateDocumentationFile>
9-
<CurrentYear>$([System.DateTime]::Now.ToString(yyyy))</CurrentYear>
109
<Authors>Marek Magdziak</Authors>
11-
<Copyright>Copyright 2016-$(CurrentYear) $(Authors) et al. All rights reserved.</Copyright>
10+
<Copyright>Copyright 2016-2019 $(Authors) et al. All rights reserved.</Copyright>
1211
<PackageLicenseExpression>MIT</PackageLicenseExpression>
1312
<PackageRequireLicenseAcceptance>false</PackageRequireLicenseAcceptance>
1413
<PackageIcon>logo.64x64.png</PackageIcon>

src/Directory.Build.targets

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
<PropertyGroup Condition="'$(IsTestProject)' == 'true'">
44
<CoverletOutputFormat>opencover</CoverletOutputFormat>
55
<CoverletOutput>$(MSBuildThisFileDirectory)../.coverage/$(AssemblyName)/</CoverletOutput>
6+
<Include>[GraphQL-Parser]*</Include>
67
</PropertyGroup>
78

89
</Project>

src/GraphQLParser.Tests/MemoryTests.cs

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
using System;
12
using Shouldly;
23
using Xunit;
34

@@ -14,6 +15,9 @@ public void Operators()
1415
rom.Length.ShouldBe(6);
1516
rom.GetHashCode().ShouldNotBe(0);
1617

18+
(rom == new ROM(rom)).ShouldBeTrue();
19+
(rom != new ROM(rom)).ShouldBeFalse();
20+
1721
(rom == str).ShouldBeTrue();
1822
(str == rom).ShouldBeTrue();
1923
(rom != str).ShouldBeFalse();
@@ -24,11 +28,38 @@ public void Operators()
2428
rom2.Length.ShouldBe(5);
2529
rom2.GetHashCode().ShouldNotBe(0);
2630
rom2.GetHashCode().ShouldNotBe(rom.GetHashCode());
31+
rom.Slice(6).GetHashCode().ShouldBe(0);
2732

2833
(rom2 == str).ShouldBeFalse();
2934
(str == rom2).ShouldBeFalse();
3035
(rom2 != str).ShouldBeTrue();
3136
(str != rom2).ShouldBeTrue();
3237
}
38+
39+
[Fact]
40+
public void Equals_Should_Work()
41+
{
42+
var str = "string";
43+
ROM rom = str;
44+
rom.Equals(rom).ShouldBeTrue();
45+
rom.Equals((object)rom).ShouldBeTrue();
46+
rom.Equals((object)str).ShouldBeFalse();
47+
rom.Equals("strin").ShouldBeFalse();
48+
}
49+
50+
[Fact]
51+
public void ImplicitCast()
52+
{
53+
ROM rom1 = "abc";
54+
ReadOnlyMemory<char> mem = rom1;
55+
56+
mem.Span[0].ShouldBe('a');
57+
mem.Span[1].ShouldBe('b');
58+
mem.Span[2].ShouldBe('c');
59+
60+
ROM rom2 = new char[] { 'd', 'e' };
61+
rom2.Span[0].ShouldBe('d');
62+
rom2.Span[1].ShouldBe('e');
63+
}
3364
}
3465
}
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
using System;
2+
using Shouldly;
3+
using Xunit;
4+
5+
namespace GraphQLParser.Tests
6+
{
7+
public class TokenTests
8+
{
9+
[Theory]
10+
[InlineData(TokenKind.EOF, null, "EOF")]
11+
[InlineData(TokenKind.BANG, null, "!")]
12+
[InlineData(TokenKind.DOLLAR, null, "$")]
13+
[InlineData(TokenKind.PAREN_L, null, "(")]
14+
[InlineData(TokenKind.PAREN_R, null, ")")]
15+
[InlineData(TokenKind.SPREAD, null, "...")]
16+
[InlineData(TokenKind.COLON, null, ":")]
17+
[InlineData(TokenKind.EQUALS, null, "=")]
18+
[InlineData(TokenKind.AT, null, "@")]
19+
[InlineData(TokenKind.BRACKET_L, null, "[")]
20+
[InlineData(TokenKind.BRACKET_R, null, "]")]
21+
[InlineData(TokenKind.BRACE_L, null, "{")]
22+
[InlineData(TokenKind.PIPE, null, "|")]
23+
[InlineData(TokenKind.BRACE_R, null, "}")]
24+
25+
[InlineData(TokenKind.NAME, "abc", "Name \"abc\"")]
26+
[InlineData(TokenKind.INT, "42", "Int \"42\"")]
27+
[InlineData(TokenKind.FLOAT, "4.2", "Float \"4.2\"")]
28+
[InlineData(TokenKind.STRING, "def", "String \"def\"")]
29+
[InlineData(TokenKind.COMMENT, "xyz", "# \"xyz\"")]
30+
[InlineData(TokenKind.UNKNOWN, "???", "Unknown \"???\"")]
31+
public void ToStringTest(TokenKind kind, string value, string expectedDescription)
32+
{
33+
var token = new Token(kind, value, 0, 0);
34+
token.ToString().ShouldBe(expectedDescription);
35+
}
36+
37+
[Fact]
38+
public void NotSupported_Token_Should_Throw()
39+
{
40+
Should.Throw<NotSupportedException>(() => new Token((TokenKind)999, "", 0, 0).ToString());
41+
}
42+
}
43+
}

src/GraphQLParser/Token.cs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
using System;
2+
13
namespace GraphQLParser
24
{
35
/// <summary>
@@ -71,7 +73,8 @@ public Token(TokenKind kind, ROM value, int start, int end)
7173
TokenKind.FLOAT => "Float",
7274
TokenKind.STRING => "String",
7375
TokenKind.COMMENT => "#",
74-
_ => string.Empty
76+
TokenKind.UNKNOWN => "Unknown",
77+
_ => throw new NotSupportedException(kind.ToString())
7578
};
7679

7780
private bool HasUniqueValue =>

0 commit comments

Comments
 (0)