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()); }); });