@stoprocent/noble
Version:
A Node.js BLE (Bluetooth Low Energy) central library.
91 lines (72 loc) • 3.02 kB
JavaScript
// Mock the os module
jest.mock('os', () => ({
platform: jest.fn()
}));
const os = require('os');
const Signaling = require('../../../lib/hci-socket/signaling');
describe('hci-socket signaling', () => {
let signaling;
let aclStream;
const handle = 'handle';
beforeEach(() => {
// Reset mocks
jest.clearAllMocks();
// Setup aclStream mock
aclStream = {
on: jest.fn(),
removeListener: jest.fn(),
write: jest.fn()
};
signaling = new Signaling(handle, aclStream);
});
test('construct', () => {
expect(aclStream.on).toHaveBeenCalledTimes(2);
expect(aclStream.on).toHaveBeenCalledWith('data', expect.any(Function));
expect(aclStream.on).toHaveBeenCalledWith('end', expect.any(Function));
expect(signaling._handle).toBe(handle);
expect(signaling._aclStream).toBe(aclStream);
});
describe('onAclStreamData', () => {
beforeEach(() => {
signaling.processConnectionParameterUpdateRequest = jest.fn();
});
test('should do nothing as not SIGNALING_CID', () => {
signaling.onAclStreamData(0, 'data');
expect(signaling.processConnectionParameterUpdateRequest).not.toHaveBeenCalled();
});
test('should do nothing as not CONNECTION_PARAMETER_UPDATE_REQUEST', () => {
const data = Buffer.from([0, 1, 2, 3, 4]);
signaling.onAclStreamData(5, data);
expect(signaling.processConnectionParameterUpdateRequest).not.toHaveBeenCalled();
});
test('should call processConnectionParameterUpdateRequest', () => {
const data = Buffer.from([18, 1, 2, 3, 4, 5]);
signaling.onAclStreamData(5, data);
expect(signaling.processConnectionParameterUpdateRequest).toHaveBeenCalledWith(1, Buffer.from([4, 5]));
});
});
test('onAclStreamEnd', () => {
signaling.onAclStreamEnd();
expect(aclStream.removeListener).toHaveBeenCalledTimes(2);
expect(aclStream.removeListener).toHaveBeenCalledWith('data', expect.any(Function));
expect(aclStream.removeListener).toHaveBeenCalledWith('end', expect.any(Function));
});
describe('processConnectionParameterUpdateRequest', () => {
test('should not write on linux', () => {
os.platform.mockReturnValue('linux');
const callback = jest.fn();
signaling.on('connectionParameterUpdateRequest', callback);
signaling.processConnectionParameterUpdateRequest(1, Buffer.from([1, 0, 2, 0, 3, 0, 4, 0]));
expect(callback).not.toHaveBeenCalled();
expect(aclStream.write).not.toHaveBeenCalled();
});
test('should write on !linux', () => {
os.platform.mockReturnValue('!linux');
const callback = jest.fn();
signaling.on('connectionParameterUpdateRequest', callback);
signaling.processConnectionParameterUpdateRequest(1, Buffer.from([1, 0, 2, 0, 3, 0, 4, 0]));
expect(callback).toHaveBeenCalledWith(handle, 1.25, 2.5, 3, 40);
expect(aclStream.write).toHaveBeenCalledWith(5, Buffer.from([0x13, 0x01, 0x02, 0x00, 0x00, 0x00]));
});
});
});