UNPKG

jsmodbus

Version:

Implementation for the Serial/TCP Modbus protocol.

94 lines (71 loc) 2.9 kB
'use strict' /* global describe, it, beforeEach */ const assert = require('assert') const sinon = require('sinon') const EventEmitter = require('events') const ReadCoilsRequest = require('../src/request/read-holding-registers.js') const ReadHoldingRegistersResponseBody = require('../src/response/read-holding-registers.js') const ModbusRTUResponse = require('../src/rtu-response.js') const ExceptionResponse = require('../src/response/exception.js') const ModbusRTUClientRequestHandler = require('../src/rtu-client-request-handler.js') describe('Modbus/RTU Client Request Tests', function () { let socket let socketMock beforeEach(function () { socket = new EventEmitter() socket.write = function () {} socketMock = sinon.mock(socket) }) /* we are using the read coils function to test the rtu request specifics */ describe('Register Test.', function () { it('should register an rtu request', function () { const handler = new ModbusRTUClientRequestHandler(socket, 4) const readCoilsRequest = new ReadCoilsRequest(0x4321, 0x0120) socket.emit('open') socketMock.expects('write').once() const promise = handler.register(readCoilsRequest) assert.ok(promise instanceof Promise) socketMock.verify() }) }) describe('Handle Data Tests.', function () { it('should register an rtu request and handle a response', function (done) { const ReadHoldingRegistersRequestBody = require('../src/request/read-holding-registers.js') const handler = new ModbusRTUClientRequestHandler(socket, 1) const request = new ReadHoldingRegistersRequestBody(0, 1) const response = new ReadHoldingRegistersResponseBody(1, Buffer.from([0x00, 0x32])) const rtuResponse = new ModbusRTUResponse(1, 0x91C9, response) socket.emit('open') socketMock.expects('write').once() handler.register(request) .then(function (resp) { assert.ok(true) socketMock.verify() done() }).catch(function () { assert.ok(false) done() }) handler.handle(rtuResponse) }) it('should register an rtu request and handle a exception response', function (done) { const ReadCoilsRequest = require('../src/request/read-coils.js') const handler = new ModbusRTUClientRequestHandler(socket, 4) const request = new ReadCoilsRequest(0x0000, 0x0008) const response = new ExceptionResponse(0x81, 0x01) const rtuResponse = new ModbusRTUResponse(4, 8352, response) socket.emit('open') socketMock.expects('write').once() handler.register(request) .then(function (resp) { assert.ok(false) done() }).catch(function () { assert.ok(true) socketMock.verify() done() }) handler.handle(rtuResponse) }) }) })