convert tests to new return value

This commit is contained in:
Konstantin Käfer
2015-02-13 11:52:04 -08:00
parent 464ecaf7c7
commit a8837d92e4
4 changed files with 73 additions and 60 deletions

View File

@@ -28,13 +28,19 @@ function renderTest(style, info, dir, key) {
var map = new mbgl.Map(fileSource);
map.load(style);
for (var i = 0; i < remaining; i++) {
function render() {
map.render(info[key], function(err, image) {
t.error(err);
t.ok(true, 'render @ ' + ((+new Date) - start) + 'ms');
if (++completed === remaining) t.end();
if (++completed === remaining) {
t.end();
} else {
render();
}
});
}
render();
};
}

View File

@@ -163,21 +163,23 @@ test('Map', function(t) {
t.test('requires a style to be set', function(t) {
setup(fileSource, function(map) {
map.render({}, function(err) {
t.ok(err);
t.equal(err.message, 'Style is not set');
t.end();
});
t.throws(function() {
map.render({}, function() {});
}, /Style is not set/);
t.end();
});
});
t.test('returns an image', function(t) {
setup(fileSource, function(map) {
map.load(style);
map.render({}, function(err, data) {
map.render({}, function(err, image) {
t.error(err);
fs.writeFileSync('test/results/image.png', data);
t.end();
mbgl.compressPNG(image, function(err, data) {
t.error(err);
fs.writeFileSync('test/results/image.png', data);
t.end();
});
});
});
});

View File

@@ -51,63 +51,68 @@ function renderTest(style, info, base, key) {
map.render(info[key], function(err, image) {
t.error(err);
mkdirp.sync(dir);
mbgl.compressPNG(image, function(err, image) {
t.error(err);
mkdirp.sync(dir);
var expected = path.join(dir, 'expected.png');
var actual = path.join(dir, 'actual.png');
var diff = path.join(dir, 'diff.png');
var expected = path.join(dir, 'expected.png');
var actual = path.join(dir, 'actual.png');
var diff = path.join(dir, 'diff.png');
if (process.env.UPDATE) {
fs.writeFile(expected, image, function(err) {
t.error(err);
t.end();
});
} else {
fs.writeFile(actual, image, function(err) {
t.error(err);
console.warn(actual, expected);
var compare = spawn('compare', ['-metric', 'MAE', actual, expected, diff]);
var error = '';
compare.stderr.on('data', function (data) {
error += data.toString();
if (process.env.UPDATE) {
fs.writeFile(expected, image, function(err) {
t.error(err);
t.end();
});
} else {
fs.writeFile(actual, image, function(err) {
t.error(err);
compare.on('exit', function (code) {
// The compare program returns 2 on error otherwise 0 if the images are similar or 1 if they are dissimilar.
if (code === 2) {
writeResult(error.trim(), Infinity);
} else {
var match = error.match(/^\d+(?:\.\d+)?\s+\(([^\)]+)\)\s*$/);
var difference = match ? parseFloat(match[1]) : Infinity;
writeResult(match ? '' : error, difference);
}
});
var compare = spawn('compare', ['-metric', 'MAE', actual, expected, diff]);
var error = '';
compare.stdin.end();
function writeResult(error, difference) {
var allowedDifference = ('diff' in info) ? info.diff : 0.001;
var color = difference <= allowedDifference ? 'green' : 'red';
results += format(resultTemplate, {
name: base,
key: key,
color: color,
error: error ? '<p>' + error + '</p>' : '',
difference: difference,
zoom: info.zoom || 0,
center: info.center || [0, 0],
bearing: info.bearing || 0,
width: info.width || 512,
height: info.height || 512
compare.stderr.on('data', function (data) {
error += data.toString();
});
t.ok(difference <= allowedDifference, 'actual matches expected');
t.end();
}
});
}
compare.on('exit', function (code) {
// The compare program returns 2 on error otherwise 0 if the images are similar or 1 if they are dissimilar.
if (code === 2) {
writeResult(error.trim(), Infinity);
} else {
var match = error.match(/^\d+(?:\.\d+)?\s+\(([^\)]+)\)\s*$/);
var difference = match ? parseFloat(match[1]) : Infinity;
writeResult(match ? '' : error, difference);
}
});
compare.stdin.end();
function writeResult(error, difference) {
var allowedDifference = ('diff' in info) ? info.diff : 0.001;
var color = difference <= allowedDifference ? 'green' : 'red';
results += format(resultTemplate, {
name: base,
key: key,
color: color,
error: error ? '<p>' + error + '</p>' : '',
difference: difference,
zoom: info.zoom || 0,
center: info.center || [0, 0],
bearing: info.bearing || 0,
width: info.width || 512,
height: info.height || 512
});
t.ok(difference <= allowedDifference, 'actual matches expected');
t.end();
}
});
}
});
});
};
}

2
vendor/mbgl vendored