forked from public/fvtt-cthulhu-eternal
Initial import with skill sheet working
This commit is contained in:
99
node_modules/abstract-level/test/encoding-custom-test.js
generated
vendored
Normal file
99
node_modules/abstract-level/test/encoding-custom-test.js
generated
vendored
Normal file
@@ -0,0 +1,99 @@
|
||||
'use strict'
|
||||
|
||||
// NOTE: copied from levelup
|
||||
exports.all = function (test, testCommon) {
|
||||
for (const deferred of [false, true]) {
|
||||
test(`custom encoding: simple-object values (deferred: ${deferred})`, function (t) {
|
||||
run(t, deferred, [
|
||||
{ key: '0', value: 0 },
|
||||
{ key: '1', value: 1 },
|
||||
{ key: 'string', value: 'a string' },
|
||||
{ key: 'true', value: true },
|
||||
{ key: 'false', value: false }
|
||||
])
|
||||
})
|
||||
|
||||
test(`custom encoding: simple-object keys (deferred: ${deferred})`, function (t) {
|
||||
// Test keys that would be considered the same with default utf8 encoding.
|
||||
// Because String([1]) === String(1).
|
||||
run(t, deferred, [
|
||||
{ value: '0', key: [1] },
|
||||
{ value: '1', key: 1 },
|
||||
{ value: 'string', key: 'a string' },
|
||||
{ value: 'true', key: true },
|
||||
{ value: 'false', key: false }
|
||||
])
|
||||
})
|
||||
|
||||
test(`custom encoding: complex-object values (deferred: ${deferred})`, function (t) {
|
||||
run(t, deferred, [{
|
||||
key: '0',
|
||||
value: {
|
||||
foo: 'bar',
|
||||
bar: [1, 2, 3],
|
||||
bang: { yes: true, no: false }
|
||||
}
|
||||
}])
|
||||
})
|
||||
|
||||
test(`custom encoding: complex-object keys (deferred: ${deferred})`, function (t) {
|
||||
// Test keys that would be considered the same with default utf8 encoding.
|
||||
// Because String({}) === String({}) === '[object Object]'.
|
||||
run(t, deferred, [{
|
||||
value: '0',
|
||||
key: {
|
||||
foo: 'bar',
|
||||
bar: [1, 2, 3],
|
||||
bang: { yes: true, no: false }
|
||||
}
|
||||
}, {
|
||||
value: '1',
|
||||
key: {
|
||||
foo: 'different',
|
||||
bar: [1, 2, 3],
|
||||
bang: { yes: true, no: false }
|
||||
}
|
||||
}])
|
||||
})
|
||||
}
|
||||
|
||||
function run (t, deferred, entries) {
|
||||
const customEncoding = {
|
||||
encode: JSON.stringify,
|
||||
decode: JSON.parse,
|
||||
format: 'utf8',
|
||||
type: 'custom'
|
||||
}
|
||||
|
||||
const db = testCommon.factory({
|
||||
keyEncoding: customEncoding,
|
||||
valueEncoding: customEncoding
|
||||
})
|
||||
|
||||
const operations = entries.map(entry => ({ type: 'put', ...entry }))
|
||||
const init = deferred ? (fn) => fn() : db.open.bind(db)
|
||||
|
||||
init(function (err) {
|
||||
t.ifError(err, 'no init() error')
|
||||
|
||||
db.batch(operations, function (err) {
|
||||
t.ifError(err, 'no batch() error')
|
||||
|
||||
let pending = entries.length
|
||||
const next = () => {
|
||||
if (--pending === 0) {
|
||||
db.close(t.end.bind(t))
|
||||
}
|
||||
}
|
||||
|
||||
for (const entry of entries) {
|
||||
db.get(entry.key, function (err, value) {
|
||||
t.ifError(err, 'no get() error')
|
||||
t.same(value, entry.value)
|
||||
next()
|
||||
})
|
||||
}
|
||||
})
|
||||
})
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user