From 2fc0d1124adb8424e6a1d249ccfba33cc6e682e4 Mon Sep 17 00:00:00 2001 From: brianc Date: Fri, 8 Oct 2010 23:10:13 -0500 Subject: [PATCH] moved all buffers into external file --- test/parser-tests.js | 45 +++++++++++++++++++++------------------ test/test-buffers.js | 50 +++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 74 insertions(+), 21 deletions(-) diff --git a/test/parser-tests.js b/test/parser-tests.js index 88b49c91..14d268db 100644 --- a/test/parser-tests.js +++ b/test/parser-tests.js @@ -7,15 +7,8 @@ var PARSE = function(buffer) { var authOkBuffer = buffers.authenticationOk(); var paramStatusBuffer = buffers.parameterStatus('client_encoding', 'UTF8'); var readyForQueryBuffer = buffers.readyForQuery(); - -var backendKeyDataBuffer = new BufferList() - .addInt32(1) - .addInt32(2) - .join(true,'K'); - -var commandCompleteBuffer = new BufferList() - .addCString("SELECT 3") - .join(true,'C'); +var backendKeyDataBuffer = buffers.backendKeyData(1,2); +var commandCompleteBuffer = buffers.commandComplete("SELECT 3"); var addRow = function(bufferList, name, offset) { return bufferList.addCString(name) //field name @@ -27,30 +20,42 @@ var addRow = function(bufferList, name, offset) { .addInt16(0) //format code, 0 => text }; +var row1 = { + name: 'id', + tableID: 1, + attributeNumber: 2, + dataTypeID: 3, + dataTypeSize: 4, + typeModifier: 5, + formatCode: 0 +}; +var oneRowDescBuff = new buffers.rowDescription([row1]); +row1.name = 'bang'; -var oneRowDescBuff = new BufferList() - .addInt16(1); -oneRowDescBuff = addRow(oneRowDescBuff, 'id', 1) - .join(true,'T'); - -var twoRowDesc = new BufferList() - .addInt16(2); -twoRowDesc = addRow(twoRowDesc, 'bang', 1); -twoRowDesc = addRow(twoRowDesc, 'whoah', 10); -twoRowBuf = twoRowDesc.join(true, 'T'); - +var twoRowBuf = new buffers.rowDescription([row1,{ + name: 'whoah', + tableID: 10, + attributeNumber: 11, + dataTypeID: 12, + dataTypeSize: 13, + typeModifier: 14, + formatCode: 0 +}]) var emptyRowFieldBuf = new BufferList() .addInt16(0) .join(true, 'D'); +var emptyRowFieldBuf = buffers.dataRow(); + var oneFieldBuf = new BufferList() .addInt16(1) //number of fields .addInt32(5) //length of bytes of fields .addCString('test') .join(true, 'D'); +var oneFieldBuf = buffers.dataRow(['test\0']); var expectedAuthenticationOkayMessage = { diff --git a/test/test-buffers.js b/test/test-buffers.js index 018e6d5d..fae24353 100644 --- a/test/test-buffers.js +++ b/test/test-buffers.js @@ -18,7 +18,55 @@ buffers.parameterStatus = function(name, value) { .addCString(name) .addCString(value) .join(true, 'S'); - }; +buffers.backendKeyData = function(processID, secretKey) { + return new BufferList() + .addInt32(processID) + .addInt32(secretKey) + .join(true, 'K'); +}; + +buffers.commandComplete = function(string) { + return new BufferList() + .addCString(string) + .join(true, 'C'); +}; + +buffers.rowDescription = function(fields) { + fields = fields || []; + var buf = new BufferList(); + buf.addInt16(fields.length); + fields.forEach(function(field) { + buf.addCString(field.name) + .addInt32(field.tableID || 0) + .addInt16(field.attributeNumber || 0) + .addInt32(field.dataTypeID || 0) + .addInt16(field.dataTypeSize || 0) + .addInt32(field.typeModifier || 0) + .addInt16(field.formatCode || 0) + }); + return buf.join(true, 'T'); +}; + +buffers.dataRow = function(columns) { + columns = columns || []; + var buf = new BufferList(); + buf.addInt16(columns.length); + columns.forEach(function(col) { + if(col == null) { + buf.writeInt32(-1); + } else { + var strBuf = new Buffer(col, 'utf8'); + buf.addInt32(strBuf.length); + buf.add(strBuf); + } + }); + return buf.join(true, 'D'); +}; + + + + + module.exports = buffers;