struffer
Version:
Struct + Buffer = Struffer
106 lines (98 loc) • 3.1 kB
text/typescript
import { Test, TestCase, TestFixture, Expect } from 'alsatian';
import {
splitIntoBits,
unsignedSplit,
BinaryValue,
totalBits,
joinBits,
joinSignedBits,
MemberSignature,
MemberEndianness,
parseType,
} from '../src/common';
export class TotalBitsTests {
default(num: number, bitCount: number) {
Expect(totalBits(num)).toBe(bitCount);
}
}
export class SplitIntoBitsTests {
unsignedSplit(num: number, bits: BinaryValue[]) {
Expect(splitIntoBits(num)).toEqual(bits);
Expect(splitIntoBits(num, false)).toEqual(bits);
}
signedSplit(num: number, bits: BinaryValue[]) {
Expect(splitIntoBits(num, true)).toEqual(bits);
}
}
export class UnsignedSplitTests {
default(num: number, bits: BinaryValue[], bitCount?: number) {
Expect(unsignedSplit(num, (bitCount !== undefined) ? bitCount : undefined)).toEqual(bits);
}
}
export class JoinBitsTests {
default(bits: BinaryValue[], num: number) {
Expect(joinBits(bits)).toBe(num);
}
}
export class JoinSignedBitsTests {
default(bits: BinaryValue[], num: number) {
Expect(joinSignedBits(bits)).toBe(num);
}
}
const type = {
LittleEndian: MemberEndianness.LittleEndian,
BigEndian: MemberEndianness.BigEndian,
Signed: MemberSignature.Signed,
Unsigned: MemberSignature.Unsigned,
};
export class ParseTypeTests {
default(type: string, bitSize: number, signature: MemberSignature, endianness: MemberEndianness) {
const info = parseType(type);
Expect(info.bitSize).toBe(bitSize);
Expect(info.signature).toBe(signature);
Expect(info.endianness).toBe(endianness);
}
}