...

Text file src/github.com/vektah/gqlparser/lexer/lexer_test.yml

Documentation: github.com/vektah/gqlparser/lexer

     1encoding:
     2  - name: disallows uncommon control characters
     3    input: "\u0007"
     4    error:
     5      message: 'Cannot contain the invalid character "\u0007"'
     6      locations: [{line: 1, column: 1}]
     7
     8  - name: accepts BOM header
     9    input: "\uFEFF foo"
    10    tokens:
    11      -
    12        kind: NAME
    13        start: 2
    14        end: 5
    15        value: 'foo'
    16
    17simple tokens:
    18  - name: records line and column
    19    input: "\n \r\n \r  foo\n"
    20    tokens:
    21      -
    22        kind: NAME
    23        start: 8
    24        end: 11
    25        line: 4
    26        column: 3
    27        value: 'foo'
    28
    29  - name: skips whitespace
    30    input: "\n\n    foo\n\n\n"
    31    tokens:
    32      -
    33        kind: NAME
    34        start: 6
    35        end: 9
    36        value: 'foo'
    37
    38  - name: skips comments
    39    input: "\n    #comment\n    foo#comment\n"
    40    tokens:
    41      -
    42        kind: NAME
    43        start: 18
    44        end: 21
    45        value: 'foo'
    46
    47  - name: skips commas
    48    input: ",,,foo,,,"
    49    tokens:
    50      -
    51        kind: NAME
    52        start: 3
    53        end: 6
    54        value: 'foo'
    55
    56  - name: errors respect whitespace
    57    input: "\n\n    ?\n\n\n"
    58    error:
    59      message: 'Cannot parse the unexpected character "?".'
    60      locations: [{line: 3, column: 5}]
    61      string: |
    62        Syntax Error: Cannot parse the unexpected character "?".
    63        GraphQL request (3:5)
    64        2:
    65        3:     ?
    66               ^
    67        4:
    68
    69  - name: lex reports useful information for dashes in names
    70    input: "a-b"
    71    error:
    72      message: 'Invalid number, expected digit but got: "b".'
    73      locations: [{ line: 1, column: 3 }]
    74    tokens:
    75      -
    76        kind: Name
    77        start: 0
    78        end: 1
    79        value: a
    80
    81lexes strings:
    82  - name: basic
    83    input: '"simple"'
    84    tokens:
    85      -
    86        kind: STRING
    87        start: 0
    88        end: 8
    89        value: 'simple'
    90
    91  - name: whitespace
    92    input: '" white space "'
    93    tokens:
    94      -
    95        kind: STRING
    96        start: 0
    97        end: 15
    98        value: ' white space '
    99
   100  - name: quote
   101    input: '"quote \""'
   102    tokens:
   103      -
   104        kind: STRING
   105        start: 0
   106        end: 10
   107        value: 'quote "'
   108
   109  - name: escaped
   110    input: '"escaped \n\r\b\t\f"'
   111    tokens:
   112      -
   113        kind: STRING
   114        start: 0
   115        end: 20
   116        value: "escaped \n\r\b\t\f"
   117
   118  - name: slashes
   119    input: '"slashes \\ \/"'
   120    tokens:
   121      -
   122        kind: STRING
   123        start: 0
   124        end: 15
   125        value: 'slashes \ /'
   126
   127  - name: unicode
   128    input: '"unicode \u1234\u5678\u90AB\uCDEF"'
   129    tokens:
   130      -
   131        kind: STRING
   132        start: 0
   133        end: 34
   134        value: "unicode \u1234\u5678\u90AB\uCDEF"
   135
   136lex reports useful string errors:
   137  - name: unterminated
   138    input: '"'
   139    error:
   140      message: "Unterminated string."
   141      locations: [{ line: 1, column: 2 }]
   142
   143  - name: no end quote
   144    input: '"no end quote'
   145    error:
   146      message: 'Unterminated string.'
   147      locations: [{ line: 1, column: 14 }]
   148
   149  - name: single quotes
   150    input: "'single quotes'"
   151    error:
   152      message: "Unexpected single quote character ('), did you mean to use a double quote (\")?"
   153      locations: [{ line: 1, column: 1 }]
   154
   155  - name: control characters
   156    input: "\"contains unescaped \u0007 control char\""
   157    error:
   158      message: 'Invalid character within String: "\u0007".'
   159      locations: [{ line: 1, column: 21 }]
   160
   161  - name: null byte
   162    input: "\"null-byte is not \u0000 end of file\""
   163    error:
   164      message: 'Invalid character within String: "\u0000".'
   165      locations: [{ line: 1, column: 19 }]
   166
   167  - name: unterminated newline
   168    input: "\"multi\nline\""
   169    error:
   170      message: 'Unterminated string.'
   171      locations: [{line: 1, column: 7 }]
   172
   173  - name: unterminated carriage return
   174    input: "\"multi\rline\""
   175    error:
   176      message: 'Unterminated string.'
   177      locations: [{ line: 1, column: 7 }]
   178
   179  - name: bad escape character
   180    input: '"bad \z esc"'
   181    error:
   182      message: 'Invalid character escape sequence: \z.'
   183      locations: [{ line: 1, column: 7 }]
   184
   185  - name: hex escape sequence
   186    input: '"bad \x esc"'
   187    error:
   188      message: 'Invalid character escape sequence: \x.'
   189      locations: [{ line: 1, column: 7 }]
   190
   191  - name: short escape sequence
   192    input: '"bad \u1 esc"'
   193    error:
   194      message: 'Invalid character escape sequence: \u1 es.'
   195      locations: [{ line: 1, column: 7 }]
   196
   197  - name: invalid escape sequence 1
   198    input: '"bad \u0XX1 esc"'
   199    error:
   200      message: 'Invalid character escape sequence: \u0XX1.'
   201      locations: [{ line: 1, column: 7 }]
   202
   203  - name: invalid escape sequence 2
   204    input: '"bad \uXXXX esc"'
   205    error:
   206      message: 'Invalid character escape sequence: \uXXXX.'
   207      locations: [{ line: 1, column: 7 }]
   208
   209  - name: invalid escape sequence 3
   210    input: '"bad \uFXXX esc"'
   211    error:
   212      message: 'Invalid character escape sequence: \uFXXX.'
   213      locations: [{ line: 1, column: 7 }]
   214
   215  - name: invalid character escape sequence
   216    input: '"bad \uXXXF esc"'
   217    error:
   218      message: 'Invalid character escape sequence: \uXXXF.'
   219      locations: [{ line: 1, column: 7 }]
   220
   221lexes block strings:
   222  - name: simple
   223    input: '"""simple"""'
   224    tokens:
   225      -
   226        kind: BLOCK_STRING
   227        start: 0
   228        end: 12
   229        value: 'simple'
   230
   231  - name: white space
   232    input: '""" white space """'
   233    tokens:
   234      -
   235        kind: BLOCK_STRING
   236        start: 0
   237        end: 19
   238        value: ' white space '
   239
   240  - name: contains quote
   241    input: '"""contains " quote"""'
   242    tokens:
   243      -
   244        kind: BLOCK_STRING
   245        start: 0
   246        end: 22
   247        value: 'contains " quote'
   248
   249  - name: contains triplequote
   250    input: "\"\"\"contains \\\"\"\" triplequote\"\"\""
   251    tokens:
   252      -
   253        kind: BLOCK_STRING
   254        start: 0
   255        end: 31
   256        value: 'contains """ triplequote'
   257
   258  - name: multi line
   259    input: "\"\"\"multi\nline\"\"\""
   260    tokens:
   261      -
   262        kind: BLOCK_STRING
   263        start: 0
   264        end: 16
   265        value: "multi\nline"
   266
   267  - name: multi line normalized
   268    input: "\"\"\"multi\rline\r\nnormalized\"\"\""
   269    tokens:
   270      -
   271        kind: BLOCK_STRING
   272        start: 0
   273        end: 28
   274        value: "multi\nline\nnormalized"
   275
   276  - name: unescaped
   277    input: '"""unescaped \n\r\b\t\f\u1234"""'
   278    tokens:
   279      -
   280        kind: BLOCK_STRING
   281        start: 0
   282        end: 32
   283        value: 'unescaped \n\r\b\t\f\u1234'
   284
   285  - name: slashes
   286    input: '"""slashes \\ \/"""'
   287    tokens:
   288      -
   289        kind: BLOCK_STRING
   290        start: 0
   291        end: 19
   292        value: 'slashes \\ \/'
   293
   294  - name: multiple lines
   295    input: |
   296      """
   297
   298      spans
   299        multiple
   300          lines
   301
   302      """
   303    tokens:
   304      -
   305        kind: BLOCK_STRING
   306        start: 0
   307        end: 36
   308        value: "spans\n  multiple\n    lines"
   309
   310lex reports useful block string errors:
   311  - name: unterminated string
   312    input: '"""'
   313    error:
   314      message: "Unterminated string."
   315      locations: [{ line: 1, column: 4 }]
   316
   317  - name: unescaped control characters
   318    input: "\"\"\"contains unescaped \u0007 control char\"\"\""
   319    error:
   320      message: 'Invalid character within String: "\u0007".'
   321      locations: [{ line: 1, column: 23 }]
   322
   323  - name: null byte
   324    input: "\"\"\"null-byte is not \u0000 end of file\"\"\""
   325    error:
   326      message: 'Invalid character within String: "\u0000".'
   327      locations: [{ line: 1, column: 21 }]
   328
   329lexes numbers:
   330  - name: integer
   331    input: "4"
   332    tokens:
   333      -
   334        kind: INT
   335        start: 0
   336        end: 1
   337        value: '4'
   338
   339  - name: float
   340    input: "4.123"
   341    tokens:
   342      -
   343        kind: FLOAT
   344        start: 0
   345        end: 5
   346        value: '4.123'
   347
   348  - name: negative
   349    input: "-4"
   350    tokens:
   351      -
   352        kind: INT
   353        start: 0
   354        end: 2
   355        value: '-4'
   356
   357  - name: nine
   358    input: "9"
   359    tokens:
   360      -
   361        kind: INT
   362        start: 0
   363        end: 1
   364        value: '9'
   365
   366  - name: zero
   367    input: "0"
   368    tokens:
   369      -
   370        kind: INT
   371        start: 0
   372        end: 1
   373        value: '0'
   374
   375  - name: negative float
   376    input: "-4.123"
   377    tokens:
   378      -
   379        kind: FLOAT
   380        start: 0
   381        end: 6
   382        value: '-4.123'
   383
   384  - name: float leading zero
   385    input: "0.123"
   386    tokens:
   387      -
   388        kind: FLOAT
   389        start: 0
   390        end: 5
   391        value: '0.123'
   392
   393  - name: exponent whole
   394    input: "123e4"
   395    tokens:
   396      -
   397        kind: FLOAT
   398        start: 0
   399        end: 5
   400        value: '123e4'
   401
   402  - name: exponent uppercase
   403    input: "123E4"
   404    tokens:
   405      -
   406        kind: FLOAT
   407        start: 0
   408        end: 5
   409        value: '123E4'
   410
   411  - name: exponent negative power
   412    input: "123e-4"
   413    tokens:
   414      -
   415        kind: FLOAT
   416        start: 0
   417        end: 6
   418        value: '123e-4'
   419
   420  - name: exponent positive power
   421    input: "123e+4"
   422    tokens:
   423      -
   424        kind: FLOAT
   425        start: 0
   426        end: 6
   427        value: '123e+4'
   428
   429  - name: exponent negative base
   430    input: "-1.123e4"
   431    tokens:
   432      -
   433        kind: FLOAT
   434        start: 0
   435        end: 8
   436        value: '-1.123e4'
   437
   438  - name: exponent negative base upper
   439    input: "-1.123E4"
   440    tokens:
   441      -
   442        kind: FLOAT
   443        start: 0
   444        end: 8
   445        value: '-1.123E4'
   446
   447  - name: exponent negative base negative power
   448    input: "-1.123e-4"
   449    tokens:
   450      -
   451        kind: FLOAT
   452        start: 0
   453        end: 9
   454        value: '-1.123e-4'
   455
   456  - name: exponent negative base positive power
   457    input: "-1.123e+4"
   458    tokens:
   459      -
   460        kind: FLOAT
   461        start: 0
   462        end: 9
   463        value: '-1.123e+4'
   464
   465  - name: exponent negative base large power
   466    input: "-1.123e4567"
   467    tokens:
   468      -
   469        kind: FLOAT
   470        start: 0
   471        end: 11
   472        value: '-1.123e4567'
   473
   474lex reports useful number errors:
   475  - name: zero
   476    input: "00"
   477    error:
   478      message: 'Invalid number, unexpected digit after 0: "0".'
   479      locations: [{ line: 1, column: 2 }]
   480
   481  - name: positive
   482    input: "+1"
   483    error:
   484      message: 'Cannot parse the unexpected character "+".'
   485      locations: [{ line: 1, column: 1 }]
   486
   487  - name: trailing dot
   488    input: "1."
   489    error:
   490      message: 'Invalid number, expected digit but got: <EOF>.'
   491      locations: [{ line: 1, column: 3 }]
   492
   493  - name: traililng dot exponent
   494    input: "1.e1"
   495    error:
   496      message: 'Invalid number, expected digit but got: "e".'
   497      locations: [{ line: 1, column: 3 }]
   498
   499  - name: missing leading zero
   500    input: ".123"
   501    error:
   502      message: 'Cannot parse the unexpected character ".".'
   503      locations: [{ line: 1, column: 1 }]
   504
   505  - name: characters
   506    input: "1.A"
   507    error:
   508      message: 'Invalid number, expected digit but got: "A".'
   509      locations: [{ line: 1, column: 3 }]
   510
   511  - name: negative characters
   512    input: "-A"
   513    error:
   514      message: 'Invalid number, expected digit but got: "A".'
   515      locations: [{ line: 1, column: 2 }]
   516
   517  - name: missing exponent
   518    input: '1.0e'
   519    error:
   520      message: 'Invalid number, expected digit but got: <EOF>.'
   521      locations: [{ line: 1, column: 5 }]
   522
   523  - name: character exponent
   524    input: "1.0eA"
   525    error:
   526      message: 'Invalid number, expected digit but got: "A".'
   527      locations: [{ line: 1, column: 5 }]
   528
   529lexes punctuation:
   530  - name: bang
   531    input: "!"
   532    tokens:
   533      -
   534        kind: BANG
   535        start: 0
   536        end: 1
   537        value: undefined
   538
   539  - name: dollar
   540    input: "$"
   541    tokens:
   542      -
   543        kind: DOLLAR
   544        start: 0
   545        end: 1
   546        value: undefined
   547
   548  - name: open paren
   549    input: "("
   550    tokens:
   551      -
   552        kind: PAREN_L
   553        start: 0
   554        end: 1
   555        value: undefined
   556
   557  - name: close paren
   558    input: ")"
   559    tokens:
   560      -
   561        kind: PAREN_R
   562        start: 0
   563        end: 1
   564        value: undefined
   565
   566  - name: spread
   567    input: "..."
   568    tokens:
   569      -
   570        kind: SPREAD
   571        start: 0
   572        end: 3
   573        value: undefined
   574
   575  - name: colon
   576    input: ":"
   577    tokens:
   578      -
   579        kind: COLON
   580        start: 0
   581        end: 1
   582        value: undefined
   583
   584  - name: equals
   585    input: "="
   586    tokens:
   587      -
   588        kind: EQUALS
   589        start: 0
   590        end: 1
   591        value: undefined
   592
   593  - name: at
   594    input: "@"
   595    tokens:
   596      -
   597        kind: AT
   598        start: 0
   599        end: 1
   600        value: undefined
   601
   602  - name: open bracket
   603    input: "["
   604    tokens:
   605      -
   606        kind: BRACKET_L
   607        start: 0
   608        end: 1
   609        value: undefined
   610
   611  - name: close bracket
   612    input: "]"
   613    tokens:
   614      -
   615        kind: BRACKET_R
   616        start: 0
   617        end: 1
   618        value: undefined
   619
   620  - name: open brace
   621    input: "{"
   622    tokens:
   623      -
   624        kind: BRACE_L
   625        start: 0
   626        end: 1
   627        value: undefined
   628
   629  - name: close brace
   630    input: "}"
   631    tokens:
   632      -
   633        kind: BRACE_R
   634        start: 0
   635        end: 1
   636        value: undefined
   637
   638  - name: pipe
   639    input: "|"
   640    tokens:
   641      -
   642        kind: PIPE
   643        start: 0
   644        end: 1
   645        value: undefined
   646
   647lex reports useful unknown character error:
   648  - name: not a spread
   649    input: ".."
   650    error:
   651      message: 'Cannot parse the unexpected character ".".'
   652      locations: [{ line: 1, column: 1 }]
   653
   654  - name: question mark
   655    input: "?"
   656    error:
   657      message: 'Cannot parse the unexpected character "?".'
   658      message: 'Cannot parse the unexpected character "?".'
   659      locations: [{ line: 1, column: 1 }]
   660
   661  - name: unicode 203
   662    input: "\u203B"
   663    error:
   664      message: 'Cannot parse the unexpected character "â".'
   665      locations: [{ line: 1, column: 1 }]
   666
   667  - name: unicode 200
   668    input: "\u200b"
   669    error:
   670      message: 'Cannot parse the unexpected character "â".'
   671      locations: [{ line: 1, column: 1 }]
   672

View as plain text