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.
101 lines
3.3 KiB
101 lines
3.3 KiB
var test = require('tape') |
|
, DeferredLevelDOWN = require('./') |
|
|
|
test('single operation', function (t) { |
|
var called = false |
|
var ld = new DeferredLevelDOWN('loc') |
|
ld.put('foo', 'bar', function (v) { |
|
called = v |
|
}) |
|
t.ok(called === false, 'not called') |
|
ld.setDb({ put: function (key, value, options, callback) { |
|
t.equal(key, 'foo', 'correct key') |
|
t.equal(value, 'bar', 'correct value') |
|
t.deepEqual({}, options, 'empty options') |
|
callback('called') |
|
}}) |
|
|
|
t.ok(called === 'called', 'function called') |
|
|
|
t.end() |
|
}) |
|
|
|
test('many operations', function (t) { |
|
var calls = [] |
|
var ld = new DeferredLevelDOWN('loc') |
|
, puts = 0 |
|
, gets = 0 |
|
, batches = 0 |
|
|
|
ld.put('foo1', 'bar1', function (v) { calls.push({ type: 'put', key: 'foo1', v: v }) }) |
|
ld.get('woo1', function (v) { calls.push({ type: 'get', key: 'woo1', v: v }) }) |
|
ld.put('foo2', 'bar2', function (v) { calls.push({ type: 'put', key: 'foo2', v: v }) }) |
|
ld.get('woo2', function (v) { calls.push({ type: 'get', key: 'woo2', v: v }) }) |
|
ld.del('blergh', function (v) { calls.push({ type: 'del', key: 'blergh', v: v }) }) |
|
ld.batch([ |
|
{ type: 'put', key: 'k1', value: 'v1' } |
|
, { type: 'put', key: 'k2', value: 'v2' } |
|
], function () { calls.push({ type: 'batch', keys: 'k1,k2' }) }) |
|
ld.batch().put('k3', 'v3').put('k4', 'v4').write(function () { |
|
calls.push({ type: 'batch', keys: 'k3,k4' }) |
|
}) |
|
|
|
t.ok(calls.length === 0, 'not called') |
|
|
|
ld.setDb({ |
|
put: function (key, value, options, callback) { |
|
if (puts++ === 0) { |
|
t.equal(key, 'foo1', 'correct key') |
|
t.equal(value, 'bar1', 'correct value') |
|
t.deepEqual({}, options, 'empty options') |
|
} else { |
|
t.equal(key, 'foo2', 'correct key') |
|
t.equal(value, 'bar2', 'correct value') |
|
t.deepEqual({}, options, 'empty options') |
|
} |
|
callback('put' + puts) |
|
} |
|
, get: function (key, options, callback) { |
|
if (gets++ === 0) { |
|
t.equal('woo1', key, 'correct key') |
|
t.deepEqual({}, options, 'empty options') |
|
} else { |
|
t.equal('woo2', key, 'correct key') |
|
t.deepEqual({}, options, 'empty options') |
|
} |
|
callback('gets' + gets) |
|
} |
|
, del: function (key, options, callback) { |
|
t.equal('blergh', key, 'correct key') |
|
t.deepEqual({}, options, 'empty options') |
|
callback('del') |
|
} |
|
, batch: function (arr, options, callback) { |
|
if (batches++ === 0) { |
|
t.deepEqual(arr, [ |
|
{ type: 'put', key: 'k1', value: 'v1' } |
|
, { type: 'put', key: 'k2', value: 'v2' } |
|
], 'correct batch') |
|
} else { |
|
t.deepEqual(arr, [ |
|
{ type: 'put', key: 'k3', value: 'v3' } |
|
, { type: 'put', key: 'k4', value: 'v4' } |
|
], 'correct batch') |
|
} |
|
callback('batches' + batches) |
|
} |
|
}) |
|
|
|
t.equal(calls.length, 7, 'all functions called') |
|
t.deepEqual(calls, [ |
|
{ type: 'put', key: 'foo1', v: 'put1' } |
|
, { type: 'get', key: 'woo1', v: 'gets1' } |
|
, { type: 'put', key: 'foo2', v: 'put2' } |
|
, { type: 'get', key: 'woo2', v: 'gets2' } |
|
, { type: 'del', key: 'blergh', v: 'del' } |
|
, { type: 'batch', keys: 'k1,k2' } |
|
, { type: 'batch', keys: 'k3,k4' } |
|
], 'calls correctly behaved') |
|
|
|
t.end() |
|
})
|
|
|