You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
77 lines
1.9 KiB
77 lines
1.9 KiB
5 years ago
|
var test = require('tape');
|
||
|
var leveldown = require('leveldown');
|
||
|
var iteratorStream = require('./');
|
||
|
var through2 = require('through2');
|
||
|
var abstract = require('abstract-leveldown');
|
||
|
var Codec = require('level-codec');
|
||
|
var EncodingError = require('level-errors').EncodingError;
|
||
|
|
||
|
var db;
|
||
|
var data = [
|
||
|
{ type: 'put', key: 'foobatch1', value: 'bar1' },
|
||
|
{ type: 'put', key: 'foobatch2', value: 'bar2' },
|
||
|
{ type: 'put', key: 'foobatch3', value: 'bar3' }
|
||
|
];
|
||
|
|
||
|
test('setup', function(t){
|
||
|
db = leveldown(__dirname + '/db-test');
|
||
|
db.open(function(err){
|
||
|
t.error(err);
|
||
|
db.batch(data, function(err){
|
||
|
t.error(err);
|
||
|
t.end();
|
||
|
});
|
||
|
});
|
||
|
});
|
||
|
|
||
|
test('simple', function(t){
|
||
|
var idx = 0;
|
||
|
var stream = iteratorStream(db.iterator());
|
||
|
stream.pipe(through2.obj(function(kv, _, done){
|
||
|
t.ok(Buffer.isBuffer(kv.key));
|
||
|
t.ok(Buffer.isBuffer(kv.value));
|
||
|
t.equal(kv.key.toString(), data[idx].key);
|
||
|
t.equal(kv.value.toString(), data[idx].value);
|
||
|
idx++;
|
||
|
done();
|
||
|
}, function(){
|
||
|
t.equal(idx, data.length);
|
||
|
stream.on('close', function(){
|
||
|
t.end();
|
||
|
});
|
||
|
}));
|
||
|
});
|
||
|
|
||
|
test('destroy', function(t){
|
||
|
var stream = iteratorStream(db.iterator());
|
||
|
stream.on('close', t.end.bind(t));
|
||
|
stream.destroy();
|
||
|
});
|
||
|
|
||
|
test('decoder', function(t){
|
||
|
var codec = new Codec({ valueEncoding: 'binary' });
|
||
|
var stream = iteratorStream(db.iterator(), {
|
||
|
decoder: codec.createStreamDecoder({ values: true })
|
||
|
});
|
||
|
stream.once('data', function(value){
|
||
|
t.ok(Buffer.isBuffer(value));
|
||
|
t.equal(value.toString(), 'bar1');
|
||
|
t.end();
|
||
|
});
|
||
|
});
|
||
|
|
||
|
test('decoder error', function(t){
|
||
|
t.plan(2);
|
||
|
var codec = new Codec({ valueEncoding: 'json' });
|
||
|
var stream = iteratorStream(db.iterator(), {
|
||
|
decoder: codec.createStreamDecoder({ values: true })
|
||
|
});
|
||
|
stream.once('error', function(err){
|
||
|
t.ok(err instanceof EncodingError);
|
||
|
});
|
||
|
stream.once('close', function(){
|
||
|
t.ok(true);
|
||
|
});
|
||
|
stream.on('data', function(){});
|
||
|
});
|