mirror of
https://github.com/nlohmann/json.git
synced 2024-11-24 14:59:00 +08:00
✅ added more tests from recent nst's JSONTestSuite
This commit is contained in:
parent
567fe9b7a0
commit
4639bb2c8f
21
test/data/nst_json_testsuite2/LICENSE
Normal file
21
test/data/nst_json_testsuite2/LICENSE
Normal file
@ -0,0 +1,21 @@
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2016 Nicolas Seriot
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
55
test/data/nst_json_testsuite2/README.md
Normal file
55
test/data/nst_json_testsuite2/README.md
Normal file
@ -0,0 +1,55 @@
|
||||
# JSON Parsing Test Suite
|
||||
A comprehensive test suite for RFC 8259 compliant JSON parsers
|
||||
|
||||
This repository was created as an appendix to the article [Parsing JSON is a Minefield 💣](http://seriot.ch/parsing_json.php).
|
||||
|
||||
**/parsers/**
|
||||
|
||||
This directory contains several parsers and tiny wrappers to turn the parsers into JSON validators, by returning a specific value.
|
||||
|
||||
- `0` the parser did accept the content
|
||||
- `1` the parser did reject the content
|
||||
- `>1` the process did crash
|
||||
- `timeout` happens after 5 seconds
|
||||
|
||||
**/test\_parsing/**
|
||||
|
||||
The name of these files tell if their contents should be accepted or rejected.
|
||||
|
||||
- `y_` content must be accepted by parsers
|
||||
- `n_` content must be rejected by parsers
|
||||
- `i_` parsers are free to accept or reject content
|
||||
|
||||
**/test\_transform/**
|
||||
|
||||
These files contain weird structures and characters that parsers may understand differently, eg:
|
||||
|
||||
- huge numbers
|
||||
- dictionaries with similar keys
|
||||
- NULL characters
|
||||
- escaped invalid strings
|
||||
|
||||
These files were used to produce `results/transform.html`.
|
||||
|
||||
**/run_tests.py**
|
||||
|
||||
Run all parsers with all files:
|
||||
|
||||
$ python3 run_tests.py
|
||||
|
||||
Run all parsers with a specific file:
|
||||
|
||||
$ python3 run_tests.py file.json
|
||||
|
||||
Run specific parsers with all files:
|
||||
|
||||
$ echo '["Python 2.7.10", "Python 3.5.2"]' > python_only.json
|
||||
$ python3 run_tests.py --filter=python_only.json
|
||||
|
||||
The script writes logs in `results/logs.txt`.
|
||||
|
||||
The script then reads `logs.txt` and generates `results/parsing.html`.
|
||||
|
||||
**/results/**
|
||||
|
||||
<img src="results/pruned_results.png" alt="JSON Parsing Tests" />
|
@ -0,0 +1 @@
|
||||
[123.456e-789]
|
@ -0,0 +1 @@
|
||||
[0.4e00669999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999969999999006]
|
@ -0,0 +1 @@
|
||||
[-1e+9999]
|
@ -0,0 +1 @@
|
||||
[1.5e+9999]
|
@ -0,0 +1 @@
|
||||
[-123123e100000]
|
@ -0,0 +1 @@
|
||||
[123123e100000]
|
@ -0,0 +1 @@
|
||||
[123e-10000000]
|
@ -0,0 +1 @@
|
||||
[-123123123123123123123123123123]
|
@ -0,0 +1 @@
|
||||
[100000000000000000000]
|
@ -0,0 +1 @@
|
||||
[-237462374673276894279832749832423479823246327846]
|
@ -0,0 +1 @@
|
||||
{"\uDFAA":0}
|
@ -0,0 +1 @@
|
||||
["\uDADA"]
|
@ -0,0 +1 @@
|
||||
["\uD888\u1234"]
|
Binary file not shown.
@ -0,0 +1 @@
|
||||
["譌・ム淫"]
|
@ -0,0 +1 @@
|
||||
["<22><><EFBFBD>"]
|
@ -0,0 +1 @@
|
||||
["\uD800\n"]
|
@ -0,0 +1 @@
|
||||
["\uDd1ea"]
|
@ -0,0 +1 @@
|
||||
["\uD800\uD800\n"]
|
@ -0,0 +1 @@
|
||||
["\ud800"]
|
@ -0,0 +1 @@
|
||||
["\ud800abc"]
|
@ -0,0 +1 @@
|
||||
["<22>"]
|
@ -0,0 +1 @@
|
||||
["\uDd1e\uD834"]
|
@ -0,0 +1 @@
|
||||
["И"]
|
@ -0,0 +1 @@
|
||||
["\uDFAA"]
|
@ -0,0 +1 @@
|
||||
["<22>"]
|
@ -0,0 +1 @@
|
||||
["<22><><EFBFBD><EFBFBD>"]
|
@ -0,0 +1 @@
|
||||
["<22><>"]
|
@ -0,0 +1 @@
|
||||
["<22>ソソソソ"]
|
@ -0,0 +1 @@
|
||||
["<22>"]
|
@ -0,0 +1 @@
|
||||
["<22><>"]
|
Binary file not shown.
Binary file not shown.
@ -0,0 +1 @@
|
||||
[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]
|
@ -0,0 +1 @@
|
||||
{}
|
@ -0,0 +1 @@
|
||||
[1 true]
|
@ -0,0 +1 @@
|
||||
[a蘊
|
@ -0,0 +1 @@
|
||||
["": 1]
|
@ -0,0 +1 @@
|
||||
[""],
|
1
test/data/nst_json_testsuite2/test_parsing/n_array_comma_and_number.json
Executable file
1
test/data/nst_json_testsuite2/test_parsing/n_array_comma_and_number.json
Executable file
@ -0,0 +1 @@
|
||||
[,1]
|
1
test/data/nst_json_testsuite2/test_parsing/n_array_double_comma.json
Executable file
1
test/data/nst_json_testsuite2/test_parsing/n_array_double_comma.json
Executable file
@ -0,0 +1 @@
|
||||
[1,,2]
|
@ -0,0 +1 @@
|
||||
["x",,]
|
@ -0,0 +1 @@
|
||||
["x"]]
|
@ -0,0 +1 @@
|
||||
["",]
|
@ -0,0 +1 @@
|
||||
["x"
|
@ -0,0 +1 @@
|
||||
[x
|
@ -0,0 +1 @@
|
||||
[3[4]]
|
@ -0,0 +1 @@
|
||||
[<EFBFBD>]
|
@ -0,0 +1 @@
|
||||
[1:2]
|
1
test/data/nst_json_testsuite2/test_parsing/n_array_just_comma.json
Executable file
1
test/data/nst_json_testsuite2/test_parsing/n_array_just_comma.json
Executable file
@ -0,0 +1 @@
|
||||
[,]
|
1
test/data/nst_json_testsuite2/test_parsing/n_array_just_minus.json
Executable file
1
test/data/nst_json_testsuite2/test_parsing/n_array_just_minus.json
Executable file
@ -0,0 +1 @@
|
||||
[-]
|
@ -0,0 +1 @@
|
||||
[ , ""]
|
@ -0,0 +1,3 @@
|
||||
["a",
|
||||
4
|
||||
,1,
|
1
test/data/nst_json_testsuite2/test_parsing/n_array_number_and_comma.json
Executable file
1
test/data/nst_json_testsuite2/test_parsing/n_array_number_and_comma.json
Executable file
@ -0,0 +1 @@
|
||||
[1,]
|
@ -0,0 +1 @@
|
||||
[1,,]
|
@ -0,0 +1 @@
|
||||
["a"\f]
|
1
test/data/nst_json_testsuite2/test_parsing/n_array_star_inside.json
Executable file
1
test/data/nst_json_testsuite2/test_parsing/n_array_star_inside.json
Executable file
@ -0,0 +1 @@
|
||||
[*]
|
@ -0,0 +1 @@
|
||||
[""
|
@ -0,0 +1 @@
|
||||
[1,
|
@ -0,0 +1,3 @@
|
||||
[1,
|
||||
1
|
||||
,1
|
@ -0,0 +1 @@
|
||||
[{}
|
@ -0,0 +1 @@
|
||||
[fals]
|
@ -0,0 +1 @@
|
||||
[nul]
|
@ -0,0 +1 @@
|
||||
[tru]
|
Binary file not shown.
@ -0,0 +1 @@
|
||||
[++1234]
|
1
test/data/nst_json_testsuite2/test_parsing/n_number_+1.json
Executable file
1
test/data/nst_json_testsuite2/test_parsing/n_number_+1.json
Executable file
@ -0,0 +1 @@
|
||||
[+1]
|
1
test/data/nst_json_testsuite2/test_parsing/n_number_+Inf.json
Executable file
1
test/data/nst_json_testsuite2/test_parsing/n_number_+Inf.json
Executable file
@ -0,0 +1 @@
|
||||
[+Inf]
|
1
test/data/nst_json_testsuite2/test_parsing/n_number_-01.json
Executable file
1
test/data/nst_json_testsuite2/test_parsing/n_number_-01.json
Executable file
@ -0,0 +1 @@
|
||||
[-01]
|
1
test/data/nst_json_testsuite2/test_parsing/n_number_-1.0..json
Executable file
1
test/data/nst_json_testsuite2/test_parsing/n_number_-1.0..json
Executable file
@ -0,0 +1 @@
|
||||
[-1.0.]
|
1
test/data/nst_json_testsuite2/test_parsing/n_number_-2..json
Executable file
1
test/data/nst_json_testsuite2/test_parsing/n_number_-2..json
Executable file
@ -0,0 +1 @@
|
||||
[-2.]
|
1
test/data/nst_json_testsuite2/test_parsing/n_number_-NaN.json
Executable file
1
test/data/nst_json_testsuite2/test_parsing/n_number_-NaN.json
Executable file
@ -0,0 +1 @@
|
||||
[-NaN]
|
@ -0,0 +1 @@
|
||||
[.-1]
|
1
test/data/nst_json_testsuite2/test_parsing/n_number_.2e-3.json
Executable file
1
test/data/nst_json_testsuite2/test_parsing/n_number_.2e-3.json
Executable file
@ -0,0 +1 @@
|
||||
[.2e-3]
|
1
test/data/nst_json_testsuite2/test_parsing/n_number_0.1.2.json
Executable file
1
test/data/nst_json_testsuite2/test_parsing/n_number_0.1.2.json
Executable file
@ -0,0 +1 @@
|
||||
[0.1.2]
|
@ -0,0 +1 @@
|
||||
[0.3e+]
|
@ -0,0 +1 @@
|
||||
[0.3e]
|
@ -0,0 +1 @@
|
||||
[0.e1]
|
@ -0,0 +1 @@
|
||||
[0E+]
|
1
test/data/nst_json_testsuite2/test_parsing/n_number_0_capital_E.json
Executable file
1
test/data/nst_json_testsuite2/test_parsing/n_number_0_capital_E.json
Executable file
@ -0,0 +1 @@
|
||||
[0E]
|
@ -0,0 +1 @@
|
||||
[0e+]
|
@ -0,0 +1 @@
|
||||
[0e]
|
1
test/data/nst_json_testsuite2/test_parsing/n_number_1.0e+.json
Executable file
1
test/data/nst_json_testsuite2/test_parsing/n_number_1.0e+.json
Executable file
@ -0,0 +1 @@
|
||||
[1.0e+]
|
1
test/data/nst_json_testsuite2/test_parsing/n_number_1.0e-.json
Executable file
1
test/data/nst_json_testsuite2/test_parsing/n_number_1.0e-.json
Executable file
@ -0,0 +1 @@
|
||||
[1.0e-]
|
1
test/data/nst_json_testsuite2/test_parsing/n_number_1.0e.json
Executable file
1
test/data/nst_json_testsuite2/test_parsing/n_number_1.0e.json
Executable file
@ -0,0 +1 @@
|
||||
[1.0e]
|
1
test/data/nst_json_testsuite2/test_parsing/n_number_1_000.json
Executable file
1
test/data/nst_json_testsuite2/test_parsing/n_number_1_000.json
Executable file
@ -0,0 +1 @@
|
||||
[1 000.0]
|
1
test/data/nst_json_testsuite2/test_parsing/n_number_1eE2.json
Executable file
1
test/data/nst_json_testsuite2/test_parsing/n_number_1eE2.json
Executable file
@ -0,0 +1 @@
|
||||
[1eE2]
|
1
test/data/nst_json_testsuite2/test_parsing/n_number_2.e+3.json
Executable file
1
test/data/nst_json_testsuite2/test_parsing/n_number_2.e+3.json
Executable file
@ -0,0 +1 @@
|
||||
[2.e+3]
|
1
test/data/nst_json_testsuite2/test_parsing/n_number_2.e-3.json
Executable file
1
test/data/nst_json_testsuite2/test_parsing/n_number_2.e-3.json
Executable file
@ -0,0 +1 @@
|
||||
[2.e-3]
|
1
test/data/nst_json_testsuite2/test_parsing/n_number_2.e3.json
Executable file
1
test/data/nst_json_testsuite2/test_parsing/n_number_2.e3.json
Executable file
@ -0,0 +1 @@
|
||||
[2.e3]
|
@ -0,0 +1 @@
|
||||
[9.e+]
|
1
test/data/nst_json_testsuite2/test_parsing/n_number_Inf.json
Executable file
1
test/data/nst_json_testsuite2/test_parsing/n_number_Inf.json
Executable file
@ -0,0 +1 @@
|
||||
[Inf]
|
1
test/data/nst_json_testsuite2/test_parsing/n_number_NaN.json
Executable file
1
test/data/nst_json_testsuite2/test_parsing/n_number_NaN.json
Executable file
@ -0,0 +1 @@
|
||||
[NaN]
|
@ -0,0 +1 @@
|
||||
[1]
|
@ -0,0 +1 @@
|
||||
[1+2]
|
@ -0,0 +1 @@
|
||||
[0x1]
|
@ -0,0 +1 @@
|
||||
[0x42]
|
1
test/data/nst_json_testsuite2/test_parsing/n_number_infinity.json
Executable file
1
test/data/nst_json_testsuite2/test_parsing/n_number_infinity.json
Executable file
@ -0,0 +1 @@
|
||||
[Infinity]
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user