rtp.js
Version:
RTP stack for Node.js and browser written in TypeScript
69 lines (68 loc) • 4.45 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const bitOps_1 = require("../../utils/bitOps");
let view;
beforeEach(() => {
const array = new Uint8Array([
0b00000000, 0b00000001, 0b00000010, 0b00000011, 0b10000000, 0b01000000,
0b00100000, 0b00010000,
]);
view = new DataView(array.buffer, array.byteOffset, array.byteLength);
});
test('readBitInDataView()', () => {
expect((0, bitOps_1.readBitInDataView)({ view, pos: 0, bit: 0 })).toBe(false);
expect((0, bitOps_1.readBitInDataView)({ view, pos: 0, bit: 7 })).toBe(false);
expect((0, bitOps_1.readBitInDataView)({ view, pos: 1, bit: 0 })).toBe(true);
expect((0, bitOps_1.readBitInDataView)({ view, pos: 1, bit: 7 })).toBe(false);
expect((0, bitOps_1.readBitInDataView)({ view, pos: 2, bit: 0 })).toBe(false);
expect((0, bitOps_1.readBitInDataView)({ view, pos: 2, bit: 1 })).toBe(true);
expect((0, bitOps_1.readBitInDataView)({ view, pos: 2, bit: 7 })).toBe(false);
expect((0, bitOps_1.readBitInDataView)({ view, pos: 3, bit: 0 })).toBe(true);
expect((0, bitOps_1.readBitInDataView)({ view, pos: 3, bit: 1 })).toBe(true);
expect((0, bitOps_1.readBitInDataView)({ view, pos: 3, bit: 7 })).toBe(false);
expect((0, bitOps_1.readBitInDataView)({ view, pos: 4, bit: 0 })).toBe(false);
expect((0, bitOps_1.readBitInDataView)({ view, pos: 4, bit: 7 })).toBe(true);
expect((0, bitOps_1.readBitInDataView)({ view, pos: 5, bit: 6 })).toBe(true);
expect((0, bitOps_1.readBitInDataView)({ view, pos: 6, bit: 5 })).toBe(true);
expect((0, bitOps_1.readBitInDataView)({ view, pos: 7, bit: 4 })).toBe(true);
});
test('writeBitInDataView()', () => {
(0, bitOps_1.writeBitInDataView)({ view, pos: 0, bit: 0, flag: true });
expect((0, bitOps_1.readBitInDataView)({ view, pos: 0, bit: 0 })).toBe(true);
expect((0, bitOps_1.readBitInDataView)({ view, pos: 0, bit: 7 })).toBe(false);
(0, bitOps_1.writeBitInDataView)({ view, pos: 0, bit: 7, flag: true });
expect((0, bitOps_1.readBitInDataView)({ view, pos: 0, bit: 0 })).toBe(true);
expect((0, bitOps_1.readBitInDataView)({ view, pos: 0, bit: 7 })).toBe(true);
});
test('readBitsInDataView()', () => {
// Must throw if mask has no enabled bit.
expect(() => (0, bitOps_1.readBitsInDataView)({ view, pos: 0, mask: 0b00000000 })).toThrow(TypeError);
// Must throw if mask has is bigger than 0b11111111.
expect(() => (0, bitOps_1.readBitsInDataView)({ view, pos: 0, mask: 0b100000000 })).toThrow(TypeError);
expect((0, bitOps_1.readBitsInDataView)({ view, pos: 0, mask: 0b00000011 })).toBe(0b00000000);
expect((0, bitOps_1.readBitsInDataView)({ view, pos: 0, mask: 0b00000110 })).toBe(0b00000000);
expect((0, bitOps_1.readBitsInDataView)({ view, pos: 0, mask: 0b10000000 })).toBe(0b00000000);
expect((0, bitOps_1.readBitsInDataView)({ view, pos: 0, mask: 0b10000001 })).toBe(0b00000000);
});
test('writeBitsInDataView()', () => {
// Must throw if mask has no enabled bit.
expect(() => (0, bitOps_1.writeBitsInDataView)({ view, pos: 0, mask: 0b00000000, value: 123 })).toThrow(TypeError);
// Must throw if mask has is bigger than 0b11111111.
expect(() => (0, bitOps_1.writeBitsInDataView)({ view, pos: 0, mask: 0b100000000, value: 123 })).toThrow(TypeError);
(0, bitOps_1.writeBitsInDataView)({ view, pos: 0, mask: 0b00000001, value: 1 });
expect(view.getUint8(0)).toBe(1);
expect((0, bitOps_1.readBitsInDataView)({ view, pos: 0, mask: 0b00000011 })).toBe(1);
(0, bitOps_1.writeBitsInDataView)({ view, pos: 1, mask: 0b00000011, value: 2 });
expect(view.getUint8(1)).toBe(2);
expect((0, bitOps_1.readBitsInDataView)({ view, pos: 1, mask: 0b00000011 })).toBe(2);
(0, bitOps_1.writeBitsInDataView)({ view, pos: 2, mask: 0b00000001, value: 1 });
expect(view.getUint8(2)).toBe(0b00000011);
(0, bitOps_1.writeBitsInDataView)({ view, pos: 3, mask: 0b00000111, value: 0b00000101 });
expect(view.getUint8(3)).toBe(0b00000101);
(0, bitOps_1.writeBitsInDataView)({ view, pos: 4, mask: 0b00000011, value: 0b00000010 });
expect(view.getUint8(4)).toBe(0b10000010);
(0, bitOps_1.writeBitsInDataView)({ view, pos: 5, mask: 0b00001110, value: 0b00000110 });
expect(view.getUint8(5)).toBe(0b01001100);
(0, bitOps_1.writeBitsInDataView)({ view, pos: 6, mask: 0b11000000, value: 0b00000010 });
expect(view.getUint8(6)).toBe(0b10100000);
});