{"version":3,"file":"test.js","sourceRoot":"","sources":["../src/test.ts"],"names":[],"mappings":"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","sourcesContent":["import { parse } from \"./parse\";\n// shim until promises becomes an export of fs\nimport { readdirSync as read_dir, readFileSync as read_file} from 'fs';\nimport { join as path_join, basename } from 'path';\nimport { Schema } from \"./schema\";\nimport {deepStrictEqual as deep_strict_equal, rejects} from 'assert'\n\nconst fixture = (p: string) => path_join('test/fixtures', basename(p))\nconst rjson = async (p: string) => JSON.parse(await read_file(p, 'utf8'))\nconst rpbuf = async (p: string) => parse(await read_file(p, 'utf8'))\nconst fixtures = async (p: string) => {\n\tconst json = rjson(fixture(p + '.json'))\n\tconst schema = rpbuf(fixture(p + '.proto'))\n\treturn {json: await json, schema: await schema}\n}\nconst will_error: {[s: string]: Error} = {\n\t'no-tags': {\n\t\tname: \"SyntaxError\",\n\t\tmessage: \"tag assignment must follow field name [around token 6 \\\";\\\"]\"\n\t},\n\t'pheromon-trajectories': {\n\t\tname: \"SyntaxError\",\n\t\tmessage: \"Fields of type bytes cannot be declared \\[packed=true\\]. Only repeated fields of primitive numeric types (types which use the varint, 32-bit, or 64-bit wire types) can be declared as \\\"packed\\\". See https:\\/\\/developers.google.com\\/protocol-buffers\\/docs\\/encoding\\#optional\"\n\t},\n\t'invalid-map-type': {\n\t\tname: \"SyntaxError\",\n\t\tmessage: `Fields of type map cannot use Free as a key value, please use an enum, integer, or string type (int32, int64, uint32, uint64, sint32, sint64, bool, fixed64, sfixed64, fixed32, sfixed32, string + enum)`\n\t}\n}\nconst verbose = process.argv.includes('--verbose')\nasync function main() {\n\tlet dir = await read_dir('test/fixtures')\n\tlet tests = 0\n\tconsole.group('Running tests')\n\tfor (const file of new Set(dir.map(v => basename(basename(v, '.json'), '.proto')))) {\n\t\ttests++\n\t\tconsole.group(file)\n\t\tif (file in will_error) {\n\t\t\tlet err: Error | null = null, rp: Promise<Schema> | null = null;\n\t\t\tawait rejects(rp = rpbuf(fixture(file + '.proto')), will_error[file])\n\t\t\ttry { await rp } catch (e) {err = e}\n\t\t\tif (err) console.log('Got error correctly: %s', err)\n\t\t\telse {\n\t\t\t\tconsole.error(rp)\n\t\t\t\tthrow new ReferenceError('Expected error, got schema instead.')\n\t\t\t}\n\t\t} else {\n\t\t\tconst {json, schema} = await fixtures(file)\n\t\t\tlet schema_json = schema.toJSON()\n\t\t\tdeep_strict_equal(json, schema_json)\n\t\t\tif (verbose) {\n\t\t\t\tconsole.dir(schema, {depth: null})\n\t\t\t\tconsole.dir(json, {depth: null})\n\t\t\t\tconsole.log(schema.toString())\n\t\t\t} else console.log('passed required tests')\n\t\t}\n\t\tconsole.groupEnd()\n\t}\n\treturn tests\n}\n\nPromise.resolve().then(main).then(tests => {\n\tconsole.info('Passed %d tests successfully; exiting...', tests)\n\tconsole.groupEnd()\n\tsetImmediate(process.exit, 0)\n}, e => {\n\tconsole.error(e)\n\tsetImmediate(process.exit, 1)\n})\n"]}