1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
|
// BOM at the very begining of the stream should be ignored
require(__dirname).test({
xml: '\uFEFF<P></P>',
expect: [
['opentagstart', {'name': 'P', attributes: {}}],
['opentag', {'name': 'P', attributes: {}, isSelfClosing: false}],
['closetag', 'P']
]
})
// In all other places it should be consumed
require(__dirname).test({
xml: '\uFEFF<P BOM="\uFEFF">\uFEFFStarts and ends with BOM\uFEFF</P>',
expect: [
['opentagstart', {'name': 'P', attributes: {}}],
['attribute', {'name': 'BOM', 'value': '\uFEFF'}],
['opentag', {'name': 'P', attributes: {'BOM': '\uFEFF'}, isSelfClosing: false}],
['text', '\uFEFFStarts and ends with BOM\uFEFF'],
['closetag', 'P']
]
})
// BOM after a whitespace is an error
require(__dirname).test({
xml: ' \uFEFF<P></P>',
expect: [
['error', 'Non-whitespace before first tag.\nLine: 0\nColumn: 2\nChar: \uFEFF'],
['text', '\uFEFF'],
['opentagstart', {'name': 'P', attributes: {}}],
['opentag', {'name': 'P', attributes: {}, isSelfClosing: false}],
['closetag', 'P']
],
strict: true
})
// There is only one BOM allowed at the start
require(__dirname).test({
xml: '\uFEFF\uFEFF<P></P>',
expect: [
['error', 'Non-whitespace before first tag.\nLine: 0\nColumn: 2\nChar: \uFEFF'],
['text', '\uFEFF'],
['opentagstart', {'name': 'P', attributes: {}}],
['opentag', {'name': 'P', attributes: {}, isSelfClosing: false}],
['closetag', 'P']
],
strict: true
})
|