technopark-scraper/node_modules/@streamparser/json/test/offset.ts

90 lines
1.6 KiB
TypeScript

import tap from "tap";
import JSONParser from "../src/jsonparser";
import { TokenType } from "../src/utils/constants";
const { test } = tap;
const {
LEFT_BRACE,
RIGHT_BRACE,
LEFT_BRACKET,
RIGHT_BRACKET,
COLON,
COMMA,
TRUE,
FALSE,
NULL,
STRING,
NUMBER,
} = TokenType;
const input = '{\n "string": "value",\n "number": 3,\n "object"';
const input2 = ': {\n "key": "vд"\n },\n "array": [\n -1,\n 12\n ]\n ';
const input3 = '"null": null, "true": true, "false": false, "frac": 3.14 }';
const offsets = [
[0, LEFT_BRACE],
[4, STRING],
[12, COLON],
[14, STRING],
[21, COMMA],
[25, STRING],
[33, COLON],
[35, NUMBER],
[36, COMMA],
[40, STRING],
[48, COLON],
[50, LEFT_BRACE],
[54, STRING],
[59, COLON],
[61, STRING],
[69, RIGHT_BRACE],
[70, COMMA],
[74, STRING],
[81, COLON],
[83, LEFT_BRACKET],
[87, NUMBER],
[89, COMMA],
[93, NUMBER],
[98, RIGHT_BRACKET],
[102, STRING],
[108, COLON],
[110, NULL],
[114, COMMA],
[116, STRING],
[122, COLON],
[124, TRUE],
[128, COMMA],
[130, STRING],
[137, COLON],
[139, FALSE],
[144, COMMA],
[146, STRING],
[152, COLON],
[154, NUMBER],
[159, RIGHT_BRACE],
];
test("offset", (t) => {
t.plan(offsets.length * 2 + 1);
let i = 0;
const p = new JSONParser();
p.onToken = (token, value, offset) => {
t.equal(offset, offsets[i][0]);
t.equal(token, offsets[i][1]);
i += 1;
};
p.onValue = () => {
/* Do nothing */
};
p.onEnd = () => t.end();
p.write(input);
p.write(input2);
p.write(input3);
t.equal(i, offsets.length);
});