change tests to new interface

This commit is contained in:
Konstantin Käfer
2011-06-27 19:29:08 +02:00
parent c85cd5d6de
commit e643a5bbc0
4 changed files with 116 additions and 130 deletions

View File

@@ -4,9 +4,14 @@ var _ = require('underscore'),
crypto = require('crypto'),
zlib = require('zlib'),
path = require('path'),
url = require('url'),
sm = new (require('sphericalmercator')),
sqlite3 = require('sqlite3');
function noop(err) {
if (err) throw err;
}
// MBTiles
// -------
// MBTiles class for doing common operations (schema setup, tile reading,
@@ -18,6 +23,9 @@ module.exports = MBTiles;
// - callback: Will be called when the resources have been acquired
// or acquisition failed.
function MBTiles(uri, callback) {
if (typeof callback !== 'function') callback = noop;
if (typeof uri === 'string') uri = url.parse(uri);
this.filename = uri.pathname;
this.db = new sqlite3.cached.Database(uri.pathname, function(err) {
if (err) return callback(err);
@@ -27,6 +35,10 @@ function MBTiles(uri, callback) {
// Finds all mbtiles file in the filepath and returns their tilesource URI.
MBTiles.list = function(filepath, callback) {
if (typeof callback !== 'function') {
throw new Error('Callback required as second argument');
}
filepath = path.resolve(filepath);
fs.readdir(filepath, function(err, files) {
if (err) return callback(err);
@@ -41,6 +53,10 @@ MBTiles.list = function(filepath, callback) {
// Finds an mbtiles file with the given ID in the filepath and returns a
// tilesource URI.
MBTiles.findID = function(filepath, id, callback) {
if (typeof callback !== 'function') {
throw new Error('Callback required as third argument');
}
filepath = path.resolve(filepath);
var file = path.join(filepath, id + '.mbtiles');
fs.stat(file, function(err, stats) {
@@ -52,6 +68,10 @@ MBTiles.findID = function(filepath, id, callback) {
// Retrieve the schema of the current mbtiles database and inform the caller of
// whether the specified table exists.
MBTiles.prototype.exists = function(table, callback) {
if (typeof callback !== 'function') {
throw new Error('Callback required as second argument');
}
if (this.schema) {
return callback(null, _(this.schema).include(table));
} else {
@@ -71,6 +91,10 @@ MBTiles.prototype.exists = function(table, callback) {
// DB integrity check.
MBTiles.prototype.integrity = function(callback) {
if (typeof callback !== 'function') {
throw new Error('Callback required as first argument');
}
this.db.get('PRAGMA quick_check(1)', function(err, row) {
if (!(row && row.integrity_check && row.integrity_check === 'ok')) {
callback(new Error('Corrupted database.'));
@@ -84,6 +108,10 @@ MBTiles.prototype.integrity = function(callback) {
// Sets the synchronous flag to OFF for (much) faster inserts.
// See http://www.sqlite3.org/pragma.html#pragma_synchronous
MBTiles.prototype.setup = function(callback) {
if (typeof callback !== 'function') {
throw new Error('Callback required as second argument');
}
fs.readFile(__dirname + '/schema.sql', 'utf8', function(err, sql) {
if (err) return callback(err);
this.db.serialize(function() {
@@ -100,6 +128,8 @@ MBTiles.prototype.setup = function(callback) {
// has key/value pairs as a hash corresponding to column name and row value.
// - `callback` Function.
MBTiles.prototype.insert = function(table, objects, callback) {
if (typeof callback !== 'function') callback = noop;
if (!objects.length) return callback(null);
var keys = _(objects[0]).keys();
var placeholders = [];
@@ -120,6 +150,8 @@ MBTiles.prototype.insert = function(table, objects, callback) {
// - @param {Object} metadata key, value hash of metadata to be inserted.
// - @param {Function} callback
MBTiles.prototype.insertMetadata = function(data, callback) {
if (typeof callback !== 'function') callback = noop;
var metadata = _(data).map(function(value, key) {
return { name: key, value: value};
});
@@ -168,6 +200,8 @@ MBTiles.prototype.insertTiles = function(data, callback) {
// be an object of the form { z: z, x: x, y: y, data: [Image buffer], keys: [] }.
// - @param {Function} callback
MBTiles.prototype.insertGrids = function(data, callback) {
if (typeof callback !== 'function') callback = noop;
var that = this,
map = [],
grids = [],
@@ -221,6 +255,8 @@ MBTiles.prototype.insertGrids = function(data, callback) {
// - @param {Object} tile tile object to be inserted.
// - @param {Function} callback
MBTiles.prototype.insertGridTiles = function(map, callback) {
if (typeof callback !== 'function') callback = noop;
var stmt = this.db.prepare('UPDATE OR REPLACE map SET grid_id = ? WHERE ' +
' zoom_level = ? AND tile_column = ? AND tile_row = ?');
@@ -243,6 +279,8 @@ MBTiles.prototype.insertGridTiles = function(map, callback) {
// - @param {Number} z tile z coordinate.
// - @param {Function} callback
MBTiles.prototype.getTile = function(x, y, z, callback) {
if (typeof callback !== 'function') callback = noop;
var mbtiles = this;
this.db.get('SELECT tile_data FROM tiles WHERE ' +
'zoom_level = ? AND tile_column = ? AND tile_row = ?',
@@ -261,6 +299,8 @@ MBTiles.prototype.getTile = function(x, y, z, callback) {
// - @param {Number} z tile z coordinate
// - @param {Function} callback
MBTiles.prototype.getGrid = function(x, y, z, callback) {
if (typeof callback !== 'function') callback = noop;
var that = this;
Step(
function() {
@@ -276,7 +316,9 @@ MBTiles.prototype.getGrid = function(x, y, z, callback) {
);
},
function(err, row, rows) {
if ((!row || !row.grid) || (err && err.errno == 1)) return callback('Grid does not exist');
if ((!row || !row.grid) || (err && err.errno == 1)) {
return callback(new Error('Grid does not exist'));
}
if (err) return callback(err);
try {
@@ -301,6 +343,8 @@ MBTiles.prototype.getGrid = function(x, y, z, callback) {
//
// - @param {Function} callback
MBTiles.prototype.metadata = function(key, callback) {
if (typeof callback !== 'function') callback = noop;
this.db.get('SELECT value FROM metadata WHERE name = ?',
key,
function(err, row) {
@@ -314,6 +358,8 @@ MBTiles.prototype.metadata = function(key, callback) {
// performing fallback queries if certain keys (like `bounds`, `minzoom`,
// `maxzoom`) have not been provided.
MBTiles.prototype.getInfo = function(callback) {
if (typeof callback !== 'function') callback = noop;
var that = this;
var info = {};
info.basename = path.basename(that.filename);

View File

@@ -1,61 +0,0 @@
var assert = require('assert');
var MBTiles = require('..').MBTiles;
var fixture = __dirname + '/fixtures/online.mbtiles';
exports['get online metadata'] = function(beforeExit) {
var completion = {};
var mbtiles = new MBTiles(fixture);
mbtiles.metadata('name', function(err, value) { if (err) throw err; completion.name = value; });
mbtiles.metadata('type', function(err, value) { if (err) throw err; completion.type = value; });
mbtiles.metadata('description', function(err, value) { if (err) throw err; completion.description = value; });
mbtiles.metadata('version', function(err, value) { if (err) throw err; completion.version = value; });
mbtiles.metadata('formatter', function(err, value) { if (err) throw err; completion.formatter = value; });
mbtiles.metadata('bounds', function(err, value) { if (err) throw err; completion.bounds = value; });
mbtiles.metadata('online', function(err, value) { if (err) throw err; completion.online = value; });
mbtiles.metadata('invalid', function(err, value) { completion.invalid = err.message; });
beforeExit(function() {
assert.deepEqual(completion, {
name: 'MapQuest streets',
type: 'baselayer',
description: 'MapQuests OpenStreetMap based street level tiles.',
version: '1.0.0',
formatter: null,
bounds: '-180,-90,180,90',
online: 'http://otile1.mqcdn.com/tiles/1.0.0/osm/%z/%x/%y.png',
invalid: 'Key does not exist'
});
});
};
exports['get online tiles'] = function(beforeExit) {
var status = {
success: 0,
error: 0
};
var mbtiles = new MBTiles(fixture);
mbtiles.db.serialize(function() {
mbtiles.db.run("DELETE FROM map");
mbtiles.db.run("DELETE FROM images");
});
mbtiles.tile(0, 0, 0, function(err, tile) {
if (err) throw new Error(err);
status.success++;
});
mbtiles.tile(0, 0, 18, function(err, tile) {
if (err) throw new Error(err);
status.success++;
});
beforeExit(function() {
assert.equal(status.success, 2);
assert.equal(status.error, 0);
});
};

View File

@@ -1,6 +1,6 @@
var fs = require('fs');
var assert = require('assert');
var MBTiles = require('..').MBTiles;
var MBTiles = require('..');
var fixtures = {
plain_1: __dirname + '/fixtures/plain_1.mbtiles',
@@ -36,6 +36,7 @@ exports['get metadata'] = function(beforeExit) {
function yieldsError(status, error, msg) {
return function(err) {
assert.ok(err);
assert.equal(err.message, msg);
status[error]++;
};
@@ -51,7 +52,7 @@ exports['get tiles'] = function(beforeExit) {
fs.readdirSync(__dirname + '/fixtures/images/').forEach(function(file) {
var coords = file.match(/^plain_1_(\d+)_(\d+)_(\d+).png$/);
if (coords) {
mbtiles.tile(coords[1] | 0, coords[2] | 0, coords[3] | 0, function(err, tile) {
mbtiles.getTile(coords[1] | 0, coords[2] | 0, coords[3] | 0, function(err, tile) {
if (err) throw err;
assert.deepEqual(tile, fs.readFileSync(__dirname + '/fixtures/images/' + file));
status.success++;
@@ -59,13 +60,13 @@ exports['get tiles'] = function(beforeExit) {
}
});
mbtiles.tile(1, 0, 0, yieldsError(status, 'error', 'Tile does not exist'));
mbtiles.tile(0, 0, -1, yieldsError(status, 'error', 'Tile does not exist'));
mbtiles.tile(0, -1, 0, yieldsError(status, 'error', 'Tile does not exist'));
mbtiles.tile(1, 8, 3, yieldsError(status, 'error', 'Tile does not exist'));
mbtiles.tile(-3, 0, 2, yieldsError(status, 'error', 'Tile does not exist'));
mbtiles.tile(2, 3, 18, yieldsError(status, 'error', 'Tile does not exist'));
mbtiles.tile(0, 0, 4, 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(0, -1, 0, yieldsError(status, 'error', 'Tile does not exist'));
mbtiles.getTile(1, 8, 3, yieldsError(status, 'error', 'Tile does not exist'));
mbtiles.getTile(-3, 0, 2, yieldsError(status, 'error', 'Tile does not exist'));
mbtiles.getTile(2, 3, 18, yieldsError(status, 'error', 'Tile does not exist'));
mbtiles.getTile(0, 0, 4, yieldsError(status, 'error', 'Tile does not exist'));
beforeExit(function() {
assert.equal(status.success, 285);
@@ -83,7 +84,7 @@ exports['get grids'] = function(beforeExit) {
fs.readdirSync(__dirname + '/fixtures/grids/').forEach(function(file) {
var coords = file.match(/^plain_2_(\d+)_(\d+)_(\d+).json$/);
if (coords) {
mbtiles.grid(coords[1] | 0, coords[2] | 0, coords[3] | 0, function(err, grid) {
mbtiles.getGrid(coords[1] | 0, coords[2] | 0, coords[3] | 0, function(err, grid) {
if (err) throw err;
assert.deepEqual(JSON.stringify(grid), fs.readFileSync(__dirname + '/fixtures/grids/' + file, 'utf8'));
status.success++;
@@ -91,21 +92,21 @@ exports['get grids'] = function(beforeExit) {
}
});
mbtiles.grid(1, 0, 0, yieldsError(status, 'error', 'Grid does not exist'));
mbtiles.grid(0, 0, -1, yieldsError(status, 'error', 'Grid does not exist'));
mbtiles.grid(0, -1, 0, yieldsError(status, 'error', 'Grid does not exist'));
mbtiles.grid(1, 8, 3, yieldsError(status, 'error', 'Grid does not exist'));
mbtiles.grid(-3, 0, 2, yieldsError(status, 'error', 'Grid does not exist'));
mbtiles.grid(2, 3, 18, yieldsError(status, 'error', 'Grid does not exist'));
mbtiles.grid(0, 0, 4, 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(0, -1, 0, yieldsError(status, 'error', 'Grid does not exist'));
mbtiles.getGrid(1, 8, 3, yieldsError(status, 'error', 'Grid does not exist'));
mbtiles.getGrid(-3, 0, 2, yieldsError(status, 'error', 'Grid does not exist'));
mbtiles.getGrid(2, 3, 18, yieldsError(status, 'error', 'Grid does not exist'));
mbtiles.getGrid(0, 0, 4, yieldsError(status, 'error', 'Grid does not exist'));
mbtiles.grid(3, 8, 4, yieldsError(status, 'error', 'Grid is invalid'));
mbtiles.grid(4, 8, 4, yieldsError(status, 'error', 'Grid is invalid'));
mbtiles.grid(5, 8, 4, yieldsError(status, 'error', 'Grid is invalid'));
mbtiles.grid(13, 4, 4, yieldsError(status, 'error', 'Grid is invalid'));
mbtiles.grid(0, 14, 4, yieldsError(status, 'error', 'Grid is invalid'));
mbtiles.grid(0, 7, 3, yieldsError(status, 'error', 'Grid is invalid'));
mbtiles.grid(6, 2, 3, yieldsError(status, 'error', 'Grid is invalid'));
mbtiles.getGrid(3, 8, 4, yieldsError(status, 'error', 'Grid is invalid'));
mbtiles.getGrid(4, 8, 4, yieldsError(status, 'error', 'Grid is invalid'));
mbtiles.getGrid(5, 8, 4, yieldsError(status, 'error', 'Grid is invalid'));
mbtiles.getGrid(13, 4, 4, yieldsError(status, 'error', 'Grid is invalid'));
mbtiles.getGrid(0, 14, 4, yieldsError(status, 'error', 'Grid is invalid'));
mbtiles.getGrid(0, 7, 3, yieldsError(status, 'error', 'Grid is invalid'));
mbtiles.getGrid(6, 2, 3, yieldsError(status, 'error', 'Grid is invalid'));
beforeExit(function() {
assert.equal(status.success, 241);
@@ -121,20 +122,20 @@ exports['get grids from file without interaction'] = function(beforeExit) {
};
var mbtiles = new MBTiles(fixtures.plain_1);
mbtiles.grid(1, 0, 0, yieldsError(status, 'error', 'Grid does not exist'));
mbtiles.grid(0, 0, -1, yieldsError(status, 'error', 'Grid does not exist'));
mbtiles.grid(0, -1, 0, yieldsError(status, 'error', 'Grid does not exist'));
mbtiles.grid(1, 8, 3, yieldsError(status, 'error', 'Grid does not exist'));
mbtiles.grid(-3, 0, 2, yieldsError(status, 'error', 'Grid does not exist'));
mbtiles.grid(2, 3, 18, yieldsError(status, 'error', 'Grid does not exist'));
mbtiles.grid(0, 0, 4, yieldsError(status, 'error', 'Grid does not exist'));
mbtiles.grid(3, 8, 4, yieldsError(status, 'error', 'Grid does not exist'));
mbtiles.grid(4, 8, 4, yieldsError(status, 'error', 'Grid does not exist'));
mbtiles.grid(5, 8, 4, yieldsError(status, 'error', 'Grid does not exist'));
mbtiles.grid(13, 4, 4, yieldsError(status, 'error', 'Grid does not exist'));
mbtiles.grid(0, 14, 4, yieldsError(status, 'error', 'Grid does not exist'));
mbtiles.grid(0, 7, 3, yieldsError(status, 'error', 'Grid does not exist'));
mbtiles.grid(6, 2, 3, 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(0, -1, 0, yieldsError(status, 'error', 'Grid does not exist'));
mbtiles.getGrid(1, 8, 3, yieldsError(status, 'error', 'Grid does not exist'));
mbtiles.getGrid(-3, 0, 2, yieldsError(status, 'error', 'Grid does not exist'));
mbtiles.getGrid(2, 3, 18, yieldsError(status, 'error', 'Grid does not exist'));
mbtiles.getGrid(0, 0, 4, yieldsError(status, 'error', 'Grid does not exist'));
mbtiles.getGrid(3, 8, 4, yieldsError(status, 'error', 'Grid does not exist'));
mbtiles.getGrid(4, 8, 4, yieldsError(status, 'error', 'Grid does not exist'));
mbtiles.getGrid(5, 8, 4, yieldsError(status, 'error', 'Grid does not exist'));
mbtiles.getGrid(13, 4, 4, yieldsError(status, 'error', 'Grid does not exist'));
mbtiles.getGrid(0, 14, 4, yieldsError(status, 'error', 'Grid does not exist'));
mbtiles.getGrid(0, 7, 3, yieldsError(status, 'error', 'Grid does not exist'));
mbtiles.getGrid(6, 2, 3, yieldsError(status, 'error', 'Grid does not exist'));
beforeExit(function() {
assert.equal(status.success, 0);
@@ -152,7 +153,7 @@ exports['get grids with different schema'] = function(beforeExit) {
fs.readdirSync(__dirname + '/fixtures/grids/').forEach(function(file) {
var coords = file.match(/^plain_2_(\d+)_(\d+)_(\d+).json$/);
if (coords) {
mbtiles.grid(coords[1] | 0, coords[2] | 0, coords[3] | 0, function(err, grid) {
mbtiles.getGrid(coords[1] | 0, coords[2] | 0, coords[3] | 0, function(err, grid) {
if (err) throw err;
assert.deepEqual(JSON.stringify(grid), fs.readFileSync(__dirname + '/fixtures/grids/' + file, 'utf8'));
status.success++;
@@ -160,21 +161,21 @@ exports['get grids with different schema'] = function(beforeExit) {
}
});
mbtiles.grid(1, 0, 0, yieldsError(status, 'error', 'Grid does not exist'));
mbtiles.grid(0, 0, -1, yieldsError(status, 'error', 'Grid does not exist'));
mbtiles.grid(0, -1, 0, yieldsError(status, 'error', 'Grid does not exist'));
mbtiles.grid(1, 8, 3, yieldsError(status, 'error', 'Grid does not exist'));
mbtiles.grid(-3, 0, 2, yieldsError(status, 'error', 'Grid does not exist'));
mbtiles.grid(2, 3, 18, yieldsError(status, 'error', 'Grid does not exist'));
mbtiles.grid(0, 0, 4, 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(0, -1, 0, yieldsError(status, 'error', 'Grid does not exist'));
mbtiles.getGrid(1, 8, 3, yieldsError(status, 'error', 'Grid does not exist'));
mbtiles.getGrid(-3, 0, 2, yieldsError(status, 'error', 'Grid does not exist'));
mbtiles.getGrid(2, 3, 18, yieldsError(status, 'error', 'Grid does not exist'));
mbtiles.getGrid(0, 0, 4, yieldsError(status, 'error', 'Grid does not exist'));
mbtiles.grid(3, 8, 4, yieldsError(status, 'error', 'Grid is invalid'));
mbtiles.grid(4, 8, 4, yieldsError(status, 'error', 'Grid is invalid'));
mbtiles.grid(5, 8, 4, yieldsError(status, 'error', 'Grid is invalid'));
mbtiles.grid(13, 4, 4, yieldsError(status, 'error', 'Grid is invalid'));
mbtiles.grid(0, 14, 4, yieldsError(status, 'error', 'Grid is invalid'));
mbtiles.grid(0, 7, 3, yieldsError(status, 'error', 'Grid is invalid'));
mbtiles.grid(6, 2, 3, yieldsError(status, 'error', 'Grid is invalid'));
mbtiles.getGrid(3, 8, 4, yieldsError(status, 'error', 'Grid is invalid'));
mbtiles.getGrid(4, 8, 4, yieldsError(status, 'error', 'Grid is invalid'));
mbtiles.getGrid(5, 8, 4, yieldsError(status, 'error', 'Grid is invalid'));
mbtiles.getGrid(13, 4, 4, yieldsError(status, 'error', 'Grid is invalid'));
mbtiles.getGrid(0, 14, 4, yieldsError(status, 'error', 'Grid is invalid'));
mbtiles.getGrid(0, 7, 3, yieldsError(status, 'error', 'Grid is invalid'));
mbtiles.getGrid(6, 2, 3, yieldsError(status, 'error', 'Grid is invalid'));
beforeExit(function() {
assert.equal(status.success, 241);
@@ -190,20 +191,20 @@ exports['get grids from file without interaction'] = function(beforeExit) {
};
var mbtiles = new MBTiles(fixtures.plain_1);
mbtiles.grid(1, 0, 0, yieldsError(status, 'error', 'Grid does not exist'));
mbtiles.grid(0, 0, -1, yieldsError(status, 'error', 'Grid does not exist'));
mbtiles.grid(0, -1, 0, yieldsError(status, 'error', 'Grid does not exist'));
mbtiles.grid(1, 8, 3, yieldsError(status, 'error', 'Grid does not exist'));
mbtiles.grid(-3, 0, 2, yieldsError(status, 'error', 'Grid does not exist'));
mbtiles.grid(2, 3, 18, yieldsError(status, 'error', 'Grid does not exist'));
mbtiles.grid(0, 0, 4, yieldsError(status, 'error', 'Grid does not exist'));
mbtiles.grid(3, 8, 4, yieldsError(status, 'error', 'Grid does not exist'));
mbtiles.grid(4, 8, 4, yieldsError(status, 'error', 'Grid does not exist'));
mbtiles.grid(5, 8, 4, yieldsError(status, 'error', 'Grid does not exist'));
mbtiles.grid(13, 4, 4, yieldsError(status, 'error', 'Grid does not exist'));
mbtiles.grid(0, 14, 4, yieldsError(status, 'error', 'Grid does not exist'));
mbtiles.grid(0, 7, 3, yieldsError(status, 'error', 'Grid does not exist'));
mbtiles.grid(6, 2, 3, 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(0, -1, 0, yieldsError(status, 'error', 'Grid does not exist'));
mbtiles.getGrid(1, 8, 3, yieldsError(status, 'error', 'Grid does not exist'));
mbtiles.getGrid(-3, 0, 2, yieldsError(status, 'error', 'Grid does not exist'));
mbtiles.getGrid(2, 3, 18, yieldsError(status, 'error', 'Grid does not exist'));
mbtiles.getGrid(0, 0, 4, yieldsError(status, 'error', 'Grid does not exist'));
mbtiles.getGrid(3, 8, 4, yieldsError(status, 'error', 'Grid does not exist'));
mbtiles.getGrid(4, 8, 4, yieldsError(status, 'error', 'Grid does not exist'));
mbtiles.getGrid(5, 8, 4, yieldsError(status, 'error', 'Grid does not exist'));
mbtiles.getGrid(13, 4, 4, yieldsError(status, 'error', 'Grid does not exist'));
mbtiles.getGrid(0, 14, 4, yieldsError(status, 'error', 'Grid does not exist'));
mbtiles.getGrid(0, 7, 3, yieldsError(status, 'error', 'Grid does not exist'));
mbtiles.getGrid(6, 2, 3, yieldsError(status, 'error', 'Grid does not exist'));
beforeExit(function() {
assert.equal(status.success, 0);

View File

@@ -1,6 +1,6 @@
var fs = require('fs');
var assert = require('assert');
var MBTiles = require('..').MBTiles;
var MBTiles = require('..');
var fixtureDir = __dirname + '/fixtures/output';