diff options
324 files changed, 709 insertions, 18 deletions
diff --git a/docs/design/027-computation-core.md b/docs/design/027-computation-core.md index f26f2d5..cd8dd44 100644 --- a/docs/design/027-computation-core.md +++ b/docs/design/027-computation-core.md @@ -129,6 +129,17 @@ ### 2단계: 중첩, 갈래, 재귀, 글자 (JSON) +크기 때문에 셋으로 나눈다(2026-10-13). 각각 재는 일이 있다. +- **2a(만듦):** 형식 지정, 바이트 잇기와 자르기, 바이트와 text를 담는 `let`, `while`, `&&`와 `||`의 단락 평가. JSON을 받거나 + 거절하는 검사기로 잰다. 결과는 [140](../research/140-spec-suite.md)의 2a절이다. + - JSONTestSuite에서 틀린 것이 없다. + - 줄 수는 파이썬 이하다(80 대 90). + - 시간은 C의 116배, 파이썬의 1.2배다. + - 쓰다가 드러난 뜻의 틈 하나를 메웠다. `&&`가 양쪽을 다 계산해서 `i < n && d[i]`가 실패했다. 이제 단락 평가이고, 오른쪽이 + 실패할 수 없을 때는 지금처럼 AND 하나를 낸다. 그래서 TPC-C를 포함한 기존 모듈 35개가 바이트까지 같다. +- **2b:** 중첩(레코드 안의 레코드와 리스트), 갈래와 `match`, 값으로서의 리스트, 메시지 필드의 아무 값. JSON을 트리로 읽고 묻는다. +- **2c:** 재귀(부르기와 돌아가기, 함수마다의 검증), 글자로 읽기. + - 레코드의 필드와 리스트의 원소가 아무 값을 가진다. - 갈래와 `match`를 둔다. - 재귀하는 fn과 `while`을 둔다. Pure에는 부르기와 돌아가기, 함수마다의 검증이 생긴다. diff --git a/docs/research/140-spec-suite.md b/docs/research/140-spec-suite.md index 60d40ff..f4c6c48 100644 --- a/docs/research/140-spec-suite.md +++ b/docs/research/140-spec-suite.md @@ -192,6 +192,47 @@ - 기계어 계층은 이 루프를 빠르게 하지 못했다. `PURE_JIT=all`이어도 시간이 같다. 새 명령마다 실행기의 걸음을 불러서다. - 바이트와 비트의 일을 빠르게 하는 것은 핵이 선 뒤의 일이다(027). 그 과녁은 이제 수치 루프가 아니라 이런 일이다. +## 027의 2a: JSON 검사기 (2026-10-13) + +2a에서 더한 것: +- **Pure.** + - 바이트 자르기, 한 바이트 + - 이름으로 담는 바이트와 text 32칸. 칸 번호가 타입을 정하고, 덧붙이기는 제자리에서 하며, 담은 양은 몫에 센다. + - NUM_TEXT의 형식, CONCAT의 바이트 + - `pure-run`이 메시지의 바이트를 파일에서 읽는 길(`message NAME @PATH`) +- **aup.** + - 형식 `{x:08x}`, `{p:.2f}`, 잇기 `+`, 자르기 `b[a .. c]`, `byte(n)` + - 바이트와 text의 let(`s = s + e`는 덧붙이기), `while` + - `&&`와 `||`의 단락 평가 + +**JSON 검사기.** aup의 `examples/json.aup`(80줄)는 RFC 8259의 문법을 처음부터 한 번 읽는다. 열린 배열과 객체는 스택(i64 리스트)에 +둔다. +- **맞음.** JSONTestSuite(1ef36fa)에서 틀린 것이 없다. + - `y_` 95개를 모두 받고 `n_` 188개를 모두 거절한다. + - `i_` 35개 가운데 21개를 받는다: 범위를 넘는 수, 짝 없는 서로게이트 이스케이프, 500겹. + - 14개는 거절한다: UTF-8이 아닌 입력, BOM, UTF-16. + - 세 실행 길의 출력이 바이트까지 같다. + - 이 대조는 Pure의 `make check`(`module_specs`)에 들어갔다. 케이스는 `tests/specs/json`에 넣었다(MIT). 큰 둘은 검사가 만들고 해시로 + 대조한다. +- **줄 수.** 같은 설계의 파이썬 참조 `json_check.py`가 90줄이고 aup가 80줄이다. 막대를 지난다. +- **시간.** 10만 바이트 문서에서 바이트당 299 ns다. C로 쓴 같은 설계는 2.57 ns(116배), 파이썬은 246 ns(Pure가 1.2배 느림)다. 바이트당 + Pure 명령이 339개다. + +**쓰다가 드러난 뜻의 틈.** +- 처음 돌리자 받을 것이 모두 `limit`으로 실패했다. aup의 `&&`가 양쪽을 다 계산해서, `i < n && space(d[i])`가 끝에서 `d[n]`을 읽었다. +- 범위를 먼저 보고 읽는 꼴은 명세 구현의 기본이라 `&&`와 `||`를 단락 평가로 바꾸었다. 식은 아무것도 바꾸지 않으므로, 달라지는 + 것은 오른쪽이 실패할 수 있을 때뿐이다. +- 그래서 컴파일러는 오른쪽이 실패할 수 없을 때 지금처럼 AND나 OR 하나를 낸다. 실패할 수 없는 것은 비교, 상태와 필드 읽기, 걷는 + 항목의 필드, 작은 상수를 더하는 수의 덧셈, 그리고 왼쪽이 이미 계산한 식이다. +- TPC-C의 `order_status` 필터는 오른쪽의 키 찾기와 곱셈을 왼쪽이 이미 계산한다. 그래서 모듈이 바이트까지 같고, Pure의 키 범위 + 찾기도 그대로다. +- Pure, aup, Vega의 소스 가운데 빌드되는 36개를 전후로 견주었다. 달라진 것은 JSON 검사기 하나다. + +**SHA-256 다시.** +- 형식(`"{h0:08x}…"`)과 바이트 잇기(채움)로 다시 써 42줄(닫는 괄호만인 줄 5)이 됐다. 파이썬은 28줄이다. +- 남은 차이는 리스트를 값으로 짓지 못해 생기는 것(메시지 스케줄의 미리 채움), 낱말 만들기, 선언이다. +- 시간은 바이트당 1,437 ns(C의 159배)다. 블록당 명령이 16,476개로 줄었다. + ## 착수 기준 (다음 일) - **바꿀 결정.** 계산의 핵을 설계한다(027). 위 표의 여덟 후보 가운데 무엇을 어떤 모양으로 받을지 정한다. diff --git a/research/experiments/044-specs/2026-10-13-stage2a.jsonl b/research/experiments/044-specs/2026-10-13-stage2a.jsonl new file mode 100644 index 0000000..e536b54 --- /dev/null +++ b/research/experiments/044-specs/2026-10-13-stage2a.jsonl @@ -0,0 +1,8 @@ +{"size":103781,"jit":"0","batch":"0","c_ns_per_byte":2.567,"pure_ns_per_byte":298.133,"ratio":116.1,"instructions":35226511,"instructions_per_byte":339.4} +{"size":103781,"jit":"0","batch":"","c_ns_per_byte":2.567,"pure_ns_per_byte":298.362,"ratio":116.2,"instructions":35226511,"instructions_per_byte":339.4} +{"size":103781,"jit":"all","batch":"","c_ns_per_byte":2.569,"pure_ns_per_byte":298.453,"ratio":116.2,"instructions":35226511,"instructions_per_byte":339.4} +{"size":103781,"jit":"","batch":"","c_ns_per_byte":2.571,"pure_ns_per_byte":299.164,"ratio":116.4,"instructions":35226511,"instructions_per_byte":339.4} +{"size":103781,"python_ns_per_byte":247.0} +{"size":65536,"jit":"0","batch":"0","c_ns_per_byte":9.025,"pure_ns_per_byte":1437.304,"ratio":159.3,"instructions":16887501,"instructions_per_block":16476} +{"size":65536,"jit":"","batch":"","c_ns_per_byte":9.051,"pure_ns_per_byte":1439.504,"ratio":159.0,"instructions":16887501,"instructions_per_block":16476} +{"messages": 142, "right": {"batches": 142, "rounds": 142, "all": 142, "default": 142}, "aup_lines": 42, "aup_brace_lines": 5, "python_lines": 28} diff --git a/research/experiments/044-specs/json_check.py b/research/experiments/044-specs/json_check.py new file mode 100644 index 0000000..b5d62f0 --- /dev/null +++ b/research/experiments/044-specs/json_check.py @@ -0,0 +1,115 @@ +# Whether bytes are one JSON text (RFC 8259): the design of aup's examples/json.aup in plain Python, the reference +# 140 counts its lines against (read once from the start, a stack of the arrays and objects open). +def space(b): + return b in (0x20, 0x09, 0x0a, 0x0d) + + +def digit(b): + return 0x30 <= b <= 0x39 + + +def hexdigit(b): + return digit(b) or 0x61 <= b <= 0x66 or 0x41 <= b <= 0x46 + + +def valid(d): + try: + t = d.decode('utf-8') + except UnicodeDecodeError: + return False + n, i, mode, ok, open_ = len(d), 0, 0, True, [] # mode 0: a value, 1: after one, 2: a key, 3: a key or }, 4: a value or ] + while ok: + while i < n and space(d[i]): + i += 1 + if i == n: + return mode == 1 and not open_ + b = d[i] + if mode == 1: + if not open_: + ok = False + elif b == 0x2c: + mode = 0 if open_[-1] == 0x5b else 2 + elif b == open_[-1] + 2: + open_.pop() + else: + ok = False + i += 1 + elif mode == 3 and b == 0x7d or mode == 4 and b == 0x5d: + open_.pop() + mode = 1 + i += 1 + elif mode in (2, 3): + ok = b == 0x22 + mode = 5 + elif b in (0x5b, 0x7b): + open_.append(b) + mode = 4 if b == 0x5b else 3 + i += 1 + elif b == 0x22 or mode == 5: + i += 1 + while i < n and d[i] != 0x22 and ok: + if d[i] < 0x20: + ok = False + elif d[i] == 0x5c and i + 1 < n and d[i + 1] == 0x75: + ok = i + 5 < n and all(hexdigit(x) for x in d[i + 2:i + 6]) + i += 6 + elif d[i] == 0x5c: + ok = i + 1 < n and d[i + 1] in b'"\\/bfnrt' + i += 2 + else: + i += 1 + ok = ok and i < n + i += 1 + if mode == 5: + while i < n and space(d[i]): + i += 1 + ok = ok and i < n and d[i] == 0x3a + i += 1 + mode = 0 + else: + mode = 1 + elif b == 0x2d or digit(b): + if b == 0x2d: + i += 1 + ok = i < n and digit(d[i]) + if ok and d[i] == 0x30: + i += 1 + else: + while i < n and digit(d[i]): + i += 1 + if ok and i < n and d[i] == 0x2e: + i += 1 + ok = i < n and digit(d[i]) + while i < n and digit(d[i]): + i += 1 + if ok and i < n and d[i] in (0x65, 0x45): + i += 1 + if i < n and d[i] in (0x2b, 0x2d): + i += 1 + ok = i < n and digit(d[i]) + while i < n and digit(d[i]): + i += 1 + mode = 1 + else: + word = b'true' if b == 0x74 else b'false' if b == 0x66 else b'null' + ok = d[i:i + len(word)] == word + i += len(word) + mode = 1 + return False + + +if __name__ == '__main__': + import os, sys, time + suite = sys.argv[1] + files = sorted(os.listdir(suite)) + data = [open(os.path.join(suite, f), 'rb').read() for f in files] + for f, d in zip(files, data): + assert not f.startswith('y_') or valid(d), f + assert not f.startswith('n_') or not valid(d), f + big = b'[' + b','.join(b'{"key%d": [1.5e3, true, null, "text \\u00e9 %d"]}' % (k, k) for k in range(2000)) + b']' + runs = [] + for _ in range(7): + start = time.perf_counter() + valid(big) + runs.append((time.perf_counter() - start) * 1e9 / len(big)) + print('{"size":%d,"python_ns_per_byte":%.1f}' % (len(big), sorted(runs)[3])) diff --git a/research/experiments/044-specs/json_time.c b/research/experiments/044-specs/json_time.c new file mode 100644 index 0000000..b401ece --- /dev/null +++ b/research/experiments/044-specs/json_time.c @@ -0,0 +1,132 @@ +/* Research 140, design 027 stage 2a: aup's examples/json.aup (run by Pure) + * against the same validator in C, on the same document: both must say it is + * JSON, then each is timed (the median of seven runs of rounds checks). + * + * cc -O2 -std=c17 -I../../../core json_time.c ../../../build/libpure.a -lm -pthread -o json_time + * ./json_time json.pmod ROUNDS (PURE_JIT and PURE_BATCH choose Pure's path) + * + * The document is json_check.py's: 2,000 objects of a key and an array of a + * number, true, null and a string with an escape. One JSON line. */ +#define _POSIX_C_SOURCE 200809L +#include "module.h" +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <time.h> + +static int space(int b) { return b == 0x20 || b == 0x09 || b == 0x0a || b == 0x0d; } +static int digit(int b) { return b >= 0x30 && b <= 0x39; } +static int hex(int b) { return digit(b) || (b >= 0x61 && b <= 0x66) || (b >= 0x41 && b <= 0x46); } + +/* json.aup's design in C (its UTF-8 check left out: the document is ASCII). */ +static int valid(const unsigned char *d, size_t n, unsigned char *open) { + size_t i = 0, depth = 0; + int mode = 0, ok = 1; + while (ok) { + while (i < n && space(d[i])) ++i; + if (i == n) return mode == 1 && !depth; + int b = d[i]; + if (mode == 1) { + if (!depth) ok = 0; + else if (b == 0x2c) mode = open[depth - 1] == 0x5b ? 0 : 2; + else if (b == open[depth - 1] + 2) --depth; + else ok = 0; + ++i; + } else if ((mode == 3 && b == 0x7d) || (mode == 4 && b == 0x5d)) { + --depth, mode = 1, ++i; + } else if (mode == 2 || mode == 3) { + ok = b == 0x22, mode = 5; + } else if (b == 0x5b || b == 0x7b) { + open[depth++] = (unsigned char)b, mode = b == 0x5b ? 4 : 3, ++i; + } else if (b == 0x22 || mode == 5) { + ++i; + while (i < n && d[i] != 0x22 && ok) { + if (d[i] < 0x20) ok = 0; + else if (d[i] == 0x5c && i + 1 < n && d[i + 1] == 0x75) { + ok = i + 5 < n && hex(d[i + 2]) && hex(d[i + 3]) && hex(d[i + 4]) && hex(d[i + 5]); + i += 6; + } else if (d[i] == 0x5c) { + ok = i + 1 < n && strchr("\"\\/bfnrt", d[i + 1]) && d[i + 1]; + i += 2; + } else ++i; + } + ok = ok && i < n, ++i; + if (mode == 5) { + while (i < n && space(d[i])) ++i; + ok = ok && i < n && d[i] == 0x3a, ++i, mode = 0; + } else mode = 1; + } else if (b == 0x2d || digit(b)) { + if (b == 0x2d) ++i; + ok = i < n && digit(d[i]); + if (ok && d[i] == 0x30) ++i; + else while (i < n && digit(d[i])) ++i; + if (ok && i < n && d[i] == 0x2e) { + ++i, ok = i < n && digit(d[i]); + while (i < n && digit(d[i])) ++i; + } + if (ok && i < n && (d[i] == 0x65 || d[i] == 0x45)) { + ++i; + if (i < n && (d[i] == 0x2b || d[i] == 0x2d)) ++i; + ok = i < n && digit(d[i]); + while (i < n && digit(d[i])) ++i; + } + mode = 1; + } else { + const char *word = b == 0x74 ? "true" : b == 0x66 ? "false" : "null"; + size_t length = strlen(word); + ok = i + length <= n && !memcmp(d + i, word, length), i += length, mode = 1; + } + } + return 0; +} + +static double now_ns(void) { + struct timespec t; + clock_gettime(CLOCK_MONOTONIC, &t); + return (double)t.tv_sec * 1e9 + (double)t.tv_nsec; +} + +static int by_value(const void *a, const void *b) { + double x = *(const double *)a, y = *(const double *)b; + return (x > y) - (x < y); +} + +int main(int argc, char **argv) { + if (argc != 3) { fprintf(stderr, "usage: %s MODULE ROUNDS\n", argv[0]); return 2; } + int rounds = atoi(argv[2]); + static unsigned char doc[1 << 18], open[1 << 18]; + size_t n = 0; + doc[n++] = '['; + for (int k = 0; k < 2000; ++k) + n += (size_t)sprintf((char *)doc + n, "%s{\"key%d\": [1.5e3, true, null, \"text \\u00e9 %d\"]}", k ? "," : "", k, k); + doc[n++] = ']'; + PureModule module; + char error[160]; + if (pure_module_read(argv[1], &module, error, sizeof(error)) != PURE_OK) { fprintf(stderr, "%s\n", error); return 1; } + PureApp app; + if (pure_app_start(&app, &module, (PureData){0}) != PURE_OK) return 1; + int check = pure_module_input(&module, "check"); + if (pure_app_message(&app, (uint32_t)check, NULL, -1, (PureSpan){doc, n}) != PURE_OK) { fprintf(stderr, "event failed\n"); return 1; } + uint64_t work = app.work; + if (app.values[0].num != 1 || !valid(doc, n, open)) { fprintf(stderr, "not both valid\n"); return 1; } + double c_runs[7], pure_runs[7]; + volatile int sink = 0; + for (int r = 0; r < 7; ++r) { + double start = now_ns(); + for (int i = 0; i < rounds; ++i) sink += valid(doc, n, open); + c_runs[r] = (now_ns() - start) / rounds; + start = now_ns(); + for (int i = 0; i < rounds; ++i) + if (pure_app_message(&app, (uint32_t)check, NULL, -1, (PureSpan){doc, n}) != PURE_OK) return 1; + pure_runs[r] = (now_ns() - start) / rounds; + } + qsort(c_runs, 7, sizeof(double), by_value); + qsort(pure_runs, 7, sizeof(double), by_value); + const char *jit = getenv("PURE_JIT"), *batch = getenv("PURE_BATCH"); + printf("{\"size\":%zu,\"jit\":\"%s\",\"batch\":\"%s\",\"c_ns_per_byte\":%.3f,\"pure_ns_per_byte\":%.3f,\"ratio\":%.1f," + "\"instructions\":%llu,\"instructions_per_byte\":%.1f}\n", + n, jit ? jit : "", batch ? batch : "", c_runs[3] / (double)n, pure_runs[3] / (double)n, pure_runs[3] / c_runs[3], + (unsigned long long)work, (double)work / (double)n); + pure_app_stop(&app); + return 0; +} diff --git a/tests/check.py b/tests/check.py index eef4ae9..bf77246 100644 --- a/tests/check.py +++ b/tests/check.py @@ -1686,6 +1686,61 @@ on go { } """ +def module_specs(aup, pure, work): + """Specs written in aup (docs/research/140), checked by their own cases + on Pure's three paths, each path's output the same byte for byte: SHA-256 + (aup's examples/sha256.aup) against hashlib on FIPS 180-2's examples and + messages of every length up to two blocks; whether bytes are JSON (its + examples/json.aup) on JSONTestSuite's parsing cases (tests/specs/json): + every y_ case taken, every n_ case refused (a refusal: valid false, or + the event failing as encoding on bytes that are not UTF-8).""" + import hashlib + import os + import random + import struct + runs = {} + program = work / 'sha256.pmod' + compile_module(aup, EDITOR.parent / 'sha256.aup', program) + chooser = random.Random(140) + messages = [b'abc', b'abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq', + b'abcdefghbcdefghicdefghijdefghijkefghijklfghijklmghijklmnhijklmnoijklmnopjklmnopqklmnopqrlmnopqrsmnopqrstnopqrstu'] + messages += [bytes(chooser.randrange(256) for _ in range(n)) for n in list(range(130)) + [1000, 4096]] + given = ''.join(f"message hash {m.hex() or '-'}\n" for m in messages) + outputs = {name: subprocess.run([str(pure / 'build/pure-run'), str(program)], input=given, capture_output=True, text=True, + timeout=120, env=dict(os.environ, **env)).stdout + for name, env in (('batches', {'PURE_JIT': '0'}), ('rounds', {'PURE_JIT': '0', 'PURE_BATCH': '0'}), ('all', {'PURE_JIT': 'all'}))} + for name in ('rounds', 'all'): + assert outputs[name] == outputs['batches'], ('sha256', name) + digests = [json.loads(line)['states']['digest'] for line in outputs['batches'].splitlines()] + assert digests == [hashlib.sha256(m).hexdigest() for m in messages], 'sha256' + runs['sha256'] = len(messages) + program = work / 'json.pmod' + compile_module(aup, EDITOR.parent / 'json.aup', program) + suite = pure / 'tests/specs/json' + cases = {name: (suite / name).read_bytes() for name in sorted(os.listdir(suite)) if name.endswith('.json')} + cases['n_structure_100000_opening_arrays.json'] = b'[' * 100000 + cases['n_structure_open_array_object.json'] = b'[{"":' * 50000 + b'\n' + assert hashlib.sha256(cases['n_structure_100000_opening_arrays.json']).hexdigest().startswith('13f86ea1e7edd116') + assert hashlib.sha256(cases['n_structure_open_array_object.json']).hexdigest().startswith('48b232fcd18ce2f7') + for name, data in cases.items(): + (work / name).write_bytes(data) + given = ''.join(f'message check @{work / name}\n' for name in cases) + outputs = {name: subprocess.run([str(pure / 'build/pure-run'), str(program)], input=given, capture_output=True, text=True, + timeout=300, env=dict(os.environ, **env)).stdout + for name, env in (('batches', {'PURE_JIT': '0'}), ('rounds', {'PURE_JIT': '0', 'PURE_BATCH': '0'}), ('all', {'PURE_JIT': 'all'}))} + for name in ('rounds', 'all'): + assert outputs[name] == outputs['batches'], ('json', name) + taken = {'y': 0, 'n': 0, 'i': 0} + for name, line in zip(cases, outputs['batches'].splitlines()): + state = json.loads(line) + accepted = state['fault'] == 'none' and state['states']['valid'] is True + assert accepted or state['fault'] in ('none', 'encoding'), (name, state['fault']) + assert accepted == (name[0] == 'y') or name[0] == 'i', (name, accepted) + taken[name[0]] += accepted + runs['json'] = {'cases': len(cases), 'taken': taken} + return runs + + def module_assumptions(aup, pure, work): """The compiled code's integers (Pure docs/design/022) where they stop holding: a loop whose columns hold small whole numbers until, halfway, @@ -1841,24 +1896,6 @@ def module_assumptions(aup, pure, work): assert outputs[name] == outputs['batches'], ('view', name, next((a, b) for a, b in zip(outputs[name].splitlines(), outputs['batches'].splitlines()) if a != b)) faults = [json.loads(line)['fault'] for line in outputs['batches'].splitlines() if line.startswith('{"states"')] assert 'none' in faults and 'work' in faults, faults - # SHA-256 written in aup (its examples/sha256.aup, docs/design/027's stage 1: bytes by position, bit operations, lists - # of i64): FIPS 180-2's examples and messages of every length up to two blocks, against hashlib, on every path. - import hashlib - import random - program = work / 'sha256.pmod' - compile_module(aup, EDITOR.parent / 'sha256.aup', program) - chooser = random.Random(140) - messages = [b'abc', b'abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq', - b'abcdefghbcdefghicdefghijdefghijkefghijklfghijklmghijklmnhijklmnoijklmnopjklmnopqklmnopqrlmnopqrsmnopqrstnopqrstu'] - messages += [bytes(chooser.randrange(256) for _ in range(n)) for n in list(range(130)) + [1000, 4096]] - given = ''.join(f"message hash {m.hex() or '-'}\n" for m in messages) - outputs = {name: subprocess.run([str(pure / 'build/pure-run'), str(program)], input=given, capture_output=True, text=True, - timeout=120, env=dict(os.environ, **env)).stdout - for name, env in (('batches', {'PURE_JIT': '0'}), ('rounds', {'PURE_JIT': '0', 'PURE_BATCH': '0'}), ('all', {'PURE_JIT': 'all'}))} - for name in ('rounds', 'all'): - assert outputs[name] == outputs['batches'], ('sha256', name) - digests = [json.loads(line)['states']['digest'] for line in outputs['batches'].splitlines()] - assert digests == [hashlib.sha256(m).hexdigest() for m in messages], 'sha256' return len(runs) @@ -6207,6 +6244,7 @@ def main(): work = Path(directory) report['module_ranges'] = module_ranges(aup, pure, work) report['module_assumptions'] = module_assumptions(aup, pure, work) + report['module_specs'] = module_specs(aup, pure, work) report['module_tier'] = module_tier(aup, pure, work) report['server_parity_requests'] = sum(server_parity(aup, pure, work, range(args.seeds), threads=threads) for threads in (1, 3)) diff --git a/tests/specs/json/LICENSE b/tests/specs/json/LICENSE new file mode 100644 index 0000000..c4b3621 --- /dev/null +++ b/tests/specs/json/LICENSE @@ -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. diff --git a/tests/specs/json/README.md b/tests/specs/json/README.md new file mode 100644 index 0000000..1000c84 --- /dev/null +++ b/tests/specs/json/README.md @@ -0,0 +1,9 @@ +# JSONTestSuite's parsing cases + +From [nst/JSONTestSuite](https://github.com/nst/JSONTestSuite) at 1ef36fa, `test_parsing/`: `y_` files are JSON texts, +`n_` files are not, and on `i_` files a parser may go either way (MIT license, `LICENSE`). `tests/check.py`'s +`module_specs` runs aup's `examples/json.aup` on each of them, on Pure's three paths. + +Two `n_` files are left out for their size and made by the check: `n_structure_100000_opening_arrays.json` is `[` +100,000 times (SHA-256 13f86ea1e7edd116...), and `n_structure_open_array_object.json` is `[{"":` 50,000 times and a +newline (48b232fcd18ce2f7...). diff --git a/tests/specs/json/i_number_double_huge_neg_exp.json b/tests/specs/json/i_number_double_huge_neg_exp.json new file mode 100644 index 0000000..ae4c7b7 --- /dev/null +++ b/tests/specs/json/i_number_double_huge_neg_exp.json @@ -0,0 +1 @@ +[123.456e-789]
\ No newline at end of file diff --git a/tests/specs/json/i_number_huge_exp.json b/tests/specs/json/i_number_huge_exp.json new file mode 100644 index 0000000..9b5efa2 --- /dev/null +++ b/tests/specs/json/i_number_huge_exp.json @@ -0,0 +1 @@ +[0.4e00669999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999969999999006]
\ No newline at end of file diff --git a/tests/specs/json/i_number_neg_int_huge_exp.json b/tests/specs/json/i_number_neg_int_huge_exp.json new file mode 100755 index 0000000..3abd58a --- /dev/null +++ b/tests/specs/json/i_number_neg_int_huge_exp.json @@ -0,0 +1 @@ +[-1e+9999]
\ No newline at end of file diff --git a/tests/specs/json/i_number_pos_double_huge_exp.json b/tests/specs/json/i_number_pos_double_huge_exp.json new file mode 100755 index 0000000..e10a7eb --- /dev/null +++ b/tests/specs/json/i_number_pos_double_huge_exp.json @@ -0,0 +1 @@ +[1.5e+9999]
\ No newline at end of file diff --git a/tests/specs/json/i_number_real_neg_overflow.json b/tests/specs/json/i_number_real_neg_overflow.json new file mode 100644 index 0000000..3d628a9 --- /dev/null +++ b/tests/specs/json/i_number_real_neg_overflow.json @@ -0,0 +1 @@ +[-123123e100000]
\ No newline at end of file diff --git a/tests/specs/json/i_number_real_pos_overflow.json b/tests/specs/json/i_number_real_pos_overflow.json new file mode 100644 index 0000000..54d7d3d --- /dev/null +++ b/tests/specs/json/i_number_real_pos_overflow.json @@ -0,0 +1 @@ +[123123e100000]
\ No newline at end of file diff --git a/tests/specs/json/i_number_real_underflow.json b/tests/specs/json/i_number_real_underflow.json new file mode 100644 index 0000000..c5236eb --- /dev/null +++ b/tests/specs/json/i_number_real_underflow.json @@ -0,0 +1 @@ +[123e-10000000]
\ No newline at end of file diff --git a/tests/specs/json/i_number_too_big_neg_int.json b/tests/specs/json/i_number_too_big_neg_int.json new file mode 100644 index 0000000..dfa3846 --- /dev/null +++ b/tests/specs/json/i_number_too_big_neg_int.json @@ -0,0 +1 @@ +[-123123123123123123123123123123]
\ No newline at end of file diff --git a/tests/specs/json/i_number_too_big_pos_int.json b/tests/specs/json/i_number_too_big_pos_int.json new file mode 100644 index 0000000..338a8c3 --- /dev/null +++ b/tests/specs/json/i_number_too_big_pos_int.json @@ -0,0 +1 @@ +[100000000000000000000]
\ No newline at end of file diff --git a/tests/specs/json/i_number_very_big_negative_int.json b/tests/specs/json/i_number_very_big_negative_int.json new file mode 100755 index 0000000..e2d9738 --- /dev/null +++ b/tests/specs/json/i_number_very_big_negative_int.json @@ -0,0 +1 @@ +[-237462374673276894279832749832423479823246327846]
\ No newline at end of file diff --git a/tests/specs/json/i_object_key_lone_2nd_surrogate.json b/tests/specs/json/i_object_key_lone_2nd_surrogate.json new file mode 100644 index 0000000..5be7eba --- /dev/null +++ b/tests/specs/json/i_object_key_lone_2nd_surrogate.json @@ -0,0 +1 @@ +{"\uDFAA":0}
\ No newline at end of file diff --git a/tests/specs/json/i_string_1st_surrogate_but_2nd_missing.json b/tests/specs/json/i_string_1st_surrogate_but_2nd_missing.json new file mode 100644 index 0000000..3b9e37c --- /dev/null +++ b/tests/specs/json/i_string_1st_surrogate_but_2nd_missing.json @@ -0,0 +1 @@ +["\uDADA"]
\ No newline at end of file diff --git a/tests/specs/json/i_string_1st_valid_surrogate_2nd_invalid.json b/tests/specs/json/i_string_1st_valid_surrogate_2nd_invalid.json new file mode 100644 index 0000000..4875928 --- /dev/null +++ b/tests/specs/json/i_string_1st_valid_surrogate_2nd_invalid.json @@ -0,0 +1 @@ +["\uD888\u1234"]
\ No newline at end of file diff --git a/tests/specs/json/i_string_UTF-16LE_with_BOM.json b/tests/specs/json/i_string_UTF-16LE_with_BOM.json Binary files differnew file mode 100644 index 0000000..2a79c06 --- /dev/null +++ b/tests/specs/json/i_string_UTF-16LE_with_BOM.json diff --git a/tests/specs/json/i_string_UTF-8_invalid_sequence.json b/tests/specs/json/i_string_UTF-8_invalid_sequence.json new file mode 100755 index 0000000..e2a968a --- /dev/null +++ b/tests/specs/json/i_string_UTF-8_invalid_sequence.json @@ -0,0 +1 @@ +["日ш�"]
\ No newline at end of file diff --git a/tests/specs/json/i_string_UTF8_surrogate_U+D800.json b/tests/specs/json/i_string_UTF8_surrogate_U+D800.json new file mode 100644 index 0000000..916bff9 --- /dev/null +++ b/tests/specs/json/i_string_UTF8_surrogate_U+D800.json @@ -0,0 +1 @@ +["���"]
\ No newline at end of file diff --git a/tests/specs/json/i_string_incomplete_surrogate_and_escape_valid.json b/tests/specs/json/i_string_incomplete_surrogate_and_escape_valid.json new file mode 100755 index 0000000..3cb11d2 --- /dev/null +++ b/tests/specs/json/i_string_incomplete_surrogate_and_escape_valid.json @@ -0,0 +1 @@ +["\uD800\n"]
\ No newline at end of file diff --git a/tests/specs/json/i_string_incomplete_surrogate_pair.json b/tests/specs/json/i_string_incomplete_surrogate_pair.json new file mode 100755 index 0000000..38ec23b --- /dev/null +++ b/tests/specs/json/i_string_incomplete_surrogate_pair.json @@ -0,0 +1 @@ +["\uDd1ea"]
\ No newline at end of file diff --git a/tests/specs/json/i_string_incomplete_surrogates_escape_valid.json b/tests/specs/json/i_string_incomplete_surrogates_escape_valid.json new file mode 100755 index 0000000..c9cd6f6 --- /dev/null +++ b/tests/specs/json/i_string_incomplete_surrogates_escape_valid.json @@ -0,0 +1 @@ +["\uD800\uD800\n"]
\ No newline at end of file diff --git a/tests/specs/json/i_string_invalid_lonely_surrogate.json b/tests/specs/json/i_string_invalid_lonely_surrogate.json new file mode 100755 index 0000000..3abbd8d --- /dev/null +++ b/tests/specs/json/i_string_invalid_lonely_surrogate.json @@ -0,0 +1 @@ +["\ud800"]
\ No newline at end of file diff --git a/tests/specs/json/i_string_invalid_surrogate.json b/tests/specs/json/i_string_invalid_surrogate.json new file mode 100755 index 0000000..ffddc04 --- /dev/null +++ b/tests/specs/json/i_string_invalid_surrogate.json @@ -0,0 +1 @@ +["\ud800abc"]
\ No newline at end of file diff --git a/tests/specs/json/i_string_invalid_utf-8.json b/tests/specs/json/i_string_invalid_utf-8.json new file mode 100644 index 0000000..8e45a7e --- /dev/null +++ b/tests/specs/json/i_string_invalid_utf-8.json @@ -0,0 +1 @@ +["�"]
\ No newline at end of file diff --git a/tests/specs/json/i_string_inverted_surrogates_U+1D11E.json b/tests/specs/json/i_string_inverted_surrogates_U+1D11E.json new file mode 100755 index 0000000..0d5456c --- /dev/null +++ b/tests/specs/json/i_string_inverted_surrogates_U+1D11E.json @@ -0,0 +1 @@ +["\uDd1e\uD834"]
\ No newline at end of file diff --git a/tests/specs/json/i_string_iso_latin_1.json b/tests/specs/json/i_string_iso_latin_1.json new file mode 100644 index 0000000..9389c98 --- /dev/null +++ b/tests/specs/json/i_string_iso_latin_1.json @@ -0,0 +1 @@ +["�"]
\ No newline at end of file diff --git a/tests/specs/json/i_string_lone_second_surrogate.json b/tests/specs/json/i_string_lone_second_surrogate.json new file mode 100644 index 0000000..1dbd397 --- /dev/null +++ b/tests/specs/json/i_string_lone_second_surrogate.json @@ -0,0 +1 @@ +["\uDFAA"]
\ No newline at end of file diff --git a/tests/specs/json/i_string_lone_utf8_continuation_byte.json b/tests/specs/json/i_string_lone_utf8_continuation_byte.json new file mode 100644 index 0000000..729337c --- /dev/null +++ b/tests/specs/json/i_string_lone_utf8_continuation_byte.json @@ -0,0 +1 @@ +["�"]
\ No newline at end of file diff --git a/tests/specs/json/i_string_not_in_unicode_range.json b/tests/specs/json/i_string_not_in_unicode_range.json new file mode 100644 index 0000000..df90a29 --- /dev/null +++ b/tests/specs/json/i_string_not_in_unicode_range.json @@ -0,0 +1 @@ +["����"]
\ No newline at end of file diff --git a/tests/specs/json/i_string_overlong_sequence_2_bytes.json b/tests/specs/json/i_string_overlong_sequence_2_bytes.json new file mode 100644 index 0000000..c8cee5e --- /dev/null +++ b/tests/specs/json/i_string_overlong_sequence_2_bytes.json @@ -0,0 +1 @@ +["��"]
\ No newline at end of file diff --git a/tests/specs/json/i_string_overlong_sequence_6_bytes.json b/tests/specs/json/i_string_overlong_sequence_6_bytes.json new file mode 100755 index 0000000..9a91da7 --- /dev/null +++ b/tests/specs/json/i_string_overlong_sequence_6_bytes.json @@ -0,0 +1 @@ +["������"]
\ No newline at end of file diff --git a/tests/specs/json/i_string_overlong_sequence_6_bytes_null.json b/tests/specs/json/i_string_overlong_sequence_6_bytes_null.json new file mode 100755 index 0000000..d24fffd --- /dev/null +++ b/tests/specs/json/i_string_overlong_sequence_6_bytes_null.json @@ -0,0 +1 @@ +["������"]
\ No newline at end of file diff --git a/tests/specs/json/i_string_truncated-utf-8.json b/tests/specs/json/i_string_truncated-utf-8.json new file mode 100644 index 0000000..63c7777 --- /dev/null +++ b/tests/specs/json/i_string_truncated-utf-8.json @@ -0,0 +1 @@ +["��"]
\ No newline at end of file diff --git a/tests/specs/json/i_string_utf16BE_no_BOM.json b/tests/specs/json/i_string_utf16BE_no_BOM.json Binary files differnew file mode 100644 index 0000000..57e5392 --- /dev/null +++ b/tests/specs/json/i_string_utf16BE_no_BOM.json diff --git a/tests/specs/json/i_string_utf16LE_no_BOM.json b/tests/specs/json/i_string_utf16LE_no_BOM.json Binary files differnew file mode 100644 index 0000000..c49c1b2 --- /dev/null +++ b/tests/specs/json/i_string_utf16LE_no_BOM.json diff --git a/tests/specs/json/i_structure_500_nested_arrays.json b/tests/specs/json/i_structure_500_nested_arrays.json new file mode 100644 index 0000000..7118405 --- /dev/null +++ b/tests/specs/json/i_structure_500_nested_arrays.json @@ -0,0 +1 @@ +[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]
\ No newline at end of file diff --git a/tests/specs/json/i_structure_UTF-8_BOM_empty_object.json b/tests/specs/json/i_structure_UTF-8_BOM_empty_object.json new file mode 100755 index 0000000..22fdca1 --- /dev/null +++ b/tests/specs/json/i_structure_UTF-8_BOM_empty_object.json @@ -0,0 +1 @@ +{}
\ No newline at end of file diff --git a/tests/specs/json/n_array_1_true_without_comma.json b/tests/specs/json/n_array_1_true_without_comma.json new file mode 100644 index 0000000..c14e3f6 --- /dev/null +++ b/tests/specs/json/n_array_1_true_without_comma.json @@ -0,0 +1 @@ +[1 true]
\ No newline at end of file diff --git a/tests/specs/json/n_array_a_invalid_utf8.json b/tests/specs/json/n_array_a_invalid_utf8.json new file mode 100644 index 0000000..38a86e2 --- /dev/null +++ b/tests/specs/json/n_array_a_invalid_utf8.json @@ -0,0 +1 @@ +[a�]
\ No newline at end of file diff --git a/tests/specs/json/n_array_colon_instead_of_comma.json b/tests/specs/json/n_array_colon_instead_of_comma.json new file mode 100644 index 0000000..0d02ad4 --- /dev/null +++ b/tests/specs/json/n_array_colon_instead_of_comma.json @@ -0,0 +1 @@ +["": 1]
\ No newline at end of file diff --git a/tests/specs/json/n_array_comma_after_close.json b/tests/specs/json/n_array_comma_after_close.json new file mode 100644 index 0000000..2ccba8d --- /dev/null +++ b/tests/specs/json/n_array_comma_after_close.json @@ -0,0 +1 @@ +[""],
\ No newline at end of file diff --git a/tests/specs/json/n_array_comma_and_number.json b/tests/specs/json/n_array_comma_and_number.json new file mode 100755 index 0000000..d2c84e3 --- /dev/null +++ b/tests/specs/json/n_array_comma_and_number.json @@ -0,0 +1 @@ +[,1]
\ No newline at end of file diff --git a/tests/specs/json/n_array_double_comma.json b/tests/specs/json/n_array_double_comma.json new file mode 100755 index 0000000..0431712 --- /dev/null +++ b/tests/specs/json/n_array_double_comma.json @@ -0,0 +1 @@ +[1,,2]
\ No newline at end of file diff --git a/tests/specs/json/n_array_double_extra_comma.json b/tests/specs/json/n_array_double_extra_comma.json new file mode 100644 index 0000000..3f01d31 --- /dev/null +++ b/tests/specs/json/n_array_double_extra_comma.json @@ -0,0 +1 @@ +["x",,]
\ No newline at end of file diff --git a/tests/specs/json/n_array_extra_close.json b/tests/specs/json/n_array_extra_close.json new file mode 100644 index 0000000..c12f9fa --- /dev/null +++ b/tests/specs/json/n_array_extra_close.json @@ -0,0 +1 @@ +["x"]]
\ No newline at end of file diff --git a/tests/specs/json/n_array_extra_comma.json b/tests/specs/json/n_array_extra_comma.json new file mode 100644 index 0000000..5f8ce18 --- /dev/null +++ b/tests/specs/json/n_array_extra_comma.json @@ -0,0 +1 @@ +["",]
\ No newline at end of file diff --git a/tests/specs/json/n_array_incomplete.json b/tests/specs/json/n_array_incomplete.json new file mode 100644 index 0000000..cc65b0b --- /dev/null +++ b/tests/specs/json/n_array_incomplete.json @@ -0,0 +1 @@ +["x"
\ No newline at end of file diff --git a/tests/specs/json/n_array_incomplete_invalid_value.json b/tests/specs/json/n_array_incomplete_invalid_value.json new file mode 100644 index 0000000..c21a8f6 --- /dev/null +++ b/tests/specs/json/n_array_incomplete_invalid_value.json @@ -0,0 +1 @@ +[x
\ No newline at end of file diff --git a/tests/specs/json/n_array_inner_array_no_comma.json b/tests/specs/json/n_array_inner_array_no_comma.json new file mode 100644 index 0000000..c70b716 --- /dev/null +++ b/tests/specs/json/n_array_inner_array_no_comma.json @@ -0,0 +1 @@ +[3[4]]
\ No newline at end of file diff --git a/tests/specs/json/n_array_invalid_utf8.json b/tests/specs/json/n_array_invalid_utf8.json new file mode 100644 index 0000000..6099d34 --- /dev/null +++ b/tests/specs/json/n_array_invalid_utf8.json @@ -0,0 +1 @@ +[�]
\ No newline at end of file diff --git a/tests/specs/json/n_array_items_separated_by_semicolon.json b/tests/specs/json/n_array_items_separated_by_semicolon.json new file mode 100755 index 0000000..d4bd731 --- /dev/null +++ b/tests/specs/json/n_array_items_separated_by_semicolon.json @@ -0,0 +1 @@ +[1:2]
\ No newline at end of file diff --git a/tests/specs/json/n_array_just_comma.json b/tests/specs/json/n_array_just_comma.json new file mode 100755 index 0000000..9d7077c --- /dev/null +++ b/tests/specs/json/n_array_just_comma.json @@ -0,0 +1 @@ +[,]
\ No newline at end of file diff --git a/tests/specs/json/n_array_just_minus.json b/tests/specs/json/n_array_just_minus.json new file mode 100755 index 0000000..29501c6 --- /dev/null +++ b/tests/specs/json/n_array_just_minus.json @@ -0,0 +1 @@ +[-]
\ No newline at end of file diff --git a/tests/specs/json/n_array_missing_value.json b/tests/specs/json/n_array_missing_value.json new file mode 100644 index 0000000..3a6ba86 --- /dev/null +++ b/tests/specs/json/n_array_missing_value.json @@ -0,0 +1 @@ +[ , ""]
\ No newline at end of file diff --git a/tests/specs/json/n_array_newlines_unclosed.json b/tests/specs/json/n_array_newlines_unclosed.json new file mode 100644 index 0000000..6466800 --- /dev/null +++ b/tests/specs/json/n_array_newlines_unclosed.json @@ -0,0 +1,3 @@ +["a", +4 +,1,
\ No newline at end of file diff --git a/tests/specs/json/n_array_number_and_comma.json b/tests/specs/json/n_array_number_and_comma.json new file mode 100755 index 0000000..13f6f1d --- /dev/null +++ b/tests/specs/json/n_array_number_and_comma.json @@ -0,0 +1 @@ +[1,]
\ No newline at end of file diff --git a/tests/specs/json/n_array_number_and_several_commas.json b/tests/specs/json/n_array_number_and_several_commas.json new file mode 100755 index 0000000..0ac408c --- /dev/null +++ b/tests/specs/json/n_array_number_and_several_commas.json @@ -0,0 +1 @@ +[1,,]
\ No newline at end of file diff --git a/tests/specs/json/n_array_spaces_vertical_tab_formfeed.json b/tests/specs/json/n_array_spaces_vertical_tab_formfeed.json new file mode 100755 index 0000000..6cd7cf5 --- /dev/null +++ b/tests/specs/json/n_array_spaces_vertical_tab_formfeed.json @@ -0,0 +1 @@ +["a"\f]
\ No newline at end of file diff --git a/tests/specs/json/n_array_star_inside.json b/tests/specs/json/n_array_star_inside.json new file mode 100755 index 0000000..5a51946 --- /dev/null +++ b/tests/specs/json/n_array_star_inside.json @@ -0,0 +1 @@ +[*]
\ No newline at end of file diff --git a/tests/specs/json/n_array_unclosed.json b/tests/specs/json/n_array_unclosed.json new file mode 100644 index 0000000..0607330 --- /dev/null +++ b/tests/specs/json/n_array_unclosed.json @@ -0,0 +1 @@ +[""
\ No newline at end of file diff --git a/tests/specs/json/n_array_unclosed_trailing_comma.json b/tests/specs/json/n_array_unclosed_trailing_comma.json new file mode 100644 index 0000000..6604698 --- /dev/null +++ b/tests/specs/json/n_array_unclosed_trailing_comma.json @@ -0,0 +1 @@ +[1,
\ No newline at end of file diff --git a/tests/specs/json/n_array_unclosed_with_new_lines.json b/tests/specs/json/n_array_unclosed_with_new_lines.json new file mode 100644 index 0000000..4f61de3 --- /dev/null +++ b/tests/specs/json/n_array_unclosed_with_new_lines.json @@ -0,0 +1,3 @@ +[1, +1 +,1
\ No newline at end of file diff --git a/tests/specs/json/n_array_unclosed_with_object_inside.json b/tests/specs/json/n_array_unclosed_with_object_inside.json new file mode 100644 index 0000000..043a87e --- /dev/null +++ b/tests/specs/json/n_array_unclosed_with_object_inside.json @@ -0,0 +1 @@ +[{}
\ No newline at end of file diff --git a/tests/specs/json/n_incomplete_false.json b/tests/specs/json/n_incomplete_false.json new file mode 100644 index 0000000..eb18c6a --- /dev/null +++ b/tests/specs/json/n_incomplete_false.json @@ -0,0 +1 @@ +[fals]
\ No newline at end of file diff --git a/tests/specs/json/n_incomplete_null.json b/tests/specs/json/n_incomplete_null.json new file mode 100644 index 0000000..c18ef53 --- /dev/null +++ b/tests/specs/json/n_incomplete_null.json @@ -0,0 +1 @@ +[nul]
\ No newline at end of file diff --git a/tests/specs/json/n_incomplete_true.json b/tests/specs/json/n_incomplete_true.json new file mode 100644 index 0000000..f451ac6 --- /dev/null +++ b/tests/specs/json/n_incomplete_true.json @@ -0,0 +1 @@ +[tru]
\ No newline at end of file diff --git a/tests/specs/json/n_multidigit_number_then_00.json b/tests/specs/json/n_multidigit_number_then_00.json Binary files differnew file mode 100644 index 0000000..c22507b --- /dev/null +++ b/tests/specs/json/n_multidigit_number_then_00.json diff --git a/tests/specs/json/n_number_++.json b/tests/specs/json/n_number_++.json new file mode 100644 index 0000000..bdb62aa --- /dev/null +++ b/tests/specs/json/n_number_++.json @@ -0,0 +1 @@ +[++1234]
\ No newline at end of file diff --git a/tests/specs/json/n_number_+1.json b/tests/specs/json/n_number_+1.json new file mode 100755 index 0000000..3cbe58c --- /dev/null +++ b/tests/specs/json/n_number_+1.json @@ -0,0 +1 @@ +[+1]
\ No newline at end of file diff --git a/tests/specs/json/n_number_+Inf.json b/tests/specs/json/n_number_+Inf.json new file mode 100755 index 0000000..871ae14 --- /dev/null +++ b/tests/specs/json/n_number_+Inf.json @@ -0,0 +1 @@ +[+Inf]
\ No newline at end of file diff --git a/tests/specs/json/n_number_-01.json b/tests/specs/json/n_number_-01.json new file mode 100755 index 0000000..0df32ba --- /dev/null +++ b/tests/specs/json/n_number_-01.json @@ -0,0 +1 @@ +[-01]
\ No newline at end of file diff --git a/tests/specs/json/n_number_-1.0..json b/tests/specs/json/n_number_-1.0..json new file mode 100755 index 0000000..7cf55a8 --- /dev/null +++ b/tests/specs/json/n_number_-1.0..json @@ -0,0 +1 @@ +[-1.0.]
\ No newline at end of file diff --git a/tests/specs/json/n_number_-2..json b/tests/specs/json/n_number_-2..json new file mode 100755 index 0000000..9be8436 --- /dev/null +++ b/tests/specs/json/n_number_-2..json @@ -0,0 +1 @@ +[-2.]
\ No newline at end of file diff --git a/tests/specs/json/n_number_-NaN.json b/tests/specs/json/n_number_-NaN.json new file mode 100755 index 0000000..f61615d --- /dev/null +++ b/tests/specs/json/n_number_-NaN.json @@ -0,0 +1 @@ +[-NaN]
\ No newline at end of file diff --git a/tests/specs/json/n_number_.-1.json b/tests/specs/json/n_number_.-1.json new file mode 100644 index 0000000..1c9f2dd --- /dev/null +++ b/tests/specs/json/n_number_.-1.json @@ -0,0 +1 @@ +[.-1]
\ No newline at end of file diff --git a/tests/specs/json/n_number_.2e-3.json b/tests/specs/json/n_number_.2e-3.json new file mode 100755 index 0000000..c6c976f --- /dev/null +++ b/tests/specs/json/n_number_.2e-3.json @@ -0,0 +1 @@ +[.2e-3]
\ No newline at end of file diff --git a/tests/specs/json/n_number_0.1.2.json b/tests/specs/json/n_number_0.1.2.json new file mode 100755 index 0000000..c83a256 --- /dev/null +++ b/tests/specs/json/n_number_0.1.2.json @@ -0,0 +1 @@ +[0.1.2]
\ No newline at end of file diff --git a/tests/specs/json/n_number_0.3e+.json b/tests/specs/json/n_number_0.3e+.json new file mode 100644 index 0000000..a55a1bf --- /dev/null +++ b/tests/specs/json/n_number_0.3e+.json @@ -0,0 +1 @@ +[0.3e+]
\ No newline at end of file diff --git a/tests/specs/json/n_number_0.3e.json b/tests/specs/json/n_number_0.3e.json new file mode 100644 index 0000000..3dd5df4 --- /dev/null +++ b/tests/specs/json/n_number_0.3e.json @@ -0,0 +1 @@ +[0.3e]
\ No newline at end of file diff --git a/tests/specs/json/n_number_0.e1.json b/tests/specs/json/n_number_0.e1.json new file mode 100644 index 0000000..c92c71c --- /dev/null +++ b/tests/specs/json/n_number_0.e1.json @@ -0,0 +1 @@ +[0.e1]
\ No newline at end of file diff --git a/tests/specs/json/n_number_0_capital_E+.json b/tests/specs/json/n_number_0_capital_E+.json new file mode 100644 index 0000000..3ba2c7d --- /dev/null +++ b/tests/specs/json/n_number_0_capital_E+.json @@ -0,0 +1 @@ +[0E+]
\ No newline at end of file diff --git a/tests/specs/json/n_number_0_capital_E.json b/tests/specs/json/n_number_0_capital_E.json new file mode 100755 index 0000000..5301840 --- /dev/null +++ b/tests/specs/json/n_number_0_capital_E.json @@ -0,0 +1 @@ +[0E]
\ No newline at end of file diff --git a/tests/specs/json/n_number_0e+.json b/tests/specs/json/n_number_0e+.json new file mode 100644 index 0000000..8ab0bc4 --- /dev/null +++ b/tests/specs/json/n_number_0e+.json @@ -0,0 +1 @@ +[0e+]
\ No newline at end of file diff --git a/tests/specs/json/n_number_0e.json b/tests/specs/json/n_number_0e.json new file mode 100644 index 0000000..47ec421 --- /dev/null +++ b/tests/specs/json/n_number_0e.json @@ -0,0 +1 @@ +[0e]
\ No newline at end of file diff --git a/tests/specs/json/n_number_1.0e+.json b/tests/specs/json/n_number_1.0e+.json new file mode 100755 index 0000000..cd84b9f --- /dev/null +++ b/tests/specs/json/n_number_1.0e+.json @@ -0,0 +1 @@ +[1.0e+]
\ No newline at end of file diff --git a/tests/specs/json/n_number_1.0e-.json b/tests/specs/json/n_number_1.0e-.json new file mode 100755 index 0000000..4eb7afa --- /dev/null +++ b/tests/specs/json/n_number_1.0e-.json @@ -0,0 +1 @@ +[1.0e-]
\ No newline at end of file diff --git a/tests/specs/json/n_number_1.0e.json b/tests/specs/json/n_number_1.0e.json new file mode 100755 index 0000000..21753f4 --- /dev/null +++ b/tests/specs/json/n_number_1.0e.json @@ -0,0 +1 @@ +[1.0e]
\ No newline at end of file diff --git a/tests/specs/json/n_number_1_000.json b/tests/specs/json/n_number_1_000.json new file mode 100755 index 0000000..7b18b66 --- /dev/null +++ b/tests/specs/json/n_number_1_000.json @@ -0,0 +1 @@ +[1 000.0]
\ No newline at end of file diff --git a/tests/specs/json/n_number_1eE2.json b/tests/specs/json/n_number_1eE2.json new file mode 100755 index 0000000..4318a34 --- /dev/null +++ b/tests/specs/json/n_number_1eE2.json @@ -0,0 +1 @@ +[1eE2]
\ No newline at end of file diff --git a/tests/specs/json/n_number_2.e+3.json b/tests/specs/json/n_number_2.e+3.json new file mode 100755 index 0000000..4442f39 --- /dev/null +++ b/tests/specs/json/n_number_2.e+3.json @@ -0,0 +1 @@ +[2.e+3]
\ No newline at end of file diff --git a/tests/specs/json/n_number_2.e-3.json b/tests/specs/json/n_number_2.e-3.json new file mode 100755 index 0000000..a65060e --- /dev/null +++ b/tests/specs/json/n_number_2.e-3.json @@ -0,0 +1 @@ +[2.e-3]
\ No newline at end of file diff --git a/tests/specs/json/n_number_2.e3.json b/tests/specs/json/n_number_2.e3.json new file mode 100755 index 0000000..66f7cf7 --- /dev/null +++ b/tests/specs/json/n_number_2.e3.json @@ -0,0 +1 @@ +[2.e3]
\ No newline at end of file diff --git a/tests/specs/json/n_number_9.e+.json b/tests/specs/json/n_number_9.e+.json new file mode 100644 index 0000000..732a7b1 --- /dev/null +++ b/tests/specs/json/n_number_9.e+.json @@ -0,0 +1 @@ +[9.e+]
\ No newline at end of file diff --git a/tests/specs/json/n_number_Inf.json b/tests/specs/json/n_number_Inf.json new file mode 100755 index 0000000..c40c734 --- /dev/null +++ b/tests/specs/json/n_number_Inf.json @@ -0,0 +1 @@ +[Inf]
\ No newline at end of file diff --git a/tests/specs/json/n_number_NaN.json b/tests/specs/json/n_number_NaN.json new file mode 100755 index 0000000..4992317 --- /dev/null +++ b/tests/specs/json/n_number_NaN.json @@ -0,0 +1 @@ +[NaN]
\ No newline at end of file diff --git a/tests/specs/json/n_number_U+FF11_fullwidth_digit_one.json b/tests/specs/json/n_number_U+FF11_fullwidth_digit_one.json new file mode 100644 index 0000000..b14587e --- /dev/null +++ b/tests/specs/json/n_number_U+FF11_fullwidth_digit_one.json @@ -0,0 +1 @@ +[1]
\ No newline at end of file diff --git a/tests/specs/json/n_number_expression.json b/tests/specs/json/n_number_expression.json new file mode 100644 index 0000000..76fdbc8 --- /dev/null +++ b/tests/specs/json/n_number_expression.json @@ -0,0 +1 @@ +[1+2]
\ No newline at end of file diff --git a/tests/specs/json/n_number_hex_1_digit.json b/tests/specs/json/n_number_hex_1_digit.json new file mode 100644 index 0000000..3b21488 --- /dev/null +++ b/tests/specs/json/n_number_hex_1_digit.json @@ -0,0 +1 @@ +[0x1]
\ No newline at end of file diff --git a/tests/specs/json/n_number_hex_2_digits.json b/tests/specs/json/n_number_hex_2_digits.json new file mode 100644 index 0000000..83e516a --- /dev/null +++ b/tests/specs/json/n_number_hex_2_digits.json @@ -0,0 +1 @@ +[0x42]
\ No newline at end of file diff --git a/tests/specs/json/n_number_infinity.json b/tests/specs/json/n_number_infinity.json new file mode 100755 index 0000000..8c2baf7 --- /dev/null +++ b/tests/specs/json/n_number_infinity.json @@ -0,0 +1 @@ +[Infinity]
\ No newline at end of file diff --git a/tests/specs/json/n_number_invalid+-.json b/tests/specs/json/n_number_invalid+-.json new file mode 100644 index 0000000..1cce602 --- /dev/null +++ b/tests/specs/json/n_number_invalid+-.json @@ -0,0 +1 @@ +[0e+-1]
\ No newline at end of file diff --git a/tests/specs/json/n_number_invalid-negative-real.json b/tests/specs/json/n_number_invalid-negative-real.json new file mode 100644 index 0000000..5fc3c1e --- /dev/null +++ b/tests/specs/json/n_number_invalid-negative-real.json @@ -0,0 +1 @@ +[-123.123foo]
\ No newline at end of file diff --git a/tests/specs/json/n_number_invalid-utf-8-in-bigger-int.json b/tests/specs/json/n_number_invalid-utf-8-in-bigger-int.json new file mode 100644 index 0000000..3b97e58 --- /dev/null +++ b/tests/specs/json/n_number_invalid-utf-8-in-bigger-int.json @@ -0,0 +1 @@ +[123�]
\ No newline at end of file diff --git a/tests/specs/json/n_number_invalid-utf-8-in-exponent.json b/tests/specs/json/n_number_invalid-utf-8-in-exponent.json new file mode 100644 index 0000000..ea35d72 --- /dev/null +++ b/tests/specs/json/n_number_invalid-utf-8-in-exponent.json @@ -0,0 +1 @@ +[1e1�]
\ No newline at end of file diff --git a/tests/specs/json/n_number_invalid-utf-8-in-int.json b/tests/specs/json/n_number_invalid-utf-8-in-int.json new file mode 100644 index 0000000..371226e --- /dev/null +++ b/tests/specs/json/n_number_invalid-utf-8-in-int.json @@ -0,0 +1 @@ +[0�] diff --git a/tests/specs/json/n_number_minus_infinity.json b/tests/specs/json/n_number_minus_infinity.json new file mode 100755 index 0000000..cf4133d --- /dev/null +++ b/tests/specs/json/n_number_minus_infinity.json @@ -0,0 +1 @@ +[-Infinity]
\ No newline at end of file diff --git a/tests/specs/json/n_number_minus_sign_with_trailing_garbage.json b/tests/specs/json/n_number_minus_sign_with_trailing_garbage.json new file mode 100644 index 0000000..a6d8e78 --- /dev/null +++ b/tests/specs/json/n_number_minus_sign_with_trailing_garbage.json @@ -0,0 +1 @@ +[-foo]
\ No newline at end of file diff --git a/tests/specs/json/n_number_minus_space_1.json b/tests/specs/json/n_number_minus_space_1.json new file mode 100644 index 0000000..9a5ebed --- /dev/null +++ b/tests/specs/json/n_number_minus_space_1.json @@ -0,0 +1 @@ +[- 1]
\ No newline at end of file diff --git a/tests/specs/json/n_number_neg_int_starting_with_zero.json b/tests/specs/json/n_number_neg_int_starting_with_zero.json new file mode 100644 index 0000000..67af096 --- /dev/null +++ b/tests/specs/json/n_number_neg_int_starting_with_zero.json @@ -0,0 +1 @@ +[-012]
\ No newline at end of file diff --git a/tests/specs/json/n_number_neg_real_without_int_part.json b/tests/specs/json/n_number_neg_real_without_int_part.json new file mode 100755 index 0000000..1f2a434 --- /dev/null +++ b/tests/specs/json/n_number_neg_real_without_int_part.json @@ -0,0 +1 @@ +[-.123]
\ No newline at end of file diff --git a/tests/specs/json/n_number_neg_with_garbage_at_end.json b/tests/specs/json/n_number_neg_with_garbage_at_end.json new file mode 100644 index 0000000..2aa7311 --- /dev/null +++ b/tests/specs/json/n_number_neg_with_garbage_at_end.json @@ -0,0 +1 @@ +[-1x]
\ No newline at end of file diff --git a/tests/specs/json/n_number_real_garbage_after_e.json b/tests/specs/json/n_number_real_garbage_after_e.json new file mode 100644 index 0000000..9213dfc --- /dev/null +++ b/tests/specs/json/n_number_real_garbage_after_e.json @@ -0,0 +1 @@ +[1ea]
\ No newline at end of file diff --git a/tests/specs/json/n_number_real_with_invalid_utf8_after_e.json b/tests/specs/json/n_number_real_with_invalid_utf8_after_e.json new file mode 100644 index 0000000..1e52ef9 --- /dev/null +++ b/tests/specs/json/n_number_real_with_invalid_utf8_after_e.json @@ -0,0 +1 @@ +[1e�]
\ No newline at end of file diff --git a/tests/specs/json/n_number_real_without_fractional_part.json b/tests/specs/json/n_number_real_without_fractional_part.json new file mode 100755 index 0000000..1de287c --- /dev/null +++ b/tests/specs/json/n_number_real_without_fractional_part.json @@ -0,0 +1 @@ +[1.]
\ No newline at end of file diff --git a/tests/specs/json/n_number_starting_with_dot.json b/tests/specs/json/n_number_starting_with_dot.json new file mode 100755 index 0000000..f682dbd --- /dev/null +++ b/tests/specs/json/n_number_starting_with_dot.json @@ -0,0 +1 @@ +[.123]
\ No newline at end of file diff --git a/tests/specs/json/n_number_with_alpha.json b/tests/specs/json/n_number_with_alpha.json new file mode 100644 index 0000000..1e42d81 --- /dev/null +++ b/tests/specs/json/n_number_with_alpha.json @@ -0,0 +1 @@ +[1.2a-3]
\ No newline at end of file diff --git a/tests/specs/json/n_number_with_alpha_char.json b/tests/specs/json/n_number_with_alpha_char.json new file mode 100644 index 0000000..b79dacc --- /dev/null +++ b/tests/specs/json/n_number_with_alpha_char.json @@ -0,0 +1 @@ +[1.8011670033376514H-308]
\ No newline at end of file diff --git a/tests/specs/json/n_number_with_leading_zero.json b/tests/specs/json/n_number_with_leading_zero.json new file mode 100755 index 0000000..7106da1 --- /dev/null +++ b/tests/specs/json/n_number_with_leading_zero.json @@ -0,0 +1 @@ +[012]
\ No newline at end of file diff --git a/tests/specs/json/n_object_bad_value.json b/tests/specs/json/n_object_bad_value.json new file mode 100644 index 0000000..a03a8c0 --- /dev/null +++ b/tests/specs/json/n_object_bad_value.json @@ -0,0 +1 @@ +["x", truth]
\ No newline at end of file diff --git a/tests/specs/json/n_object_bracket_key.json b/tests/specs/json/n_object_bracket_key.json new file mode 100644 index 0000000..cc443b4 --- /dev/null +++ b/tests/specs/json/n_object_bracket_key.json @@ -0,0 +1 @@ +{[: "x"} diff --git a/tests/specs/json/n_object_comma_instead_of_colon.json b/tests/specs/json/n_object_comma_instead_of_colon.json new file mode 100644 index 0000000..8d56377 --- /dev/null +++ b/tests/specs/json/n_object_comma_instead_of_colon.json @@ -0,0 +1 @@ +{"x", null}
\ No newline at end of file diff --git a/tests/specs/json/n_object_double_colon.json b/tests/specs/json/n_object_double_colon.json new file mode 100644 index 0000000..80e8c7b --- /dev/null +++ b/tests/specs/json/n_object_double_colon.json @@ -0,0 +1 @@ +{"x"::"b"}
\ No newline at end of file diff --git a/tests/specs/json/n_object_emoji.json b/tests/specs/json/n_object_emoji.json new file mode 100644 index 0000000..cb4078e --- /dev/null +++ b/tests/specs/json/n_object_emoji.json @@ -0,0 +1 @@ +{🇨🇭}
\ No newline at end of file diff --git a/tests/specs/json/n_object_garbage_at_end.json b/tests/specs/json/n_object_garbage_at_end.json new file mode 100644 index 0000000..80c42cb --- /dev/null +++ b/tests/specs/json/n_object_garbage_at_end.json @@ -0,0 +1 @@ +{"a":"a" 123}
\ No newline at end of file diff --git a/tests/specs/json/n_object_key_with_single_quotes.json b/tests/specs/json/n_object_key_with_single_quotes.json new file mode 100755 index 0000000..77c3275 --- /dev/null +++ b/tests/specs/json/n_object_key_with_single_quotes.json @@ -0,0 +1 @@ +{key: 'value'}
\ No newline at end of file diff --git a/tests/specs/json/n_object_lone_continuation_byte_in_key_and_trailing_comma.json b/tests/specs/json/n_object_lone_continuation_byte_in_key_and_trailing_comma.json new file mode 100644 index 0000000..aa2cb63 --- /dev/null +++ b/tests/specs/json/n_object_lone_continuation_byte_in_key_and_trailing_comma.json @@ -0,0 +1 @@ +{"�":"0",}
\ No newline at end of file diff --git a/tests/specs/json/n_object_missing_colon.json b/tests/specs/json/n_object_missing_colon.json new file mode 100644 index 0000000..b98eff6 --- /dev/null +++ b/tests/specs/json/n_object_missing_colon.json @@ -0,0 +1 @@ +{"a" b}
\ No newline at end of file diff --git a/tests/specs/json/n_object_missing_key.json b/tests/specs/json/n_object_missing_key.json new file mode 100755 index 0000000..b4fb0f5 --- /dev/null +++ b/tests/specs/json/n_object_missing_key.json @@ -0,0 +1 @@ +{:"b"}
\ No newline at end of file diff --git a/tests/specs/json/n_object_missing_semicolon.json b/tests/specs/json/n_object_missing_semicolon.json new file mode 100755 index 0000000..e345138 --- /dev/null +++ b/tests/specs/json/n_object_missing_semicolon.json @@ -0,0 +1 @@ +{"a" "b"}
\ No newline at end of file diff --git a/tests/specs/json/n_object_missing_value.json b/tests/specs/json/n_object_missing_value.json new file mode 100644 index 0000000..3ef538a --- /dev/null +++ b/tests/specs/json/n_object_missing_value.json @@ -0,0 +1 @@ +{"a":
\ No newline at end of file diff --git a/tests/specs/json/n_object_no-colon.json b/tests/specs/json/n_object_no-colon.json new file mode 100644 index 0000000..f3797b3 --- /dev/null +++ b/tests/specs/json/n_object_no-colon.json @@ -0,0 +1 @@ +{"a"
\ No newline at end of file diff --git a/tests/specs/json/n_object_non_string_key.json b/tests/specs/json/n_object_non_string_key.json new file mode 100755 index 0000000..b9945b3 --- /dev/null +++ b/tests/specs/json/n_object_non_string_key.json @@ -0,0 +1 @@ +{1:1}
\ No newline at end of file diff --git a/tests/specs/json/n_object_non_string_key_but_huge_number_instead.json b/tests/specs/json/n_object_non_string_key_but_huge_number_instead.json new file mode 100755 index 0000000..b37fa86 --- /dev/null +++ b/tests/specs/json/n_object_non_string_key_but_huge_number_instead.json @@ -0,0 +1 @@ +{9999E9999:1}
\ No newline at end of file diff --git a/tests/specs/json/n_object_repeated_null_null.json b/tests/specs/json/n_object_repeated_null_null.json new file mode 100755 index 0000000..f7d2959 --- /dev/null +++ b/tests/specs/json/n_object_repeated_null_null.json @@ -0,0 +1 @@ +{null:null,null:null}
\ No newline at end of file diff --git a/tests/specs/json/n_object_several_trailing_commas.json b/tests/specs/json/n_object_several_trailing_commas.json new file mode 100755 index 0000000..3c9afe8 --- /dev/null +++ b/tests/specs/json/n_object_several_trailing_commas.json @@ -0,0 +1 @@ +{"id":0,,,,,}
\ No newline at end of file diff --git a/tests/specs/json/n_object_single_quote.json b/tests/specs/json/n_object_single_quote.json new file mode 100644 index 0000000..e5cdf97 --- /dev/null +++ b/tests/specs/json/n_object_single_quote.json @@ -0,0 +1 @@ +{'a':0}
\ No newline at end of file diff --git a/tests/specs/json/n_object_trailing_comma.json b/tests/specs/json/n_object_trailing_comma.json new file mode 100755 index 0000000..a4b0250 --- /dev/null +++ b/tests/specs/json/n_object_trailing_comma.json @@ -0,0 +1 @@ +{"id":0,}
\ No newline at end of file diff --git a/tests/specs/json/n_object_trailing_comment.json b/tests/specs/json/n_object_trailing_comment.json new file mode 100644 index 0000000..a372c65 --- /dev/null +++ b/tests/specs/json/n_object_trailing_comment.json @@ -0,0 +1 @@ +{"a":"b"}/**/
\ No newline at end of file diff --git a/tests/specs/json/n_object_trailing_comment_open.json b/tests/specs/json/n_object_trailing_comment_open.json new file mode 100644 index 0000000..d557f41 --- /dev/null +++ b/tests/specs/json/n_object_trailing_comment_open.json @@ -0,0 +1 @@ +{"a":"b"}/**//
\ No newline at end of file diff --git a/tests/specs/json/n_object_trailing_comment_slash_open.json b/tests/specs/json/n_object_trailing_comment_slash_open.json new file mode 100644 index 0000000..e335136 --- /dev/null +++ b/tests/specs/json/n_object_trailing_comment_slash_open.json @@ -0,0 +1 @@ +{"a":"b"}//
\ No newline at end of file diff --git a/tests/specs/json/n_object_trailing_comment_slash_open_incomplete.json b/tests/specs/json/n_object_trailing_comment_slash_open_incomplete.json new file mode 100644 index 0000000..d892e49 --- /dev/null +++ b/tests/specs/json/n_object_trailing_comment_slash_open_incomplete.json @@ -0,0 +1 @@ +{"a":"b"}/
\ No newline at end of file diff --git a/tests/specs/json/n_object_two_commas_in_a_row.json b/tests/specs/json/n_object_two_commas_in_a_row.json new file mode 100755 index 0000000..7c639ae --- /dev/null +++ b/tests/specs/json/n_object_two_commas_in_a_row.json @@ -0,0 +1 @@ +{"a":"b",,"c":"d"}
\ No newline at end of file diff --git a/tests/specs/json/n_object_unquoted_key.json b/tests/specs/json/n_object_unquoted_key.json new file mode 100644 index 0000000..8ba1372 --- /dev/null +++ b/tests/specs/json/n_object_unquoted_key.json @@ -0,0 +1 @@ +{a: "b"}
\ No newline at end of file diff --git a/tests/specs/json/n_object_unterminated-value.json b/tests/specs/json/n_object_unterminated-value.json new file mode 100644 index 0000000..7fe699a --- /dev/null +++ b/tests/specs/json/n_object_unterminated-value.json @@ -0,0 +1 @@ +{"a":"a
\ No newline at end of file diff --git a/tests/specs/json/n_object_with_single_string.json b/tests/specs/json/n_object_with_single_string.json new file mode 100644 index 0000000..d63f7fb --- /dev/null +++ b/tests/specs/json/n_object_with_single_string.json @@ -0,0 +1 @@ +{ "foo" : "bar", "a" }
\ No newline at end of file diff --git a/tests/specs/json/n_object_with_trailing_garbage.json b/tests/specs/json/n_object_with_trailing_garbage.json new file mode 100644 index 0000000..787c8f0 --- /dev/null +++ b/tests/specs/json/n_object_with_trailing_garbage.json @@ -0,0 +1 @@ +{"a":"b"}#
\ No newline at end of file diff --git a/tests/specs/json/n_single_space.json b/tests/specs/json/n_single_space.json new file mode 100755 index 0000000..0519ecb --- /dev/null +++ b/tests/specs/json/n_single_space.json @@ -0,0 +1 @@ +
\ No newline at end of file diff --git a/tests/specs/json/n_string_1_surrogate_then_escape.json b/tests/specs/json/n_string_1_surrogate_then_escape.json new file mode 100644 index 0000000..acec66d --- /dev/null +++ b/tests/specs/json/n_string_1_surrogate_then_escape.json @@ -0,0 +1 @@ +["\uD800\"]
\ No newline at end of file diff --git a/tests/specs/json/n_string_1_surrogate_then_escape_u.json b/tests/specs/json/n_string_1_surrogate_then_escape_u.json new file mode 100644 index 0000000..e834b05 --- /dev/null +++ b/tests/specs/json/n_string_1_surrogate_then_escape_u.json @@ -0,0 +1 @@ +["\uD800\u"]
\ No newline at end of file diff --git a/tests/specs/json/n_string_1_surrogate_then_escape_u1.json b/tests/specs/json/n_string_1_surrogate_then_escape_u1.json new file mode 100644 index 0000000..a04cd34 --- /dev/null +++ b/tests/specs/json/n_string_1_surrogate_then_escape_u1.json @@ -0,0 +1 @@ +["\uD800\u1"]
\ No newline at end of file diff --git a/tests/specs/json/n_string_1_surrogate_then_escape_u1x.json b/tests/specs/json/n_string_1_surrogate_then_escape_u1x.json new file mode 100644 index 0000000..bfbd234 --- /dev/null +++ b/tests/specs/json/n_string_1_surrogate_then_escape_u1x.json @@ -0,0 +1 @@ +["\uD800\u1x"]
\ No newline at end of file diff --git a/tests/specs/json/n_string_accentuated_char_no_quotes.json b/tests/specs/json/n_string_accentuated_char_no_quotes.json new file mode 100644 index 0000000..fd68956 --- /dev/null +++ b/tests/specs/json/n_string_accentuated_char_no_quotes.json @@ -0,0 +1 @@ +[é]
\ No newline at end of file diff --git a/tests/specs/json/n_string_backslash_00.json b/tests/specs/json/n_string_backslash_00.json Binary files differnew file mode 100644 index 0000000..b5bf267 --- /dev/null +++ b/tests/specs/json/n_string_backslash_00.json diff --git a/tests/specs/json/n_string_escape_x.json b/tests/specs/json/n_string_escape_x.json new file mode 100644 index 0000000..fae2919 --- /dev/null +++ b/tests/specs/json/n_string_escape_x.json @@ -0,0 +1 @@ +["\x00"]
\ No newline at end of file diff --git a/tests/specs/json/n_string_escaped_backslash_bad.json b/tests/specs/json/n_string_escaped_backslash_bad.json new file mode 100755 index 0000000..016fcb4 --- /dev/null +++ b/tests/specs/json/n_string_escaped_backslash_bad.json @@ -0,0 +1 @@ +["\\\"]
\ No newline at end of file diff --git a/tests/specs/json/n_string_escaped_ctrl_char_tab.json b/tests/specs/json/n_string_escaped_ctrl_char_tab.json new file mode 100644 index 0000000..f35ea38 --- /dev/null +++ b/tests/specs/json/n_string_escaped_ctrl_char_tab.json @@ -0,0 +1 @@ +["\ "]
\ No newline at end of file diff --git a/tests/specs/json/n_string_escaped_emoji.json b/tests/specs/json/n_string_escaped_emoji.json new file mode 100644 index 0000000..a277754 --- /dev/null +++ b/tests/specs/json/n_string_escaped_emoji.json @@ -0,0 +1 @@ +["\🌀"]
\ No newline at end of file diff --git a/tests/specs/json/n_string_incomplete_escape.json b/tests/specs/json/n_string_incomplete_escape.json new file mode 100755 index 0000000..3415c33 --- /dev/null +++ b/tests/specs/json/n_string_incomplete_escape.json @@ -0,0 +1 @@ +["\"]
\ No newline at end of file diff --git a/tests/specs/json/n_string_incomplete_escaped_character.json b/tests/specs/json/n_string_incomplete_escaped_character.json new file mode 100755 index 0000000..0f2197e --- /dev/null +++ b/tests/specs/json/n_string_incomplete_escaped_character.json @@ -0,0 +1 @@ +["\u00A"]
\ No newline at end of file diff --git a/tests/specs/json/n_string_incomplete_surrogate.json b/tests/specs/json/n_string_incomplete_surrogate.json new file mode 100755 index 0000000..75504a6 --- /dev/null +++ b/tests/specs/json/n_string_incomplete_surrogate.json @@ -0,0 +1 @@ +["\uD834\uDd"]
\ No newline at end of file diff --git a/tests/specs/json/n_string_incomplete_surrogate_escape_invalid.json b/tests/specs/json/n_string_incomplete_surrogate_escape_invalid.json new file mode 100755 index 0000000..bd96560 --- /dev/null +++ b/tests/specs/json/n_string_incomplete_surrogate_escape_invalid.json @@ -0,0 +1 @@ +["\uD800\uD800\x"]
\ No newline at end of file diff --git a/tests/specs/json/n_string_invalid-utf-8-in-escape.json b/tests/specs/json/n_string_invalid-utf-8-in-escape.json new file mode 100644 index 0000000..0c43006 --- /dev/null +++ b/tests/specs/json/n_string_invalid-utf-8-in-escape.json @@ -0,0 +1 @@ +["\u�"]
\ No newline at end of file diff --git a/tests/specs/json/n_string_invalid_backslash_esc.json b/tests/specs/json/n_string_invalid_backslash_esc.json new file mode 100755 index 0000000..d1eb609 --- /dev/null +++ b/tests/specs/json/n_string_invalid_backslash_esc.json @@ -0,0 +1 @@ +["\a"]
\ No newline at end of file diff --git a/tests/specs/json/n_string_invalid_unicode_escape.json b/tests/specs/json/n_string_invalid_unicode_escape.json new file mode 100644 index 0000000..7608cb6 --- /dev/null +++ b/tests/specs/json/n_string_invalid_unicode_escape.json @@ -0,0 +1 @@ +["\uqqqq"]
\ No newline at end of file diff --git a/tests/specs/json/n_string_invalid_utf8_after_escape.json b/tests/specs/json/n_string_invalid_utf8_after_escape.json new file mode 100644 index 0000000..2f757a2 --- /dev/null +++ b/tests/specs/json/n_string_invalid_utf8_after_escape.json @@ -0,0 +1 @@ +["\�"]
\ No newline at end of file diff --git a/tests/specs/json/n_string_leading_uescaped_thinspace.json b/tests/specs/json/n_string_leading_uescaped_thinspace.json new file mode 100755 index 0000000..7b297c6 --- /dev/null +++ b/tests/specs/json/n_string_leading_uescaped_thinspace.json @@ -0,0 +1 @@ +[\u0020"asd"]
\ No newline at end of file diff --git a/tests/specs/json/n_string_no_quotes_with_bad_escape.json b/tests/specs/json/n_string_no_quotes_with_bad_escape.json new file mode 100644 index 0000000..01bc70a --- /dev/null +++ b/tests/specs/json/n_string_no_quotes_with_bad_escape.json @@ -0,0 +1 @@ +[\n]
\ No newline at end of file diff --git a/tests/specs/json/n_string_single_doublequote.json b/tests/specs/json/n_string_single_doublequote.json new file mode 100755 index 0000000..9d68933 --- /dev/null +++ b/tests/specs/json/n_string_single_doublequote.json @@ -0,0 +1 @@ +"
\ No newline at end of file diff --git a/tests/specs/json/n_string_single_quote.json b/tests/specs/json/n_string_single_quote.json new file mode 100644 index 0000000..caff239 --- /dev/null +++ b/tests/specs/json/n_string_single_quote.json @@ -0,0 +1 @@ +['single quote']
\ No newline at end of file diff --git a/tests/specs/json/n_string_single_string_no_double_quotes.json b/tests/specs/json/n_string_single_string_no_double_quotes.json new file mode 100755 index 0000000..f2ba8f8 --- /dev/null +++ b/tests/specs/json/n_string_single_string_no_double_quotes.json @@ -0,0 +1 @@ +abc
\ No newline at end of file diff --git a/tests/specs/json/n_string_start_escape_unclosed.json b/tests/specs/json/n_string_start_escape_unclosed.json new file mode 100644 index 0000000..db62a46 --- /dev/null +++ b/tests/specs/json/n_string_start_escape_unclosed.json @@ -0,0 +1 @@ +["\
\ No newline at end of file diff --git a/tests/specs/json/n_string_unescaped_ctrl_char.json b/tests/specs/json/n_string_unescaped_ctrl_char.json Binary files differnew file mode 100755 index 0000000..9f21348 --- /dev/null +++ b/tests/specs/json/n_string_unescaped_ctrl_char.json diff --git a/tests/specs/json/n_string_unescaped_newline.json b/tests/specs/json/n_string_unescaped_newline.json new file mode 100644 index 0000000..700d360 --- /dev/null +++ b/tests/specs/json/n_string_unescaped_newline.json @@ -0,0 +1,2 @@ +["new +line"]
\ No newline at end of file diff --git a/tests/specs/json/n_string_unescaped_tab.json b/tests/specs/json/n_string_unescaped_tab.json new file mode 100644 index 0000000..160264a --- /dev/null +++ b/tests/specs/json/n_string_unescaped_tab.json @@ -0,0 +1 @@ +[" "]
\ No newline at end of file diff --git a/tests/specs/json/n_string_unicode_CapitalU.json b/tests/specs/json/n_string_unicode_CapitalU.json new file mode 100644 index 0000000..17332bb --- /dev/null +++ b/tests/specs/json/n_string_unicode_CapitalU.json @@ -0,0 +1 @@ +"\UA66D"
\ No newline at end of file diff --git a/tests/specs/json/n_string_with_trailing_garbage.json b/tests/specs/json/n_string_with_trailing_garbage.json new file mode 100644 index 0000000..efe3bd2 --- /dev/null +++ b/tests/specs/json/n_string_with_trailing_garbage.json @@ -0,0 +1 @@ +""x
\ No newline at end of file diff --git a/tests/specs/json/n_structure_U+2060_word_joined.json b/tests/specs/json/n_structure_U+2060_word_joined.json new file mode 100644 index 0000000..81156a6 --- /dev/null +++ b/tests/specs/json/n_structure_U+2060_word_joined.json @@ -0,0 +1 @@ +[]
\ No newline at end of file diff --git a/tests/specs/json/n_structure_UTF8_BOM_no_data.json b/tests/specs/json/n_structure_UTF8_BOM_no_data.json new file mode 100755 index 0000000..5f28270 --- /dev/null +++ b/tests/specs/json/n_structure_UTF8_BOM_no_data.json @@ -0,0 +1 @@ +
\ No newline at end of file diff --git a/tests/specs/json/n_structure_angle_bracket_..json b/tests/specs/json/n_structure_angle_bracket_..json new file mode 100755 index 0000000..a56fef0 --- /dev/null +++ b/tests/specs/json/n_structure_angle_bracket_..json @@ -0,0 +1 @@ +<.>
\ No newline at end of file diff --git a/tests/specs/json/n_structure_angle_bracket_null.json b/tests/specs/json/n_structure_angle_bracket_null.json new file mode 100755 index 0000000..617f262 --- /dev/null +++ b/tests/specs/json/n_structure_angle_bracket_null.json @@ -0,0 +1 @@ +[<null>]
\ No newline at end of file diff --git a/tests/specs/json/n_structure_array_trailing_garbage.json b/tests/specs/json/n_structure_array_trailing_garbage.json new file mode 100644 index 0000000..5a745e6 --- /dev/null +++ b/tests/specs/json/n_structure_array_trailing_garbage.json @@ -0,0 +1 @@ +[1]x
\ No newline at end of file diff --git a/tests/specs/json/n_structure_array_with_extra_array_close.json b/tests/specs/json/n_structure_array_with_extra_array_close.json new file mode 100755 index 0000000..6cfb139 --- /dev/null +++ b/tests/specs/json/n_structure_array_with_extra_array_close.json @@ -0,0 +1 @@ +[1]]
\ No newline at end of file diff --git a/tests/specs/json/n_structure_array_with_unclosed_string.json b/tests/specs/json/n_structure_array_with_unclosed_string.json new file mode 100755 index 0000000..ba6b178 --- /dev/null +++ b/tests/specs/json/n_structure_array_with_unclosed_string.json @@ -0,0 +1 @@ +["asd]
\ No newline at end of file diff --git a/tests/specs/json/n_structure_ascii-unicode-identifier.json b/tests/specs/json/n_structure_ascii-unicode-identifier.json new file mode 100644 index 0000000..ef2ab62 --- /dev/null +++ b/tests/specs/json/n_structure_ascii-unicode-identifier.json @@ -0,0 +1 @@ +aå
\ No newline at end of file diff --git a/tests/specs/json/n_structure_capitalized_True.json b/tests/specs/json/n_structure_capitalized_True.json new file mode 100755 index 0000000..7cd8846 --- /dev/null +++ b/tests/specs/json/n_structure_capitalized_True.json @@ -0,0 +1 @@ +[True]
\ No newline at end of file diff --git a/tests/specs/json/n_structure_close_unopened_array.json b/tests/specs/json/n_structure_close_unopened_array.json new file mode 100755 index 0000000..d2af0c6 --- /dev/null +++ b/tests/specs/json/n_structure_close_unopened_array.json @@ -0,0 +1 @@ +1]
\ No newline at end of file diff --git a/tests/specs/json/n_structure_comma_instead_of_closing_brace.json b/tests/specs/json/n_structure_comma_instead_of_closing_brace.json new file mode 100644 index 0000000..ac61b82 --- /dev/null +++ b/tests/specs/json/n_structure_comma_instead_of_closing_brace.json @@ -0,0 +1 @@ +{"x": true,
\ No newline at end of file diff --git a/tests/specs/json/n_structure_double_array.json b/tests/specs/json/n_structure_double_array.json new file mode 100755 index 0000000..058d162 --- /dev/null +++ b/tests/specs/json/n_structure_double_array.json @@ -0,0 +1 @@ +[][]
\ No newline at end of file diff --git a/tests/specs/json/n_structure_end_array.json b/tests/specs/json/n_structure_end_array.json new file mode 100644 index 0000000..54caf60 --- /dev/null +++ b/tests/specs/json/n_structure_end_array.json @@ -0,0 +1 @@ +]
\ No newline at end of file diff --git a/tests/specs/json/n_structure_incomplete_UTF8_BOM.json b/tests/specs/json/n_structure_incomplete_UTF8_BOM.json new file mode 100755 index 0000000..bfcdd51 --- /dev/null +++ b/tests/specs/json/n_structure_incomplete_UTF8_BOM.json @@ -0,0 +1 @@ +�{}
\ No newline at end of file diff --git a/tests/specs/json/n_structure_lone-invalid-utf-8.json b/tests/specs/json/n_structure_lone-invalid-utf-8.json new file mode 100644 index 0000000..8b1296c --- /dev/null +++ b/tests/specs/json/n_structure_lone-invalid-utf-8.json @@ -0,0 +1 @@ +�
\ No newline at end of file diff --git a/tests/specs/json/n_structure_lone-open-bracket.json b/tests/specs/json/n_structure_lone-open-bracket.json new file mode 100644 index 0000000..8e2f0be --- /dev/null +++ b/tests/specs/json/n_structure_lone-open-bracket.json @@ -0,0 +1 @@ +[
\ No newline at end of file diff --git a/tests/specs/json/n_structure_no_data.json b/tests/specs/json/n_structure_no_data.json new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/tests/specs/json/n_structure_no_data.json diff --git a/tests/specs/json/n_structure_null-byte-outside-string.json b/tests/specs/json/n_structure_null-byte-outside-string.json Binary files differnew file mode 100644 index 0000000..326db14 --- /dev/null +++ b/tests/specs/json/n_structure_null-byte-outside-string.json diff --git a/tests/specs/json/n_structure_number_with_trailing_garbage.json b/tests/specs/json/n_structure_number_with_trailing_garbage.json new file mode 100644 index 0000000..0746539 --- /dev/null +++ b/tests/specs/json/n_structure_number_with_trailing_garbage.json @@ -0,0 +1 @@ +2@
\ No newline at end of file diff --git a/tests/specs/json/n_structure_object_followed_by_closing_object.json b/tests/specs/json/n_structure_object_followed_by_closing_object.json new file mode 100644 index 0000000..aa9ebae --- /dev/null +++ b/tests/specs/json/n_structure_object_followed_by_closing_object.json @@ -0,0 +1 @@ +{}}
\ No newline at end of file diff --git a/tests/specs/json/n_structure_object_unclosed_no_value.json b/tests/specs/json/n_structure_object_unclosed_no_value.json new file mode 100644 index 0000000..17d0451 --- /dev/null +++ b/tests/specs/json/n_structure_object_unclosed_no_value.json @@ -0,0 +1 @@ +{"":
\ No newline at end of file diff --git a/tests/specs/json/n_structure_object_with_comment.json b/tests/specs/json/n_structure_object_with_comment.json new file mode 100644 index 0000000..ed1b569 --- /dev/null +++ b/tests/specs/json/n_structure_object_with_comment.json @@ -0,0 +1 @@ +{"a":/*comment*/"b"}
\ No newline at end of file diff --git a/tests/specs/json/n_structure_object_with_trailing_garbage.json b/tests/specs/json/n_structure_object_with_trailing_garbage.json new file mode 100644 index 0000000..9ca2336 --- /dev/null +++ b/tests/specs/json/n_structure_object_with_trailing_garbage.json @@ -0,0 +1 @@ +{"a": true} "x"
\ No newline at end of file diff --git a/tests/specs/json/n_structure_open_array_apostrophe.json b/tests/specs/json/n_structure_open_array_apostrophe.json new file mode 100644 index 0000000..8bebe3a --- /dev/null +++ b/tests/specs/json/n_structure_open_array_apostrophe.json @@ -0,0 +1 @@ +['
\ No newline at end of file diff --git a/tests/specs/json/n_structure_open_array_comma.json b/tests/specs/json/n_structure_open_array_comma.json new file mode 100644 index 0000000..6295fdc --- /dev/null +++ b/tests/specs/json/n_structure_open_array_comma.json @@ -0,0 +1 @@ +[,
\ No newline at end of file diff --git a/tests/specs/json/n_structure_open_array_open_object.json b/tests/specs/json/n_structure_open_array_open_object.json new file mode 100644 index 0000000..7a63c8c --- /dev/null +++ b/tests/specs/json/n_structure_open_array_open_object.json @@ -0,0 +1 @@ +[{
\ No newline at end of file diff --git a/tests/specs/json/n_structure_open_array_open_string.json b/tests/specs/json/n_structure_open_array_open_string.json new file mode 100644 index 0000000..9822a6b --- /dev/null +++ b/tests/specs/json/n_structure_open_array_open_string.json @@ -0,0 +1 @@ +["a
\ No newline at end of file diff --git a/tests/specs/json/n_structure_open_array_string.json b/tests/specs/json/n_structure_open_array_string.json new file mode 100644 index 0000000..42a6193 --- /dev/null +++ b/tests/specs/json/n_structure_open_array_string.json @@ -0,0 +1 @@ +["a"
\ No newline at end of file diff --git a/tests/specs/json/n_structure_open_object.json b/tests/specs/json/n_structure_open_object.json new file mode 100644 index 0000000..81750b9 --- /dev/null +++ b/tests/specs/json/n_structure_open_object.json @@ -0,0 +1 @@ +{
\ No newline at end of file diff --git a/tests/specs/json/n_structure_open_object_close_array.json b/tests/specs/json/n_structure_open_object_close_array.json new file mode 100755 index 0000000..eebc700 --- /dev/null +++ b/tests/specs/json/n_structure_open_object_close_array.json @@ -0,0 +1 @@ +{]
\ No newline at end of file diff --git a/tests/specs/json/n_structure_open_object_comma.json b/tests/specs/json/n_structure_open_object_comma.json new file mode 100644 index 0000000..47bc910 --- /dev/null +++ b/tests/specs/json/n_structure_open_object_comma.json @@ -0,0 +1 @@ +{,
\ No newline at end of file diff --git a/tests/specs/json/n_structure_open_object_open_array.json b/tests/specs/json/n_structure_open_object_open_array.json new file mode 100644 index 0000000..381ede5 --- /dev/null +++ b/tests/specs/json/n_structure_open_object_open_array.json @@ -0,0 +1 @@ +{[
\ No newline at end of file diff --git a/tests/specs/json/n_structure_open_object_open_string.json b/tests/specs/json/n_structure_open_object_open_string.json new file mode 100644 index 0000000..328c30c --- /dev/null +++ b/tests/specs/json/n_structure_open_object_open_string.json @@ -0,0 +1 @@ +{"a
\ No newline at end of file diff --git a/tests/specs/json/n_structure_open_object_string_with_apostrophes.json b/tests/specs/json/n_structure_open_object_string_with_apostrophes.json new file mode 100644 index 0000000..9dba170 --- /dev/null +++ b/tests/specs/json/n_structure_open_object_string_with_apostrophes.json @@ -0,0 +1 @@ +{'a'
\ No newline at end of file diff --git a/tests/specs/json/n_structure_open_open.json b/tests/specs/json/n_structure_open_open.json new file mode 100644 index 0000000..841fd5f --- /dev/null +++ b/tests/specs/json/n_structure_open_open.json @@ -0,0 +1 @@ +["\{["\{["\{["\{
\ No newline at end of file diff --git a/tests/specs/json/n_structure_single_eacute.json b/tests/specs/json/n_structure_single_eacute.json new file mode 100644 index 0000000..92a39f3 --- /dev/null +++ b/tests/specs/json/n_structure_single_eacute.json @@ -0,0 +1 @@ +�
\ No newline at end of file diff --git a/tests/specs/json/n_structure_single_star.json b/tests/specs/json/n_structure_single_star.json new file mode 100755 index 0000000..f59ec20 --- /dev/null +++ b/tests/specs/json/n_structure_single_star.json @@ -0,0 +1 @@ +*
\ No newline at end of file diff --git a/tests/specs/json/n_structure_trailing_#.json b/tests/specs/json/n_structure_trailing_#.json new file mode 100644 index 0000000..8986110 --- /dev/null +++ b/tests/specs/json/n_structure_trailing_#.json @@ -0,0 +1 @@ +{"a":"b"}#{}
\ No newline at end of file diff --git a/tests/specs/json/n_structure_uescaped_LF_before_string.json b/tests/specs/json/n_structure_uescaped_LF_before_string.json new file mode 100755 index 0000000..df2f0f2 --- /dev/null +++ b/tests/specs/json/n_structure_uescaped_LF_before_string.json @@ -0,0 +1 @@ +[\u000A""]
\ No newline at end of file diff --git a/tests/specs/json/n_structure_unclosed_array.json b/tests/specs/json/n_structure_unclosed_array.json new file mode 100755 index 0000000..1120951 --- /dev/null +++ b/tests/specs/json/n_structure_unclosed_array.json @@ -0,0 +1 @@ +[1
\ No newline at end of file diff --git a/tests/specs/json/n_structure_unclosed_array_partial_null.json b/tests/specs/json/n_structure_unclosed_array_partial_null.json new file mode 100644 index 0000000..0d59176 --- /dev/null +++ b/tests/specs/json/n_structure_unclosed_array_partial_null.json @@ -0,0 +1 @@ +[ false, nul
\ No newline at end of file diff --git a/tests/specs/json/n_structure_unclosed_array_unfinished_false.json b/tests/specs/json/n_structure_unclosed_array_unfinished_false.json new file mode 100644 index 0000000..a2ff850 --- /dev/null +++ b/tests/specs/json/n_structure_unclosed_array_unfinished_false.json @@ -0,0 +1 @@ +[ true, fals
\ No newline at end of file diff --git a/tests/specs/json/n_structure_unclosed_array_unfinished_true.json b/tests/specs/json/n_structure_unclosed_array_unfinished_true.json new file mode 100644 index 0000000..3149e8f --- /dev/null +++ b/tests/specs/json/n_structure_unclosed_array_unfinished_true.json @@ -0,0 +1 @@ +[ false, tru
\ No newline at end of file diff --git a/tests/specs/json/n_structure_unclosed_object.json b/tests/specs/json/n_structure_unclosed_object.json new file mode 100755 index 0000000..694d69d --- /dev/null +++ b/tests/specs/json/n_structure_unclosed_object.json @@ -0,0 +1 @@ +{"asd":"asd"
\ No newline at end of file diff --git a/tests/specs/json/n_structure_unicode-identifier.json b/tests/specs/json/n_structure_unicode-identifier.json new file mode 100644 index 0000000..7284aea --- /dev/null +++ b/tests/specs/json/n_structure_unicode-identifier.json @@ -0,0 +1 @@ +å
\ No newline at end of file diff --git a/tests/specs/json/n_structure_whitespace_U+2060_word_joiner.json b/tests/specs/json/n_structure_whitespace_U+2060_word_joiner.json new file mode 100755 index 0000000..81156a6 --- /dev/null +++ b/tests/specs/json/n_structure_whitespace_U+2060_word_joiner.json @@ -0,0 +1 @@ +[]
\ No newline at end of file diff --git a/tests/specs/json/n_structure_whitespace_formfeed.json b/tests/specs/json/n_structure_whitespace_formfeed.json new file mode 100755 index 0000000..a9ea535 --- /dev/null +++ b/tests/specs/json/n_structure_whitespace_formfeed.json @@ -0,0 +1 @@ +[]
\ No newline at end of file diff --git a/tests/specs/json/y_array_arraysWithSpaces.json b/tests/specs/json/y_array_arraysWithSpaces.json new file mode 100755 index 0000000..5822907 --- /dev/null +++ b/tests/specs/json/y_array_arraysWithSpaces.json @@ -0,0 +1 @@ +[[] ]
\ No newline at end of file diff --git a/tests/specs/json/y_array_empty-string.json b/tests/specs/json/y_array_empty-string.json new file mode 100644 index 0000000..93b6be2 --- /dev/null +++ b/tests/specs/json/y_array_empty-string.json @@ -0,0 +1 @@ +[""]
\ No newline at end of file diff --git a/tests/specs/json/y_array_empty.json b/tests/specs/json/y_array_empty.json new file mode 100755 index 0000000..0637a08 --- /dev/null +++ b/tests/specs/json/y_array_empty.json @@ -0,0 +1 @@ +[]
\ No newline at end of file diff --git a/tests/specs/json/y_array_ending_with_newline.json b/tests/specs/json/y_array_ending_with_newline.json new file mode 100755 index 0000000..eac5f7b --- /dev/null +++ b/tests/specs/json/y_array_ending_with_newline.json @@ -0,0 +1 @@ +["a"]
\ No newline at end of file diff --git a/tests/specs/json/y_array_false.json b/tests/specs/json/y_array_false.json new file mode 100644 index 0000000..67b2f07 --- /dev/null +++ b/tests/specs/json/y_array_false.json @@ -0,0 +1 @@ +[false]
\ No newline at end of file diff --git a/tests/specs/json/y_array_heterogeneous.json b/tests/specs/json/y_array_heterogeneous.json new file mode 100755 index 0000000..d3c1e26 --- /dev/null +++ b/tests/specs/json/y_array_heterogeneous.json @@ -0,0 +1 @@ +[null, 1, "1", {}]
\ No newline at end of file diff --git a/tests/specs/json/y_array_null.json b/tests/specs/json/y_array_null.json new file mode 100644 index 0000000..500db4a --- /dev/null +++ b/tests/specs/json/y_array_null.json @@ -0,0 +1 @@ +[null]
\ No newline at end of file diff --git a/tests/specs/json/y_array_with_1_and_newline.json b/tests/specs/json/y_array_with_1_and_newline.json new file mode 100644 index 0000000..9948255 --- /dev/null +++ b/tests/specs/json/y_array_with_1_and_newline.json @@ -0,0 +1,2 @@ +[1 +]
\ No newline at end of file diff --git a/tests/specs/json/y_array_with_leading_space.json b/tests/specs/json/y_array_with_leading_space.json new file mode 100755 index 0000000..18bfe64 --- /dev/null +++ b/tests/specs/json/y_array_with_leading_space.json @@ -0,0 +1 @@ + [1]
\ No newline at end of file diff --git a/tests/specs/json/y_array_with_several_null.json b/tests/specs/json/y_array_with_several_null.json new file mode 100755 index 0000000..99f6c5d --- /dev/null +++ b/tests/specs/json/y_array_with_several_null.json @@ -0,0 +1 @@ +[1,null,null,null,2]
\ No newline at end of file diff --git a/tests/specs/json/y_array_with_trailing_space.json b/tests/specs/json/y_array_with_trailing_space.json new file mode 100755 index 0000000..de9e7a9 --- /dev/null +++ b/tests/specs/json/y_array_with_trailing_space.json @@ -0,0 +1 @@ +[2]
\ No newline at end of file diff --git a/tests/specs/json/y_number.json b/tests/specs/json/y_number.json new file mode 100644 index 0000000..e5f5cc3 --- /dev/null +++ b/tests/specs/json/y_number.json @@ -0,0 +1 @@ +[123e65]
\ No newline at end of file diff --git a/tests/specs/json/y_number_0e+1.json b/tests/specs/json/y_number_0e+1.json new file mode 100755 index 0000000..d1d3967 --- /dev/null +++ b/tests/specs/json/y_number_0e+1.json @@ -0,0 +1 @@ +[0e+1]
\ No newline at end of file diff --git a/tests/specs/json/y_number_0e1.json b/tests/specs/json/y_number_0e1.json new file mode 100755 index 0000000..3283a79 --- /dev/null +++ b/tests/specs/json/y_number_0e1.json @@ -0,0 +1 @@ +[0e1]
\ No newline at end of file diff --git a/tests/specs/json/y_number_after_space.json b/tests/specs/json/y_number_after_space.json new file mode 100644 index 0000000..623570d --- /dev/null +++ b/tests/specs/json/y_number_after_space.json @@ -0,0 +1 @@ +[ 4]
\ No newline at end of file diff --git a/tests/specs/json/y_number_double_close_to_zero.json b/tests/specs/json/y_number_double_close_to_zero.json new file mode 100755 index 0000000..96555ff --- /dev/null +++ b/tests/specs/json/y_number_double_close_to_zero.json @@ -0,0 +1 @@ +[-0.000000000000000000000000000000000000000000000000000000000000000000000000000001] diff --git a/tests/specs/json/y_number_int_with_exp.json b/tests/specs/json/y_number_int_with_exp.json new file mode 100755 index 0000000..a4ca9e7 --- /dev/null +++ b/tests/specs/json/y_number_int_with_exp.json @@ -0,0 +1 @@ +[20e1]
\ No newline at end of file diff --git a/tests/specs/json/y_number_minus_zero.json b/tests/specs/json/y_number_minus_zero.json new file mode 100755 index 0000000..37af131 --- /dev/null +++ b/tests/specs/json/y_number_minus_zero.json @@ -0,0 +1 @@ +[-0]
\ No newline at end of file diff --git a/tests/specs/json/y_number_negative_int.json b/tests/specs/json/y_number_negative_int.json new file mode 100644 index 0000000..8e30f8b --- /dev/null +++ b/tests/specs/json/y_number_negative_int.json @@ -0,0 +1 @@ +[-123]
\ No newline at end of file diff --git a/tests/specs/json/y_number_negative_one.json b/tests/specs/json/y_number_negative_one.json new file mode 100644 index 0000000..99d21a2 --- /dev/null +++ b/tests/specs/json/y_number_negative_one.json @@ -0,0 +1 @@ +[-1]
\ No newline at end of file diff --git a/tests/specs/json/y_number_negative_zero.json b/tests/specs/json/y_number_negative_zero.json new file mode 100644 index 0000000..37af131 --- /dev/null +++ b/tests/specs/json/y_number_negative_zero.json @@ -0,0 +1 @@ +[-0]
\ No newline at end of file diff --git a/tests/specs/json/y_number_real_capital_e.json b/tests/specs/json/y_number_real_capital_e.json new file mode 100644 index 0000000..6edbdfc --- /dev/null +++ b/tests/specs/json/y_number_real_capital_e.json @@ -0,0 +1 @@ +[1E22]
\ No newline at end of file diff --git a/tests/specs/json/y_number_real_capital_e_neg_exp.json b/tests/specs/json/y_number_real_capital_e_neg_exp.json new file mode 100644 index 0000000..0a01bd3 --- /dev/null +++ b/tests/specs/json/y_number_real_capital_e_neg_exp.json @@ -0,0 +1 @@ +[1E-2]
\ No newline at end of file diff --git a/tests/specs/json/y_number_real_capital_e_pos_exp.json b/tests/specs/json/y_number_real_capital_e_pos_exp.json new file mode 100644 index 0000000..5a8fc09 --- /dev/null +++ b/tests/specs/json/y_number_real_capital_e_pos_exp.json @@ -0,0 +1 @@ +[1E+2]
\ No newline at end of file diff --git a/tests/specs/json/y_number_real_exponent.json b/tests/specs/json/y_number_real_exponent.json new file mode 100644 index 0000000..da2522d --- /dev/null +++ b/tests/specs/json/y_number_real_exponent.json @@ -0,0 +1 @@ +[123e45]
\ No newline at end of file diff --git a/tests/specs/json/y_number_real_fraction_exponent.json b/tests/specs/json/y_number_real_fraction_exponent.json new file mode 100644 index 0000000..3944a7a --- /dev/null +++ b/tests/specs/json/y_number_real_fraction_exponent.json @@ -0,0 +1 @@ +[123.456e78]
\ No newline at end of file diff --git a/tests/specs/json/y_number_real_neg_exp.json b/tests/specs/json/y_number_real_neg_exp.json new file mode 100644 index 0000000..ca40d3c --- /dev/null +++ b/tests/specs/json/y_number_real_neg_exp.json @@ -0,0 +1 @@ +[1e-2]
\ No newline at end of file diff --git a/tests/specs/json/y_number_real_pos_exponent.json b/tests/specs/json/y_number_real_pos_exponent.json new file mode 100644 index 0000000..343601d --- /dev/null +++ b/tests/specs/json/y_number_real_pos_exponent.json @@ -0,0 +1 @@ +[1e+2]
\ No newline at end of file diff --git a/tests/specs/json/y_number_simple_int.json b/tests/specs/json/y_number_simple_int.json new file mode 100644 index 0000000..e47f69a --- /dev/null +++ b/tests/specs/json/y_number_simple_int.json @@ -0,0 +1 @@ +[123]
\ No newline at end of file diff --git a/tests/specs/json/y_number_simple_real.json b/tests/specs/json/y_number_simple_real.json new file mode 100644 index 0000000..b02878e --- /dev/null +++ b/tests/specs/json/y_number_simple_real.json @@ -0,0 +1 @@ +[123.456789]
\ No newline at end of file diff --git a/tests/specs/json/y_object.json b/tests/specs/json/y_object.json new file mode 100755 index 0000000..78262ed --- /dev/null +++ b/tests/specs/json/y_object.json @@ -0,0 +1 @@ +{"asd":"sdf", "dfg":"fgh"}
\ No newline at end of file diff --git a/tests/specs/json/y_object_basic.json b/tests/specs/json/y_object_basic.json new file mode 100755 index 0000000..646bbe7 --- /dev/null +++ b/tests/specs/json/y_object_basic.json @@ -0,0 +1 @@ +{"asd":"sdf"}
\ No newline at end of file diff --git a/tests/specs/json/y_object_duplicated_key.json b/tests/specs/json/y_object_duplicated_key.json new file mode 100755 index 0000000..bbc2e1c --- /dev/null +++ b/tests/specs/json/y_object_duplicated_key.json @@ -0,0 +1 @@ +{"a":"b","a":"c"}
\ No newline at end of file diff --git a/tests/specs/json/y_object_duplicated_key_and_value.json b/tests/specs/json/y_object_duplicated_key_and_value.json new file mode 100755 index 0000000..211581c --- /dev/null +++ b/tests/specs/json/y_object_duplicated_key_and_value.json @@ -0,0 +1 @@ +{"a":"b","a":"b"}
\ No newline at end of file diff --git a/tests/specs/json/y_object_empty.json b/tests/specs/json/y_object_empty.json new file mode 100644 index 0000000..9e26dfe --- /dev/null +++ b/tests/specs/json/y_object_empty.json @@ -0,0 +1 @@ +{}
\ No newline at end of file diff --git a/tests/specs/json/y_object_empty_key.json b/tests/specs/json/y_object_empty_key.json new file mode 100755 index 0000000..c0013d3 --- /dev/null +++ b/tests/specs/json/y_object_empty_key.json @@ -0,0 +1 @@ +{"":0}
\ No newline at end of file diff --git a/tests/specs/json/y_object_escaped_null_in_key.json b/tests/specs/json/y_object_escaped_null_in_key.json new file mode 100644 index 0000000..593f0f6 --- /dev/null +++ b/tests/specs/json/y_object_escaped_null_in_key.json @@ -0,0 +1 @@ +{"foo\u0000bar": 42}
\ No newline at end of file diff --git a/tests/specs/json/y_object_extreme_numbers.json b/tests/specs/json/y_object_extreme_numbers.json new file mode 100644 index 0000000..a0d3531 --- /dev/null +++ b/tests/specs/json/y_object_extreme_numbers.json @@ -0,0 +1 @@ +{ "min": -1.0e+28, "max": 1.0e+28 }
\ No newline at end of file diff --git a/tests/specs/json/y_object_long_strings.json b/tests/specs/json/y_object_long_strings.json new file mode 100644 index 0000000..bdc4a08 --- /dev/null +++ b/tests/specs/json/y_object_long_strings.json @@ -0,0 +1 @@ +{"x":[{"id": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"}], "id": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"}
\ No newline at end of file diff --git a/tests/specs/json/y_object_simple.json b/tests/specs/json/y_object_simple.json new file mode 100644 index 0000000..dacac91 --- /dev/null +++ b/tests/specs/json/y_object_simple.json @@ -0,0 +1 @@ +{"a":[]}
\ No newline at end of file diff --git a/tests/specs/json/y_object_string_unicode.json b/tests/specs/json/y_object_string_unicode.json new file mode 100644 index 0000000..8effdb2 --- /dev/null +++ b/tests/specs/json/y_object_string_unicode.json @@ -0,0 +1 @@ +{"title":"\u041f\u043e\u043b\u0442\u043e\u0440\u0430 \u0417\u0435\u043c\u043b\u0435\u043a\u043e\u043f\u0430" }
\ No newline at end of file diff --git a/tests/specs/json/y_object_with_newlines.json b/tests/specs/json/y_object_with_newlines.json new file mode 100644 index 0000000..246ec6b --- /dev/null +++ b/tests/specs/json/y_object_with_newlines.json @@ -0,0 +1,3 @@ +{ +"a": "b" +}
\ No newline at end of file diff --git a/tests/specs/json/y_string_1_2_3_bytes_UTF-8_sequences.json b/tests/specs/json/y_string_1_2_3_bytes_UTF-8_sequences.json new file mode 100755 index 0000000..9967dde --- /dev/null +++ b/tests/specs/json/y_string_1_2_3_bytes_UTF-8_sequences.json @@ -0,0 +1 @@ +["\u0060\u012a\u12AB"]
\ No newline at end of file diff --git a/tests/specs/json/y_string_accepted_surrogate_pair.json b/tests/specs/json/y_string_accepted_surrogate_pair.json new file mode 100755 index 0000000..996875c --- /dev/null +++ b/tests/specs/json/y_string_accepted_surrogate_pair.json @@ -0,0 +1 @@ +["\uD801\udc37"]
\ No newline at end of file diff --git a/tests/specs/json/y_string_accepted_surrogate_pairs.json b/tests/specs/json/y_string_accepted_surrogate_pairs.json new file mode 100755 index 0000000..3401021 --- /dev/null +++ b/tests/specs/json/y_string_accepted_surrogate_pairs.json @@ -0,0 +1 @@ +["\ud83d\ude39\ud83d\udc8d"]
\ No newline at end of file diff --git a/tests/specs/json/y_string_allowed_escapes.json b/tests/specs/json/y_string_allowed_escapes.json new file mode 100644 index 0000000..7f49553 --- /dev/null +++ b/tests/specs/json/y_string_allowed_escapes.json @@ -0,0 +1 @@ +["\"\\\/\b\f\n\r\t"]
\ No newline at end of file diff --git a/tests/specs/json/y_string_backslash_and_u_escaped_zero.json b/tests/specs/json/y_string_backslash_and_u_escaped_zero.json new file mode 100755 index 0000000..d4439ed --- /dev/null +++ b/tests/specs/json/y_string_backslash_and_u_escaped_zero.json @@ -0,0 +1 @@ +["\\u0000"]
\ No newline at end of file diff --git a/tests/specs/json/y_string_backslash_doublequotes.json b/tests/specs/json/y_string_backslash_doublequotes.json new file mode 100644 index 0000000..ae03243 --- /dev/null +++ b/tests/specs/json/y_string_backslash_doublequotes.json @@ -0,0 +1 @@ +["\""]
\ No newline at end of file diff --git a/tests/specs/json/y_string_comments.json b/tests/specs/json/y_string_comments.json new file mode 100644 index 0000000..2260c20 --- /dev/null +++ b/tests/specs/json/y_string_comments.json @@ -0,0 +1 @@ +["a/*b*/c/*d//e"]
\ No newline at end of file diff --git a/tests/specs/json/y_string_double_escape_a.json b/tests/specs/json/y_string_double_escape_a.json new file mode 100644 index 0000000..6715d6f --- /dev/null +++ b/tests/specs/json/y_string_double_escape_a.json @@ -0,0 +1 @@ +["\\a"]
\ No newline at end of file diff --git a/tests/specs/json/y_string_double_escape_n.json b/tests/specs/json/y_string_double_escape_n.json new file mode 100644 index 0000000..44ca56c --- /dev/null +++ b/tests/specs/json/y_string_double_escape_n.json @@ -0,0 +1 @@ +["\\n"]
\ No newline at end of file diff --git a/tests/specs/json/y_string_escaped_control_character.json b/tests/specs/json/y_string_escaped_control_character.json new file mode 100644 index 0000000..5b014a9 --- /dev/null +++ b/tests/specs/json/y_string_escaped_control_character.json @@ -0,0 +1 @@ +["\u0012"]
\ No newline at end of file diff --git a/tests/specs/json/y_string_escaped_noncharacter.json b/tests/specs/json/y_string_escaped_noncharacter.json new file mode 100755 index 0000000..2ff52e2 --- /dev/null +++ b/tests/specs/json/y_string_escaped_noncharacter.json @@ -0,0 +1 @@ +["\uFFFF"]
\ No newline at end of file diff --git a/tests/specs/json/y_string_in_array.json b/tests/specs/json/y_string_in_array.json new file mode 100755 index 0000000..21d7ae4 --- /dev/null +++ b/tests/specs/json/y_string_in_array.json @@ -0,0 +1 @@ +["asd"]
\ No newline at end of file diff --git a/tests/specs/json/y_string_in_array_with_leading_space.json b/tests/specs/json/y_string_in_array_with_leading_space.json new file mode 100755 index 0000000..9e1887c --- /dev/null +++ b/tests/specs/json/y_string_in_array_with_leading_space.json @@ -0,0 +1 @@ +[ "asd"]
\ No newline at end of file diff --git a/tests/specs/json/y_string_last_surrogates_1_and_2.json b/tests/specs/json/y_string_last_surrogates_1_and_2.json new file mode 100644 index 0000000..3919cef --- /dev/null +++ b/tests/specs/json/y_string_last_surrogates_1_and_2.json @@ -0,0 +1 @@ +["\uDBFF\uDFFF"]
\ No newline at end of file diff --git a/tests/specs/json/y_string_nbsp_uescaped.json b/tests/specs/json/y_string_nbsp_uescaped.json new file mode 100644 index 0000000..2085ab1 --- /dev/null +++ b/tests/specs/json/y_string_nbsp_uescaped.json @@ -0,0 +1 @@ +["new\u00A0line"]
\ No newline at end of file diff --git a/tests/specs/json/y_string_nonCharacterInUTF-8_U+10FFFF.json b/tests/specs/json/y_string_nonCharacterInUTF-8_U+10FFFF.json new file mode 100755 index 0000000..059e4d9 --- /dev/null +++ b/tests/specs/json/y_string_nonCharacterInUTF-8_U+10FFFF.json @@ -0,0 +1 @@ +[""]
\ No newline at end of file diff --git a/tests/specs/json/y_string_nonCharacterInUTF-8_U+FFFF.json b/tests/specs/json/y_string_nonCharacterInUTF-8_U+FFFF.json new file mode 100755 index 0000000..4c913bd --- /dev/null +++ b/tests/specs/json/y_string_nonCharacterInUTF-8_U+FFFF.json @@ -0,0 +1 @@ +[""]
\ No newline at end of file diff --git a/tests/specs/json/y_string_null_escape.json b/tests/specs/json/y_string_null_escape.json new file mode 100644 index 0000000..c1ad844 --- /dev/null +++ b/tests/specs/json/y_string_null_escape.json @@ -0,0 +1 @@ +["\u0000"]
\ No newline at end of file diff --git a/tests/specs/json/y_string_one-byte-utf-8.json b/tests/specs/json/y_string_one-byte-utf-8.json new file mode 100644 index 0000000..1571859 --- /dev/null +++ b/tests/specs/json/y_string_one-byte-utf-8.json @@ -0,0 +1 @@ +["\u002c"]
\ No newline at end of file diff --git a/tests/specs/json/y_string_pi.json b/tests/specs/json/y_string_pi.json new file mode 100644 index 0000000..9df11ae --- /dev/null +++ b/tests/specs/json/y_string_pi.json @@ -0,0 +1 @@ +["π"]
\ No newline at end of file diff --git a/tests/specs/json/y_string_reservedCharacterInUTF-8_U+1BFFF.json b/tests/specs/json/y_string_reservedCharacterInUTF-8_U+1BFFF.json new file mode 100755 index 0000000..10a33a1 --- /dev/null +++ b/tests/specs/json/y_string_reservedCharacterInUTF-8_U+1BFFF.json @@ -0,0 +1 @@ +[""]
\ No newline at end of file diff --git a/tests/specs/json/y_string_simple_ascii.json b/tests/specs/json/y_string_simple_ascii.json new file mode 100644 index 0000000..8cadf7d --- /dev/null +++ b/tests/specs/json/y_string_simple_ascii.json @@ -0,0 +1 @@ +["asd "]
\ No newline at end of file diff --git a/tests/specs/json/y_string_space.json b/tests/specs/json/y_string_space.json new file mode 100644 index 0000000..efd782c --- /dev/null +++ b/tests/specs/json/y_string_space.json @@ -0,0 +1 @@ +" "
\ No newline at end of file diff --git a/tests/specs/json/y_string_surrogates_U+1D11E_MUSICAL_SYMBOL_G_CLEF.json b/tests/specs/json/y_string_surrogates_U+1D11E_MUSICAL_SYMBOL_G_CLEF.json new file mode 100755 index 0000000..7620b66 --- /dev/null +++ b/tests/specs/json/y_string_surrogates_U+1D11E_MUSICAL_SYMBOL_G_CLEF.json @@ -0,0 +1 @@ +["\uD834\uDd1e"]
\ No newline at end of file diff --git a/tests/specs/json/y_string_three-byte-utf-8.json b/tests/specs/json/y_string_three-byte-utf-8.json new file mode 100644 index 0000000..108f1d6 --- /dev/null +++ b/tests/specs/json/y_string_three-byte-utf-8.json @@ -0,0 +1 @@ +["\u0821"]
\ No newline at end of file diff --git a/tests/specs/json/y_string_two-byte-utf-8.json b/tests/specs/json/y_string_two-byte-utf-8.json new file mode 100644 index 0000000..461503c --- /dev/null +++ b/tests/specs/json/y_string_two-byte-utf-8.json @@ -0,0 +1 @@ +["\u0123"]
\ No newline at end of file diff --git a/tests/specs/json/y_string_u+2028_line_sep.json b/tests/specs/json/y_string_u+2028_line_sep.json new file mode 100755 index 0000000..897b602 --- /dev/null +++ b/tests/specs/json/y_string_u+2028_line_sep.json @@ -0,0 +1 @@ +["
"]
\ No newline at end of file diff --git a/tests/specs/json/y_string_u+2029_par_sep.json b/tests/specs/json/y_string_u+2029_par_sep.json new file mode 100755 index 0000000..8cd998c --- /dev/null +++ b/tests/specs/json/y_string_u+2029_par_sep.json @@ -0,0 +1 @@ +["
"]
\ No newline at end of file diff --git a/tests/specs/json/y_string_uEscape.json b/tests/specs/json/y_string_uEscape.json new file mode 100755 index 0000000..f7b41a0 --- /dev/null +++ b/tests/specs/json/y_string_uEscape.json @@ -0,0 +1 @@ +["\u0061\u30af\u30EA\u30b9"]
\ No newline at end of file diff --git a/tests/specs/json/y_string_uescaped_newline.json b/tests/specs/json/y_string_uescaped_newline.json new file mode 100644 index 0000000..3a5a220 --- /dev/null +++ b/tests/specs/json/y_string_uescaped_newline.json @@ -0,0 +1 @@ +["new\u000Aline"]
\ No newline at end of file diff --git a/tests/specs/json/y_string_unescaped_char_delete.json b/tests/specs/json/y_string_unescaped_char_delete.json new file mode 100755 index 0000000..7d064f4 --- /dev/null +++ b/tests/specs/json/y_string_unescaped_char_delete.json @@ -0,0 +1 @@ +[""]
\ No newline at end of file diff --git a/tests/specs/json/y_string_unicode.json b/tests/specs/json/y_string_unicode.json new file mode 100644 index 0000000..3598095 --- /dev/null +++ b/tests/specs/json/y_string_unicode.json @@ -0,0 +1 @@ +["\uA66D"]
\ No newline at end of file diff --git a/tests/specs/json/y_string_unicodeEscapedBackslash.json b/tests/specs/json/y_string_unicodeEscapedBackslash.json new file mode 100755 index 0000000..0bb3b51 --- /dev/null +++ b/tests/specs/json/y_string_unicodeEscapedBackslash.json @@ -0,0 +1 @@ +["\u005C"]
\ No newline at end of file diff --git a/tests/specs/json/y_string_unicode_2.json b/tests/specs/json/y_string_unicode_2.json new file mode 100644 index 0000000..a7dcb97 --- /dev/null +++ b/tests/specs/json/y_string_unicode_2.json @@ -0,0 +1 @@ +["⍂㈴⍂"]
\ No newline at end of file diff --git a/tests/specs/json/y_string_unicode_U+10FFFE_nonchar.json b/tests/specs/json/y_string_unicode_U+10FFFE_nonchar.json new file mode 100644 index 0000000..9a8370b --- /dev/null +++ b/tests/specs/json/y_string_unicode_U+10FFFE_nonchar.json @@ -0,0 +1 @@ +["\uDBFF\uDFFE"]
\ No newline at end of file diff --git a/tests/specs/json/y_string_unicode_U+1FFFE_nonchar.json b/tests/specs/json/y_string_unicode_U+1FFFE_nonchar.json new file mode 100644 index 0000000..c51f8ae --- /dev/null +++ b/tests/specs/json/y_string_unicode_U+1FFFE_nonchar.json @@ -0,0 +1 @@ +["\uD83F\uDFFE"]
\ No newline at end of file diff --git a/tests/specs/json/y_string_unicode_U+200B_ZERO_WIDTH_SPACE.json b/tests/specs/json/y_string_unicode_U+200B_ZERO_WIDTH_SPACE.json new file mode 100644 index 0000000..626d5f8 --- /dev/null +++ b/tests/specs/json/y_string_unicode_U+200B_ZERO_WIDTH_SPACE.json @@ -0,0 +1 @@ +["\u200B"]
\ No newline at end of file diff --git a/tests/specs/json/y_string_unicode_U+2064_invisible_plus.json b/tests/specs/json/y_string_unicode_U+2064_invisible_plus.json new file mode 100644 index 0000000..1e23972 --- /dev/null +++ b/tests/specs/json/y_string_unicode_U+2064_invisible_plus.json @@ -0,0 +1 @@ +["\u2064"]
\ No newline at end of file diff --git a/tests/specs/json/y_string_unicode_U+FDD0_nonchar.json b/tests/specs/json/y_string_unicode_U+FDD0_nonchar.json new file mode 100644 index 0000000..18ef151 --- /dev/null +++ b/tests/specs/json/y_string_unicode_U+FDD0_nonchar.json @@ -0,0 +1 @@ +["\uFDD0"]
\ No newline at end of file diff --git a/tests/specs/json/y_string_unicode_U+FFFE_nonchar.json b/tests/specs/json/y_string_unicode_U+FFFE_nonchar.json new file mode 100644 index 0000000..13d261f --- /dev/null +++ b/tests/specs/json/y_string_unicode_U+FFFE_nonchar.json @@ -0,0 +1 @@ +["\uFFFE"]
\ No newline at end of file diff --git a/tests/specs/json/y_string_unicode_escaped_double_quote.json b/tests/specs/json/y_string_unicode_escaped_double_quote.json new file mode 100755 index 0000000..4e62578 --- /dev/null +++ b/tests/specs/json/y_string_unicode_escaped_double_quote.json @@ -0,0 +1 @@ +["\u0022"]
\ No newline at end of file diff --git a/tests/specs/json/y_string_utf8.json b/tests/specs/json/y_string_utf8.json new file mode 100644 index 0000000..4087843 --- /dev/null +++ b/tests/specs/json/y_string_utf8.json @@ -0,0 +1 @@ +["€𝄞"]
\ No newline at end of file diff --git a/tests/specs/json/y_string_with_del_character.json b/tests/specs/json/y_string_with_del_character.json new file mode 100755 index 0000000..8bd2490 --- /dev/null +++ b/tests/specs/json/y_string_with_del_character.json @@ -0,0 +1 @@ +["aa"]
\ No newline at end of file diff --git a/tests/specs/json/y_structure_lonely_false.json b/tests/specs/json/y_structure_lonely_false.json new file mode 100644 index 0000000..02e4a84 --- /dev/null +++ b/tests/specs/json/y_structure_lonely_false.json @@ -0,0 +1 @@ +false
\ No newline at end of file diff --git a/tests/specs/json/y_structure_lonely_int.json b/tests/specs/json/y_structure_lonely_int.json new file mode 100755 index 0000000..f70d7bb --- /dev/null +++ b/tests/specs/json/y_structure_lonely_int.json @@ -0,0 +1 @@ +42
\ No newline at end of file diff --git a/tests/specs/json/y_structure_lonely_negative_real.json b/tests/specs/json/y_structure_lonely_negative_real.json new file mode 100755 index 0000000..b5135a2 --- /dev/null +++ b/tests/specs/json/y_structure_lonely_negative_real.json @@ -0,0 +1 @@ +-0.1
\ No newline at end of file diff --git a/tests/specs/json/y_structure_lonely_null.json b/tests/specs/json/y_structure_lonely_null.json new file mode 100644 index 0000000..ec747fa --- /dev/null +++ b/tests/specs/json/y_structure_lonely_null.json @@ -0,0 +1 @@ +null
\ No newline at end of file diff --git a/tests/specs/json/y_structure_lonely_string.json b/tests/specs/json/y_structure_lonely_string.json new file mode 100755 index 0000000..b6e982c --- /dev/null +++ b/tests/specs/json/y_structure_lonely_string.json @@ -0,0 +1 @@ +"asd"
\ No newline at end of file diff --git a/tests/specs/json/y_structure_lonely_true.json b/tests/specs/json/y_structure_lonely_true.json new file mode 100755 index 0000000..f32a580 --- /dev/null +++ b/tests/specs/json/y_structure_lonely_true.json @@ -0,0 +1 @@ +true
\ No newline at end of file diff --git a/tests/specs/json/y_structure_string_empty.json b/tests/specs/json/y_structure_string_empty.json new file mode 100644 index 0000000..3cc762b --- /dev/null +++ b/tests/specs/json/y_structure_string_empty.json @@ -0,0 +1 @@ +""
\ No newline at end of file diff --git a/tests/specs/json/y_structure_trailing_newline.json b/tests/specs/json/y_structure_trailing_newline.json new file mode 100644 index 0000000..0c3426d --- /dev/null +++ b/tests/specs/json/y_structure_trailing_newline.json @@ -0,0 +1 @@ +["a"] diff --git a/tests/specs/json/y_structure_true_in_array.json b/tests/specs/json/y_structure_true_in_array.json new file mode 100644 index 0000000..de601e3 --- /dev/null +++ b/tests/specs/json/y_structure_true_in_array.json @@ -0,0 +1 @@ +[true]
\ No newline at end of file diff --git a/tests/specs/json/y_structure_whitespace_array.json b/tests/specs/json/y_structure_whitespace_array.json new file mode 100644 index 0000000..2bedf7f --- /dev/null +++ b/tests/specs/json/y_structure_whitespace_array.json @@ -0,0 +1 @@ + []
\ No newline at end of file |
