[Pkg-javascript-commits] [node-leveldown] 258/492: test reusability & exception clarification & fixes
Andrew Kelley
andrewrk-guest at moszumanska.debian.org
Sun Jul 6 17:14:06 UTC 2014
This is an automated email from the git hooks/post-receive script.
andrewrk-guest pushed a commit to annotated tag rocksdb-0.10.1
in repository node-leveldown.
commit f7fef13a7bb904c94b216a970208fc34a481d54e
Author: Rod Vagg <rod at vagg.org>
Date: Fri Mar 15 12:35:08 2013 +1100
test reusability & exception clarification & fixes
---
src/database.cc | 12 +-
src/iterator.cc | 10 +-
src/leveldown.h | 4 +-
test/approximate-size-test.js | 118 +++++++--
test/batch-test.js | 26 +-
test/chained-batch-test.js | 5 +-
test/close-test.js | 47 +++-
test/del-test.js | 97 ++++---
test/get-test.js | 103 +++++---
test/iterator-test.js | 589 +++++++++++++++++++++++-------------------
test/leveldown-test.js | 29 ++-
test/open-test.js | 109 +++++---
test/put-get-del-test.js | 5 +-
test/put-test.js | 105 +++++---
14 files changed, 758 insertions(+), 501 deletions(-)
diff --git a/src/database.cc b/src/database.cc
index 0d4fe31..fa400ed 100644
--- a/src/database.cc
+++ b/src/database.cc
@@ -144,11 +144,11 @@ v8::Handle<v8::Value> Database::New (const v8::Arguments& args) {
v8::HandleScope scope;
if (args.Length() == 0) {
- LD_THROW_RETURN("leveldown() requires at least a location argument")
+ LD_THROW_RETURN(leveldown() requires at least a location argument)
}
if (!args[0]->IsString()) {
- LD_THROW_RETURN("leveldown() requires a location string argument")
+ LD_THROW_RETURN(leveldown() requires a location string argument)
}
LD_FROM_V8_STRING(location, v8::Handle<v8::String>::Cast(args[0]))
@@ -247,7 +247,7 @@ v8::Handle<v8::Value> Database::Put (const v8::Arguments& args) {
v8::Handle<v8::Value> Database::Get (const v8::Arguments& args) {
v8::HandleScope scope;
- LD_METHOD_SETUP_COMMON(put, 1, 2)
+ LD_METHOD_SETUP_COMMON(get, 1, 2)
LD_CB_ERR_IF_NULL_OR_UNDEFINED(args[0], key)
@@ -275,7 +275,7 @@ v8::Handle<v8::Value> Database::Get (const v8::Arguments& args) {
v8::Handle<v8::Value> Database::Delete (const v8::Arguments& args) {
v8::HandleScope scope;
- LD_METHOD_SETUP_COMMON(put, 1, 2)
+ LD_METHOD_SETUP_COMMON(del, 1, 2)
LD_CB_ERR_IF_NULL_OR_UNDEFINED(args[0], key)
@@ -383,9 +383,7 @@ v8::Handle<v8::Value> Database::ApproximateSize (const v8::Arguments& args) {
|| endBufferV->IsUndefined()
|| endBufferV->IsFunction() // callback in pos 1?
) {
- LD_THROW_RETURN( \
- "approximateSize() requires valid `start`, `end` and `callback` arguments" \
- )
+ LD_THROW_RETURN(approximateSize() requires valid `start`, `end` and `callback` arguments)
}
LD_METHOD_SETUP_COMMON(approximateSize, -1, 2)
diff --git a/src/iterator.cc b/src/iterator.cc
index 69ff152..dc875e0 100644
--- a/src/iterator.cc
+++ b/src/iterator.cc
@@ -118,15 +118,15 @@ v8::Handle<v8::Value> Iterator::Next (const v8::Arguments& args) {
Iterator* iterator = node::ObjectWrap::Unwrap<Iterator>(args.This());
if (args.Length() == 0 || !args[0]->IsFunction()) {
- LD_THROW_RETURN("next() requires a callback argument")
+ LD_THROW_RETURN(next() requires a callback argument)
}
if (iterator->ended) {
- LD_THROW_RETURN("Cannot call next() after end()")
+ LD_THROW_RETURN(cannot call next() after end())
}
if (iterator->nexting) {
- LD_THROW_RETURN("Cannot call next() before previous next() has completed")
+ LD_THROW_RETURN(cannot call next() before previous next() has completed)
}
v8::Persistent<v8::Function> callback =
@@ -148,11 +148,11 @@ v8::Handle<v8::Value> Iterator::End (const v8::Arguments& args) {
Iterator* iterator = node::ObjectWrap::Unwrap<Iterator>(args.This());
if (args.Length() == 0 || !args[0]->IsFunction()) {
- LD_THROW_RETURN("end() requires a callback argument")
+ LD_THROW_RETURN(end() requires a callback argument)
}
if (iterator->ended) {
- LD_THROW_RETURN("end() already called on iterator")
+ LD_THROW_RETURN(end() already called on iterator)
}
v8::Persistent<v8::Function> callback =
diff --git a/src/leveldown.h b/src/leveldown.h
index 97a6eed..2de0dfa 100644
--- a/src/leveldown.h
+++ b/src/leveldown.h
@@ -85,8 +85,8 @@
node::FatalException(try_catch); \
}
-#define LD_THROW_RETURN(msg) \
- v8::ThrowException(v8::Exception::Error(v8::String::New(#msg))); \
+#define LD_THROW_RETURN(...) \
+ v8::ThrowException(v8::Exception::Error(v8::String::New(#__VA_ARGS__))); \
return v8::Undefined();
/* LD_METHOD_SETUP_COMMON setup the following objects:
diff --git a/test/approximate-size-test.js b/test/approximate-size-test.js
index abd8063..8bed86e 100644
--- a/test/approximate-size-test.js
+++ b/test/approximate-size-test.js
@@ -2,14 +2,77 @@ const test = require('tap').test
, testCommon = require('./common')
, leveldown = require('../')
-test('setUp', testCommon.setUp)
+var db
-test('test approximateSize()', function (t) {
- var db = leveldown(testCommon.location())
- , data = Array.apply(null, Array(10000)).map(function () { return 'aaaaaaaaaa' }).join('')
+module.exports.setUp = function (leveldown) {
+ test('setUp common', testCommon.setUp)
+ test('setUp db', function (t) {
+ db = leveldown(testCommon.location())
+ db.open(t.end.bind(t))
+ })
+}
+
+module.exports.args = function () {
+ test('test argument-less approximateSize() throws', function (t) {
+ t.throws(
+ db.approximateSize.bind(db)
+ , { name: 'Error', message: 'approximateSize() requires valid `start`, `end` and `callback` arguments' }
+ , 'no-arg approximateSize() throws'
+ )
+ t.end()
+ })
+
+ test('test callback-less, 1-arg, approximateSize() throws', function (t) {
+ t.throws(
+ db.approximateSize.bind(db, 'foo')
+ , { name: 'Error', message: 'approximateSize() requires valid `start`, `end` and `callback` arguments' }
+ , 'callback-less, 1-arg approximateSize() throws'
+ )
+ t.end()
+ })
+
+ test('test callback-less, 2-arg, approximateSize() throws', function (t) {
+ t.throws(
+ db.approximateSize.bind(db, 'foo', 'bar')
+ , { name: 'Error', message: 'approximateSize() requires a callback argument' }
+ , 'callback-less, 2-arg approximateSize() throws'
+ )
+ t.end()
+ })
+
+ test('test callback-less, 3-arg, approximateSize() throws', function (t) {
+ t.throws(
+ db.approximateSize.bind(db, function () {})
+ , { name: 'Error', message: 'approximateSize() requires valid `start`, `end` and `callback` arguments' }
+ , 'callback-only approximateSize() throws'
+ )
+ t.end()
+ })
- db.open(function (err) {
- t.notOk(err, 'no error')
+ test('test callback-only approximateSize() throws', function (t) {
+ t.throws(
+ db.approximateSize.bind(db, function () {})
+ , { name: 'Error', message: 'approximateSize() requires valid `start`, `end` and `callback` arguments' }
+ , 'callback-only approximateSize() throws'
+ )
+ t.end()
+ })
+
+ test('test 1-arg + callback approximateSize() throws', function (t) {
+ t.throws(
+ db.approximateSize.bind(db, 'foo', function () {})
+ , { name: 'Error', message: 'approximateSize() requires valid `start`, `end` and `callback` arguments' }
+ , '1-arg + callback approximateSize() throws'
+ )
+ t.end()
+ })
+}
+
+module.exports.approximateSize = function () {
+ test('test approximateSize()', function (t) {
+ var data = Array.apply(null, Array(10000)).map(function () {
+ return 'aaaaaaaaaa'
+ }).join('')
db.batch(
Array.apply(null, Array(10)).map(function (x, i) {
@@ -26,29 +89,14 @@ test('test approximateSize()', function (t) {
db.open(function (err) {
t.notOk(err, 'no error')
- t.throws(db.approximateSize, 'arg-less approximateSize() throws')
- t.throws(
- db.approximateSize.bind(db, 'foo')
- , '1-arg approximateSize() throws'
- )
- t.throws(
- db.approximateSize.bind(db, 'foo', 'bar')
- , '2-arg approximateSize() throws'
- )
- t.throws(
- db.approximateSize.bind(db, function () {})
- , 'callback-only approximateSize() throws'
- )
- t.throws(
- db.approximateSize.bind(db, 'foo', function () {})
- , '1-arg + callback approximateSize() throws'
- )
-
- db.approximateSize('foo', 'z', function (err, size) {
+ db.approximateSize('!', '~', function (err, size) {
t.notOk(err, 'no error')
t.type(size, 'number')
- t.ok(size > 100000, 'size reports a reasonable amount (' + size + ')')
+ t.ok(
+ size > 100000
+ , 'size reports a reasonable amount (' + size + ')'
+ )
db.close(function (err) {
t.notOk(err, 'no error')
@@ -60,6 +108,20 @@ test('test approximateSize()', function (t) {
}
)
})
-})
+}
+
+module.exports.tearDown = function () {
+ test('tearDown', function (t) {
+ db.close(testCommon.tearDown.bind(null, t))
+ })
+}
+
+module.exports.all = function (leveldown) {
+ module.exports.setUp(leveldown)
+ module.exports.args()
+ module.exports.approximateSize()
+ module.exports.tearDown()
+}
-test('tearDown', testCommon.tearDown)
\ No newline at end of file
+if (require.main === module)
+ module.exports.all(leveldown)
\ No newline at end of file
diff --git a/test/batch-test.js b/test/batch-test.js
index 9f2ca88..1517bac 100644
--- a/test/batch-test.js
+++ b/test/batch-test.js
@@ -4,33 +4,17 @@ const test = require('tap').test
var db
-test('setUp', function (t) {
+test('setUp common', testCommon.setUp)
+test('setUp db', function (t) {
db = leveldown(testCommon.location())
- db.open(testCommon.setUp.bind(null, t))
+ db.open(t.end.bind(t))
})
-/*FIXME:
-test('test argument-less batch() throws', function (t) {
- t.throws(db.batch.bind(db), 'no-arg batch() throws')
+test('test callback-less, 2-arg, batch() throws', function (t) {
+ t.throws(db.batch.bind(db, 'foo', {}), 'callback-less, 2-arg batch() throws')
t.end()
})
-test('test callback-less, 1-arg, batch() throws', function (t) {
- t.throws(db.batch.bind(db, []), 'callback-less, 1-arg batch() throws')
- t.end()
-})
-
-test('test callback-less, 3-arg, batch() throws', function (t) {
- t.throws(db.batch.bind(db, [], {}), 'callback-less, 3-arg batch() throws')
- t.end()
-})
-
-test('test batch() with wrong arg throws', function (t) {
- t.throws(db.batch.bind(db, {}, {}), 'wrong arg type throws')
- t.end()
-})
-*/
-
test('test batch() with empty array', function (t) {
db.batch([], function (err) {
t.notOk(err, 'no error')
diff --git a/test/chained-batch-test.js b/test/chained-batch-test.js
index dc8cef5..9641c74 100644
--- a/test/chained-batch-test.js
+++ b/test/chained-batch-test.js
@@ -4,9 +4,10 @@ const test = require('tap').test
var db
-test('setUp', function (t) {
+test('setUp common', testCommon.setUp)
+test('setUp db', function (t) {
db = leveldown(testCommon.location())
- db.open(testCommon.setUp.bind(null, t))
+ db.open(t.end.bind(t))
})
test('basic batch', function (t) {
diff --git a/test/close-test.js b/test/close-test.js
index 555fc55..4315060 100644
--- a/test/close-test.js
+++ b/test/close-test.js
@@ -2,21 +2,44 @@ const test = require('tap').test
, testCommon = require('./common')
, leveldown = require('../')
-test('setUp', testCommon.setUp)
+module.exports.setUp = function () {
+ test('setUp', testCommon.setUp)
+}
-test('test close()', function (t) {
- var db = leveldown(testCommon.location())
+module.exports.close = function (leveldown) {
+ test('test close()', function (t) {
+ var db = leveldown(testCommon.location())
- db.open(function (err) {
- t.notOk(err, 'no error')
- t.throws(db.close.bind(db), 'no-arg close() throws')
- t.throws(db.close.bind(db, 'foo'), 'non-callback close() throws')
-
- db.close(function (err) {
+ db.open(function (err) {
t.notOk(err, 'no error')
- t.end()
+ t.throws(
+ db.close.bind(db)
+ , { name: 'Error', message: 'close() requires a callback argument' }
+ , 'no-arg close() throws'
+ )
+ t.throws(
+ db.close.bind(db, 'foo')
+ , { name: 'Error', message: 'close() requires a callback argument' }
+ , 'non-callback close() throws'
+ )
+
+ db.close(function (err) {
+ t.notOk(err, 'no error')
+ t.end()
+ })
})
})
-})
+}
+
+module.exports.tearDown = function () {
+ test('tearDown', testCommon.tearDown)
+}
+
+module.exports.all = function (leveldown) {
+ module.exports.setUp()
+ module.exports.close(leveldown)
+ module.exports.tearDown()
+}
-test('tearDown', testCommon.tearDown)
\ No newline at end of file
+if (require.main === module)
+ module.exports.all(leveldown)
\ No newline at end of file
diff --git a/test/del-test.js b/test/del-test.js
index 0b33718..7568b48 100644
--- a/test/del-test.js
+++ b/test/del-test.js
@@ -4,41 +4,72 @@ const test = require('tap').test
var db
-test('setUp', function (t) {
- db = leveldown(testCommon.location())
- db.open(testCommon.setUp.bind(null, t))
-})
-
-test('test argument-less del() throws', function (t) {
- t.throws(db.del.bind(db), 'no-arg del() throws')
- t.end()
-})
-
-test('test callback-less, 1-arg, del() throws', function (t) {
- t.throws(db.del.bind(db, 'foo'), 'callback-less, 1-arg del() throws')
- t.end()
-})
-
-test('test callback-less, 3-arg, del() throws', function (t) {
- t.throws(db.del.bind(db, 'foo', {}), 'callback-less, 2-arg del() throws')
- t.end()
-})
-
-test('test simple del()', function (t) {
- db.put('foo', 'bar', function (err) {
- t.notOk(err, 'no error')
- db.del('foo', function (err) {
+module.exports.setUp = function (leveldown) {
+ test('setUp common', testCommon.setUp)
+ test('setUp db', function (t) {
+ db = leveldown(testCommon.location())
+ db.open(t.end.bind(t))
+ })
+}
+
+module.exports.args = function () {
+ test('test argument-less del() throws', function (t) {
+ t.throws(
+ db.del.bind(db)
+ , { name: 'Error', message: 'del() requires a callback argument' }
+ , 'no-arg del() throws'
+ )
+ t.end()
+ })
+
+ test('test callback-less, 1-arg, del() throws', function (t) {
+ t.throws(
+ db.del.bind(db, 'foo')
+ , { name: 'Error', message: 'del() requires a callback argument' }
+ , 'callback-less, 1-arg del() throws'
+ )
+ t.end()
+ })
+
+ test('test callback-less, 3-arg, del() throws', function (t) {
+ t.throws(
+ db.del.bind(db, 'foo', {})
+ , { name: 'Error', message: 'del() requires a callback argument' }
+ , 'callback-less, 2-arg del() throws'
+ )
+ t.end()
+ })
+}
+
+module.exports.del = function () {
+ test('test simple del()', function (t) {
+ db.put('foo', 'bar', function (err) {
t.notOk(err, 'no error')
- db.get('foo', function (err) {
- t.ok(err, 'entry propertly deleted')
- t.like(err.message, /NotFound/)
- t.end()
- })
+ db.del('foo', function (err) {
+ t.notOk(err, 'no error')
+ db.get('foo', function (err) {
+ t.ok(err, 'entry propertly deleted')
+ t.like(err.message, /NotFound/)
+ t.end()
+ })
+ })
})
})
-})
+}
+
+module.exports.tearDown = function () {
+ test('tearDown', function (t) {
+ db.close(testCommon.tearDown.bind(null, t))
+ })
+}
+
+module.exports.all = function (leveldown) {
+ module.exports.setUp(leveldown)
+ module.exports.args()
+ module.exports.del()
+ module.exports.tearDown()
+}
-test('tearDown', function (t) {
- db.close(testCommon.tearDown.bind(null, t))
-})
\ No newline at end of file
+if (require.main === module)
+ module.exports.all(leveldown)
\ No newline at end of file
diff --git a/test/get-test.js b/test/get-test.js
index a1033f0..ef731b5 100644
--- a/test/get-test.js
+++ b/test/get-test.js
@@ -4,50 +4,81 @@ const test = require('tap').test
var db
-test('setUp', function (t) {
- db = leveldown(testCommon.location())
- db.open(testCommon.setUp.bind(null, t))
-})
-
-test('test argument-less get() throws', function (t) {
- t.throws(db.get.bind(db), 'no-arg get() throws')
- t.end()
-})
-
-test('test callback-less, 1-arg, get() throws', function (t) {
- t.throws(db.get.bind(db, 'foo'), 'callback-less, 1-arg get() throws')
- t.end()
-})
-
-test('test callback-less, 3-arg, get() throws', function (t) {
- t.throws(db.get.bind(db, 'foo', {}), 'callback-less, 2-arg get() throws')
- t.end()
-})
-
-test('test simple get()', function (t) {
- db.put('foo', 'bar', function (err) {
- t.notOk(err, 'no error')
- db.get('foo', function (err, value) {
- t.notOk(err, 'no error')
- t.type(value, Buffer)
- t.equal(value.toString(), 'bar')
+module.exports.setUp = function (leveldown) {
+ test('setUp common', testCommon.setUp)
+ test('setUp db', function (t) {
+ db = leveldown(testCommon.location())
+ db.open(t.end.bind(t))
+ })
+}
+
+module.exports.args = function () {
+ test('test argument-less get() throws', function (t) {
+ t.throws(
+ db.get.bind(db)
+ , { name: 'Error', message: 'get() requires a callback argument' }
+ , 'no-arg get() throws'
+ )
+ t.end()
+ })
- db.get('foo', {}, function (err, value) { // same but with {}
+ test('test callback-less, 1-arg, get() throws', function (t) {
+ t.throws(
+ db.get.bind(db, 'foo')
+ , { name: 'Error', message: 'get() requires a callback argument' }
+ , 'callback-less, 1-arg get() throws'
+ )
+ t.end()
+ })
+
+ test('test callback-less, 3-arg, get() throws', function (t) {
+ t.throws(
+ db.get.bind(db, 'foo', {})
+ , { name: 'Error', message: 'get() requires a callback argument' }
+ , 'callback-less, 2-arg get() throws'
+ )
+ t.end()
+ })
+}
+
+module.exports.get = function () {
+ test('test simple get()', function (t) {
+ db.put('foo', 'bar', function (err) {
+ t.notOk(err, 'no error')
+ db.get('foo', function (err, value) {
t.notOk(err, 'no error')
t.type(value, Buffer)
t.equal(value.toString(), 'bar')
- db.get('foo', { asBuffer: false }, function (err, value) {
+ db.get('foo', {}, function (err, value) { // same but with {}
t.notOk(err, 'no error')
- t.type(value, 'string')
- t.equal(value, 'bar')
- t.end()
+ t.type(value, Buffer)
+ t.equal(value.toString(), 'bar')
+
+ db.get('foo', { asBuffer: false }, function (err, value) {
+ t.notOk(err, 'no error')
+ t.type(value, 'string')
+ t.equal(value, 'bar')
+ t.end()
+ })
})
})
})
})
-})
+}
+
+module.exports.tearDown = function () {
+ test('tearDown', function (t) {
+ db.close(testCommon.tearDown.bind(null, t))
+ })
+}
+
+module.exports.all = function (leveldown) {
+ module.exports.setUp(leveldown)
+ module.exports.args()
+ module.exports.get()
+ module.exports.tearDown()
+}
-test('tearDown', function (t) {
- db.close(testCommon.tearDown.bind(null, t))
-})
\ No newline at end of file
+if (require.main === module)
+ module.exports.all(leveldown)
\ No newline at end of file
diff --git a/test/iterator-test.js b/test/iterator-test.js
index 4fbc9f5..3a4e1a6 100644
--- a/test/iterator-test.js
+++ b/test/iterator-test.js
@@ -20,311 +20,366 @@ var db
}())
, transformSource = function (d) { return { key: d.key, value: d.value } }
-test('setUp', function (t) {
- db = leveldown(testCommon.location())
- db.open(testCommon.setUp.bind(null, t))
-})
-
-test('test argument-less iterator#next() throws', function (t) {
- var iterator = db.iterator()
- t.throws(iterator.next.bind(iterator), 'no-arg iterator#next() throws')
- iterator.end(t.end.bind(t))
-})
-
-test('test argument-less iterator#end() after next() throws', function (t) {
- var iterator = db.iterator()
- iterator.next(function () {
- t.throws(iterator.end.bind(iterator), 'no-arg iterator#end() throws')
+module.exports.setUp = function (leveldown) {
+ test('setUp common', testCommon.setUp)
+ test('setUp db', function (t) {
+ db = leveldown(testCommon.location())
+ db.open(t.end.bind(t))
+ })
+}
+
+module.exports.args = function () {
+ test('test argument-less iterator#next() throws', function (t) {
+ var iterator = db.iterator()
+ t.throws(
+ iterator.next.bind(iterator)
+ , { name: 'Error', message: 'next() requires a callback argument' }
+ , 'no-arg iterator#next() throws'
+ )
iterator.end(t.end.bind(t))
})
-})
-
-test('test argument-less iterator#end() throws', function (t) {
- var iterator = db.iterator()
- t.throws(iterator.end.bind(iterator), 'no-arg iterator#end() throws')
- iterator.end(t.end.bind(t))
-})
-
-test('test twice iterator#end() throws', function (t) {
- var iterator = db.iterator()
- iterator.end(function (err) {
- t.notOk(err, 'no error')
- t.throws(iterator.end.bind(iterator, function () {}), 'twice iterator#end() throws')
- t.end()
+
+ test('test argument-less iterator#end() after next() throws', function (t) {
+ var iterator = db.iterator()
+ iterator.next(function () {
+ t.throws(
+ iterator.end.bind(iterator)
+ , { name: 'Error', message: 'end() requires a callback argument' }
+ , 'no-arg iterator#end() throws'
+ )
+ iterator.end(t.end.bind(t))
+ })
+ })
+
+ test('test argument-less iterator#end() throws', function (t) {
+ var iterator = db.iterator()
+ t.throws(
+ iterator.end.bind(iterator)
+ , { name: 'Error', message: 'end() requires a callback argument' }
+ , 'no-arg iterator#end() throws'
+ )
+ iterator.end(t.end.bind(t))
})
-})
+}
-test('test twice iterator#next() throws', function (t) {
- var iterator = db.iterator()
- iterator.next(function (err) {
- t.notOk(err, 'no error')
+module.exports.sequence = function () {
+ test('test twice iterator#end() throws', function (t) {
+ var iterator = db.iterator()
iterator.end(function (err) {
t.notOk(err, 'no error')
+ t.throws(
+ iterator.end.bind(iterator, function () {})
+ , { name: 'Error', message: 'end() already called on iterator' }
+ , 'no-arg iterator#next() throws'
+ )
t.end()
})
})
- t.throws(iterator.next.bind(iterator, function () {}), 'twice iterator#next() throws')
-})
-
-test('test simple iterator()', function (t) {
- var data = [
- { type: 'put', key: 'foobatch1', value: 'bar1' }
- , { type: 'put', key: 'foobatch2', value: 'bar2' }
- , { type: 'put', key: 'foobatch3', value: 'bar3' }
- ]
- , idx = 0
- db.batch(data, function (err) {
- t.notOk(err, 'no error')
+ test('test iterator#next after iterator#end() throws', function (t) {
+ var iterator = db.iterator()
+ iterator.end(function (err) {
+ t.notOk(err, 'no error')
+ t.throws(
+ iterator.next.bind(iterator, function () {})
+ , { name: 'Error', message: 'cannot call next() after end()' }
+ , 'no-arg iterator#next() after iterator#end() throws'
+ )
+ t.end()
+ })
+ })
+ test('test twice iterator#next() throws', function (t) {
var iterator = db.iterator()
- , fn = function (err, key, value) {
- t.notOk(err, 'no error')
- if (key && value) {
- t.equal(key.toString(), data[idx].key, 'correct key')
- t.equal(value.toString(), data[idx].value, 'correct value')
- process.nextTick(next)
- idx++
- } else { // end
- t.type(err, 'undefined', 'err argument is undefined')
- t.type(key, 'undefined', 'key argument is undefined')
- t.type(value, 'undefined', 'value argument is undefined')
- t.equal(idx, data.length, 'correct number of entries')
- iterator.end(function () {
- t.end()
- })
+ iterator.next(function (err) {
+ t.notOk(err, 'no error')
+ iterator.end(function (err) {
+ t.notOk(err, 'no error')
+ t.end()
+ })
+ })
+ t.throws(
+ iterator.next.bind(iterator, function () {})
+ , { name: 'Error', message: 'cannot call next() before previous next() has completed' }
+ , 'no-arg iterator#next() throws'
+ )
+ })
+}
+
+module.exports.iterator = function (leveldown) {
+ test('test simple iterator()', function (t) {
+ var data = [
+ { type: 'put', key: 'foobatch1', value: 'bar1' }
+ , { type: 'put', key: 'foobatch2', value: 'bar2' }
+ , { type: 'put', key: 'foobatch3', value: 'bar3' }
+ ]
+ , idx = 0
+
+ db.batch(data, function (err) {
+ t.notOk(err, 'no error')
+
+ var iterator = db.iterator()
+ , fn = function (err, key, value) {
+ t.notOk(err, 'no error')
+ if (key && value) {
+ t.equal(key.toString(), data[idx].key, 'correct key')
+ t.equal(value.toString(), data[idx].value, 'correct value')
+ process.nextTick(next)
+ idx++
+ } else { // end
+ t.type(err, 'undefined', 'err argument is undefined')
+ t.type(key, 'undefined', 'key argument is undefined')
+ t.type(value, 'undefined', 'value argument is undefined')
+ t.equal(idx, data.length, 'correct number of entries')
+ iterator.end(function () {
+ t.end()
+ })
+ }
+ }
+ , next = function () {
+ iterator.next(fn)
}
- }
- , next = function () {
- iterator.next(fn)
- }
- next()
+ next()
+ })
})
-})
-/** the following tests are mirroring the same series of tests in
- * LevelUP read-stream-test.js
- */
+ /** the following tests are mirroring the same series of tests in
+ * LevelUP read-stream-test.js
+ */
-test('setUp #2', function (t) {
- db.close(function () {
- db = leveldown(testCommon.location())
- db.open(function () {
- db.batch(sourceData, t.end.bind(t))
+ test('setUp #2', function (t) {
+ db.close(function () {
+ db = leveldown(testCommon.location())
+ db.open(function () {
+ db.batch(sourceData, t.end.bind(t))
+ })
})
})
-})
-
-test('test full data collection', function (t) {
- collectEntries(db.iterator({ keyAsBuffer: false, valueAsBuffer: false }), function (err, data) {
- t.notOk(err, 'no error')
- t.equal(data.length, sourceData.length, 'correct number of entries')
- var expected = sourceData.map(transformSource)
- t.deepEqual(data, expected)
- t.end()
+
+ test('test full data collection', function (t) {
+ collectEntries(db.iterator({ keyAsBuffer: false, valueAsBuffer: false }), function (err, data) {
+ t.notOk(err, 'no error')
+ t.equal(data.length, sourceData.length, 'correct number of entries')
+ var expected = sourceData.map(transformSource)
+ t.deepEqual(data, expected)
+ t.end()
+ })
})
-})
-
-test('test iterator with reverse=true', function (t) {
- collectEntries(db.iterator({ keyAsBuffer: false, valueAsBuffer: false, reverse: true }), function (err, data) {
- t.notOk(err, 'no error')
- t.equal(data.length, sourceData.length, 'correct number of entries')
- var expected = sourceData.slice().reverse().map(transformSource)
- t.deepEqual(data, expected)
- t.end()
+
+ test('test iterator with reverse=true', function (t) {
+ collectEntries(db.iterator({ keyAsBuffer: false, valueAsBuffer: false, reverse: true }), function (err, data) {
+ t.notOk(err, 'no error')
+ t.equal(data.length, sourceData.length, 'correct number of entries')
+ var expected = sourceData.slice().reverse().map(transformSource)
+ t.deepEqual(data, expected)
+ t.end()
+ })
})
-})
-
-test('test iterator with start=0', function (t) {
- collectEntries(db.iterator({ keyAsBuffer: false, valueAsBuffer: false, start: '00' }), function (err, data) {
- t.notOk(err, 'no error')
- t.equal(data.length, sourceData.length, 'correct number of entries')
- var expected = sourceData.map(transformSource)
- t.deepEqual(data, expected)
- t.end()
+
+ test('test iterator with start=0', function (t) {
+ collectEntries(db.iterator({ keyAsBuffer: false, valueAsBuffer: false, start: '00' }), function (err, data) {
+ t.notOk(err, 'no error')
+ t.equal(data.length, sourceData.length, 'correct number of entries')
+ var expected = sourceData.map(transformSource)
+ t.deepEqual(data, expected)
+ t.end()
+ })
})
-})
-
-test('test iterator with start=50', function (t) {
- collectEntries(db.iterator({ keyAsBuffer: false, valueAsBuffer: false, start: '50' }), function (err, data) {
- t.notOk(err, 'no error')
- t.equal(data.length, 50, 'correct number of entries')
- var expected = sourceData.slice(50).map(transformSource)
- t.deepEqual(data, expected)
- t.end()
+
+ test('test iterator with start=50', function (t) {
+ collectEntries(db.iterator({ keyAsBuffer: false, valueAsBuffer: false, start: '50' }), function (err, data) {
+ t.notOk(err, 'no error')
+ t.equal(data.length, 50, 'correct number of entries')
+ var expected = sourceData.slice(50).map(transformSource)
+ t.deepEqual(data, expected)
+ t.end()
+ })
})
-})
-
-test('test iterator with start=50 and reverse=true', function (t) {
- collectEntries(db.iterator({ keyAsBuffer: false, valueAsBuffer: false, start: '50', reverse: true }), function (err, data) {
- t.notOk(err, 'no error')
- t.equal(data.length, 51, 'correct number of entries')
- var expected = sourceData.slice().reverse().slice(49).map(transformSource)
- t.deepEqual(data, expected)
- t.end()
+
+ test('test iterator with start=50 and reverse=true', function (t) {
+ collectEntries(db.iterator({ keyAsBuffer: false, valueAsBuffer: false, start: '50', reverse: true }), function (err, data) {
+ t.notOk(err, 'no error')
+ t.equal(data.length, 51, 'correct number of entries')
+ var expected = sourceData.slice().reverse().slice(49).map(transformSource)
+ t.deepEqual(data, expected)
+ t.end()
+ })
})
-})
-
-test('test iterator with start being a midway key (49.5)', function (t) {
- collectEntries(db.iterator({ keyAsBuffer: false, valueAsBuffer: false, start: '49.5' }), function (err, data) {
- t.notOk(err, 'no error')
- t.equal(data.length, 50, 'correct number of entries')
- var expected = sourceData.slice(50).map(transformSource)
- t.deepEqual(data, expected)
- t.end()
+
+ test('test iterator with start being a midway key (49.5)', function (t) {
+ collectEntries(db.iterator({ keyAsBuffer: false, valueAsBuffer: false, start: '49.5' }), function (err, data) {
+ t.notOk(err, 'no error')
+ t.equal(data.length, 50, 'correct number of entries')
+ var expected = sourceData.slice(50).map(transformSource)
+ t.deepEqual(data, expected)
+ t.end()
+ })
})
-})
-
-test('test iterator with start being a midway key (49999)', function (t) {
- collectEntries(db.iterator({ keyAsBuffer: false, valueAsBuffer: false, start: '49999' }), function (err, data) {
- t.notOk(err, 'no error')
- t.equal(data.length, 50, 'correct number of entries')
- var expected = sourceData.slice(50).map(transformSource)
- t.deepEqual(data, expected)
- t.end()
+
+ test('test iterator with start being a midway key (49999)', function (t) {
+ collectEntries(db.iterator({ keyAsBuffer: false, valueAsBuffer: false, start: '49999' }), function (err, data) {
+ t.notOk(err, 'no error')
+ t.equal(data.length, 50, 'correct number of entries')
+ var expected = sourceData.slice(50).map(transformSource)
+ t.deepEqual(data, expected)
+ t.end()
+ })
})
-})
-
-test('test iterator with start being a midway key and reverse=true', function (t) {
- collectEntries(db.iterator({ keyAsBuffer: false, valueAsBuffer: false, start: '49.5', reverse: true }), function (err, data) {
- t.notOk(err, 'no error')
- t.equal(data.length, 51, 'correct number of entries')
- var expected = sourceData.slice().reverse().slice(49).map(transformSource)
- t.deepEqual(data, expected)
- t.end()
+
+ test('test iterator with start being a midway key and reverse=true', function (t) {
+ collectEntries(db.iterator({ keyAsBuffer: false, valueAsBuffer: false, start: '49.5', reverse: true }), function (err, data) {
+ t.notOk(err, 'no error')
+ t.equal(data.length, 51, 'correct number of entries')
+ var expected = sourceData.slice().reverse().slice(49).map(transformSource)
+ t.deepEqual(data, expected)
+ t.end()
+ })
})
-})
-
-test('test iterator with end=50', function (t) {
- collectEntries(db.iterator({ keyAsBuffer: false, valueAsBuffer: false, end: '50' }), function (err, data) {
- t.notOk(err, 'no error')
- t.equal(data.length, 51, 'correct number of entries')
- var expected = sourceData.slice(0, 51).map(transformSource)
- t.deepEqual(data, expected)
- t.end()
+
+ test('test iterator with end=50', function (t) {
+ collectEntries(db.iterator({ keyAsBuffer: false, valueAsBuffer: false, end: '50' }), function (err, data) {
+ t.notOk(err, 'no error')
+ t.equal(data.length, 51, 'correct number of entries')
+ var expected = sourceData.slice(0, 51).map(transformSource)
+ t.deepEqual(data, expected)
+ t.end()
+ })
})
-})
-
-test('test iterator with end being a midway key (50.5)', function (t) {
- collectEntries(db.iterator({ keyAsBuffer: false, valueAsBuffer: false, end: '50.5' }), function (err, data) {
- t.notOk(err, 'no error')
- t.equal(data.length, 51, 'correct number of entries')
- var expected = sourceData.slice(0, 51).map(transformSource)
- t.deepEqual(data, expected)
- t.end()
+
+ test('test iterator with end being a midway key (50.5)', function (t) {
+ collectEntries(db.iterator({ keyAsBuffer: false, valueAsBuffer: false, end: '50.5' }), function (err, data) {
+ t.notOk(err, 'no error')
+ t.equal(data.length, 51, 'correct number of entries')
+ var expected = sourceData.slice(0, 51).map(transformSource)
+ t.deepEqual(data, expected)
+ t.end()
+ })
})
-})
-
-test('test iterator with end being a midway key (50555)', function (t) {
- collectEntries(db.iterator({ keyAsBuffer: false, valueAsBuffer: false, end: '50555' }), function (err, data) {
- t.notOk(err, 'no error')
- t.equal(data.length, 51, 'correct number of entries')
- var expected = sourceData.slice(0, 51).map(transformSource)
- t.deepEqual(data, expected)
- t.end()
+
+ test('test iterator with end being a midway key (50555)', function (t) {
+ collectEntries(db.iterator({ keyAsBuffer: false, valueAsBuffer: false, end: '50555' }), function (err, data) {
+ t.notOk(err, 'no error')
+ t.equal(data.length, 51, 'correct number of entries')
+ var expected = sourceData.slice(0, 51).map(transformSource)
+ t.deepEqual(data, expected)
+ t.end()
+ })
})
-})
-
-test('test iterator with end being a midway key and reverse=true', function (t) {
- collectEntries(db.iterator({ keyAsBuffer: false, valueAsBuffer: false, end: '50.5', reverse: true }), function (err, data) {
- t.notOk(err, 'no error')
- t.equal(data.length, 49, 'correct number of entries')
- var expected = sourceData.slice().reverse().slice(0, 49).map(transformSource)
- t.deepEqual(data, expected)
- t.end()
+
+ test('test iterator with end being a midway key and reverse=true', function (t) {
+ collectEntries(db.iterator({ keyAsBuffer: false, valueAsBuffer: false, end: '50.5', reverse: true }), function (err, data) {
+ t.notOk(err, 'no error')
+ t.equal(data.length, 49, 'correct number of entries')
+ var expected = sourceData.slice().reverse().slice(0, 49).map(transformSource)
+ t.deepEqual(data, expected)
+ t.end()
+ })
})
-})
-
-// end='0', starting key is actually '00' so it should avoid it
-test('test iterator with end=0', function (t) {
- collectEntries(db.iterator({ keyAsBuffer: false, valueAsBuffer: false, end: '0' }), function (err, data) {
- t.notOk(err, 'no error')
- t.equal(data.length, 0, 'correct number of entries')
- t.end()
+
+ // end='0', starting key is actually '00' so it should avoid it
+ test('test iterator with end=0', function (t) {
+ collectEntries(db.iterator({ keyAsBuffer: false, valueAsBuffer: false, end: '0' }), function (err, data) {
+ t.notOk(err, 'no error')
+ t.equal(data.length, 0, 'correct number of entries')
+ t.end()
+ })
})
-})
-
-test('test iterator with start=30 and end=70', function (t) {
- collectEntries(db.iterator({ keyAsBuffer: false, valueAsBuffer: false, start: '30', end: '70' }), function (err, data) {
- t.notOk(err, 'no error')
- t.equal(data.length, 41, 'correct number of entries')
- var expected = sourceData.slice(30, 71).map(transformSource)
- t.deepEqual(data, expected)
- t.end()
+
+ test('test iterator with start=30 and end=70', function (t) {
+ collectEntries(db.iterator({ keyAsBuffer: false, valueAsBuffer: false, start: '30', end: '70' }), function (err, data) {
+ t.notOk(err, 'no error')
+ t.equal(data.length, 41, 'correct number of entries')
+ var expected = sourceData.slice(30, 71).map(transformSource)
+ t.deepEqual(data, expected)
+ t.end()
+ })
})
-})
-
-test('test iterator with start=30 and end=70 and reverse=true', function (t) {
- collectEntries(db.iterator({ keyAsBuffer: false, valueAsBuffer: false, start: '70', end: '30', reverse: true }), function (err, data) {
- t.notOk(err, 'no error')
- t.equal(data.length, 41, 'correct number of entries')
- var expected = sourceData.slice().reverse().slice(29, 70).map(transformSource)
- t.deepEqual(data, expected)
- t.end()
+
+ test('test iterator with start=30 and end=70 and reverse=true', function (t) {
+ collectEntries(db.iterator({ keyAsBuffer: false, valueAsBuffer: false, start: '70', end: '30', reverse: true }), function (err, data) {
+ t.notOk(err, 'no error')
+ t.equal(data.length, 41, 'correct number of entries')
+ var expected = sourceData.slice().reverse().slice(29, 70).map(transformSource)
+ t.deepEqual(data, expected)
+ t.end()
+ })
})
-})
-
-test('test iterator with limit=20', function (t) {
- collectEntries(db.iterator({ keyAsBuffer: false, valueAsBuffer: false, limit: 20 }), function (err, data) {
- t.notOk(err, 'no error')
- t.equal(data.length, 20, 'correct number of entries')
- var expected = sourceData.slice(0, 20).map(transformSource)
- t.deepEqual(data, expected)
- t.end()
+
+ test('test iterator with limit=20', function (t) {
+ collectEntries(db.iterator({ keyAsBuffer: false, valueAsBuffer: false, limit: 20 }), function (err, data) {
+ t.notOk(err, 'no error')
+ t.equal(data.length, 20, 'correct number of entries')
+ var expected = sourceData.slice(0, 20).map(transformSource)
+ t.deepEqual(data, expected)
+ t.end()
+ })
})
-})
-
-test('test iterator with limit=20 and start=20', function (t) {
- collectEntries(db.iterator({ keyAsBuffer: false, valueAsBuffer: false, start: '20', limit: 20 }), function (err, data) {
- t.notOk(err, 'no error')
- t.equal(data.length, 20, 'correct number of entries')
- var expected = sourceData.slice(20, 40).map(transformSource)
- t.deepEqual(data, expected)
- t.end()
+
+ test('test iterator with limit=20 and start=20', function (t) {
+ collectEntries(db.iterator({ keyAsBuffer: false, valueAsBuffer: false, start: '20', limit: 20 }), function (err, data) {
+ t.notOk(err, 'no error')
+ t.equal(data.length, 20, 'correct number of entries')
+ var expected = sourceData.slice(20, 40).map(transformSource)
+ t.deepEqual(data, expected)
+ t.end()
+ })
})
-})
-
-test('test iterator with limit=20 and reverse=true', function (t) {
- collectEntries(db.iterator({ keyAsBuffer: false, valueAsBuffer: false, limit: 20, reverse: true }), function (err, data) {
- t.notOk(err, 'no error')
- t.equal(data.length, 20, 'correct number of entries')
- var expected = sourceData.slice().reverse().slice(0, 20).map(transformSource)
- t.deepEqual(data, expected)
- t.end()
+
+ test('test iterator with limit=20 and reverse=true', function (t) {
+ collectEntries(db.iterator({ keyAsBuffer: false, valueAsBuffer: false, limit: 20, reverse: true }), function (err, data) {
+ t.notOk(err, 'no error')
+ t.equal(data.length, 20, 'correct number of entries')
+ var expected = sourceData.slice().reverse().slice(0, 20).map(transformSource)
+ t.deepEqual(data, expected)
+ t.end()
+ })
})
-})
-
-test('test iterator with limit=20 and start=20 and reverse=true', function (t) {
- collectEntries(db.iterator({ keyAsBuffer: false, valueAsBuffer: false, start: '79', limit: 20, reverse: true }), function (err, data) {
- t.notOk(err, 'no error')
- t.equal(data.length, 20, 'correct number of entries')
- var expected = sourceData.slice().reverse().slice(20, 40).map(transformSource)
- t.deepEqual(data, expected)
- t.end()
+
+ test('test iterator with limit=20 and start=20 and reverse=true', function (t) {
+ collectEntries(db.iterator({ keyAsBuffer: false, valueAsBuffer: false, start: '79', limit: 20, reverse: true }), function (err, data) {
+ t.notOk(err, 'no error')
+ t.equal(data.length, 20, 'correct number of entries')
+ var expected = sourceData.slice().reverse().slice(20, 40).map(transformSource)
+ t.deepEqual(data, expected)
+ t.end()
+ })
})
-})
-
-test('test iterator with end after limit', function (t) {
- collectEntries(db.iterator({ keyAsBuffer: false, valueAsBuffer: false, limit: 20, end: '50' }), function (err, data) {
- t.notOk(err, 'no error')
- t.equal(data.length, 20, 'correct number of entries')
- var expected = sourceData.slice(0, 20).map(transformSource)
- t.deepEqual(data, expected)
- t.end()
+
+ test('test iterator with end after limit', function (t) {
+ collectEntries(db.iterator({ keyAsBuffer: false, valueAsBuffer: false, limit: 20, end: '50' }), function (err, data) {
+ t.notOk(err, 'no error')
+ t.equal(data.length, 20, 'correct number of entries')
+ var expected = sourceData.slice(0, 20).map(transformSource)
+ t.deepEqual(data, expected)
+ t.end()
+ })
})
-})
-
-test('test iterator with end before limit', function (t) {
- collectEntries(db.iterator({ keyAsBuffer: false, valueAsBuffer: false, limit: 50, end: '19' }), function (err, data) {
- t.notOk(err, 'no error')
- t.equal(data.length, 20, 'correct number of entries')
- var expected = sourceData.slice(0, 20).map(transformSource)
- t.deepEqual(data, expected)
- t.end()
+
+ test('test iterator with end before limit', function (t) {
+ collectEntries(db.iterator({ keyAsBuffer: false, valueAsBuffer: false, limit: 50, end: '19' }), function (err, data) {
+ t.notOk(err, 'no error')
+ t.equal(data.length, 20, 'correct number of entries')
+ var expected = sourceData.slice(0, 20).map(transformSource)
+ t.deepEqual(data, expected)
+ t.end()
+ })
})
-})
+}
-test('tearDown', function (t) {
- db.close(testCommon.tearDown.bind(null, t))
-})
\ No newline at end of file
+module.exports.tearDown = function () {
+ test('tearDown', function (t) {
+ db.close(testCommon.tearDown.bind(null, t))
+ })
+}
+
+module.exports.all = function (leveldown) {
+ module.exports.setUp(leveldown)
+ module.exports.args()
+ module.exports.sequence()
+ module.exports.iterator(leveldown)
+ module.exports.tearDown()
+}
+
+if (require.main === module)
+ module.exports.all(leveldown)
\ No newline at end of file
diff --git a/test/leveldown-test.js b/test/leveldown-test.js
index b5b85a8..d7e5584 100644
--- a/test/leveldown-test.js
+++ b/test/leveldown-test.js
@@ -1,14 +1,23 @@
const test = require('tap').test
, leveldown = require('../')
-test('test database creation no-arg throws', function (t) {
- t.throws(leveldown, 'no-arg leveldown() throws')
- t.end()
-})
+module.exports.args = function (leveldown) {
+ test('test database creation no-arg throws', function (t) {
+ t.throws(
+ leveldown
+ , { name: 'Error', message: 'leveldown() requires at least a location argument' }
+ , 'no-arg leveldown() throws'
+ )
+ t.end()
+ })
-test('test database open no-arg throws', function (t) {
- var db = leveldown('foo')
- t.ok(db, 'database object returned')
- t.isa(db.open, 'function', 'open() function exists')
- t.end()
-})
\ No newline at end of file
+ test('test database open no-arg throws', function (t) {
+ var db = leveldown('foo')
+ t.ok(db, 'database object returned')
+ t.isa(db.open, 'function', 'open() function exists')
+ t.end()
+ })
+}
+
+if (require.main === module)
+ module.exports.args(leveldown)
\ No newline at end of file
diff --git a/test/open-test.js b/test/open-test.js
index 16dba0a..d53a64e 100644
--- a/test/open-test.js
+++ b/test/open-test.js
@@ -3,60 +3,87 @@ const fs = require('fs')
, testCommon = require('./common')
, leveldown = require('../')
-test('setUp', testCommon.setUp)
+module.exports.setUp = function () {
+ test('setUp', testCommon.setUp)
+}
-test('test database open no-arg throws', function (t) {
- t.throws(leveldown(testCommon.location()).open, 'no-arg open() throws')
- t.end()
-})
+module.exports.args = function (leveldown) {
+ test('test database open no-arg throws', function (t) {
+ var db = leveldown(testCommon.location())
+ t.throws(
+ db.open.bind(db)
+ , { name: 'Error', message: 'open() requires a callback argument' }
+ , 'no-arg open() throws'
+ )
+ t.end()
+ })
-test('test callback-less, 1-arg, open() throws', function (t) {
- var db = leveldown(testCommon.location())
- t.throws(db.open.bind(db, {}), 'callback-less, 1-arg open() throws')
- t.end()
-})
+ test('test callback-less, 1-arg, open() throws', function (t) {
+ var db = leveldown(testCommon.location())
+ t.throws(
+ db.open.bind(db, {})
+ , { name: 'Error', message: 'open() requires a callback argument' }
+ , 'callback-less, 1-arg open() throws'
+ )
+ t.end()
+ })
+}
-test('test database open', function (t) {
- var db = leveldown(testCommon.location())
+module.exports.open = function (leveldown) {
+ test('test database open', function (t) {
+ var db = leveldown(testCommon.location())
- // default createIfMissing=true, errorIfExists=false
- db.open(function (err) {
- t.notOk(err, 'no error')
- db.close(function () {
- t.end()
+ // default createIfMissing=true, errorIfExists=false
+ db.open(function (err) {
+ t.notOk(err, 'no error')
+ db.close(function () {
+ t.end()
+ })
})
- })
-})
+ })
-test('test database open createIfMissing:false', function (t) {
- var db = leveldown(testCommon.location())
+ test('test database open createIfMissing:false', function (t) {
+ var db = leveldown(testCommon.location())
- db.open({ createIfMissing: false }, function (err) {
- t.ok(err, 'error')
- t.ok(/does not exist/.test(err.message), 'error is about dir not existing')
- t.end()
+ db.open({ createIfMissing: false }, function (err) {
+ t.ok(err, 'error')
+ t.ok(/does not exist/.test(err.message), 'error is about dir not existing')
+ t.end()
+ })
})
-})
-test('test database open errorIfExists:true', function (t) {
- var location = testCommon.location()
- , db = leveldown(location)
+ test('test database open errorIfExists:true', function (t) {
+ var location = testCommon.location()
+ , db = leveldown(location)
- // make a valid database first, then close and dispose
- db.open(function (err) {
- t.notOk(err, 'no error')
- db.close(function (err) {
+ // make a valid database first, then close and dispose
+ db.open(function (err) {
t.notOk(err, 'no error')
+ db.close(function (err) {
+ t.notOk(err, 'no error')
- // open again with 'errorIfExists'
- db = leveldown(location)
- db.open({ createIfMissing: false, errorIfExists: true }, function (err) {
- t.ok(err, 'error')
- t.ok(/exists/.test(err.message), 'error is about already existing')
- t.end()
+ // open again with 'errorIfExists'
+ db = leveldown(location)
+ db.open({ createIfMissing: false, errorIfExists: true }, function (err) {
+ t.ok(err, 'error')
+ t.ok(/exists/.test(err.message), 'error is about already existing')
+ t.end()
+ })
})
})
})
-})
+}
+
+module.exports.tearDown = function () {
+ test('tearDown', testCommon.tearDown)
+}
+
+module.exports.all = function (leveldown) {
+ module.exports.setUp()
+ module.exports.args(leveldown)
+ module.exports.open(leveldown)
+ module.exports.tearDown()
+}
-test('tearDown', testCommon.tearDown)
\ No newline at end of file
+if (require.main === module)
+ module.exports.all(leveldown)
\ No newline at end of file
diff --git a/test/put-get-del-test.js b/test/put-get-del-test.js
index e5cddb0..b060a90 100644
--- a/test/put-get-del-test.js
+++ b/test/put-get-del-test.js
@@ -68,9 +68,10 @@ var db
/**** SETUP ENVIRONMENT ****/
-test('setUp', function (t) {
+test('setUp common', testCommon.setUp)
+test('setUp db', function (t) {
db = leveldown(testCommon.location())
- db.open(testCommon.setUp.bind(null, t))
+ db.open(t.end.bind(t))
})
/**** TEST ERROR KEYS ****/
diff --git a/test/put-test.js b/test/put-test.js
index a420466..5d78e13 100644
--- a/test/put-test.js
+++ b/test/put-test.js
@@ -4,42 +4,77 @@ const test = require('tap').test
var db
-test('setUp', function (t) {
- db = leveldown(testCommon.location())
- db.open(testCommon.setUp.bind(null, t))
-})
-
-test('test argument-less put() throws', function (t) {
- t.throws(db.put.bind(db), 'no-arg put() throws')
- t.end()
-})
-
-test('test callback-less, 1-arg, put() throws', function (t) {
- t.throws(db.put.bind(db, 'foo'), 'callback-less, 1-arg put() throws')
- t.end()
-})
-
-test('test callback-less, 2-arg, put() throws', function (t) {
- t.throws(db.put.bind(db, 'foo', 'bar'), 'callback-less, 2-arg put() throws')
- t.end()
-})
-
-test('test callback-less, 3-arg, put() throws', function (t) {
- t.throws(db.put.bind(db, 'foo', 'bar', {}), 'callback-less, 3-arg put() throws')
- t.end()
-})
-
-test('test simple put()', function (t) {
- db.put('foo', 'bar', function (err) {
- t.notOk(err, 'no error')
- db.get('foo', function (err, value) {
+module.exports.setUp = function (leveldown) {
+ test('setUp common', testCommon.setUp)
+ test('setUp db', function (t) {
+ db = leveldown(testCommon.location())
+ db.open(t.end.bind(t))
+ })
+}
+
+module.exports.args = function () {
+ test('test argument-less put() throws', function (t) {
+ t.throws(
+ db.put.bind(db)
+ , { name: 'Error', message: 'put() requires a callback argument' }
+ , 'no-arg put() throws'
+ )
+ t.end()
+ })
+
+ test('test callback-less, 1-arg, put() throws', function (t) {
+ t.throws(
+ db.put.bind(db, 'foo')
+ , { name: 'Error', message: 'put() requires a callback argument' }
+ , 'callback-less, 1-arg put() throws'
+ )
+ t.end()
+ })
+
+ test('test callback-less, 2-arg, put() throws', function (t) {
+ t.throws(
+ db.put.bind(db, 'foo', 'bar')
+ , { name: 'Error', message: 'put() requires a callback argument' }
+ , 'callback-less, 2-arg put() throws'
+ )
+ t.end()
+ })
+
+ test('test callback-less, 3-arg, put() throws', function (t) {
+ t.throws(
+ db.put.bind(db, 'foo', 'bar', {})
+ , { name: 'Error', message: 'put() requires a callback argument' }
+ , 'callback-less, 3-arg put() throws'
+ )
+ t.end()
+ })
+}
+
+module.exports.put = function () {
+ test('test simple put()', function (t) {
+ db.put('foo', 'bar', function (err) {
t.notOk(err, 'no error')
- t.equal(value.toString(), 'bar')
- t.end()
+ db.get('foo', function (err, value) {
+ t.notOk(err, 'no error')
+ t.equal(value.toString(), 'bar')
+ t.end()
+ })
})
})
-})
+}
+
+module.exports.tearDown = function () {
+ test('tearDown', function (t) {
+ db.close(testCommon.tearDown.bind(null, t))
+ })
+}
+
+module.exports.all = function (leveldown) {
+ module.exports.setUp(leveldown)
+ module.exports.args()
+ module.exports.put()
+ module.exports.tearDown()
+}
-test('tearDown', function (t) {
- db.close(testCommon.tearDown.bind(null, t))
-})
\ No newline at end of file
+if (require.main === module)
+ module.exports.all(leveldown)
\ No newline at end of file
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-javascript/node-leveldown.git
More information about the Pkg-javascript-commits
mailing list