Spaces:
Running
Running
const test = require('tap').test; | |
const Variable = require('../../src/engine/variable'); | |
const htmlparser = require('htmlparser2'); | |
test('spec', t => { | |
t.type(typeof Variable.SCALAR_TYPE, typeof Variable.LIST_TYPE); | |
t.type(typeof Variable.SCALAR_TYPE, typeof Variable.BROADCAST_MESSAGE_TYPE); | |
const varId = 'varId'; | |
const varName = 'varName'; | |
const varIsCloud = false; | |
let v = new Variable( | |
varId, | |
varName, | |
Variable.SCALAR_TYPE, | |
varIsCloud | |
); | |
t.type(Variable, 'function'); | |
t.type(v, 'object'); | |
t.ok(v instanceof Variable); | |
t.equal(v.id, varId); | |
t.equal(v.name, varName); | |
t.equal(v.type, Variable.SCALAR_TYPE); | |
t.type(v.value, 'number'); | |
t.equal(v.isCloud, varIsCloud); | |
t.type(v.toXML, 'function'); | |
v = new Variable( | |
varId, | |
varName, | |
Variable.LIST_TYPE, | |
varIsCloud | |
); | |
t.ok(Array.isArray(v.value)); | |
v = new Variable( | |
varId, | |
varName, | |
Variable.BROADCAST_MESSAGE_TYPE, | |
varIsCloud | |
); | |
t.equal(v.value, 'varName'); | |
t.end(); | |
}); | |
test('toXML', t => { | |
const varId = 'varId'; | |
const varName = 'varName'; | |
const varIsCloud = false; | |
const varIsLocal = false; | |
const v = new Variable( | |
varId, | |
varName, | |
Variable.SCALAR_TYPE, | |
varIsCloud | |
); | |
const parser = new htmlparser.Parser({ | |
onopentag: function (name, attribs){ | |
if (name === 'variable'){ | |
t.equal(attribs.type, Variable.SCALAR_TYPE); | |
t.equal(attribs.id, varId); | |
t.equal(attribs.iscloud, varIsCloud.toString()); | |
t.equal(attribs.islocal, varIsLocal.toString()); | |
} | |
}, | |
ontext: function (text){ | |
t.equal(text, varName); | |
} | |
}, {decodeEntities: false}); | |
parser.write(v.toXML(false)); | |
parser.end(); | |
t.end(); | |
}); | |
test('escape variable name for XML', t => { | |
const varId = 'varId'; | |
const varName = '<>&\'"'; | |
const varIsCloud = false; | |
const varIsLocal = false; | |
const v = new Variable( | |
varId, | |
varName, | |
Variable.SCALAR_TYPE, | |
varIsCloud | |
); | |
const parser = new htmlparser.Parser({ | |
onopentag: function (name, attribs){ | |
if (name === 'variable'){ | |
t.equal(attribs.type, Variable.SCALAR_TYPE); | |
t.equal(attribs.id, varId); | |
t.equal(attribs.iscloud, varIsCloud.toString()); | |
t.equal(attribs.islocal, varIsLocal.toString()); | |
} | |
}, | |
ontext: function (text){ | |
t.equal(text, '<>&'"'); | |
} | |
}, {decodeEntities: false}); | |
parser.write(v.toXML(false)); | |
parser.end(); | |
t.end(); | |
}); | |