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
      ]));
    });
Exemple #15
0
 "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);
}