@@ -96,7 +96,7 @@ function g.test_variables()
96
96
local function callback (_ , args )
97
97
local result = ' '
98
98
for _ , tuple in ipairs (getmetatable (args ).__index ) do
99
- result = result .. tuple .value
99
+ result = result .. tostring ( tuple .value )
100
100
end
101
101
return result
102
102
end
@@ -184,10 +184,10 @@ function g.test_variables()
184
184
)
185
185
186
186
t .assert_error_msg_equals (
187
- ' Could not coerce value "18446744073709551614 " to type "Long"' ,
187
+ ' Could not coerce value "18446744073709551617 " to type "Long"' ,
188
188
function ()
189
189
check_request ([[
190
- query { test(arg: "", arg4: 18446744073709551614 ) }
190
+ query { test(arg: "", arg4: 18446744073709551617 ) }
191
191
]] , query_schema )
192
192
end
193
193
)
@@ -2202,3 +2202,37 @@ function g.test_non_finite_float()
2202
2202
query_schema , nil , nil , {variables = variables })
2203
2203
end
2204
2204
end
2205
+
2206
+ function g .test_huge_cdata_number ()
2207
+ local query = [[
2208
+ query ($x: Long!) { test(arg: $x) }
2209
+ ]]
2210
+
2211
+ local function callback (_ , args )
2212
+ return args [1 ].value
2213
+ end
2214
+
2215
+ local query_schema = {
2216
+ [' test' ] = {
2217
+ kind = types .long .nonNull ,
2218
+ arguments = {
2219
+ arg = types .long .nonNull ,
2220
+ },
2221
+ resolve = callback ,
2222
+ }
2223
+ }
2224
+
2225
+ local test_values = {
2226
+ {4503599627370495 ULL, " {\" test\" :4503599627370495}" },
2227
+ {9223372036854775807 ULL, " {\" test\" :9223372036854775807}" },
2228
+ {- 1 LL, " {\" test\" :-1}" },
2229
+ {- 1 ULL, " {\" test\" :18446744073709551615}" }}
2230
+
2231
+ for _ , v in ipairs (test_values ) do
2232
+ local variables = {x = v [1 ]}
2233
+ local res = check_request (query , query_schema , nil , nil , {variables = variables })
2234
+ t .assert_type (res , ' table' )
2235
+ t .assert_equals (res .test , v [1 ])
2236
+ t .assert_equals (json .encode (res ), v [2 ])
2237
+ end
2238
+ end
0 commit comments