corrade-nucleus-nucleons – Blame information for rev 37

Subversion Repositories:
Rev:
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 });