boost-movehub
Version:
Connects with your Lego Boost Movehub vie Bluetooth Low Energy (BLE).
84 lines (67 loc) • 2.44 kB
JavaScript
const chai = require("chai");
const Peripheral = require("../../src/peripherals/Peripheral");
const Motor = require("../../src/peripherals/Motor");
const PortOutput = require("../../src/messages/PortOutput");
const { expectWriteDirectModeData } = require("../testHelper");
var expect = chai.expect;
describe("Motor", () => {
let motor = new Motor(Peripheral.DEV_MOTOR_INTERNAL_TACHO, 0xaa);
let virtualMotor = new Motor(Peripheral.DEV_MOTOR_INTERNAL_TACHO, 0xaa, {
ioMembers: [{}, {}]
});
describe(".startPower", () => {
const subject = motor.startPower(10);
it("creates an instance of a PortOutput message", () => {
expect(subject).to.be.instanceOf(PortOutput);
});
it("contains the right payload", () => {
expect(subject.data).to.eql(
Buffer.from([0x08, 0x00, 0x81, 0xaa, 0x11, 0x51, 0x01, 0x0a])
);
});
it("is WriteDirectModeData encoded", () => {
expectWriteDirectModeData(subject);
});
it("does not work on a virtual device", () => {
motor = new Motor(Peripheral.DEV_MOTOR_INTERNAL_TACHO, 0xaa, {
ioMembers: [0x01, 0x02]
});
expect(() => {
motor.startPower(10);
}).to.Throw("Virtual Device cannot start Power on only one motor.");
});
});
describe(".stop", () => {
const subject = motor.stop();
it("creates an instance of a PortOutput message", () => {
expect(subject).to.be.instanceOf(PortOutput);
});
it("contains the right payload", () => {
expect(subject.data).to.eql(
Buffer.from([0x09, 0x00, 0x81, 0xaa, 0x11, 0x07, 0x00, 0x00, 0b11])
);
});
it("does not work on a virtual device", () => {
motor = new Motor(Peripheral.DEV_MOTOR_INTERNAL_TACHO, 0xaa, {
ioMembers: [0x01, 0x02]
});
expect(() => {
motor.stop();
}).to.Throw("Virtual Device cannot start Power on only one motor.");
});
});
describe(".combinedStartPower", () => {
const subject = virtualMotor.combinedStartPower(10, 10);
it("creates an instance of a PortOutput message", () => {
expect(subject).to.be.instanceOf(PortOutput);
});
it("contains the right payload", () => {
expect(subject.data).to.eql(
Buffer.from([0x09, 0x00, 0x81, 0xaa, 0x11, 0x51, 0x02, 0x0a, 0x0a])
);
});
it("is WriteDirectModeData encoded", () => {
expectWriteDirectModeData(subject);
});
});
});