bc-minecraft-bedrock-project
Version:
The typescript library responsible for reading/parsing minecraft bedrock data
223 lines • 7.58 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const bc_minecraft_project_1 = require("bc-minecraft-project");
const crypto_1 = require("crypto");
const _1 = require(".");
const pack_type_1 = require("../../src/project/pack-type");
const defaultFolder = 'c:\\project\\bp';
const defaultContext = bc_minecraft_project_1.MCProject.createEmpty();
class TestPack {
type = pack_type_1.PackType.unknown;
folder;
context;
docs;
docFilter;
manifest;
constructor(docFilter = undefined, folder = undefined, context = undefined, manifest = undefined) {
this.folder = folder ?? defaultFolder;
this.context = context ?? defaultContext;
this.docFilter = docFilter;
this.manifest = manifest ?? {
format_version: '1.0.0',
header: {
description: 'description',
name: 'test pack',
uuid: (0, crypto_1.randomUUID)(),
version: [1, 0, 0],
},
};
this.docs = [];
}
process(doc) {
if (this.docFilter?.test(doc.uri) ?? true)
this.docs.push(doc);
return undefined;
}
deleteFile(uri) {
const old = this.docs.length;
this.docs = this.docs.filter((d) => d.uri !== uri);
return this.docs.length !== old;
}
deleteFolder(uri) {
const old = this.docs.length;
this.docs = this.docs.filter((d) => !d.uri.startsWith(uri));
return this.docs.length !== old;
}
/**
*
* @param predicate
* @returns
*/
find() {
const value = undefined;
return value;
}
/**
*
* @param callbackfn
* @returns
*/
forEach() { }
}
class TestPackCollection extends _1.PackCollection {
constructor() {
super();
}
}
(function (TestPackCollection) {
/**
*
* @param docFilter
* @param folder
* @param context
* @returns
*/
function defaultCollection(docFilter = undefined, folder = undefined, context = undefined) {
const pc = new TestPackCollection();
pc.packs.push(new TestPack(docFilter, folder, context));
return pc;
}
TestPackCollection.defaultCollection = defaultCollection;
})(TestPackCollection || (TestPackCollection = {}));
describe('PackCollectionTest', () => {
it('sanity check', () => {
const pc = new TestPackCollection();
expect(pc.packs).toBeDefined();
expect(pc.packs).toHaveLength(0);
pc.packs.push(new TestPack(undefined, 'c:\\project\\'));
expect(pc.packs).toBeDefined();
expect(pc.packs).toHaveLength(1);
expect(pc.delete('c:\\project\\')).toBeTruthy();
expect(pc.packs).toBeDefined();
expect(pc.packs).toHaveLength(0);
});
it('count', () => {
const pc = new TestPackCollection();
expect(pc.count()).toEqual(0);
pc.packs.push(new TestPack(undefined, 'c:\\project\\'));
expect(pc.count()).toEqual(1);
});
it('delete1', () => {
const pc = new TestPackCollection();
pc.packs.push(new TestPack(undefined, 'c:\\project\\'));
expect(pc.count()).toEqual(1);
pc.delete('c:\\project\\');
expect(pc.count()).toEqual(0);
});
it('delete2', () => {
const pc = new TestPackCollection();
pc.packs.push(new TestPack(undefined, 'c:\\project\\'));
expect(pc.count()).toEqual(1);
pc.deleteFolder('c:\\project\\');
expect(pc.count()).toEqual(0);
});
it('process', () => {
const pc = new TestPackCollection();
const pack1 = new TestPack(undefined, 'c:\\project\\');
const pack2 = new TestPack(undefined, 'c:\\project2\\');
pc.packs.push(pack1, pack2);
const doc = {
uri: 'c:\\project2\\loot\\example.json',
getText: () => '',
};
expect(pack1.docs).toHaveLength(0);
expect(pack2.docs).toHaveLength(0);
pc.process(doc);
expect(pack1.docs).toHaveLength(0);
expect(pack2.docs).toHaveLength(1);
});
it('get', () => {
const pc = new TestPackCollection();
const pack1 = new TestPack(undefined, 'c:\\project\\');
const pack2 = new TestPack(undefined, 'c:\\project2\\');
pc.packs.push(pack1, pack2);
const doc = {
uri: 'c:\\project2\\bp\\loot\\example.json',
getText: () => '',
};
expect(doc.uri.startsWith(pack2.folder)).toBeTruthy();
const p = pc.get(doc);
if (!p) {
throw new Error('returned no pack');
}
else {
expect(p.folder).toEqual(pack2.folder);
}
});
it('get2', () => {
const pc = new TestPackCollection();
const pack1 = new TestPack(undefined, 'c:\\project\\');
const pack2 = new TestPack(undefined, 'c:\\project2\\');
pc.packs.push(pack1, pack2);
const doc = {
uri: 'c:\\project2\\loot\\example.json',
getText: () => '',
};
expect(doc.uri.startsWith(pack2.folder)).toBeTruthy();
let p = undefined;
const packs = pc.packs;
for (let I = 0; I < packs.length; I++) {
if (doc.uri.startsWith(pc.packs[I].folder)) {
p = pc.packs[I];
break;
}
}
if (!p) {
throw new Error('returned no pack');
}
else {
expect(p.folder).toEqual(pack2.folder);
}
});
it('deleteFile', () => {
const pc = new TestPackCollection();
const pack1 = new TestPack(undefined, 'c:\\project\\');
const pack2 = new TestPack(undefined, 'c:\\project2\\');
pc.packs.push(pack1, pack2);
const doc = {
uri: 'c:\\project2\\loot\\example.json',
getText: () => '',
};
pc.process(doc);
expect(pack2.docs).toHaveLength(1);
expect(pack1.docs).toHaveLength(0);
expect(pc.deleteFile(doc.uri)).toBeTruthy();
expect(pack2.docs).toHaveLength(0);
expect(pack1.docs).toHaveLength(0);
});
it('deleteFolder', () => {
const pc = new TestPackCollection();
const pack1 = new TestPack(undefined, 'c:\\project\\');
const pack2 = new TestPack(undefined, 'c:\\project2\\');
pc.packs.push(pack1, pack2);
const doc = {
uri: 'c:\\project2\\loot\\example.json',
getText: () => '',
};
pc.process(doc);
expect(pack2.docs).toHaveLength(1);
expect(pack1.docs).toHaveLength(0);
expect(pc.deleteFolder('c:\\project2\\loot')).toBeTruthy();
expect(pack2.docs).toHaveLength(0);
expect(pack1.docs).toHaveLength(0);
});
it('deleteFolder', () => {
const pc = new TestPackCollection();
const pack1 = new TestPack(undefined, 'c:\\project\\');
const pack2 = new TestPack(undefined, 'c:\\project2\\');
pc.packs.push(pack1, pack2);
const doc = {
uri: 'c:\\project2\\loot\\example.json',
getText: () => '',
};
pc.process(doc);
expect(pack2.docs).toHaveLength(1);
expect(pack1.docs).toHaveLength(0);
expect(pc.count()).toEqual(2);
expect(pc.deleteFolder('c:\\project2\\')).toBeTruthy();
expect(pack2.docs).toHaveLength(1);
expect(pack1.docs).toHaveLength(0);
expect(pc.count()).toEqual(1);
});
});
//# sourceMappingURL=pack-collection.test.js.map