compound-binary-file-js
Version:
This is an implementation of [Compound Binary File v.3](https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-cfb/53989ce4-7b05-4f8d-829b-d08d6148375b) \ Allows reading existing files, creation of the/write operation
44 lines (40 loc) • 1.7 kB
text/typescript
import {Header} from "../src/Header";
import {SimpleDataview} from "../src/dataview/SimpleDataview";
import {initializedWidth} from "../src/utils";
import {Sectors} from "../src/Sectors";
import { expect } from "chai";
import * as Long from "long";
import "../src/Long"
import {SimpleSector} from "../src/dataview/SimpleSector";
import {DIFATSector} from "../src/dataview/DIFATSector";
import {
mock,
when
} from "ts-mockito";
import {FixedSizeChunkedDataview} from "../src/dataview/FixedSizeChunkedDataview";
function difatSector() {
const header: Header = Header.empty(new SimpleDataview(initializedWidth(512, 0)));
return new Sectors(new FixedSizeChunkedDataview(Header.SECTOR_SHIFT_VERSION_3_INT), header).allocateDIFAT();
}
describe('DIFAT test', () => {
it('register new FAT sector', () => {
const sector = difatSector();
for (let i = 0; i < 127; i++) {
sector.registerFatSector(i);
}
expect(() => sector.registerFatSector(127)).to.throw();
});
it('retrieve registered FAT sector', () => {
const data = initializedWidth(Header.SECTOR_SHIFT_VERSION_3_INT, 0);
for (let i = 0; i < 128; i++) {
data.splice(i * 4, 4, ...Long.fromValue(i).to4BytesLE());
}
const sector = new DIFATSector(SimpleSector.from(new SimpleDataview(data), 0));
expect(127).eq(sector.getRegisteredFatSectors().length);
});
it('register DIFAT sector', () => {
const sector = difatSector();
sector.registerNextDifatSector(1);
expect(sector.subView(508).getData()).to.deep.eq(Long.fromValue(1).to4BytesLE());
});
});