import * as xmlpoke from 'xmlpoke'; import * as assert from 'assert'; let result: string; // add with xpath, value result = xmlpoke('', xml => xml.add('/a/b', 'c')); assert.equal(result, 'c'); // add with xpath, Transform const addfn: XmlPoke.Transform = (node, value) => 'c'; result = xmlpoke('', xml => xml.add('/a/b', addfn)); assert.equal(result, 'c'); // add with xpath, CDataValue const cdataval: XmlPoke.CDataValue = new xmlpoke.CDataValue('c'); result = xmlpoke('', xml => xml.add('/a/b', cdataval)); assert.equal(result, ''); // add with xpath, XMLVal const xmlval = new xmlpoke.XmlString(''); result = xmlpoke('', xml => xml.add('/a/b', xmlval)); assert.equal(result, ''); // add with map result = xmlpoke('', xml => xml.add({ '/a/b': 'c' })); assert.equal(result, 'c'); // set with xpath, value result = xmlpoke('b', xml => xml.set('/a', 'c')); assert.equal(result, 'c'); // set with map result = xmlpoke('b', xml => xml.set({ '/a': 'c' })); assert.equal(result, 'c'); // set with xpath that doesn't exist (no-op) result = xmlpoke('bval', xml => xml.set('/a/c', 'cval')); assert.equal(result, 'bval'); // setOrAdd with xpath, value result = xmlpoke('', xml => xml.setOrAdd('/a/b', 'c')); assert.equal(result, 'c'); // setOrAdd with map result = xmlpoke('', xml => xml.setOrAdd({ '/a/b': 'c' })); assert.equal(result, 'c'); // setOrAdd with xpath that doesn't exist: add result = xmlpoke('bval', xml => xml.setOrAdd('/a/c', 'cval')); assert.equal(result, 'bvalcval'); // remove result = xmlpoke('', xml => xml.remove('//b')); assert.equal(result, ''); // clear result = xmlpoke('', xml => xml.clear('/a')); assert.equal(result, ''); // withBasePath, addNamespace, errorOnNoMatches result = xmlpoke('', xml => xml.withBasePath('/test') .addNamespace('x', 'http://example.com/x') .errorOnNoMatches() .set('/x', (node, value) => { assert.equal(typeof node, 'object'); assert.equal((node.constructor as any).name, 'Element'); assert.equal(value, 'hello'); return 'y'; })); assert.equal(result, 'y');