From 30a9c23ff75e4a6ce6c705ab5727405c2442a83b Mon Sep 17 00:00:00 2001 From: Young Hahn Date: Tue, 30 Sep 2014 12:05:49 -0400 Subject: [PATCH] Switch to tape. --- package.json | 4 +-- test/commit.test.js | 22 ++++++------ test/geocoder.test.js | 77 +++++++++++++++++++--------------------- test/info.test.js | 20 ++++------- test/list.test.js | 15 +++----- test/read.test.js | 51 +++++++++++++------------- test/write.test.js | 18 ++++------ test/write_grids.test.js | 19 ++++------ 8 files changed, 97 insertions(+), 129 deletions(-) diff --git a/package.json b/package.json index 5bf482b..5236b3f 100644 --- a/package.json +++ b/package.json @@ -28,12 +28,12 @@ "sphericalmercator": "~1.0.1" }, "devDependencies": { - "mocha": "~1.8.2" + "tape": "~3.0.0" }, "engines": { "node": ">= 0.10.0" }, "scripts": { - "test": "./node_modules/.bin/mocha" + "test": "tape test/*.js" } } diff --git a/test/commit.test.js b/test/commit.test.js index 38c2dfb..adb6a13 100644 --- a/test/commit.test.js +++ b/test/commit.test.js @@ -1,32 +1,30 @@ require('sqlite3').verbose(); +var tape = require('tape'); var fs = require('fs'); -var assert = require('assert'); var MBTiles = require('..'); var fixtureDir = __dirname + '/fixtures/output'; var image = fs.readFileSync(__dirname + '/fixtures/images/plain_1_0_0_0.png'); -describe('write', function() { - before(function(done) { + tape('setup', function(assert) { // Recreate output directory to remove previous tests. try { fs.unlinkSync(fixtureDir + '/commit_1.mbtiles'); } catch(err) {} try { fs.mkdirSync(fixtureDir, 0755); } catch(err) {} - done(); + assert.end(); }); - it('test mbtiles commit lock', function(done) { + tape('test mbtiles commit lock', function(assert) { var remaining = 10; new MBTiles('mbtiles://' + fixtureDir + '/commit_1.mbtiles?batch=1', function(err, mbtiles) { - assert.ifError(err); + assert.ifError(err, 'new MBTiles'); mbtiles.startWriting(function(err) { - assert.ifError(err); + assert.ifError(err, 'startWriting'); for (var i = 0; i < remaining; i++) mbtiles.putTile(0,0,0,image,putcb); - assert.equal(mbtiles._committing, true); - assert.equal(mbtiles._events.commit.length, 19); + assert.equal(mbtiles._committing, true, 'Sets committing lock'); + assert.equal(mbtiles._events.commit.length, 19, 'Queues commits'); }); }); function putcb(err) { - assert.ifError(err); - if (!--remaining) done(); + assert.ifError(err, 'putTile'); + if (!--remaining) assert.end(); } }); -}); diff --git a/test/geocoder.test.js b/test/geocoder.test.js index 7fd3287..3dacb11 100644 --- a/test/geocoder.test.js +++ b/test/geocoder.test.js @@ -1,9 +1,7 @@ var fs = require('fs'); -var assert = require('assert'); var util = require('util'); var MBTiles = require('..'); - -describe('geocoder (carmen) API', function() { +var tape = require('tape'); var expected = { bounds: '-141.005548666451,41.6690855919108,-52.615930948992,83.1161164353916', @@ -19,45 +17,27 @@ var index; var from; var to; -before(function() { - try { fs.mkdirSync(tmp); } catch(err) { throw err; } +try { fs.mkdirSync(tmp); } catch(err) { throw err; } + +tape('setup', function(assert) { + index = new MBTiles(__dirname + '/fixtures/geocoder_data.mbtiles', assert.end); }); -before(function(done) { - index = new MBTiles(__dirname + '/fixtures/geocoder_data.mbtiles', done); +tape('setup', function(assert) { + from = new MBTiles(__dirname + '/fixtures/geocoder_legacy.mbtiles', assert.end); }); -before(function(done) { - from = new MBTiles(__dirname + '/fixtures/geocoder_legacy.mbtiles', done); -}); -before(function(done) { - to = new MBTiles(tmp + '/indexed.mbtiles', done); +tape('setup', function(assert) { + to = new MBTiles(tmp + '/indexed.mbtiles', assert.end); }); -after(function(done) { - this.timeout(5000); - index.close(function(err) { - if (err) throw err; - from.close(function(err) { - if (err) throw err; - to.close(function(err) { - if (err) throw err; - try { fs.unlinkSync(tmp + '/indexed.mbtiles'); } catch(err) { throw err; } - try { fs.rmdirSync(tmp); } catch(err) { throw err; } - done(); - }); - }); - }); -}); - -it('getGeocoderData', function(done) { +tape('getGeocoderData', function(assert) { index.getGeocoderData('term', 0, function(err, buffer) { assert.ifError(err); assert.equal(3891, buffer.length); - done(); + assert.end(); }); }); -it('putGeocoderData', function(done) { - this.timeout(5000); +tape('putGeocoderData', function(assert) { to.startWriting(function(err) { assert.ifError(err); to.putGeocoderData('term', 0, new Buffer('asdf'), function(err) { @@ -67,14 +47,14 @@ it('putGeocoderData', function(done) { to.getGeocoderData('term', 0, function(err, buffer) { assert.ifError(err); assert.deepEqual('asdf', buffer.toString()); - done(); + assert.end(); }); }); }); }); }); -it('getIndexableDocs', function(done) { +tape('getIndexableDocs', function(assert) { from.getIndexableDocs({ limit: 10 }, function(err, docs, pointer) { assert.ifError(err); assert.equal(docs.length, 10); @@ -113,30 +93,30 @@ it('getIndexableDocs', function(done) { _zxy: [ '4/0/8' ], _center: [ -170.73, -14.318 ] }); - done(); + assert.end(); }); }); }); -it('geocoderCentroid ABW', function(done) { +tape('geocoderCentroid ABW', function(assert) { from.geocoderCentroid('ABW', ['4/4/7'], function(err, center) { assert.ifError(err); assert.equal(parseFloat(center[0].toFixed(10)), -70.3125); assert.equal(parseFloat(center[1].toFixed(10)), 12.5545635286); - done(); + assert.end(); }); }); -it('geocoderCentroid ASM', function(done) { +tape('geocoderCentroid ASM', function(assert) { from.geocoderCentroid('ASM', ['4/0/8'], function(err, center) { assert.ifError(err); assert.equal(parseFloat(center[0].toFixed(10)), -170.859375); assert.equal(parseFloat(center[1].toFixed(10)), -14.2643830876); - done(); + assert.end(); }); }); -it('geocoderCentroid USA', function(done) { +tape('geocoderCentroid USA', function(assert) { from.geocoderCentroid('USA', [ '4/0/7', '4/0/6', @@ -160,8 +140,23 @@ it('geocoderCentroid USA', function(done) { assert.ifError(err); assert.equal(parseFloat(center[0].toFixed(10)), -118.828125); assert.equal(parseFloat(center[1].toFixed(10)), 46.0732306254); - done(); + assert.end(); }); }); +tape('cleanup', function(assert) { + index.close(function(err) { + if (err) throw err; + from.close(function(err) { + if (err) throw err; + to.close(function(err) { + if (err) throw err; + try { fs.unlinkSync(tmp + '/indexed.mbtiles'); } catch(err) { throw err; } + try { fs.rmdirSync(tmp); } catch(err) { throw err; } + assert.end(); + }); + }); + }); }); + + diff --git a/test/info.test.js b/test/info.test.js index 193ec66..45307ca 100644 --- a/test/info.test.js +++ b/test/info.test.js @@ -1,19 +1,16 @@ require('sqlite3').verbose(); var fs = require('fs'); +var tape = require('tape'); var MBTiles = require('..'); -var assert = require('assert'); var fixtures = { plain_1: __dirname + '/fixtures/plain_1.mbtiles', empty: __dirname + '/fixtures/empty.mbtiles' }; -describe('info', function() { - before(function(done) { - try { fs.unlinkSync(fixtures.empty); } catch (err) {} - done(); - }); - it('get metadata', function(done) { + try { fs.unlinkSync(fixtures.empty); } catch (err) {} + + tape('get metadata', function(assert) { new MBTiles(fixtures.plain_1, function(err, mbtiles) { assert.ifError(err); @@ -39,13 +36,11 @@ describe('info', function() { basename: 'plain_1.mbtiles' }, data); - done(); + assert.end(); }); }); }); - it('get/put metadata from empty file', function(done) { - this.timeout(10e3); - + tape('get/put metadata from empty file', function(assert) { var info = { version: '1.0.0', level1: { level2: 'property' }, @@ -91,7 +86,7 @@ describe('info', function() { custom: [ 'custom list' ] }, data); - done(); + assert.end(); }); }); }); @@ -100,4 +95,3 @@ describe('info', function() { }); }); }); -}); diff --git a/test/list.test.js b/test/list.test.js index 92fa1c8..f475ef0 100644 --- a/test/list.test.js +++ b/test/list.test.js @@ -1,23 +1,18 @@ require('sqlite3').verbose(); var fs = require('fs'); +var tape = require('tape'); var MBTiles = require('..'); -var assert = require('assert'); var fixtures = { doesnotexist: __dirname + '/doesnotexist' }; -describe('list', function() { - before(function(done) { - try { fs.unlinkSync(fixtures.doesnotexist); } catch (err) {} - done(); - }); - it('list', function(done) { + try { fs.unlinkSync(fixtures.doesnotexist); } catch (err) {} + + tape('list', function(assert) { MBTiles.list(fixtures.doesnotexist, function(err, list) { assert.ifError(err); assert.deepEqual(list, {}); - done(); + assert.end(); }); }); -}); - diff --git a/test/read.test.js b/test/read.test.js index ce0bf55..2d10f84 100644 --- a/test/read.test.js +++ b/test/read.test.js @@ -2,7 +2,7 @@ require('sqlite3').verbose(); var fs = require('fs'); var MBTiles = require('..'); -var assert = require('assert'); +var tape = require('tape'); var fixtures = { plain_1: __dirname + '/fixtures/plain_1.mbtiles', @@ -22,17 +22,14 @@ function yieldsError(assert, error, msg, callback) { }; } -describe('read', function() { var loaded = {}; - before(function(done) { - try { fs.unlinkSync(fixtures.non_existent); } catch (err) {} - done(); - }); - before(function(done) { + try { fs.unlinkSync(fixtures.non_existent); } catch (err) {} + + tape('setup', function(assert) { var queue = Object.keys(fixtures); var load = function() { - if (!queue.length) return done(); + if (!queue.length) return assert.end(); var key = queue.shift(); new MBTiles(fixtures[key], function(err, mbtiles) { if (err) throw err; @@ -50,18 +47,18 @@ describe('read', function() { // Flip Y coordinate because file names are TMS, but .getTile() expects XYZ. coords = [ coords[3], coords[1], coords[2] ]; coords[2] = Math.pow(2, coords[0]) - 1 - coords[2]; - it('tile ' + coords.join('/'), function(done) { + tape('tile ' + coords.join('/'), function(assert) { loaded.plain_1.getTile(coords[0] | 0, coords[1] | 0, coords[2] | 0, function(err, tile, headers) { if (err) throw err; assert.deepEqual(tile, fs.readFileSync(__dirname + '/fixtures/images/' + file)); assert.equal(headers['Content-Type'], 'image/png'); assert.ok(!isNaN(Date.parse(headers['Last-Modified']))); assert.ok(/\d+-\d+/.test(headers['ETag'])); - done(); + assert.end(); }); }); - it('grid ' + coords.join('/'), function(done) { - loaded.plain_1.getGrid(coords[0] | 0, coords[1] | 0, coords[2] | 0, yieldsError(assert, 'error', 'Grid does not exist', done)); + tape('grid ' + coords.join('/'), function(assert) { + loaded.plain_1.getGrid(coords[0] | 0, coords[1] | 0, coords[2] | 0, yieldsError(assert, 'error', 'Grid does not exist', assert.end)); }); }); [ [0,1,0], @@ -72,8 +69,8 @@ describe('read', function() { [18,2,262140], [4,0,15] ].forEach(function(coords) { - it('tile ' + coords.join('/'), function(done) { - loaded.plain_1.getTile(coords[0], coords[1], coords[2], yieldsError(assert, 'error', 'Tile does not exist', done)); + tape('tile ' + coords.join('/'), function(assert) { + loaded.plain_1.getTile(coords[0], coords[1], coords[2], yieldsError(assert, 'error', 'Tile does not exist', assert.end)); }); }); @@ -84,24 +81,24 @@ describe('read', function() { // Flip Y coordinate because file names are TMS, but .getTile() expects XYZ. coords = [ coords[3], coords[1], coords[2] ]; coords[2] = Math.pow(2, coords[0]) - 1 - coords[2]; - it('grid ' + coords.join('/'), function(done) { + tape('grid ' + coords.join('/'), function(assert) { loaded.plain_2.getGrid(coords[0] | 0, coords[1] | 0, coords[2] | 0, function(err, grid, headers) { if (err) throw err; assert.deepEqual(JSON.stringify(grid), fs.readFileSync(__dirname + '/fixtures/grids/' + file, 'utf8')); assert.equal(headers['Content-Type'], 'text/javascript'); assert.ok(!isNaN(Date.parse(headers['Last-Modified']))); assert.ok(/\d+-\d+/.test(headers['ETag'])); - done(); + assert.end(); }); }); - it('grid alt ' + coords.join('/'), function(done) { + tape('grid alt ' + coords.join('/'), function(assert) { loaded.plain_4.getGrid(coords[0] | 0, coords[1] | 0, coords[2] | 0, function(err, grid, headers) { if (err) throw err; assert.deepEqual(JSON.stringify(grid), fs.readFileSync(__dirname + '/fixtures/grids/' + file, 'utf8')); assert.equal(headers['Content-Type'], 'text/javascript'); assert.ok(!isNaN(Date.parse(headers['Last-Modified']))); assert.ok(/\d+-\d+/.test(headers['ETag'])); - done(); + assert.end(); }); }); }); @@ -113,11 +110,11 @@ describe('read', function() { [18,2,262140], [4,0,15] ].forEach(function(coords) { - it('grid ' + coords.join('/'), function(done) { - loaded.plain_2.getGrid(coords[0], coords[1], coords[2], yieldsError(assert, 'error', 'Grid does not exist', done)); + tape('grid ' + coords.join('/'), function(assert) { + loaded.plain_2.getGrid(coords[0], coords[1], coords[2], yieldsError(assert, 'error', 'Grid does not exist', assert.end)); }); - it('grid alt ' + coords.join('/'), function(done) { - loaded.plain_4.getGrid(coords[0], coords[1], coords[2], yieldsError(assert, 'error', 'Grid does not exist', done)); + tape('grid alt ' + coords.join('/'), function(assert) { + loaded.plain_4.getGrid(coords[0], coords[1], coords[2], yieldsError(assert, 'error', 'Grid does not exist', assert.end)); }); }); [ [0,1,0], @@ -135,11 +132,11 @@ describe('read', function() { [3,0,7], [3,6,2] ].forEach(function(coords) { - it('dne ' + coords.join('/'), function(done) { - loaded.non_existent.getTile(coords[0], coords[1], coords[2], yieldsError(assert, 'error', 'Tile does not exist', done)); + tape('dne ' + coords.join('/'), function(assert) { + loaded.non_existent.getTile(coords[0], coords[1], coords[2], yieldsError(assert, 'error', 'Tile does not exist', assert.end)); }); - it('corrupt ' + coords.join('/'), function(done) { - loaded.corrupt.getTile(coords[0], coords[1], coords[2], yieldsError(assert, 'error', 'SQLITE_CORRUPT: database disk image is malformed', done)); + tape('corrupt ' + coords.join('/'), function(assert) { + loaded.corrupt.getTile(coords[0], coords[1], coords[2], yieldsError(assert, 'error', 'SQLITE_CORRUPT: database disk image is malformed', assert.end)); }); }); -}); + diff --git a/test/write.test.js b/test/write.test.js index bfb1239..d4574e9 100644 --- a/test/write.test.js +++ b/test/write.test.js @@ -1,20 +1,15 @@ require('sqlite3').verbose(); var fs = require('fs'); -var assert = require('assert'); +var tape = require('tape'); var MBTiles = require('..'); var fixtureDir = __dirname + '/fixtures/output'; -describe('write', function() { - before(function(done) { - // Recreate output directory to remove previous tests. - try { fs.unlinkSync(fixtureDir + '/write_1.mbtiles'); } catch(err) {} - try { fs.mkdirSync(fixtureDir, 0755); } catch(err) {} - done(); - }); - it('test mbtiles file creation', function(done) { - this.timeout(20e3); + // Recreate output directory to remove previous tests. + try { fs.unlinkSync(fixtureDir + '/write_1.mbtiles'); } catch(err) {} + try { fs.mkdirSync(fixtureDir, 0755); } catch(err) {} + tape('test mbtiles file creation', function(assert) { var completed = { written: 0, read: 0 }; new MBTiles(fixtureDir + '/write_1.mbtiles', function(err, mbtiles) { completed.open = true; @@ -58,11 +53,10 @@ describe('write', function() { if (err) throw err; assert.deepEqual(tile, fs.readFileSync(__dirname + '/fixtures/images/' + file)); completed.read++; - if (completed.read === 285) done(); + if (completed.read === 285) assert.end(); }); } }); } }); }); -}); diff --git a/test/write_grids.test.js b/test/write_grids.test.js index 5584ce7..c5afa5e 100644 --- a/test/write_grids.test.js +++ b/test/write_grids.test.js @@ -1,19 +1,15 @@ require('sqlite3').verbose(); var fs = require('fs'); -var assert = require('assert'); +var tape = require('tape'); var MBTiles = require('..'); var fixtureDir = __dirname + '/fixtures/output'; -describe('write grids', function() { - before(function(done) { - // Recreate output directory to remove previous tests. - try { fs.unlinkSync(fixtureDir + '/write_2.mbtiles'); } catch(err) {} - try { fs.mkdirSync(fixtureDir, 0755); } catch(err) {} - done(); - }); - it('test mbtiles file creation', function(done) { - this.timeout(20e3); + // Recreate output directory to remove previous tests. + try { fs.unlinkSync(fixtureDir + '/write_2.mbtiles'); } catch(err) {} + try { fs.mkdirSync(fixtureDir, 0755); } catch(err) {} + + tape('test mbtiles file creation', function(assert) { var completed = { written: 0, read: 0 }; new MBTiles(fixtureDir + '/write_2.mbtiles', function(err, mbtiles) { completed.open = true; @@ -57,11 +53,10 @@ describe('write grids', function() { if (err) throw err; assert.deepEqual(JSON.stringify(grid), fs.readFileSync(__dirname + '/fixtures/grids/' + file, 'utf8')); completed.read++; - if (completed.read === 241) done(); + if (completed.read === 241) assert.end(); }); } }); } }); }); -});