61 lines
2.1 KiB
JavaScript
61 lines
2.1 KiB
JavaScript
'use strict';
|
|
|
|
var chai = require('chai');
|
|
var gettextParser = require('..');
|
|
var fs = require('fs');
|
|
|
|
var expect = chai.expect;
|
|
chai.config.includeStack = true;
|
|
|
|
describe('PO Parser', function() {
|
|
|
|
describe('UTF-8', function() {
|
|
it('should parse', function() {
|
|
var po = fs.readFileSync(__dirname + '/fixtures/utf8.po');
|
|
var json = JSON.parse(fs.readFileSync(__dirname + '/fixtures/utf8-po.json', 'utf-8'));
|
|
var parsed = gettextParser.po.parse(po);
|
|
expect(parsed).to.deep.equal(json);
|
|
});
|
|
});
|
|
|
|
describe('UTF-8 as a string', function() {
|
|
it('should parse', function() {
|
|
var po = fs.readFileSync(__dirname + '/fixtures/utf8.po', 'utf-8');
|
|
var json = JSON.parse(fs.readFileSync(__dirname + '/fixtures/utf8-po.json', 'utf-8'));
|
|
var parsed = gettextParser.po.parse(po);
|
|
expect(parsed).to.deep.equal(json);
|
|
});
|
|
});
|
|
|
|
describe('Stream input', function() {
|
|
it('should parse', function(done) {
|
|
var po = fs.createReadStream(__dirname + '/fixtures/utf8.po', {
|
|
highWaterMark: 1 // ensure that any utf-8 sequences will be broken when streaming
|
|
});
|
|
var json = JSON.parse(fs.readFileSync(__dirname + '/fixtures/utf8-po.json', 'utf-8'));
|
|
|
|
var parsed;
|
|
var stream = po.pipe(gettextParser.po.createParseStream({
|
|
initialTreshold: 800 // home many bytes to cache for parsing the header
|
|
}));
|
|
stream.on('data', function(data) {
|
|
parsed = data;
|
|
});
|
|
stream.on('end', function() {
|
|
expect(parsed).to.deep.equal(json);
|
|
done();
|
|
});
|
|
|
|
});
|
|
});
|
|
|
|
describe('Latin-13', function() {
|
|
it('should parse', function() {
|
|
var po = fs.readFileSync(__dirname + '/fixtures/latin13.po');
|
|
var json = JSON.parse(fs.readFileSync(__dirname + '/fixtures/latin13-po.json', 'utf-8'));
|
|
var parsed = gettextParser.po.parse(po);
|
|
expect(parsed).to.deep.equal(json);
|
|
});
|
|
});
|
|
|
|
}); |