node-fontnik/test/shape.test.js
2016-05-04 18:33:32 -04:00

61 lines
1.5 KiB
JavaScript

'use strict';
/* jshint node: true */
var fontnik = require('..');
var test = require('tap').test;
var fs = require('fs');
var path = require('path');
var Protobuf = require('pbf');
var Font = require('./format/glyphs').Font.read;
var UPDATE = process.env.UPDATE;
var opensans = fs.readFileSync(path.resolve(__dirname + '/../fonts/open-sans/OpenSans-Regular.ttf'));
function noBuffer(key, val) {
return key !== '_buffer' && key !== 'bitmap' ? val : undefined;
}
test('range', function(t) {
var start = 0;
var end = 255;
var key = [start, end].join('-');
fontnik.range({font: opensans, start: start, end: end}, function(err, res) {
t.error(err);
t.ok(res);
var pbf = new Protobuf(res);
var json = JSON.parse(JSON.stringify(new Font(pbf), noBuffer));
var expected = [__dirname, 'expected', 'range', key].join('/');
var pbfPath = [expected, '.pbf'].join('');
var jsonPath = [expected, '.json'].join('');
if (UPDATE) {
fs.writeFileSync(pbfPath, pbf.buf);
fs.writeFileSync(jsonPath, JSON.stringify(json, null, 2));
}
t.deepEqual(pbf.buf, new Protobuf(fs.readFileSync(pbfPath)).buf);
t.deepEqual(json, require(jsonPath));
t.end();
});
});
test('shape', function(t) {
var pbf = fs.readFileSync([
__dirname,
'expected',
'range',
'0-255.pbf'
].join('/'));
fontnik.shape(opensans, pbf, function(err) {
t.error(err);
t.end();
});
});