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

357 lines
9.3 KiB
JavaScript
Executable File

var VarStream = require('../src/VarStream')
, fs = require('fs')
, assert = require('assert')
, StringDecoder = require('string_decoder').StringDecoder;
// Tests
describe('Writing varstreams', function() {
describe("should work when", function() {
it("outputting simple values", function() {
var data = '';
new VarStream.Writer(function(str) {
data += str;
},
VarStream.Reader.STRICT_MODE).write({
'var1': 'machin',
'var2': 'bidule',
'var3': 'truc'
});
assert.equal(data,
'var1=machin\nvar2=bidule\nvar3=truc\n');
});
it("outputting variable trees", function() {
var data = '';
new VarStream.Writer(function(str) {
data += str;
}).write({
'var1': {
'var11': {
'var111':'machin'
},
'var12': 'bidule',
'var13': 'truc'
}
});
assert.equal(data,
'var1.var11.var111=machin\nvar1.var12=bidule\nvar1.var13=truc\n');
});
it("outputting variable trees and optimizing it", function() {
var data = '';
new VarStream.Writer(function(str) {
data += str;
},
VarStream.Writer.MORPH_CONTEXTS
).write({
'var1': {
'var11': {
'var111':'machin'
},
'var12': 'bidule',
'var13': 'truc'
}
});
assert.equal(data,
'var1.var11.var111=machin\nvar1.var12=bidule\n^.var13=truc\n');
});
it("outputting simple arrays", function() {
var data = '';
new VarStream.Writer(function(str) {
data += str;
}).write({
'var1': {
'var11': {
'var111': ['machin', 'bidule', 'truc']
},
'var12': ['machin', 'bidule', 'truc'],
'var13': ['machin', 'bidule', 'truc']
}
});
assert.equal(data,
'var1.var11.var111.0=machin\n' +
'var1.var11.var111.1=bidule\n' +
'var1.var11.var111.2=truc\n' +
'var1.var12.0=machin\n' +
'var1.var12.1=bidule\n' +
'var1.var12.2=truc\n' +
'var1.var13.0=machin\n' +
'var1.var13.1=bidule\n' +
'var1.var13.2=truc\n'
);
});
it("outputting simple arrays in merging mode", function() {
var data = '';
new VarStream.Writer(function(str) {
data += str;
},
VarStream.Writer.MERGE_ARRAYS
).write({
'var1': {
'var11': {
'var111': ['machin', 'bidule', 'truc']
},
'var12': ['machin', 'bidule', 'truc'],
'var13': ['machin', 'bidule', 'truc']
}
});
assert.equal(data,
'var1.var11.var111.+=machin\n' +
'var1.var11.var111.+=bidule\n' +
'var1.var11.var111.+=truc\n' +
'var1.var12.+=machin\n' +
'var1.var12.+=bidule\n' +
'var1.var12.+=truc\n' +
'var1.var13.+=machin\n' +
'var1.var13.+=bidule\n' +
'var1.var13.+=truc\n'
);
});
it("outputting simple arrays and optimizing", function() {
var data = '';
new VarStream.Writer(function(str) {
data += str;
},
VarStream.Writer.MORPH_CONTEXTS
).write({
'var1': {
'var11': {
'var111': ['machin', 'bidule', 'truc']
},
'var12': ['machin', 'bidule', 'truc'],
'var13': ['machin', 'bidule', 'truc']
}
});
assert.equal(data,
'var1.var11.var111.0=machin\n' +
'^.1=bidule\n' +
'^.2=truc\n' +
'var1.var12.0=machin\n' +
'^.1=bidule\n' +
'^.2=truc\n' +
'var1.var13.0=machin\n' +
'^.1=bidule\n' +
'^.2=truc\n'
);
});
it("outputting object collections", function() {
var data = '';
new VarStream.Writer(function(str) {
data += str;
}).write({
'var1': {
'var11': {
'var111': [{
name: 'machin',
type: 'obj'
}, {
name: 'bidule',
type: 'obj'
}, {
name: 'truc',
type: 'obj'
}]
},
'var12': [{
name: 'machin',
type: 'obj'
}, {
name: 'bidule',
type: 'obj'
}, {
name: 'truc',
type: 'obj'
}],
'var13': [{
name: 'machin',
type: 'obj'
}, {
name: 'bidule',
type: 'obj'
}, {
name: 'truc',
type: 'obj'
}]
}
});
assert.equal(data,
'var1.var11.var111.0.name=machin\n' +
'var1.var11.var111.0.type=obj\n' +
'var1.var11.var111.1.name=bidule\n' +
'var1.var11.var111.1.type=obj\n' +
'var1.var11.var111.2.name=truc\n' +
'var1.var11.var111.2.type=obj\n' +
'var1.var12.0.name=machin\n' +
'var1.var12.0.type=obj\n' +
'var1.var12.1.name=bidule\n' +
'var1.var12.1.type=obj\n' +
'var1.var12.2.name=truc\n' +
'var1.var12.2.type=obj\n' +
'var1.var13.0.name=machin\n' +
'var1.var13.0.type=obj\n' +
'var1.var13.1.name=bidule\n' +
'var1.var13.1.type=obj\n' +
'var1.var13.2.name=truc\n' +
'var1.var13.2.type=obj\n'
);
});
it("outputting object collections in merging mode", function() {
var data = '';
new VarStream.Writer(function(str) {
data += str;
},
VarStream.Writer.MERGE_ARRAYS
).write({
'var1': {
'var11': {
'var111': [{
name: 'machin',
type: 'obj'
}, {
name: 'bidule',
type: 'obj'
}, {
name: 'truc',
type: 'obj'
}]
},
'var12': [{
name: 'machin',
type: 'obj'
}, {
name: 'bidule',
type: 'obj'
}, {
name: 'truc',
type: 'obj'
}],
'var13': [{
name: 'machin',
type: 'obj'
}, {
name: 'bidule',
type: 'obj'
}, {
name: 'truc',
type: 'obj'
}]
}
});
assert.equal(data,
'var1.var11.var111.+.name=machin\n' +
'var1.var11.var111.*.type=obj\n' +
'var1.var11.var111.+.name=bidule\n' +
'var1.var11.var111.*.type=obj\n' +
'var1.var11.var111.+.name=truc\n' +
'var1.var11.var111.*.type=obj\n' +
'var1.var12.+.name=machin\n' +
'var1.var12.*.type=obj\n' +
'var1.var12.+.name=bidule\n' +
'var1.var12.*.type=obj\n' +
'var1.var12.+.name=truc\n' +
'var1.var12.*.type=obj\n' +
'var1.var13.+.name=machin\n' +
'var1.var13.*.type=obj\n' +
'var1.var13.+.name=bidule\n' +
'var1.var13.*.type=obj\n' +
'var1.var13.+.name=truc\n' +
'var1.var13.*.type=obj\n'
);
});
it("outputting object collections and optimizing", function() {
var data = '';
new VarStream.Writer(function(str) {
data += str;
},
VarStream.Writer.MORPH_CONTEXTS
).write({
'var1': {
'var11': {
'var111': [{
name: 'machin',
type: 'obj'
}, {
name: 'bidule',
type: 'obj'
}, {
name: 'truc',
type: 'obj'
}]
},
'var12': [{
name: 'machin',
type: 'obj'
}, {
name: 'bidule',
type: 'obj'
}, {
name: 'truc',
type: 'obj'
}],
'var13': [{
name: 'machin',
type: 'obj'
}, {
name: 'bidule',
type: 'obj'
}, {
name: 'truc',
type: 'obj'
}]
}
});
assert.equal(data,
'var1.var11.var111.0.name=machin\n' +
'^.type=obj\n' +
'var1.var11.var111.1.name=bidule\n' +
'^.type=obj\n' +
'var1.var11.var111.2.name=truc\n' +
'^.type=obj\n' +
'var1.var12.0.name=machin\n' +
'^.type=obj\n' +
'var1.var12.1.name=bidule\n' +
'^.type=obj\n' +
'var1.var12.2.name=truc\n' +
'^.type=obj\n' +
'var1.var13.0.name=machin\n' +
'^.type=obj\n' +
'var1.var13.1.name=bidule\n' +
'^.type=obj\n' +
'var1.var13.2.name=truc\n' +
'^.type=obj\n'
);
});
});
});
describe('Writing bad varstreams', function() {
describe("should raise exceptions when in strict mode and", function() {
it("the given root object is not an object or an array", function() {
assert.throws(
function() {
new VarStream.Writer(function() {}).write('');
},
function(err) {
if(err instanceof Error
&&err.message==='The root scope must be an Object or an Array.') {
return true;
}
}
);
});
});
});