コード例 #1
0
ファイル: Utf8ReaderTests.cs プロジェクト: ikvm/hotchocolate
        public void Read_StringValue()
        {
            // arrange
            byte[] sourceText = Encoding.UTF8.GetBytes(
                "{ me(a: \"Abc¢def\\n\") }");

            // act
            var tokens = new List<SyntaxTokenInfo>();
            var reader = new Utf8GraphQLReader(sourceText);

            while (reader.Read())
            {
                tokens.Add(SyntaxTokenInfo.FromReader(in reader));
            }

            // assert
            tokens.MatchSnapshot();
        }
コード例 #2
0
ファイル: Utf8ReaderTests.cs プロジェクト: ikvm/hotchocolate
        public void Read_String_SkipEscapes()
        {
            // arrange
            byte[] sourceText = Encoding.UTF8.GetBytes(
                "abc \"def\\\"\" ghi");

            // act
            var tokens = new List<SyntaxTokenInfo>();
            var reader = new Utf8GraphQLReader(sourceText);

            while (reader.Read())
            {
                tokens.Add(SyntaxTokenInfo.FromReader(in reader));
            }

            // assert
            tokens.MatchSnapshot();
        }
コード例 #3
0
ファイル: Utf8ReaderTests.cs プロジェクト: ikvm/hotchocolate
        public void Read_Comment()
        {
            // arrange
            byte[] sourceText = Encoding.UTF8.GetBytes(
                "{ #test me foo bar \n me }");

            // act
            var tokens = new List<SyntaxTokenInfo>();
            var reader = new Utf8GraphQLReader(sourceText);

            while (reader.Read())
            {
                tokens.Add(SyntaxTokenInfo.FromReader(in reader));
            }

            // assert
            tokens.MatchSnapshot();
        }
コード例 #4
0
        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);
        }
コード例 #5
0
ファイル: Utf8ReaderTests.cs プロジェクト: ikvm/hotchocolate
        public void Read_KitchenSinkQuery()
        {
            // arrange
            byte[] sourceText = Encoding.UTF8.GetBytes(
                FileResource.Open("kitchen-sink.graphql"));

            // act
            var tokens = new List<SyntaxTokenInfo>();
            var reader = new Utf8GraphQLReader(sourceText);

            while (reader.Read())
            {
                tokens.Add(SyntaxTokenInfo.FromReader(in reader));
            }

            // assert
            tokens.MatchSnapshot();
        }
コード例 #6
0
        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));
        }
コード例 #7
0
        private void ReadToken(string sourceBody, bool isFloat)
        {
            // arrange
            byte[] source = Encoding.UTF8.GetBytes(sourceBody);
            var    reader = new Utf8GraphQLReader(source);

            // act
            reader.Read();

            // assert
            Assert.Equal(sourceBody, reader.GetScalarValue());
            Assert.Equal(
                isFloat ? TokenKind.Float : TokenKind.Integer,
                reader.Kind);
            Assert.Equal(1, reader.Line);
            Assert.Equal(1, reader.Column);
            Assert.Equal(0, reader.Start);
            Assert.Equal(sourceBody.Length, reader.End);
        }
コード例 #8
0
        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);
        }
コード例 #9
0
        private void InvalidDigit()
        {
            // arrange
            byte[] source = Encoding.UTF8.GetBytes("123.F");
            var    reader = new Utf8GraphQLReader(source);
            bool   raised = false;

            // act
            try
            {
                reader.Read();
            }
            catch (SyntaxException ex)
            {
                raised = true;
                ex.Message.MatchSnapshot();
            }

            // assert
            Assert.True(raised);
        }
コード例 #10
0
        private void UnexpectedSyntaxException()
        {
            // arrange
            byte[] source = new byte[] { 187 };
            var    reader = new Utf8GraphQLReader(source);
            bool   raised = false;

            // act
            try
            {
                reader.Read();
            }
            catch (SyntaxException ex)
            {
                raised = true;
                ex.Message.MatchSnapshot();
            }

            // assert
            Assert.True(raised);
        }
コード例 #11
0
        private void ReadToken_WithLeadingBlanks_BlanksAreRemoved()
        {
            // arrange
            byte[] source = Encoding.UTF8.GetBytes(
                "\"\"\"\r\n\t\r\n\t\r\n\thelloWorld_123" +
                "\r\n\t\tfoo\r\n\tbar\"\"\"");
            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(41, reader.End);
        }