it("should return a 9 byte Buffer for a single sub-request", function() { var req = new ReadFileRecordRequest([{fileNumber: 1, recordNumber: 0, recordLength: 1}]); var buf = req.toBuffer(); buf.length.should.be.equal(9); });
it("should write the values Buffer starting at 3", function() { var req = new WriteFifo8Request(0x01, new Buffer([0x13, 0x37])); var buf = req.toBuffer(); buf[3].should.be.eql(0x13); buf[4].should.be.eql(0x37); });
it("should write the values Buffer starting at 6", function() { var req = new WriteMemoryRequest(0x01,0,0, new Buffer([0x13, 0x37])); var buf = req.toBuffer(); buf[6].should.be.eql(0x13); buf[7].should.be.eql(0x37); });
function createRowDataPacketBuffer(parser, number) { var writer = new PacketWriter(); writer.writeLengthCodedString(parser._nextPacketNumber); writer.writeLengthCodedString('Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry\'s standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has sur'); return writer.toBuffer(parser); }
it("should write the array of states as bits of the following bytes", function() { var res = new ReadCoilsResponse([1, 1, 1, 1, 0, 0, 0, 0, 1]); var buf = res.toBuffer(); buf[2].should.be.equal(0x0F); buf[3].should.be.equal(0x01); });
it("should return a 13 byte long Buffer for one 2 record sub-request", function() { var req = new WriteFileRecordRequest([ {fileNumber: 1, recordNumber: 0, recordData: new Buffer([0x11, 0x11, 0x22, 0x22])} ]); var buf = req.toBuffer(); buf.length.should.be.equal(13); });
it("should write the Buffer of values at 2", function() { var res = new ReadMemoryResponse(new Buffer([0x11, 0x22, 0x33])); var buf = res.toBuffer(); buf[2].should.be.equal(0x11); buf[3].should.be.equal(0x22); buf[4].should.be.equal(0x33); });
it("should write the Buffer of values at 2", function() { var res = new ReadHoldingRegistersResponse(new Buffer([0x01, 0x02, 0x03, 0x04])); var buf = res.toBuffer(); buf[2].should.be.equal(0x01); buf[3].should.be.equal(0x02); buf[4].should.be.equal(0x03); buf[5].should.be.equal(0x04); });
it("should write the remaining byte count as uint8 at 1", function() { var req = new ReadFileRecordRequest([ {fileNumber: 1, recordNumber: 0, recordLength: 1}, {fileNumber: 2, recordNumber: 4, recordLength: 2} ]); var buf = req.toBuffer(); buf[1].should.be.equal(14); });
it("should return a 16 byte Buffer for two sub-requests", function() { var req = new ReadFileRecordRequest([ {fileNumber: 1, recordNumber: 0, recordLength: 1}, {fileNumber: 2, recordNumber: 4, recordLength: 2} ]); var buf = req.toBuffer(); buf.length.should.be.equal(16); });
it("should return a 20 byte long Buffer for two 1 record sub-requests", function() { var req = new WriteFileRecordRequest([ {fileNumber: 1, recordNumber: 0, recordData: new Buffer([0x11, 0x11])}, {fileNumber: 2, recordNumber: 4, recordData: new Buffer([0x22, 0x22])} ]); var buf = req.toBuffer(); buf.length.should.be.equal(20); });
it("should write the remaining byte count as uint8 at 1", function() { var req = new WriteFileRecordRequest([ {fileNumber: 1, recordNumber: 0, recordData: new Buffer([0x11, 0x11])}, {fileNumber: 2, recordNumber: 4, recordData: new Buffer([0x22, 0x22])} ]); var buf = req.toBuffer(); buf[1].should.be.equal(18); });
it("should write the sub-requests starting at 2", function() { var req = new WriteFileRecordRequest([ {fileNumber: 1, recordNumber: 0, recordData: new Buffer([0x11, 0x11])}, {fileNumber: 2, recordNumber: 4, recordData: new Buffer([0x22, 0x22])} ]); var buf = req.toBuffer(); buf.should.be.eql(new Buffer([ 0x15, 0x12, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x11, 0x11, 0x06, 0x00, 0x02, 0x00, 0x04, 0x00, 0x01, 0x22, 0x22 ])); });
it("should write 7 byte sub-requests starting at 2", function() { var req = new ReadFileRecordRequest([ {fileNumber: 1, recordNumber: 0, recordLength: 1}, {fileNumber: 2, recordNumber: 4, recordLength: 2} ]); var buf = req.toBuffer(); buf.should.be.eql(new Buffer([ 0x14, 0x0E, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x06, 0x00, 0x02, 0x00, 0x04, 0x00, 0x02 ])); });
"toBuffer": function(test) { var bb = new ByteBuffer(3); bb.writeUint16(0x1234); var buf; try { buf = bb.toBuffer(); } catch (e) { console.trace(e); } test.equal(buf.length, 2); test.equal(buf[0], 0x12); test.equal(buf[1], 0x34); test.equal(bb.offset, 2); test.equal(bb.length, 0); test.equal(bb.array.byteLength, 3); test.done(); },
conn.on('query', function(packet) { switch (packet.sql) { case 'SELECT 1': this._sendPacket(new Packets.ResultSetHeaderPacket({ fieldCount: 1 })); this._sendPacket(new Packets.FieldPacket({ catalog : 'def', charsetNr : Charsets.UTF8_GENERAL_CI, name : '1', protocol41 : true, type : Types.LONG })); this._sendPacket(new Packets.EofPacket()); var writer = new PacketWriter(); writer.writeLengthCodedString('1'); this._socket.write(writer.toBuffer(this._parser)); this._sendPacket(new Packets.EofPacket()); this._parser.resetPacketNumber(); break; case 'INVALID SQL': this._sendPacket(new Packets.ErrorPacket({ errno : Errors.ER_PARSE_ERROR, message : 'Parse error' })); this._parser.resetPacketNumber(); break; case 'USE test': this._sendPacket(new Packets.OkPacket()); this._parser.resetPacketNumber(); break; default: this._sendPacket(new Packets.ErrorPacket({ errno : Errors.ER_QUERY_INTERRUPTED, message : 'Interrupted unknown query' })); this._parser.resetPacketNumber(); break; } });
function createPacketBuffer(parser, packet) { var writer = new PacketWriter(); packet.write(writer); return writer.toBuffer(parser); }