diff --git a/tests/syntax-tests/highlighted/GraphQL/test.graphql b/tests/syntax-tests/highlighted/GraphQL/test.graphql new file mode 100644 index 00000000..28670a98 --- /dev/null +++ b/tests/syntax-tests/highlighted/GraphQL/test.graphql @@ -0,0 +1,145 @@ +# Token:: +# Punctuator +# Name +# IntValue +# FloatValue +# StringValue + +# Punctuator:: one of +# ! $ ( ) ... : = @ [ ] { | } + +# Name:: +# /[_A-Za-z][_0-9A-Za-z]*/ + +# Document : +# Definition (list) + +# Definition : +# ExecutableDefinition +# TypeSystemDefinition +# TypeSystemExtension + +# ExecutableDefinition : +# FragmentDefinition +# OperationDefintion + +# FragmentDefinition + +type someType { + id: ID +} + +fragment subsriberFields on someType { + id + name + fooInt(int: 1234, negInt: -56789, zero: 0) + fooFloat( + float: 1.1 + floatExp: 1.4e10 + floatExpSign1: 1.4e+10 + floatExpSign2: 1.5e-40 + floatExpBigE: 1.5E10 + ) + fooBool(x: true, y: false) + fooString(str: "hello", strUni: "\u2116", strEscWs: "\t") + fooLongStr( + lStr: """ + Hello Reader, + This is a long string block. + Best, + Writer + """ + ) + fooNull(nullThing: null) + fooList(numList: [1, 2, 3], strList: ["a", "b", "c"]) + fooObj(someObj: { str: "hi", int: 2 }) +} + +# OperationDefintion + +query _A1 { + getThings(strArg: "string") { + id # commas here are ignored but valid + name + } +} + +query _A2($x: String) { + someFn(episode: $x) { + name + } +} + +mutation B1 { + changeThings(intArg: 123) { + parent { + nestedField1 + nestedField2 + } + } +} + +subscription C1_Hello { + subsribePlease(floatArg: 1.4) { + id + ...subsriberFields + } +} + +# TypeSystemDefinition : +# SchemaDefinition +# TypeDefinition + +schema { + query: Query + mutation: Mutation +} + +type Query { + """ + Can provide documentation this way. + """ + scalars: Scalars + someList: SomeLists + fooBar: FooBar +} + +interface Thing { + id: ID! +} + +type Scalars implements Thing { + id: ID! + int: Int! + float: Float! + str: String! @deprecated(reason: "Need to test a directive") + bool: Boolean + type: StringTypes +} + +type SomeLists { + ints: [Int!]! +} + +type Foo { + fooVal: String +} + +type Bar { + barVal: String +} + +union FooBar = Foo | Bar + +enum StringTypes { + ONE + TWO +} + +input Xyz { + id: ID! +} + +type Mutation { + createXyz(input: xyz!): Xyz! +} diff --git a/tests/syntax-tests/source/GraphQL/test.graphql b/tests/syntax-tests/source/GraphQL/test.graphql new file mode 100644 index 00000000..6b2f63c0 --- /dev/null +++ b/tests/syntax-tests/source/GraphQL/test.graphql @@ -0,0 +1,145 @@ +# Token:: +# Punctuator +# Name +# IntValue +# FloatValue +# StringValue + +# Punctuator:: one of +# ! $ ( ) ... : = @ [ ] { | } + +# Name:: +# /[_A-Za-z][_0-9A-Za-z]*/ + +# Document : +# Definition (list) + +# Definition : +# ExecutableDefinition +# TypeSystemDefinition +# TypeSystemExtension + +# ExecutableDefinition : +# FragmentDefinition +# OperationDefintion + +# FragmentDefinition + +type someType { + id: ID +} + +fragment subsriberFields on someType { + id + name + fooInt(int: 1234, negInt: -56789, zero: 0) + fooFloat( + float: 1.1 + floatExp: 1.4e10 + floatExpSign1: 1.4e+10 + floatExpSign2: 1.5e-40 + floatExpBigE: 1.5E10 + ) + fooBool(x: true, y: false) + fooString(str: "hello", strUni: "\u2116", strEscWs: "\t") + fooLongStr( + lStr: """ + Hello Reader, + This is a long string block. + Best, + Writer + """ + ) + fooNull(nullThing: null) + fooList(numList: [1, 2, 3], strList: ["a", "b", "c"]) + fooObj(someObj: { str: "hi", int: 2 }) +} + +# OperationDefintion + +query _A1 { + getThings(strArg: "string") { + id # commas here are ignored but valid + name + } +} + +query _A2($x: String) { + someFn(episode: $x) { + name + } +} + +mutation B1 { + changeThings(intArg: 123) { + parent { + nestedField1 + nestedField2 + } + } +} + +subscription C1_Hello { + subsribePlease(floatArg: 1.4) { + id + ...subsriberFields + } +} + +# TypeSystemDefinition : +# SchemaDefinition +# TypeDefinition + +schema { + query: Query + mutation: Mutation +} + +type Query { + """ + Can provide documentation this way. + """ + scalars: Scalars + someList: SomeLists + fooBar: FooBar +} + +interface Thing { + id: ID! +} + +type Scalars implements Thing { + id: ID! + int: Int! + float: Float! + str: String! @deprecated(reason: "Need to test a directive") + bool: Boolean + type: StringTypes +} + +type SomeLists { + ints: [Int!]! +} + +type Foo { + fooVal: String +} + +type Bar { + barVal: String +} + +union FooBar = Foo | Bar + +enum StringTypes { + ONE + TWO +} + +input Xyz { + id: ID! +} + +type Mutation { + createXyz(input: xyz!): Xyz! +}