corrade-nucleus-nucleons – Blame information for rev 37
?pathlinks?
Rev | Author | Line No. | Line |
---|---|---|---|
37 | office | 1 | (function (root, factory) { |
2 | 'use strict'; |
||
3 | |||
4 | if (typeof module === 'object' && module.exports) { |
||
5 | // Node. Does not work with strict CommonJS, but only CommonJS-like
|
||
6 | // environments that support module.exports, like Node.
|
||
7 | factory(require('./x2js'), require('qunit-cli')); |
||
8 | } else { |
||
9 | // Browser globals (root is window)
|
||
10 | factory(root.X2JS, root.QUnit); |
||
11 | } |
||
12 | })(this, function (X2JS, QUnit) { |
||
13 | 'use strict'; |
||
14 | |||
15 | // Test cases are full of magic numbers and that's fine.
|
||
16 | /* eslint-disable no-magic-numbers */ |
||
17 | |||
18 | QUnit.module('Converting XML to JavaScript objects'); |
||
19 | |||
20 | QUnit.test('Basic XML', function (assert) { |
||
21 | var xml = '<document>' + |
||
22 | '<element attribute="value" />' + |
||
23 | '<elementX />' + |
||
24 | '<elementX />' + |
||
25 | '<elementY>hello there</elementY>' + |
||
26 | '<elementZ><![CDATA[hello again]]></elementZ>' + |
||
27 | '<elementZA>Test<![CDATA[ hello again]]></elementZA>' + |
||
28 | '</document>'; |
||
29 | var x = new X2JS(); |
||
30 | var js = x.xml2js(xml); |
||
31 | |||
32 | assert.ok(js.document); |
||
33 | assert.ok(js.document.element); |
||
34 | assert.ok(js.document.element._attribute); |
||
35 | assert.strictEqual(js.document.element._attribute, 'value'); |
||
36 | |||
37 | assert.ok(js.document.elementX); |
||
38 | assert.ok(js.document.elementX.length); |
||
39 | assert.strictEqual(js.document.elementX.length, 2); |
||
40 | assert.strictEqual(js.document.elementX[0], ''); |
||
41 | assert.strictEqual(js.document.elementX[1], ''); |
||
42 | |||
43 | assert.ok(js.document.elementY); |
||
44 | assert.strictEqual(js.document.elementY.toString(), 'hello there'); |
||
45 | assert.strictEqual(js.document.elementY, 'hello there'); |
||
46 | |||
47 | assert.ok(js.document.elementZ); |
||
48 | assert.strictEqual(js.document.elementZ.toString(), 'hello again'); |
||
49 | assert.strictEqual(js.document.elementZ, 'hello again'); |
||
50 | |||
51 | assert.ok(js.document.elementZA); |
||
52 | assert.strictEqual(js.document.elementZA.toString(), 'Test hello again'); |
||
53 | assert.strictEqual(js.document.elementZA.__cdata, ' hello again'); |
||
54 | }); |
||
55 | |||
56 | QUnit.test('XML with namespace prefixes', function (assert) { |
||
57 | var xml = '<ns:root xmlns:ns="http://example.com" xmlns:ns2="http://example.com(2)">' + |
||
58 | '<nonamespace>' + |
||
59 | '<ns2:el ns:attribute="yes" />' + |
||
60 | '</nonamespace>' + |
||
61 | '</ns:root>'; |
||
62 | |||
63 | var x = new X2JS(); |
||
64 | var js = x.xml2js(xml); |
||
65 | |||
66 | // We don't understand namespaces but we do remember the prefixes.
|
||
67 | assert.ok(js); |
||
68 | assert.ok(js.root); |
||
69 | assert.strictEqual(js.root.__prefix, 'ns'); |
||
70 | assert.ok(js.root.nonamespace); |
||
71 | assert.ok(js.root.nonamespace.el); |
||
72 | assert.strictEqual(js.root.nonamespace.el.__prefix, 'ns2'); |
||
73 | |||
74 | // Except for attributes, which we don't acknowledge can even use namespaces.
|
||
75 | // Perhaps not the most convenient but whatever, not an important feature.
|
||
76 | assert.ok(js.root.nonamespace.el['_ns:attribute']); |
||
77 | }); |
||
78 | |||
79 | QUnit.test('XML with declaration', function (assert) { |
||
80 | var xml = '<?xml version="1.0" encoding="utf-8" ?>\n' + |
||
81 | '<document>' + |
||
82 | '<element>great success</element>' + |
||
83 | '</document>'; |
||
84 | var x = new X2JS(); |
||
85 | var js = x.xml2js(xml); |
||
86 | |||
87 | assert.ok(js.document); |
||
88 | assert.ok(js.document.element); |
||
89 | assert.strictEqual(js.document.element, 'great success'); |
||
90 | }); |
||
91 | |||
92 | QUnit.test('Passing non-string to xml2js returns null', function (assert) { |
||
93 | var x = new X2JS(); |
||
94 | |||
95 | assert.propEqual(x.xml2js({ "wololo": "rogan" }), null); |
||
96 | assert.propEqual(x.xml2js(99), null); |
||
97 | assert.propEqual(x.xml2js(undefined), null); |
||
98 | }); |
||
99 | }); |