diff --git a/lib/mbtiles.js b/lib/mbtiles.js index f7460b5..85c87ff 100644 --- a/lib/mbtiles.js +++ b/lib/mbtiles.js @@ -55,9 +55,6 @@ function MBTiles(uri, callback) { this._batchSize = +uri.query.batch; Step(function() { mbtiles._db = new sqlite3.Database(mbtiles.filename, this); - }, function(err) { - if (err) throw err; - mbtiles._setup(this); }, function(err) { if (err) throw err; fs.stat(mbtiles.filename, this); @@ -216,24 +213,22 @@ MBTiles.prototype.getGrid = function(z, x, y, callback) { if (err) return callback(err); zlib.inflate(!Buffer.isBuffer(row.grid) - ? new Buffer(row.grid, 'binary') - : row.grid - , function(err,buffer) { - if (err) { - return callback(new Error('Grid is invalid:' + err.message)); - } - var data = rows.reduce(function(memo, r) { - memo[r.key_name] = JSON.parse(r.key_json); - return memo; - }, {}); - var result = _(JSON.parse(buffer.toString())).extend({ data: data }); - var options = { - 'Content-Type': 'text/javascript', - 'Last-Modified': new Date(that._stat.mtime).toUTCString(), - 'ETag': that._stat.size + '-' + Number(that._stat.mtime) - }; - callback(null, result, options); - }); + ? new Buffer(row.grid, 'binary') + : row.grid, + function(err,buffer) { + if (err) return callback(new Error('Grid is invalid:' + err.message)); + var data = rows.reduce(function(memo, r) { + memo[r.key_name] = JSON.parse(r.key_json); + return memo; + }, {}); + var result = _(JSON.parse(buffer.toString())).extend({ data: data }); + var options = { + 'Content-Type': 'text/javascript', + 'Last-Modified': new Date(that._stat.mtime).toUTCString(), + 'ETag': that._stat.size + '-' + Number(that._stat.mtime) + }; + callback(null, result, options); + }); } ); }; @@ -397,18 +392,24 @@ MBTiles.prototype.startWriting = function(callback) { if (typeof callback !== 'function') throw new Error('Callback needed'); if (!this.open) return callback(new Error('MBTiles not yet loaded')); - // Sets the synchronous flag to OFF for (much) faster inserts. - // See http://www.sqlite3.org/pragma.html#pragma_synchronous - var mbtiles = this; - if (!this._isWritable) { - this._isWritable = 1; - this._clearCaches(); - this._db.exec('PRAGMA locking_mode = EXCLUSIVE; PRAGMA synchronous=OFF; PRAGMA cache_size = 400000;', callback); - } else { - this._isWritable++; - return callback(null); - } + Step(function() { + mbtiles._setup(this); + }, function(err) { + if (err) throw err; + // Sets the synchronous flag to OFF for (much) faster inserts. + // See http://www.sqlite3.org/pragma.html#pragma_synchronous + if (!mbtiles._isWritable) { + mbtiles._isWritable = 1; + mbtiles._clearCaches(); + mbtiles._db.run('PRAGMA synchronous=OFF', this); + } else { + mbtiles._isWritable++; + this(); + } + }, function(err) { + return callback(err); + }); }; MBTiles.prototype._clearCaches = function() { @@ -517,7 +518,7 @@ MBTiles.prototype.stopWriting = function(callback) { this._commit(function(err) { if (err) return callback(err); if (!mbtiles._isWritable) { - mbtiles._db.exec('PRAGMA journal_mode = DELETE; PRAGMA locking_mode = NORMAL; PRAGMA synchronous=NORMAL; PRAGMA cache_size=2000;', callback); + mbtiles._db.run('PRAGMA synchronous=NORMAL', callback); } else { return callback(null); } diff --git a/package.json b/package.json index ab77dae..f7452fa 100644 --- a/package.json +++ b/package.json @@ -35,6 +35,9 @@ "sphericalmercator": "1.0.x", "underscore": "1.1.x" }, + "devDependencies": { + "expresso": "~0.9.0" + }, "engines": { "node": ">= 0.6.0" }, diff --git a/test/info.test.js b/test/info.test.js index 2c269d7..c6467b2 100644 --- a/test/info.test.js +++ b/test/info.test.js @@ -2,7 +2,6 @@ process.env.NODE_ENV = 'test'; var fs = require('fs'); var Step = require('step'); -var assert = require('assert'); var MBTiles = require('..'); var fixtures = { @@ -13,7 +12,7 @@ var fixtures = { try { fs.unlink(fixtures.empty); } catch (err) {} -exports['get metadata'] = function(beforeExit) { +exports['get metadata'] = function(beforeExit, assert) { var completed = false; new MBTiles(fixtures.plain_1, function(err, mbtiles) { @@ -48,7 +47,7 @@ exports['get metadata'] = function(beforeExit) { }); }; -exports['get/put metadata from empty file'] = function(beforeExit) { +exports['get/put metadata from empty file'] = function(beforeExit, assert) { var completion = {}; new MBTiles(fixtures.empty, function(err, mbtiles) { @@ -61,7 +60,7 @@ exports['get/put metadata from empty file'] = function(beforeExit) { assert.deepEqual({ basename: "empty.mbtiles", - filesize: 16384, + filesize: 0, id: "empty", scheme: "tms" }, data); @@ -89,7 +88,7 @@ exports['get/put metadata from empty file'] = function(beforeExit) { assert.deepEqual({ basename: "empty.mbtiles", - filesize: 16384, + filesize: 0, id: "empty", scheme: "tms", version: "1.0.0" diff --git a/test/list.test.js b/test/list.test.js index 0722a17..3a3523f 100644 --- a/test/list.test.js +++ b/test/list.test.js @@ -2,7 +2,6 @@ process.env.NODE_ENV = 'test'; var fs = require('fs'); var Step = require('step'); -var assert = require('assert'); var MBTiles = require('..'); var fixtures = { @@ -12,17 +11,17 @@ var fixtures = { try { fs.unlink(fixtures.doesnotexist); } catch (err) {} -exports['list'] = function(beforeExit) { +exports['list'] = function(beforeExit, assert) { var completed = false; beforeExit(function() { assert.ok(completed); }); MBTiles.list(fixtures.doesnotexist, function(err, list) { assert.ok(err); - assert.equal(err.message, 'ENOENT, No such file or directory'); + assert.ok(err.code.match(/^ENOENT/)); MBTiles.list(fixtures.doesnotexist, function(err, list) { completed = true; assert.ok(err); - assert.equal(err.message, 'ENOENT, No such file or directory'); + assert.ok(err.code.match(/^ENOENT/)); }); }); }; diff --git a/test/read.test.js b/test/read.test.js index ec57212..b0f4ac5 100644 --- a/test/read.test.js +++ b/test/read.test.js @@ -1,7 +1,6 @@ process.env.NODE_ENV = 'test'; var fs = require('fs'); -var assert = require('assert'); var MBTiles = require('..'); @@ -16,15 +15,17 @@ var fixtures = { try { fs.unlink(fixtures.non_existent); } catch (err) {} -function yieldsError(status, error, msg) { +function yieldsError(assert, status, error, msg) { return function(err) { assert.ok(err); - assert.equal(err.message, msg); + var re = new RegExp( "^" + msg, "i"); + assert.ok(err.message.match(re)); status[error]++; }; } -exports['get tiles'] = function(beforeExit) { + +exports['get tiles'] = function(beforeExit, assert) { var status = { success: 0, error: 0 @@ -48,13 +49,13 @@ exports['get tiles'] = function(beforeExit) { } }); - mbtiles.getTile(0, 1, 0, yieldsError(status, 'error', 'Tile does not exist')); - mbtiles.getTile(-1, 0, 0, yieldsError(status, 'error', 'Tile does not exist')); - mbtiles.getTile(0, 0, 1, yieldsError(status, 'error', 'Tile does not exist')); - mbtiles.getTile(3, 1, -1, yieldsError(status, 'error', 'Tile does not exist')); - mbtiles.getTile(2, -3, 3, yieldsError(status, 'error', 'Tile does not exist')); - mbtiles.getTile(18, 2, 262140, yieldsError(status, 'error', 'Tile does not exist')); - mbtiles.getTile(4, 0, 15, yieldsError(status, 'error', 'Tile does not exist')); + mbtiles.getTile(0, 1, 0, yieldsError(assert, status, 'error', 'Tile does not exist')); + mbtiles.getTile(-1, 0, 0, yieldsError(assert, status, 'error', 'Tile does not exist')); + mbtiles.getTile(0, 0, 1, yieldsError(assert, status, 'error', 'Tile does not exist')); + mbtiles.getTile(3, 1, -1, yieldsError(assert, status, 'error', 'Tile does not exist')); + mbtiles.getTile(2, -3, 3, yieldsError(assert, status, 'error', 'Tile does not exist')); + mbtiles.getTile(18, 2, 262140, yieldsError(assert, status, 'error', 'Tile does not exist')); + mbtiles.getTile(4, 0, 15, yieldsError(assert, status, 'error', 'Tile does not exist')); }); @@ -64,7 +65,7 @@ exports['get tiles'] = function(beforeExit) { }); }; -exports['get grids'] = function(beforeExit) { +exports['get grids'] = function(beforeExit, assert) { var status = { success: 0, error: 0 @@ -88,13 +89,13 @@ exports['get grids'] = function(beforeExit) { } }); - mbtiles.getGrid(0, 1, 0, yieldsError(status, 'error', 'Grid does not exist')); - mbtiles.getGrid(-1, 0, 0, yieldsError(status, 'error', 'Grid does not exist')); - mbtiles.getGrid(0, 0, 1, yieldsError(status, 'error', 'Grid does not exist')); - mbtiles.getGrid(3, 1, -1, yieldsError(status, 'error', 'Grid does not exist')); - mbtiles.getGrid(2, -3, 3, yieldsError(status, 'error', 'Grid does not exist')); - mbtiles.getGrid(18, 2, 262140, yieldsError(status, 'error', 'Grid does not exist')); - mbtiles.getGrid(4, 0, 15, yieldsError(status, 'error', 'Grid does not exist')); + mbtiles.getGrid(0, 1, 0, yieldsError(assert, status, 'error', 'Grid does not exist')); + mbtiles.getGrid(-1, 0, 0, yieldsError(assert, status, 'error', 'Grid does not exist')); + mbtiles.getGrid(0, 0, 1, yieldsError(assert, status, 'error', 'Grid does not exist')); + mbtiles.getGrid(3, 1, -1, yieldsError(assert, status, 'error', 'Grid does not exist')); + mbtiles.getGrid(2, -3, 3, yieldsError(assert, status, 'error', 'Grid does not exist')); + mbtiles.getGrid(18, 2, 262140, yieldsError(assert, status, 'error', 'Grid does not exist')); + mbtiles.getGrid(4, 0, 15, yieldsError(assert, status, 'error', 'Grid does not exist')); }); @@ -105,7 +106,7 @@ exports['get grids'] = function(beforeExit) { }; -exports['get grids from file without interaction'] = function(beforeExit) { +exports['get grids from file without interaction'] = function(beforeExit, assert) { var status = { success: 0, error: 0 @@ -113,20 +114,20 @@ exports['get grids from file without interaction'] = function(beforeExit) { new MBTiles(fixtures.plain_1, function(err, mbtiles) { if (err) throw err; - mbtiles.getGrid(0, 1, 0, yieldsError(status, 'error', 'Grid does not exist')); - mbtiles.getGrid(-1, 0, 0, yieldsError(status, 'error', 'Grid does not exist')); - mbtiles.getGrid(0, 0, -1, yieldsError(status, 'error', 'Grid does not exist')); - mbtiles.getGrid(3, 1, 8, yieldsError(status, 'error', 'Grid does not exist')); - mbtiles.getGrid(2, -3, 0, yieldsError(status, 'error', 'Grid does not exist')); - mbtiles.getGrid(18, 2, 3, yieldsError(status, 'error', 'Grid does not exist')); - mbtiles.getGrid(4, 0, 0, yieldsError(status, 'error', 'Grid does not exist')); - mbtiles.getGrid(4, 3, 8, yieldsError(status, 'error', 'Grid does not exist')); - mbtiles.getGrid(4, 4, 8, yieldsError(status, 'error', 'Grid does not exist')); - mbtiles.getGrid(4, 5, 8, yieldsError(status, 'error', 'Grid does not exist')); - mbtiles.getGrid(4, 13, 4, yieldsError(status, 'error', 'Grid does not exist')); - mbtiles.getGrid(4, 0, 14, yieldsError(status, 'error', 'Grid does not exist')); - mbtiles.getGrid(3, 0, 7, yieldsError(status, 'error', 'Grid does not exist')); - mbtiles.getGrid(3, 6, 2, yieldsError(status, 'error', 'Grid does not exist')); + mbtiles.getGrid(0, 1, 0, yieldsError(assert, status, 'error', 'Grid does not exist')); + mbtiles.getGrid(-1, 0, 0, yieldsError(assert, status, 'error', 'Grid does not exist')); + mbtiles.getGrid(0, 0, -1, yieldsError(assert, status, 'error', 'Grid does not exist')); + mbtiles.getGrid(3, 1, 8, yieldsError(assert, status, 'error', 'Grid does not exist')); + mbtiles.getGrid(2, -3, 0, yieldsError(assert, status, 'error', 'Grid does not exist')); + mbtiles.getGrid(18, 2, 3, yieldsError(assert, status, 'error', 'Grid does not exist')); + mbtiles.getGrid(4, 0, 0, yieldsError(assert, status, 'error', 'Grid does not exist')); + mbtiles.getGrid(4, 3, 8, yieldsError(assert, status, 'error', 'Grid does not exist')); + mbtiles.getGrid(4, 4, 8, yieldsError(assert, status, 'error', 'Grid does not exist')); + mbtiles.getGrid(4, 5, 8, yieldsError(assert, status, 'error', 'Grid does not exist')); + mbtiles.getGrid(4, 13, 4, yieldsError(assert, status, 'error', 'Grid does not exist')); + mbtiles.getGrid(4, 0, 14, yieldsError(assert, status, 'error', 'Grid does not exist')); + mbtiles.getGrid(3, 0, 7, yieldsError(assert, status, 'error', 'Grid does not exist')); + mbtiles.getGrid(3, 6, 2, yieldsError(assert, status, 'error', 'Grid does not exist')); }); beforeExit(function() { @@ -135,7 +136,7 @@ exports['get grids from file without interaction'] = function(beforeExit) { }); }; -exports['get grids with different schema'] = function(beforeExit) { +exports['get grids with different schema'] = function(beforeExit, assert) { var status = { success: 0, error: 0 @@ -156,13 +157,13 @@ exports['get grids with different schema'] = function(beforeExit) { } }); - mbtiles.getGrid(0, 1, 0, yieldsError(status, 'error', 'Grid does not exist')); - mbtiles.getGrid(-1, 0, 0, yieldsError(status, 'error', 'Grid does not exist')); - mbtiles.getGrid(0, 0, 1, yieldsError(status, 'error', 'Grid does not exist')); - mbtiles.getGrid(3, 1, -1, yieldsError(status, 'error', 'Grid does not exist')); - mbtiles.getGrid(2, -3, 3, yieldsError(status, 'error', 'Grid does not exist')); - mbtiles.getGrid(18, 2, 262140, yieldsError(status, 'error', 'Grid does not exist')); - mbtiles.getGrid(4, 0, 15, yieldsError(status, 'error', 'Grid does not exist')); + mbtiles.getGrid(0, 1, 0, yieldsError(assert, status, 'error', 'Grid does not exist')); + mbtiles.getGrid(-1, 0, 0, yieldsError(assert, status, 'error', 'Grid does not exist')); + mbtiles.getGrid(0, 0, 1, yieldsError(assert, status, 'error', 'Grid does not exist')); + mbtiles.getGrid(3, 1, -1, yieldsError(assert, status, 'error', 'Grid does not exist')); + mbtiles.getGrid(2, -3, 3, yieldsError(assert, status, 'error', 'Grid does not exist')); + mbtiles.getGrid(18, 2, 262140, yieldsError(assert, status, 'error', 'Grid does not exist')); + mbtiles.getGrid(4, 0, 15, yieldsError(assert, status, 'error', 'Grid does not exist')); }); beforeExit(function() { @@ -172,7 +173,7 @@ exports['get grids with different schema'] = function(beforeExit) { }; -exports['get grids from file without interaction'] = function(beforeExit) { +exports['get grids from file without interaction'] = function(beforeExit, assert) { var status = { success: 0, error: 0 @@ -180,20 +181,20 @@ exports['get grids from file without interaction'] = function(beforeExit) { new MBTiles(fixtures.plain_1, function(err, mbtiles) { if (err) throw err; - mbtiles.getGrid(0, 1, 0, yieldsError(status, 'error', 'Grid does not exist')); - mbtiles.getGrid(-1, 0, 0, yieldsError(status, 'error', 'Grid does not exist')); - mbtiles.getGrid(0, 0, -1, yieldsError(status, 'error', 'Grid does not exist')); - mbtiles.getGrid(3, 1, 8, yieldsError(status, 'error', 'Grid does not exist')); - mbtiles.getGrid(2, -3, 0, yieldsError(status, 'error', 'Grid does not exist')); - mbtiles.getGrid(18, 2, 3, yieldsError(status, 'error', 'Grid does not exist')); - mbtiles.getGrid(4, 0, 0, yieldsError(status, 'error', 'Grid does not exist')); - mbtiles.getGrid(4, 3, 8, yieldsError(status, 'error', 'Grid does not exist')); - mbtiles.getGrid(4, 4, 8, yieldsError(status, 'error', 'Grid does not exist')); - mbtiles.getGrid(4, 5, 8, yieldsError(status, 'error', 'Grid does not exist')); - mbtiles.getGrid(4, 13, 4, yieldsError(status, 'error', 'Grid does not exist')); - mbtiles.getGrid(4, 0, 14, yieldsError(status, 'error', 'Grid does not exist')); - mbtiles.getGrid(3, 0, 7, yieldsError(status, 'error', 'Grid does not exist')); - mbtiles.getGrid(3, 6, 2, yieldsError(status, 'error', 'Grid does not exist')); + mbtiles.getGrid(0, 1, 0, yieldsError(assert, status, 'error', 'Grid does not exist')); + mbtiles.getGrid(-1, 0, 0, yieldsError(assert, status, 'error', 'Grid does not exist')); + mbtiles.getGrid(0, 0, -1, yieldsError(assert, status, 'error', 'Grid does not exist')); + mbtiles.getGrid(3, 1, 8, yieldsError(assert, status, 'error', 'Grid does not exist')); + mbtiles.getGrid(2, -3, 0, yieldsError(assert, status, 'error', 'Grid does not exist')); + mbtiles.getGrid(18, 2, 3, yieldsError(assert, status, 'error', 'Grid does not exist')); + mbtiles.getGrid(4, 0, 0, yieldsError(assert, status, 'error', 'Grid does not exist')); + mbtiles.getGrid(4, 3, 8, yieldsError(assert, status, 'error', 'Grid does not exist')); + mbtiles.getGrid(4, 4, 8, yieldsError(assert, status, 'error', 'Grid does not exist')); + mbtiles.getGrid(4, 5, 8, yieldsError(assert, status, 'error', 'Grid does not exist')); + mbtiles.getGrid(4, 13, 4, yieldsError(assert, status, 'error', 'Grid does not exist')); + mbtiles.getGrid(4, 0, 14, yieldsError(assert, status, 'error', 'Grid does not exist')); + mbtiles.getGrid(3, 0, 7, yieldsError(assert, status, 'error', 'Grid does not exist')); + mbtiles.getGrid(3, 6, 2, yieldsError(assert, status, 'error', 'Grid does not exist')); }); beforeExit(function() { @@ -202,7 +203,7 @@ exports['get grids from file without interaction'] = function(beforeExit) { }); }; -exports['get tiles from non-existent file'] = function(beforeExit) { +exports['get tiles from non-existent file'] = function(beforeExit, assert) { var status = { success: 0, error: 0 @@ -210,20 +211,20 @@ exports['get tiles from non-existent file'] = function(beforeExit) { new MBTiles(fixtures.non_existent, function(err, mbtiles) { if (err) throw err; - mbtiles.getTile(0, 1, 0, yieldsError(status, 'error', 'Tile does not exist')); - mbtiles.getTile(-1, 0, 0, yieldsError(status, 'error', 'Tile does not exist')); - mbtiles.getTile(0, 0, -1, yieldsError(status, 'error', 'Tile does not exist')); - mbtiles.getTile(3, 1, 8, yieldsError(status, 'error', 'Tile does not exist')); - mbtiles.getTile(2, -3, 0, yieldsError(status, 'error', 'Tile does not exist')); - mbtiles.getTile(18, 2, 3, yieldsError(status, 'error', 'Tile does not exist')); - mbtiles.getTile(4, 0, 0, yieldsError(status, 'error', 'Tile does not exist')); - mbtiles.getTile(4, 3, 8, yieldsError(status, 'error', 'Tile does not exist')); - mbtiles.getTile(4, 4, 8, yieldsError(status, 'error', 'Tile does not exist')); - mbtiles.getTile(4, 5, 8, yieldsError(status, 'error', 'Tile does not exist')); - mbtiles.getTile(4, 13, 4, yieldsError(status, 'error', 'Tile does not exist')); - mbtiles.getTile(4, 0, 14, yieldsError(status, 'error', 'Tile does not exist')); - mbtiles.getTile(3, 0, 7, yieldsError(status, 'error', 'Tile does not exist')); - mbtiles.getTile(3, 6, 2, yieldsError(status, 'error', 'Tile does not exist')); + mbtiles.getTile(0, 1, 0, yieldsError(assert, status, 'error', 'Tile does not exist')); + mbtiles.getTile(-1, 0, 0, yieldsError(assert, status, 'error', 'Tile does not exist')); + mbtiles.getTile(0, 0, -1, yieldsError(assert, status, 'error', 'Tile does not exist')); + mbtiles.getTile(3, 1, 8, yieldsError(assert, status, 'error', 'Tile does not exist')); + mbtiles.getTile(2, -3, 0, yieldsError(assert, status, 'error', 'Tile does not exist')); + mbtiles.getTile(18, 2, 3, yieldsError(assert, status, 'error', 'Tile does not exist')); + mbtiles.getTile(4, 0, 0, yieldsError(assert, status, 'error', 'Tile does not exist')); + mbtiles.getTile(4, 3, 8, yieldsError(assert, status, 'error', 'Tile does not exist')); + mbtiles.getTile(4, 4, 8, yieldsError(assert, status, 'error', 'Tile does not exist')); + mbtiles.getTile(4, 5, 8, yieldsError(assert, status, 'error', 'Tile does not exist')); + mbtiles.getTile(4, 13, 4, yieldsError(assert, status, 'error', 'Tile does not exist')); + mbtiles.getTile(4, 0, 14, yieldsError(assert, status, 'error', 'Tile does not exist')); + mbtiles.getTile(3, 0, 7, yieldsError(assert, status, 'error', 'Tile does not exist')); + mbtiles.getTile(3, 6, 2, yieldsError(assert, status, 'error', 'Tile does not exist')); }); beforeExit(function() { @@ -232,7 +233,7 @@ exports['get tiles from non-existent file'] = function(beforeExit) { }); }; -exports['get tiles from corrupt file'] = function(beforeExit) { +exports['get tiles from corrupt file'] = function(beforeExit, assert) { var status = { success: 0, error: 0 @@ -251,3 +252,5 @@ exports['get tiles from corrupt file'] = function(beforeExit) { ); }); }; + + diff --git a/test/reloading.test.js b/test/reloading.test.js index aaef635..ae46856 100644 --- a/test/reloading.test.js +++ b/test/reloading.test.js @@ -1,7 +1,6 @@ process.env.NODE_ENV = 'test'; var fs = require('fs'); -var assert = require('assert'); var MBTiles = require('..'); var fixtureDir = __dirname + '/fixtures/output'; @@ -17,7 +16,7 @@ var file = fs.readFileSync(fixtures.source); try { fs.unlinkSync(fixtures.destination); } catch(err) {} try { fs.mkdirSync(fixtureDir, 0755); } catch(err) {} -exports['test file reloading during copying'] = function(beforeExit) { +exports['test file reloading during copying'] = function(beforeExit, assert) { var completed = false; var status = { success: 0, diff --git a/test/write.test.js b/test/write.test.js index 11b6b3b..bfc2666 100644 --- a/test/write.test.js +++ b/test/write.test.js @@ -10,7 +10,7 @@ var fixtureDir = __dirname + '/fixtures/output'; try { fs.unlinkSync(fixtureDir + '/write_1.mbtiles'); } catch(err) {} try { fs.mkdirSync(fixtureDir, 0755); } catch(err) {} -exports['test mbtiles file creation'] = function(beforeExit) { +exports['test mbtiles file creation'] = function(beforeExit, assert) { var completed = { written: 0, read: 0 }; new MBTiles(fixtureDir + '/write_1.mbtiles', function(err, mbtiles) { completed.open = true; @@ -30,20 +30,17 @@ exports['test mbtiles file creation'] = function(beforeExit) { // Flip Y coordinate because file names are TMS, but .putTile() expects XYZ. coords[2] = Math.pow(2, coords[3]) - 1 - coords[2]; - fs.readFile(__dirname + '/fixtures/images/' + file, function(err, tile) { + var tile = fs.readFileSync(__dirname + '/fixtures/images/' + file); + mbtiles.putTile(coords[3] | 0, coords[1] | 0, coords[2] | 0, tile, function(err) { if (err) throw err; - - mbtiles.putTile(coords[3] | 0, coords[1] | 0, coords[2] | 0, tile, function(err) { - if (err) throw err; - completed.written++; - if (completed.written === 285) { - mbtiles.stopWriting(function(err) { - completed.stopped = true; - if (err) throw err; - verifyWritten(); - }); - } - }); + completed.written++; + if (completed.written === 285) { + mbtiles.stopWriting(function(err) { + completed.stopped = true; + if (err) throw err; + verifyWritten(); + }); + } }); } diff --git a/test/write_grids.test.js b/test/write_grids.test.js index 4d30c1e..a7a453e 100644 --- a/test/write_grids.test.js +++ b/test/write_grids.test.js @@ -1,7 +1,6 @@ process.env.NODE_ENV = 'test'; var fs = require('fs'); -var assert = require('assert'); var MBTiles = require('..'); var fixtureDir = __dirname + '/fixtures/output'; @@ -10,7 +9,7 @@ var fixtureDir = __dirname + '/fixtures/output'; try { fs.unlinkSync(fixtureDir + '/write_2.mbtiles'); } catch(err) {} try { fs.mkdirSync(fixtureDir, 0755); } catch(err) {} -exports['test mbtiles file creation'] = function(beforeExit) { +exports['test mbtiles file creation'] = function(beforeExit, assert) { var completed = { written: 0, read: 0 }; new MBTiles(fixtureDir + '/write_2.mbtiles', function(err, mbtiles) { completed.open = true; @@ -30,20 +29,17 @@ exports['test mbtiles file creation'] = function(beforeExit) { // Flip Y coordinate because file names are TMS, but .putGrid() expects XYZ. coords[2] = Math.pow(2, coords[3]) - 1 - coords[2]; - fs.readFile(__dirname + '/fixtures/grids/' + file, 'utf8', function(err, grid) { + var grid = fs.readFileSync(__dirname + '/fixtures/grids/' + file, 'utf8'); + mbtiles.putGrid(coords[3] | 0, coords[1] | 0, coords[2] | 0, JSON.parse(grid), function(err) { if (err) throw err; - - mbtiles.putGrid(coords[3] | 0, coords[1] | 0, coords[2] | 0, JSON.parse(grid), function(err) { - if (err) throw err; - completed.written++; - if (completed.written === 241) { - mbtiles.stopWriting(function(err) { - completed.stopped = true; - if (err) throw err; - verifyWritten(); - }); - } - }); + completed.written++; + if (completed.written === 241) { + mbtiles.stopWriting(function(err) { + completed.stopped = true; + if (err) throw err; + verifyWritten(); + }); + } }); }