UNPKG

medea

Version:

A lightweight key-value storage library.

43 lines (35 loc) 1.58 kB
var assert = require('assert'); var crc32 = require('buffer-crc32'); var constants = require('../constants'); var DataEntry = require('../data_entry'); var headerOffsets = constants.headerOffsets; var sizes = constants.sizes; describe('DataEntry', function() { describe('.fromBuffer', function() { it('extracts properties from a Buffer', function() { var k = new Buffer('hello'); var v = new Buffer('world'); var ts = Date.now(); var lineBuffer = new Buffer(sizes.header + k.length + v.length); var key = k; var value = v; lineBuffer.writeDoubleBE(ts, headerOffsets.timestamp); lineBuffer.writeUInt16BE(key.length, headerOffsets.keysize); lineBuffer.writeUInt32BE(value.length, headerOffsets.valsize); key.copy(lineBuffer, headerOffsets.valsize + sizes.valsize); value.copy(lineBuffer, headerOffsets.valsize + sizes.valsize + key.length); //using slice we are just referencing the originial buffer var crcBuf = crc32(lineBuffer.slice(headerOffsets.timestamp, headerOffsets.valsize+ sizes.valsize)); crcBuf = crc32(key, crcBuf); crcBuf = crc32(value, crcBuf); crcBuf.copy(lineBuffer) var entry = DataEntry.fromBuffer(lineBuffer); assert.equal(entry.crc.toString('hex'), crcBuf.toString('hex')); assert.equal(entry.timestamp, ts); assert.equal(entry.keySize, k.length); assert.equal(entry.valueSize, v.length); assert.equal(entry.key.toString(), k.toString()); assert.equal(entry.value.toString(), v.toString()); }); }); });