[Pkg-javascript-commits] [node-leveldown] 311/492: rip a ton of tests out, require them from abstract-leveldown instead

Andrew Kelley andrewrk-guest at moszumanska.debian.org
Sun Jul 6 17:14:12 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 7ede4bafd212807038b768b90ae57544dcb7eda3
Author: Max Ogden <max at maxogden.com>
Date:   Mon Apr 22 21:05:34 2013 -0700

    rip a ton of tests out, require them from abstract-leveldown instead
---
 package.json                  |   9 +-
 test/approximate-size-test.js | 124 +-----------
 test/close-test.js            |  28 +--
 test/del-test.js              |  72 +------
 test/get-test.js              |  81 +-------
 test/iterator-test.js         | 439 +-----------------------------------------
 test/leveldown-test.js        |  21 +-
 test/open-test.js             |  88 +--------
 test/put-get-del-test.js      | 159 +--------------
 test/put-test.js              |  77 +-------
 10 files changed, 28 insertions(+), 1070 deletions(-)

diff --git a/package.json b/package.json
index 3a8a9dd..a706b8a 100644
--- a/package.json
+++ b/package.json
@@ -21,10 +21,11 @@
         "bindings"        : "~1.1.0"
     }
   , "devDependencies" : {
-        "tap"             : "*"
-      , "rimraf"          : "*"
-      , "mkfiletree"      : "*"
-      , "readfiletree"    : "*"
+        "tap"                : "*"
+      , "rimraf"             : "*"
+      , "mkfiletree"         : "*"
+      , "readfiletree"       : "*"
+      , "abstract-leveldown" : "*"
     }
   , "repository"      : {
         "type"            : "git"
diff --git a/test/approximate-size-test.js b/test/approximate-size-test.js
index 8bed86e..2b22875 100644
--- a/test/approximate-size-test.js
+++ b/test/approximate-size-test.js
@@ -1,127 +1,7 @@
 const test       = require('tap').test
     , testCommon = require('./common')
     , leveldown  = require('../')
-
-var db
-
-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()
-  })
-
-  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) {
-          return { type: 'put', key: 'foo' + i, value: data }
-        })
-      , function (err) {
-          t.notOk(err, 'no error')
-
-          // cycle open/close to ensure a pack to .sst
-
-          db.close(function (err) {
-            t.notOk(err, 'no error')
-
-            db.open(function (err) {
-              t.notOk(err, 'no error')
-
-              db.approximateSize('!', '~', function (err, size) {
-                t.notOk(err, 'no error')
-
-                t.type(size, 'number')
-                t.ok(
-                    size > 100000
-                  , 'size reports a reasonable amount (' + size + ')'
-                )
-
-                db.close(function (err) {
-                  t.notOk(err, 'no error')
-                  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.approximateSize()
-  module.exports.tearDown()
-}
+    , abstract = require('abstract-leveldown/abstract/approximate-size-test')
 
 if (require.main === module)
-  module.exports.all(leveldown)
\ No newline at end of file
+  abstract.all(leveldown, test, testCommon)
\ No newline at end of file
diff --git a/test/close-test.js b/test/close-test.js
index 4315060..eb2be94 100644
--- a/test/close-test.js
+++ b/test/close-test.js
@@ -1,35 +1,13 @@
 const test       = require('tap').test
     , testCommon = require('./common')
     , leveldown  = require('../')
+    , abstract = require('abstract-leveldown/abstract/close-test')
 
 module.exports.setUp = function () {
   test('setUp', testCommon.setUp)
 }
 
-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)
-        , { 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.close = abstract.close
 
 module.exports.tearDown = function () {
   test('tearDown', testCommon.tearDown)
@@ -37,7 +15,7 @@ module.exports.tearDown = function () {
 
 module.exports.all = function (leveldown) {
   module.exports.setUp()
-  module.exports.close(leveldown)
+  module.exports.close(leveldown, test, testCommon)
   module.exports.tearDown()
 }
 
diff --git a/test/del-test.js b/test/del-test.js
index 7568b48..16789b8 100644
--- a/test/del-test.js
+++ b/test/del-test.js
@@ -1,75 +1,7 @@
 const test       = require('tap').test
     , testCommon = require('./common')
     , leveldown  = require('../')
-
-var db
-
-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.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()
-}
+    , abstract = require('abstract-leveldown/abstract/del-test')
 
 if (require.main === module)
-  module.exports.all(leveldown)
\ No newline at end of file
+  abstract.all(leveldown, test, testCommon)
\ No newline at end of file
diff --git a/test/get-test.js b/test/get-test.js
index ef731b5..3ad5cf6 100644
--- a/test/get-test.js
+++ b/test/get-test.js
@@ -1,84 +1,7 @@
 const test       = require('tap').test
     , testCommon = require('./common')
     , leveldown  = require('../')
-
-var db
-
-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()
-  })
-
-  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', {}, function (err, value) { // same but with {}
-          t.notOk(err, 'no error')
-          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()
-}
+    , abstract = require('abstract-leveldown/abstract/get-test')
 
 if (require.main === module)
-  module.exports.all(leveldown)
\ No newline at end of file
+  abstract.all(leveldown, test, testCommon)
\ No newline at end of file
diff --git a/test/iterator-test.js b/test/iterator-test.js
index 1a49c07..99e8b45 100644
--- a/test/iterator-test.js
+++ b/test/iterator-test.js
@@ -1,442 +1,7 @@
 const test       = require('tap').test
     , testCommon = require('./common')
     , leveldown  = require('../')
-    , collectEntries = testCommon.collectEntries
-
-var db
-  , sourceData = (function () {
-      var d = []
-        , i = 0
-        , k
-      for (; i < 100; i++) {
-        k = (i < 10 ? '0' : '') + i
-        d.push({
-            type  : 'put'
-          , key   : k
-          , value : Math.random()
-        })
-      }
-      return d
-    }())
-  , transformSource = function (d) { return { key: d.key, value: d.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 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() 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))
-  })
-}
-
-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()
-    })
-  })
-
-  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()
-    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()
-    })
-  })
-
-  /** 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('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 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 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 (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, 50, 'correct number of entries')
-      var expected = sourceData.slice().reverse().slice(50).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 (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()
-    })
-  })
-
-  // 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 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 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 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 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 start after database end and reverse=true', function (t) {
-    collectEntries(db.iterator({ keyAsBuffer: false, valueAsBuffer: false, start: '9a', 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 and end after database and and reverse=true', function (t) {
-    collectEntries(db.iterator({ start: '9b', end: '9a', reverse: true }), function (err, data) {
-      t.notOk(err, 'no error')
-      t.equal(data.length, 0, 'correct number of entries')
-      t.end()
-    })
-  })
-
-  function testIteratorCollectsFullDatabase (name, iteratorOptions) {
-    iteratorOptions.keyAsBuffer   = false
-    iteratorOptions.valueAsBuffer = false
-    test(name, function (t) {
-      collectEntries(db.iterator(iteratorOptions), function (err, data) {
-        t.notOk(err, 'no error')
-        t.equal(data.length, 100, 'correct number of entries')
-        var expected = sourceData.map(transformSource)
-        t.deepEqual(data, expected)
-        t.end()
-      })
-    })
-  }
-
-  testIteratorCollectsFullDatabase(
-      'test iterator with start as empty buffer'
-    , { start: new Buffer(0) }
-  )
-  testIteratorCollectsFullDatabase(
-      'test iterator with start as empty string'
-    , { start: '' }
-  )
-  testIteratorCollectsFullDatabase(
-      'test iterator with start as null'
-    , { start: null }
-  )
-  testIteratorCollectsFullDatabase(
-      'test iterator with end as empty buffer'
-    , { end: new Buffer(0) }
-  )
-  testIteratorCollectsFullDatabase(
-      'test iterator with end as empty string'
-    , { end: '' }
-  )
-  testIteratorCollectsFullDatabase(
-      'test iterator with end as null'
-    , { end: null }
-  )
-}
-
-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()
-}
+    , abstract = require('abstract-leveldown/abstract/iterator-test')
 
 if (require.main === module)
-  module.exports.all(leveldown)
\ No newline at end of file
+  abstract.all(leveldown, test, testCommon)
\ No newline at end of file
diff --git a/test/leveldown-test.js b/test/leveldown-test.js
index d7e5584..fc531c8 100644
--- a/test/leveldown-test.js
+++ b/test/leveldown-test.js
@@ -1,23 +1,6 @@
 const test      = require('tap').test
     , leveldown = require('../')
-
-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()
-  })
-}
+    , abstract = require('abstract-leveldown/abstract/leveldown-test')
 
 if (require.main === module)
-  module.exports.args(leveldown)
\ No newline at end of file
+  abstract.args(leveldown, test)
\ No newline at end of file
diff --git a/test/open-test.js b/test/open-test.js
index d53a64e..0aa5976 100644
--- a/test/open-test.js
+++ b/test/open-test.js
@@ -1,89 +1,7 @@
-const fs         = require('fs')
-    , test       = require('tap').test
+const test       = require('tap').test
     , testCommon = require('./common')
     , leveldown  = require('../')
-
-module.exports.setUp = function () {
-  test('setUp', testCommon.setUp)
-}
-
-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, {})
-      , { name: 'Error', message: 'open() requires a callback argument' }
-      , 'callback-less, 1-arg open() throws'
-    )
-    t.end()
-  })
-}
-
-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()
-        })
-      })
-  })
-
-  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()
-    })
-  })
-
-  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) {
-        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()
-        })
-      })
-    })
-  })
-}
-
-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()
-}
+    , abstract = require('abstract-leveldown/abstract/open-test')
 
 if (require.main === module)
-  module.exports.all(leveldown)
\ No newline at end of file
+  abstract.all(leveldown, test, testCommon)
\ No newline at end of file
diff --git a/test/put-get-del-test.js b/test/put-get-del-test.js
index 7728a72..7323493 100644
--- a/test/put-get-del-test.js
+++ b/test/put-get-del-test.js
@@ -1,159 +1,10 @@
-const fs         = require('fs')
-    , path       = require('path')
-    , test       = require('tap').test
+const test       = require('tap').test
     , testCommon = require('./common')
     , leveldown  = require('../')
-
+    , fs = require('fs')
+    , path = require('path')
     , testBuffer = fs.readFileSync(path.join(__dirname, 'data/testdata.bin'))
-
-/**** SETUP & UTILITY STUFF ****/
-
-var db
-
-  , makeGetDelErrorTests = function (type, key, expectedError) {
-      test('test get() with ' + type + ' causes error', function (t) {
-        db.get(key, function (err) {
-          t.ok(err, 'has error')
-          t.type(err, Error)
-          t.like(err.message, expectedError, 'correct error message')
-          t.end()
-        })
-      })
-
-      test('test del() with ' + type + ' causes error', function (t) {
-        db.del(key, function (err) {
-          t.ok(err, 'has error')
-          t.type(err, Error)
-          t.like(err.message, expectedError, 'correct error message')
-          t.end()
-        })
-      })
-    }
-
-  , makePutErrorTest = function (type, key, value, expectedError) {
-      test('test put() with ' + type + ' causes error', function (t) {
-        db.put(key, value, function (err) {
-          t.ok(err, 'has error')
-          t.type(err, Error)
-          t.like(err.message, expectedError, 'correct error message')
-          t.end()
-        })
-      })
-    }
-
-  , makePutGetDelSuccessfulTest = function (type, key, value) {
-      test('test put()/get()/del() with ' + type, function (t) {
-        db.put(key, value, function (err) {
-          t.notOk(err, 'no error')
-          db.get(key, function (err, _value) {
-            t.notOk(err, 'no error, has key/value for `' + key + '`')
-            t.equals(_value.toString(), value.toString())
-            db.del(key, function (err) {
-              t.notOk(err, 'no error, deleted key/value for `' + key + '`')
-              db.get(key, function (err) {
-                t.ok(err, 'entry propertly deleted')
-                t.like(err.message, /NotFound/)
-                t.end()
-              })
-            })
-          })
-        })
-      })
-    }
-
-  , makeErrorKeyTest = function (type, key, expectedError) {
-      makeGetDelErrorTests(type, key, expectedError)
-      makePutErrorTest(type, key, 'foo', expectedError)
-    }
-
-/**** SETUP ENVIRONMENT ****/
-
-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))
-  })
-}
-
-/**** TEST ERROR KEYS ****/
-
-module.exports.errorKeys = function () {
-  makeErrorKeyTest('null key', null, /key cannot be `null` or `undefined`/)
-  makeErrorKeyTest('undefined key', undefined, /key cannot be `null` or `undefined`/)
-  makeErrorKeyTest('empty String key', '', /key cannot be an empty String/)
-  makeErrorKeyTest('empty Buffer key', new Buffer(0), /key cannot be an empty Buffer/)
-  makeErrorKeyTest('empty Array key', [], /key cannot be an empty String/)
-}
-
-/**** TEST NON-ERROR KEYS ****/
-
-module.exports.nonErrorKeys = function () {
-  // valid falsey keys
-  makePutGetDelSuccessfulTest('`false` key', false, 'foo false')
-  makePutGetDelSuccessfulTest('`0` key', 0, 'foo 0')
-  makePutGetDelSuccessfulTest('`NaN` key', NaN, 'foo NaN')
-
-  // standard String key
-  makePutGetDelSuccessfulTest(
-      'long String key'
-    , 'some long string that I\'m using as a key for this unit test, cross your fingers dude, we\'re going in!'
-    , 'foo'
-  )
-
-  // Buffer key
-  makePutGetDelSuccessfulTest('Buffer key', testBuffer, 'foo')
-
-  // non-empty Array as a key
-  makePutGetDelSuccessfulTest('Array value', 'foo', [1,2,3,4])
-}
-
-/**** TEST ERROR VALUES ****/
-
-module.exports.errorValues = function () {
-  makePutErrorTest('null value', 'foo', null, /value cannot be `null` or `undefined`/)
-  makePutErrorTest('undefined value', 'foo', undefined, /value cannot be `null` or `undefined`/)
-  makePutErrorTest('empty String value', 'foo', '', /value cannot be an empty String/)
-  makePutErrorTest('empty Buffer value', 'foo', new Buffer(0), /value cannot be an empty Buffer/)
-  makePutErrorTest('empty Array value', 'foo', [], /value cannot be an empty String/)
-}
-
-module.exports.nonErrorKeys = function () {
-  // valid falsey values
-  makePutGetDelSuccessfulTest('`false` value', 'foo false', false)
-  makePutGetDelSuccessfulTest('`0` value', 'foo 0', 0)
-  makePutGetDelSuccessfulTest('`NaN` value', 'foo NaN', NaN)
-
-  // standard String value
-  makePutGetDelSuccessfulTest(
-      'long String value'
-    , 'foo'
-    , 'some long string that I\'m using as a key for this unit test, cross your fingers dude, we\'re going in!'
-  )
-
-  // standard Buffer value
-  makePutGetDelSuccessfulTest('Buffer key', 'foo', testBuffer)
-
-  // non-empty Array as a value
-  makePutGetDelSuccessfulTest('Array value', [1,2,3,4], 'foo')
-}
-
-/**** CLEANUP ENVIRONMENT ****/
-
-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.errorKeys()
-  module.exports.nonErrorKeys()
-  module.exports.errorValues()
-  module.exports.nonErrorKeys()
-  module.exports.tearDown()
-}
+    , abstract = require('abstract-leveldown/abstract/put-get-del-test')
 
 if (require.main === module)
-  module.exports.all(leveldown)
+  abstract.all(leveldown, test, testCommon, testBuffer)
diff --git a/test/put-test.js b/test/put-test.js
index 5d78e13..e21cc5b 100644
--- a/test/put-test.js
+++ b/test/put-test.js
@@ -1,80 +1,7 @@
 const test       = require('tap').test
     , testCommon = require('./common')
     , leveldown  = require('../')
-
-var db
-
-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')
-      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()
-}
+    , abstract = require('abstract-leveldown/abstract/put-test')
 
 if (require.main === module)
-  module.exports.all(leveldown)
\ No newline at end of file
+  abstract.all(leveldown, test, testCommon)
\ 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