snbt-js
Version:
TypeScript library for parsing and manipulating Minecraft SNBT data
45 lines • 1.71 kB
JavaScript
import { expect } from 'chai';
import { parseNbtString, NbtObject, NbtList } from '../src/snbt.js';
describe('NBT Parser', () => {
it('should parse simple compound', () => {
const result = parseNbtString(`{ name: "Steve", age: 30 }`);
expect(result).to.be.instanceOf(NbtObject);
expect(result.get('name').value).to.equal('Steve');
expect(result.get('age').value).to.equal(30);
});
it('should handle nested compounds', () => {
const result = parseNbtString(`{ player: { pos: [100, 64, -200] } }`);
expect(result.get('player')).to.be.instanceOf(NbtObject);
expect(result.get('player.pos')).to.be.instanceOf(NbtList);
});
it('should support all number types', () => {
const result = parseNbtString(`{
byte: 127b,
short: 32767s,
int: 2147483647,
long: 2147483648L,
float: 3.14f,
double: 3.1415926535d
}`);
expect(result.get('byte').value).to.equal(127);
expect(result.get('byte').unit).to.equal('b');
});
it('should parse long array', () => {
const result = parseNbtString(`{
long_array: [L;100L]
}`);
expect(result.get("long_array").childs[0].value).to.equal(100);
});
it('should parse byte array', () => {
const result = parseNbtString(`{
byte_array: [B;100B]
}`);
expect(result.get("byte_array").childs[0].value).to.equal(100);
});
it('should parse quoted keys starting with a number', () => {
const result = parseNbtString("{'1key':1}");
expect(result.get("1key").value).to.equal(1);
});
// 添加更多测试用例...
});
//# sourceMappingURL=parser-tests.js.map