UNPKG

openrosa-xpath-evaluator

Version:

Wrapper for browsers' XPath evaluator with added support for OpenRosa extensions.

56 lines (48 loc) 1.69 kB
const { assertThrow, assertNumberValue, initDoc } = require('../helpers'); describe('#sum()', () => { it('sum(self::*)', () => { const doc = initDoc(` <div id="FunctionNumberCase"> <div id="FunctionNumberCaseNumber">123</div> <div id="FunctionNumberCaseNotNumber"> a a </div> <div id="FunctionNumberCaseNumberMultiple"> <div>-10</div> <div>11</div> <div>99</div> </div> <div id="FunctionNumberCaseNotNumberMultiple"> <div>-10</div> <div>11</div> <div>a</div> </div> <div id="FunctionSumCaseJavarosa"> <div>-10</div> <div>15</div> <div></div> </div> </div>`); let node = doc.getElementById('FunctionNumberCaseNumberMultiple'); assertNumberValue(node, null, 'sum(*)', 100); node = doc.getElementById('FunctionNumberCaseNumber'); assertNumberValue(node, null, 'sum(self::*)', 123); node = doc.getElementById('FunctionNumberCaseNotNumberMultiple'); assertNumberValue(node, null, 'sum(node())', NaN); }); it('sum(*)', () => { const doc = initDoc(` <root id="root"> <item>-10</item> <item>11</item> <item>99</item> </root>`); const node = doc.getElementById('root'); assertNumberValue(node, null, 'sum(*)', 100); assertNumberValue('sum(/root/item)', 100); }); it('sum() fails when too many arguments are provided', () => { assertThrow('sum(1, 2)'); }); it('sum() fails when too few arguments are provided', () => { assertThrow('sum()'); }); });