apple2js/test/js/formats/testdata/16sector.spec.ts
Ian Flanigan c9b7987c4c
Fix 2mg header parsing and add tests (#127)
Before, the offset for `FLAGS` in `2mg.ts` was `0x0A`, which is
incorrect according to the spec at:

https://apple2.org.za/gswv/a2zine/Docs/DiskImage_2MG_Info.txt

Now, all of the fields in the 2mg header are described, including
their lengths and any constraints.  These constraints are enforced by
`read2MGHeader` and tested by new tests.
2022-06-06 18:10:06 -07:00

147 lines
4.4 KiB
TypeScript

import { BYTES_BY_SECTOR, BYTES_BY_SECTOR_IMAGE, BYTES_BY_TRACK, BYTES_BY_TRACK_IMAGE, BYTES_IN_ORDER } from './16sector';
describe('BYTES_IN_ORDER', () => {
it('has the correct bytes in track 0, sector 0, byte 0 and byte 1', () => {
const disk = BYTES_IN_ORDER;
expect(disk[0][0][0]).toBe(0);
expect(disk[0][0][1]).toBe(1);
});
it('has the correct bytes in track 0, sector 0', () => {
const disk = BYTES_IN_ORDER;
for (let i = 0; i < 256; i++) {
expect(disk[0][0][i]).toBe(i);
}
});
it('has the correct bytes in track 1, sector 0', () => {
const disk = BYTES_IN_ORDER;
for (let i = 0; i < 256; i++) {
expect(disk[1][0][i]).toBe(i);
}
});
it('has the correct bytes in track 30, sector 11', () => {
const disk = BYTES_IN_ORDER;
for (let i = 0; i < 256; i++) {
expect(disk[30][11][i]).toBe(i);
}
});
});
describe('BYTES_BY_SECTOR', () => {
it('has the correct bytes in track 0, sector 0, byte 0 and byte 1', () => {
const disk = BYTES_BY_SECTOR;
expect(disk[0][0][0]).toBe(0);
expect(disk[0][0][1]).toBe(0);
});
it('has the correct bytes in track 0, sector 0', () => {
const disk = BYTES_BY_SECTOR;
for (let i = 0; i < 256; i++) {
expect(disk[0][0][i]).toBe(0);
}
});
it('has the correct bytes in track 1, sector 0', () => {
const disk = BYTES_BY_SECTOR;
for (let i = 0; i < 256; i++) {
expect(disk[1][0][i]).toBe(0);
}
});
it('has the correct bytes in track 30, sector 11', () => {
const disk = BYTES_BY_SECTOR;
for (let i = 0; i < 256; i++) {
expect(disk[30][11][i]).toBe(11);
}
});
});
describe('BYTES_BY_SECTOR_IMAGE', () => {
it('has the correct bytes in track 0, sector 0, byte 0 and byte 1', () => {
const image = BYTES_BY_SECTOR_IMAGE;
expect(image[0]).toBe(0);
expect(image[1]).toBe(0);
});
it('has the correct bytes in track 0, sector 0', () => {
const image = BYTES_BY_SECTOR_IMAGE;
for (let i = 0; i < 256; i++) {
expect(image[i]).toBe(0);
}
});
it('has the correct bytes in track 1, sector 0', () => {
const image = BYTES_BY_SECTOR_IMAGE;
for (let i = 0; i < 256; i++) {
expect(image[1 * 16 * 256 + i]).toBe(0);
}
});
it('has the correct bytes in track 30, sector 11', () => {
const disk = BYTES_BY_SECTOR_IMAGE;
for (let i = 0; i < 256; i++) {
expect(disk[((30 * 16) + 11) * 256 + i]).toBe(11);
}
});
});
describe('BYTES_BY_TRACK', () => {
it('has the correct bytes in track 0, sector 0, byte 0 and byte 1', () => {
const disk = BYTES_BY_TRACK;
expect(disk[0][0][0]).toBe(0);
expect(disk[0][0][1]).toBe(0);
});
it('has the correct bytes in track 0, sector 0', () => {
const disk = BYTES_BY_TRACK;
for (let i = 0; i < 256; i++) {
expect(disk[0][0][i]).toBe(0);
}
});
it('has the correct bytes in track 1, sector 0', () => {
const disk = BYTES_BY_TRACK;
for (let i = 0; i < 256; i++) {
expect(disk[1][0][i]).toBe(1);
}
});
it('has the correct bytes in track 30, sector 11', () => {
const disk = BYTES_BY_TRACK;
for (let i = 0; i < 256; i++) {
expect(disk[30][11][i]).toBe(30);
}
});
});
describe('BYTES_BY_TRACK_IMAGE', () => {
it('has the correct bytes in track 0, sector 0, byte 0 and byte 1', () => {
const image = BYTES_BY_TRACK_IMAGE;
expect(image[0]).toBe(0);
expect(image[1]).toBe(0);
});
it('has the correct bytes in track 0, sector 0', () => {
const image = BYTES_BY_TRACK_IMAGE;
for (let i = 0; i < 256; i++) {
expect(image[i]).toBe(0);
}
});
it('has the correct bytes in track 1, sector 0', () => {
const image = BYTES_BY_TRACK_IMAGE;
for (let i = 0; i < 256; i++) {
expect(image[i + 256 * 16]).toBe(1);
}
});
it('has the correct bytes in track 30, sector 11', () => {
const image = BYTES_BY_TRACK_IMAGE;
for (let i = 0; i < 256; i++) {
expect(image[i + ((30 * 16) + 11) * 256]).toBe(30);
}
});
});