private void ReadToken() { // arrange byte[] source = Encoding.UTF8.GetBytes( "\"\"\"helloWorld_123\r\n\t\tfoo\r\n\tbar\"\"\""); var reader = new Utf8GraphQLReader(source); // act reader.Read(); // assert Assert.Equal( "helloWorld_123\r\n\t\tfoo\r\n\tbar", reader.GetString(reader.Value)); Assert.Equal( "helloWorld_123\n\tfoo\nbar", reader.GetString()); Assert.Equal(TokenKind.BlockString, reader.Kind); Assert.Equal(1, reader.Line); Assert.Equal(1, reader.Column); Assert.Equal(0, reader.Start); Assert.Equal(32, reader.End); }
// TODO : resources public static void UnexpectedProperty( Utf8GraphQLReader reader, ReadOnlySpan <byte> fieldName) => throw new SyntaxException( reader, string.Format( CultureInfo.InvariantCulture, "Unexpected request property name `{0}` found.", Utf8GraphQLReader.GetString(fieldName, false)));
public static SyntaxException ExpectedStringOrNull(Utf8GraphQLReader reader) => new SyntaxException( reader, string.Format( CultureInfo.InvariantCulture, "Expected a string-token or a null-token, " + "but found a {0}-token with value `{1}`.", reader.Kind.ToString(), reader.GetString()));
private void EscapeCharacters(string sourceText, string expectedResult) { // arrange byte[] source = Encoding.UTF8.GetBytes(sourceText); var reader = new Utf8GraphQLReader(source); // act reader.Read(); // assert Assert.Equal(expectedResult, reader.GetString()); Assert.Equal(TokenKind.String, reader.Kind); }
private void ReadToken(string sourceText) { // arrange byte[] source = Encoding.UTF8.GetBytes(sourceText); var reader = new Utf8GraphQLReader(source); // act reader.Read(); // assert Assert.Equal("Ć¼Ć¤helloWorld_123", reader.GetString()); Assert.Equal(TokenKind.String, reader.Kind); }
private void ParseMessageProperty(ref Message message) { ReadOnlySpan <byte> fieldName = _reader.Expect(TokenKind.String); _reader.Expect(TokenKind.Colon); switch (fieldName[0]) { case _t: if (fieldName.SequenceEqual(_type)) { message.Type = ParseStringOrNull(); return; } break; case _i: if (fieldName.SequenceEqual(_id)) { message.Id = ParseStringOrNull(); return; } break; case _p: if (fieldName.SequenceEqual(_payload)) { int start = _reader.Start; message.HasPayload = !IsNullToken(); int end = SkipValue(); message.Payload = _reader.GraphQLData.Slice( start, end - start); return; } break; default: // TODO : resources throw new SyntaxException( _reader, string.Format( CultureInfo.InvariantCulture, "Unexpected request property name `{0}` found.", Utf8GraphQLReader.GetString(fieldName, false))); } }
private void ReadToken_SingleLine_ParsesCorrectly() { // arrange byte[] source = Encoding.UTF8.GetBytes( "\"\"\"helloWorld_123\"\"\""); var reader = new Utf8GraphQLReader(source); // act reader.Read(); // assert Assert.Equal("helloWorld_123", reader.GetString()); Assert.Equal(TokenKind.BlockString, reader.Kind); Assert.Equal(1, reader.Line); Assert.Equal(1, reader.Column); Assert.Equal(0, reader.Start); Assert.Equal(19, reader.End); }
private void UnescapeString() { // arrange byte[] source = Encoding.UTF8.GetBytes("\"abc\""); var reader = new Utf8GraphQLReader(source); reader.Read(); // act var buffer = new byte[3 * 4]; var span = buffer.AsSpan(); reader.UnescapeValue(ref span); // assert Assert.Equal(3, span.Length); Assert.Equal("abc", Utf8GraphQLReader.GetString(span)); }
private void ReadToken_WithEscapedTrippleQuote2_EscapeIsReplacedWithActualQuotes() { // arrange byte[] source = Encoding.UTF8.GetBytes( "\"\"\"hello\\\"\"\"World_123\r\n\t\tfoo\r\n\tbar\"\"\""); var reader = new Utf8GraphQLReader(source); // act reader.Read(); // assert Assert.Equal( "hello\"\"\"World_123\n\tfoo\nbar", reader.GetString()); Assert.Equal(TokenKind.BlockString, reader.Kind); Assert.Equal(1, reader.Line); Assert.Equal(1, reader.Column); Assert.Equal(0, reader.Start); Assert.Equal(36, reader.End); }
private void ReadToken_WithTrailingBlanks_BlanksAreRemoved() { // arrange byte[] source = Encoding.UTF8.GetBytes( "\"\"\"helloWorld_123\r\n\t\tfoo\r\n\tbar" + "\r\n\t\r\n\t\r\n\t\r\n\t\"\"\""); var reader = new Utf8GraphQLReader(source); // act reader.Read(); // assert Assert.Equal( "helloWorld_123\n\tfoo\nbar", reader.GetString()); Assert.Equal(TokenKind.BlockString, reader.Kind); Assert.Equal(1, reader.Line); Assert.Equal(1, reader.Column); Assert.Equal(0, reader.Start); Assert.Equal(44, reader.End); }
private void ParseRequestProperty(ref Request request) { ReadOnlySpan <byte> fieldName = _reader.Expect(TokenKind.String); _reader.Expect(TokenKind.Colon); switch (fieldName[0]) { case _o: if (fieldName.SequenceEqual(_operationName)) { request.OperationName = ParseStringOrNull(); return; } break; case _n: if (fieldName.SequenceEqual(_queryName)) { request.NamedQuery = ParseStringOrNull(); return; } break; case _q: if (fieldName.SequenceEqual(_query)) { request.IsQueryNull = IsNullToken(); if (!request.IsQueryNull && _reader.Kind != TokenKind.String) { // TODO : resources throw new SyntaxException( _reader, "The query field must be a string or null."); } request.Query = _reader.Value; _reader.MoveNext(); return; } break; case _v: if (fieldName.SequenceEqual(_variables)) { request.Variables = ParseObjectOrNull(); return; } break; case _e: if (fieldName.SequenceEqual(_extensions)) { request.Extensions = ParseObjectOrNull(); return; } break; } // TODO : resources throw new SyntaxException( _reader, string.Format( CultureInfo.InvariantCulture, "Unexpected request property name `{0}` found.", Utf8GraphQLReader.GetString(fieldName, false))); }