Fix disk format type checks (#176)

This commit is contained in:
Will Scullin 2023-01-28 09:06:03 -08:00 committed by GitHub
parent d042a5b319
commit 7a97414e5d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 67 additions and 2 deletions

View File

@ -150,12 +150,12 @@ export type DiskFormat = MemberOf<typeof DISK_FORMATS>;
/** Type guard for nibble disk formats. */
export function isNibbleDiskFormat(f: DiskFormat): f is NibbleFormat {
return f in NIBBLE_FORMATS;
return NIBBLE_FORMATS.includes(f as NibbleFormat);
}
/** Type guard for block disk formats. */
export function isBlockDiskFormat(f: DiskFormat): f is BlockFormat {
return f in BLOCK_FORMATS;
return BLOCK_FORMATS.includes(f as BlockFormat);
}
export function isNoFloppyDisk(disk: Disk): disk is NoFloppyDisk {

View File

@ -0,0 +1,65 @@
import {
isNibbleDisk,
isNibbleDiskFormat,
isBlockDiskFormat,
isWozDisk,
DiskFormat,
NibbleDisk,
WozDisk,
} from 'js/formats/types';
const nibbleDisk = {
encoding: 'nibble'
} as NibbleDisk;
const wozDisk = {
encoding: 'bitstream'
} as WozDisk;
describe('Format types', () => {
describe('isNibbleDisk', () => {
it.each([
[nibbleDisk, true],
[wozDisk, false],
])('%s is %s', (disk, value) => {
expect(isNibbleDisk(disk)).toEqual(value);
});
});
describe('isNibbleDiskFormat', () => {
it.each([
['2mg', true],
['d13', true],
['do', true],
['dsk', true],
['po', true],
['nib', true],
['hdv', false],
])('%s is %s', (fmt, val) => {
expect(isNibbleDiskFormat(fmt as DiskFormat)).toEqual(val);
});
});
describe('isBlockDiskFormat', () => {
it.each([
['2mg', true],
['d13', false],
['do', false],
['dsk', false],
['po', true],
['nib', false],
['hdv', true],
])('%s is %s', (fmt, val) => {
expect(isBlockDiskFormat(fmt as DiskFormat)).toEqual(val);
});
});
describe('isWozDisk', () => {
it.each([
[nibbleDisk, false],
[wozDisk, true],
])('%s is %s', (disk, value) => {
expect(isWozDisk(disk)).toEqual(value);
});
});
});