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.

82 lines
2.0 KiB

var test = require('tape');
var through = require('through');
var sublevel = require('../');
var level = require('level-test')();
var db = level('key-stream-alias');
var sub = sublevel(db).sublevel('test');
function streamToArray(stream, cb) {
var arr = [];
stream.pipe(through(arr.push.bind(arr), function (err) {
return cb(err, arr);
}));
}
function testMethodsOnDb(db, name, alias, cb) {
db.batch([
{key: 'a', value: 1, type: 'put'},
{key: 'b', value: 2, type: 'put'},
{key: 'c', value: 3, type: 'put'},
], function (err) {
streamToArray(db[name](), next);
function next(err, arr1) {
if (err) { return cb(err); }
streamToArray(db[alias](), function (err, arr2) {
return cb(err, arr1, arr2);
});
}
});
}
test('keyStream/createKeyStream', function (t) {
testMethodsOnDb(db, 'keyStream', 'createKeyStream', function (err, arr1, arr2) {
t.notOk(err);
t.same(arr1, arr2);
t.end();
});
});
test('readStream/createReadStream', function (t) {
testMethodsOnDb(db, 'readStream', 'createReadStream', function (err, arr1, arr2) {
t.notOk(err);
t.same(arr1, arr2);
t.end();
});
});
test('valueStream/createValueStream', function (t) {
testMethodsOnDb(db, 'valueStream', 'createValueStream', function (err, arr1, arr2) {
t.notOk(err);
t.same(arr1, arr2);
t.end();
});
});
test('sublevel keyStream/createKeyStream', function (t) {
testMethodsOnDb(sub, 'keyStream', 'createKeyStream', function (err, arr1, arr2) {
t.notOk(err);
t.same(arr1, arr2);
t.end();
});
});
test('sublevel readStream/createReadStream', function (t) {
testMethodsOnDb(sub, 'readStream', 'createReadStream', function (err, arr1, arr2) {
t.notOk(err);
t.same(arr1, arr2);
t.end();
});
});
test('sublevel valueStream/createValueStream', function (t) {
testMethodsOnDb(sub, 'valueStream', 'createValueStream', function (err, arr1, arr2) {
t.notOk(err);
t.same(arr1, arr2);
t.end();
});
});