Files
enviPy-bayer/static/js/ketcher2/node_modules/varstream/tests/varstream.mocha.js
2025-06-23 20:13:54 +02:00

173 lines
4.6 KiB
JavaScript
Executable File

var VarStream = require('../src/VarStream')
, fs = require('fs')
, assert = require('assert')
, StringDecoder = require('string_decoder').StringDecoder;
describe('VarStream constructor', function() {
it('should work when new is omitted', function() {
assert.doesNotThrow(function() {
VarStream({}, 'prop');
});
});
it('should accept options', function() {
assert.doesNotThrow(function() {
new VarStream({}, 'prop', VarStream.VarStreamReader.OPTIONS);
});
});
it('should fail when no root object is given', function() {
assert.throws(function() {
new VarStream();
}, function(err) {
if(err instanceof Error
&&err.message==='No root object provided.') {
return true;
}
});
});
it('should fail when no property is given', function() {
assert.throws(function() {
new VarStream({});
}, function(err) {
if(err instanceof Error
&&err.message==='No root property name given.') {
return true;
}
});
});
it('should fail when an empty property is given', function() {
assert.throws(function() {
new VarStream({}, '');
}, function(err) {
if(err instanceof Error
&&err.message==='No root property name given.') {
return true;
}
});
});
});
describe('VarStream duplex stream', function() {
it('should work as expected', function(done) {
var root = {};
var stream = new VarStream(root, 'plop');
stream.on('finish', function() {
assert.equal(root.plop.plap, 'plip');
assert.equal(root.plop.plop, 'plup');
done();
});
stream.write('plap=plip\n');
stream.write('plop=plup\n');
stream.end();
});
});
describe('VarStream.stringify()', function() {
it('should fail with no input', function() {
assert.throws(function() {
VarStream.stringify();
}, function(err) {
if(err instanceof Error
&&err.message==='The stringified object must be an instance of Object.') {
return true;
}
});
});
it('should fail with input non-object input', function() {
assert.throws(function() {
VarStream.stringify('aiie caramba');
}, function(err) {
if(err instanceof Error
&&err.message==='The stringified object must be an instance of Object.') {
return true;
}
});
});
});
describe('VarStream.parse()', function() {
it('should work with an empty string', function() {
var obj = VarStream.parse('');
assert.deepEqual(obj, {});
});
});
describe('Helpers decoding/rencoding', function() {
var dir = __dirname+'/fixtures'
, files = fs.readdirSync(dir)
;
it('should work with some null values', function() {
var cnt = VarStream.stringify({
test: undefined,
test2: null
});
assert.deepEqual(
VarStream.stringify(VarStream.parse(VarStream.stringify(VarStream.parse(cnt)))),
VarStream.stringify(VarStream.parse(cnt))
);
});
it('should work with values referring to the root scope', function() {
var obj = {
test2: {}
};
obj.test = obj;
obj.test2.test = obj;
var cnt = VarStream.stringify(obj);
assert.deepEqual(
VarStream.stringify(VarStream.parse(VarStream.stringify(VarStream.parse(cnt)))),
VarStream.stringify(VarStream.parse(cnt))
);
});
it('should work with complexer arrays', function() {
var obj = VarStream.parse(fs.readFileSync(__dirname+'/fixtures/y-complexarray.dat', {encoding: 'utf-8'}));
assert.deepEqual(
VarStream.stringify(VarStream.parse(VarStream.stringify(obj))),
VarStream.stringify(obj)
);
});
it('should work with circular references', function() {
var obj = VarStream.parse(fs.readFileSync(__dirname+'/fixtures/z-circular.dat', {encoding: 'utf-8'}));
assert.deepEqual(
VarStream.stringify(VarStream.parse(VarStream.stringify(obj))),
VarStream.stringify(obj)
);
});
it('should work with some null values in varstream format', function() {
var obj = VarStream.parse('test2=null\ntest3=\n');
assert.deepEqual(
VarStream.stringify(VarStream.parse(VarStream.stringify(obj))),
VarStream.stringify(obj)
);
});
files.forEach(function(file) {
if('3-delete.dat' === file) return;
it('should work with "'+file+'"', function() {
var cnt = VarStream.stringify(VarStream.parse(fs.readFileSync(dir + '/' +file, {encoding: 'utf-8'})));
assert.deepEqual(
VarStream.stringify(VarStream.parse(VarStream.stringify(VarStream.parse(cnt)))),
VarStream.stringify(VarStream.parse(cnt))
);
});
})
});