UNPKG

bc-minecraft-bedrock-types

Version:

The typescript library that provides default types for minecraft bedrock

316 lines 15.2 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const json_1 = require("../../../src/minecraft/json"); const compact_1 = require("../../../src/minecraft/json/compact"); describe('Compact Json', () => { describe('Should parse string', () => { const data = [ { text: 'abc', offset: 0, result: { type: compact_1.CompactJson.Type.String, offset: 0, negative: false, value: 'abc' } }, { text: '!abc', offset: 0, result: { type: compact_1.CompactJson.Type.String, offset: 0, negative: true, value: 'abc' } }, { text: 'abc', offset: 1, result: { type: compact_1.CompactJson.Type.String, offset: 1, negative: false, value: 'abc' } }, { text: '!abc', offset: 1, result: { type: compact_1.CompactJson.Type.String, offset: 1, negative: true, value: 'abc' } }, ]; it.each(data)('Should be able to parse $test', (item) => { const result = compact_1.CompactJson.parse(item.text, item.offset); expect(result).toEqual(expect.objectContaining(item.result)); }); }); describe('Should parse object', () => { const data = [ { text: '{}', offset: 0, result: { type: compact_1.CompactJson.Type.Object, offset: 1, negative: false, value: [] } }, { text: '!{}', offset: 0, result: { type: compact_1.CompactJson.Type.Object, offset: 1, negative: true, value: [] } }, { text: '{}', offset: 1, result: { type: compact_1.CompactJson.Type.Object, offset: 2, negative: false, value: [] } }, { text: '!{}', offset: 1, result: { type: compact_1.CompactJson.Type.Object, offset: 2, negative: true, value: [] } }, ]; it.each(data)('Should be able to parse $test', (item) => { const result = compact_1.CompactJson.parse(item.text, item.offset); expect(result).toEqual(expect.objectContaining(item.result)); }); }); describe('Should parse array', () => { const data = [ { text: '[]', offset: 0, result: { type: compact_1.CompactJson.Type.Array, offset: 1, negative: false, value: [] } }, { text: '![]', offset: 0, result: { type: compact_1.CompactJson.Type.Array, offset: 1, negative: true, value: [] } }, { text: '[]', offset: 1, result: { type: compact_1.CompactJson.Type.Array, offset: 2, negative: false, value: [] } }, { text: '![]', offset: 1, result: { type: compact_1.CompactJson.Type.Array, offset: 2, negative: true, value: [] } }, ]; it.each(data)('Should be able to parse $test', (item) => { const result = compact_1.CompactJson.parse(item.text, item.offset); expect(result).toEqual(expect.objectContaining(item.result)); }); }); describe('Examples', () => { //Examples set const data = [ { text: '{a=1,b=2}', offset: 0, result: { type: compact_1.CompactJson.Type.Object, offset: 1, negative: false, value: [ { key: 'a', type: compact_1.CompactJson.Type.String, offset: 1, negative: false, value: '1' }, { key: 'b', type: compact_1.CompactJson.Type.String, offset: 5, negative: false, value: '2' }, ], }, }, { text: '{data={a=1..2}}', offset: 15, result: { type: compact_1.CompactJson.Type.Object, offset: 16, negative: false, value: [ { key: 'data', type: compact_1.CompactJson.Type.Object, offset: 16, negative: false, value: [{ key: 'a', type: compact_1.CompactJson.Type.String, offset: 22, negative: false, value: '1..2' }], }, ], }, }, { text: '[a=[b={c=!1}]]', offset: 12, result: { type: compact_1.CompactJson.Type.Array, offset: 13, negative: false, value: [ { key: 'a', type: compact_1.CompactJson.Type.Array, offset: 13, negative: false, value: [ { key: 'b', type: compact_1.CompactJson.Type.Object, offset: 16, negative: false, value: [{ key: 'c', type: compact_1.CompactJson.Type.String, offset: 19, negative: true, value: '1' }], }, ], }, ], }, }, { text: '[hasitem=[{item=minecraft:stone},{data=!1}]]', offset: 10, result: { type: compact_1.CompactJson.Type.Array, negative: false, offset: 11, value: [ { key: 'hasitem', type: compact_1.CompactJson.Type.Array, negative: false, offset: 11, value: [ { type: compact_1.CompactJson.Type.Object, negative: false, offset: 21, value: [ { key: 'item', type: compact_1.CompactJson.Type.String, negative: false, offset: 21, value: 'minecraft:stone', }, ], }, { type: compact_1.CompactJson.Type.Object, negative: false, offset: 44, value: [ { key: 'data', type: compact_1.CompactJson.Type.String, negative: true, offset: 44, value: '1', }, ], }, ], }, ], }, }, { text: '[a=1,b=2,hasitem=[{item=minecraft:stone},{data=1}],a=1..3,hasitem=[{item=!minecraft:dirt},{data=!2}]]', offset: 10, result: { type: compact_1.CompactJson.Type.Array, offset: 11, negative: false, value: [ { key: 'a', type: compact_1.CompactJson.Type.String, offset: 11, negative: false, value: '1' }, { key: 'b', type: compact_1.CompactJson.Type.String, offset: 15, negative: false, value: '2' }, { key: 'hasitem', type: compact_1.CompactJson.Type.Array, offset: 19, negative: false, value: [ { type: compact_1.CompactJson.Type.Object, offset: 29, negative: false, value: [ { key: 'item', negative: false, offset: 29, type: compact_1.CompactJson.Type.String, value: 'minecraft:stone', }, ], }, { type: compact_1.CompactJson.Type.Object, offset: 52, negative: false, value: [ { key: 'data', negative: false, offset: 52, type: compact_1.CompactJson.Type.String, value: '1', }, ], }, ], }, { key: 'a', type: compact_1.CompactJson.Type.String, offset: 61, negative: false, value: '1..3' }, { key: 'hasitem', type: compact_1.CompactJson.Type.Array, offset: 68, negative: false, value: [ { type: compact_1.CompactJson.Type.Object, negative: false, offset: 78, value: [ { key: 'item', negative: true, offset: 78, type: compact_1.CompactJson.Type.String, value: 'minecraft:dirt', }, ], }, { type: compact_1.CompactJson.Type.Object, negative: false, offset: 101, value: [ { key: 'data', negative: true, offset: 101, type: compact_1.CompactJson.Type.String, value: '2', }, ], }, ], }, ], }, }, { text: '[x =~0.5, y=50, z =~50,r =50, rm =3,tag =something,tag =!foo]', offset: 10, result: { type: compact_1.CompactJson.Type.Array, offset: 11, negative: false, value: [ { key: 'x', type: compact_1.CompactJson.Type.String, offset: 11, negative: false, value: '~0.5' }, { key: 'y', type: compact_1.CompactJson.Type.String, offset: 19, negative: false, value: '50' }, { key: 'z', type: compact_1.CompactJson.Type.String, offset: 25, negative: false, value: '~50' }, { key: 'r', type: compact_1.CompactJson.Type.String, offset: 33, negative: false, value: '50' }, { key: 'rm', type: compact_1.CompactJson.Type.String, offset: 39, negative: false, value: '3' }, { key: 'tag', type: compact_1.CompactJson.Type.String, offset: 46, negative: false, value: 'something' }, { key: 'tag', type: compact_1.CompactJson.Type.String, offset: 61, negative: true, value: 'foo' }, ], }, }, ]; it.each(data)('Should be able to parse $test', (item) => { const result = compact_1.CompactJson.parse(item.text, item.offset); expect(result).toEqual(expect.objectContaining(item.result)); }); }); describe('Reader', () => { it('Sanity check string reader', () => { const data = { type: compact_1.CompactJson.Type.String, offset: 0, negative: false, value: 'test', key: 'keyTest', }; const reader = new json_1.CompactJsonReader(data); expect(reader).toEqual(expect.objectContaining({ type: data.type, offset: data.offset, negative: data.negative, value: data.value, key: data.key, })); expect(reader.hasKey()).toBeTruthy(); }); it('Sanity check object reader', () => { const data = { type: compact_1.CompactJson.Type.Object, offset: 0, negative: false, value: [], key: 'keyTest', }; const reader = new json_1.CompactJsonReader(data); expect(reader).toEqual(expect.objectContaining({ type: data.type, offset: data.offset, negative: data.negative, value: data.value, key: data.key, })); expect(reader.hasKey()).toBeTruthy(); }); it('Sanity check array reader', () => { const data = { type: compact_1.CompactJson.Type.Array, offset: 0, negative: false, value: [], key: 'keyTest', }; const reader = new json_1.CompactJsonReader(data); expect(reader).toEqual(expect.objectContaining({ type: data.type, offset: data.offset, negative: data.negative, value: data.value, key: data.key, })); expect(reader.hasKey()).toBeTruthy(); }); }); }); //# sourceMappingURL=compact.test.js.map