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('Configuration options');
19  
20 QUnit.test('Default attribute prefix', function (assert) {
21 var xml = '<document><element attribute="value" /></document>';
22 var x = new X2JS();
23 var js = x.xml2js(xml);
24  
25 assert.ok(js.document);
26 assert.ok(js.document.element);
27 assert.ok(js.document.element._attribute);
28 assert.strictEqual(js.document.element._attribute, 'value');
29 });
30  
31 QUnit.test('Empty attribute prefix', function (assert) {
32 var xml = '<document><element attribute="value" /></document>';
33 var x = new X2JS({
34 'attributePrefix': ''
35 });
36 var js = x.xml2js(xml);
37  
38 assert.ok(js.document);
39 assert.ok(js.document.element);
40 assert.ok(js.document.element.attribute);
41 assert.strictEqual(js.document.element.attribute, 'value');
42 });
43  
44 QUnit.test('Custom nonempty attribute prefix', function (assert) {
45 var xml = '<document><element attribute="value" /></document>';
46 var x = new X2JS({
47 'attributePrefix': '$$'
48 });
49 var js = x.xml2js(xml);
50  
51 assert.ok(js.document);
52 assert.ok(js.document.element);
53 assert.ok(js.document.element.$$attribute);
54 assert.strictEqual(js.document.element.$$attribute, 'value');
55 });
56  
57 QUnit.test('Attribute converters run but only when appropriate', function (assert) {
58 var xml = '<Root><element test1="FAIL" test2="success 2.1">first</element><element test1="FAIL 1.2" test2="success 2.2">second</element></Root>';
59 var x = new X2JS({
60 'attributeConverters': [
61 {
62 'test': function (name, value) {
63 return name === 'test1';
64 },
65 'convert': function (name, value) {
66 return 'success 1.*';
67 }
68 }
69 ]
70 });
71 var js = x.xml2js(xml);
72  
73 assert.ok(js.Root);
74 assert.ok(js.Root.element);
75 assert.ok(js.Root.element.length);
76 assert.ok(js.Root.element[0]);
77 assert.ok(js.Root.element[0]._test1);
78 assert.ok(js.Root.element[0]._test2);
79 assert.strictEqual(js.Root.element[0]._test1, 'success 1.*');
80 assert.strictEqual(js.Root.element[0]._test2, 'success 2.1');
81 assert.strictEqual(js.Root.element[1]._test1, 'success 1.*');
82 assert.strictEqual(js.Root.element[1]._test2, 'success 2.2');
83 });
84  
85 QUnit.test('Root element is dropped with ignoreRoot=true', function (assert) {
86 var xml = '<document><element attribute="value" /></document>';
87 var x = new X2JS({
88 'ignoreRoot': true
89 });
90 var js = x.xml2js(xml);
91  
92 assert.notOk(js.document);
93 assert.ok(js.element);
94 });
95  
96 QUnit.test('Array access-form override via path', function (assert) {
97 var xml = '<document><element attribute="value" /></document>';
98 var x = new X2JS({
99 'arrayAccessFormPaths': [
100 'document.element'
101 ]
102 });
103 var js = x.xml2js(xml);
104  
105 assert.ok(js.document);
106 assert.ok(js.document.element);
107 assert.ok(js.document.element.length);
108 assert.strictEqual(js.document.element.length, 1);
109 assert.ok(js.document.element[0], 'value');
110 });
111  
112 QUnit.test('Array access-form override via regex', function (assert) {
113 var xml = '<document><element attribute="value" /></document>';
114 var x = new X2JS({
115 'arrayAccessFormPaths': [
116 /.*\.element$/
117 ]
118 });
119 var js = x.xml2js(xml);
120  
121 assert.ok(js.document);
122 assert.ok(js.document.element);
123 assert.ok(js.document.element.length);
124 assert.strictEqual(js.document.element.length, 1);
125 assert.ok(js.document.element[0], 'value');
126 });
127  
128 QUnit.test('Array access-form override via function', function (assert) {
129 var xml = '<document><element attribute="value" /></document>';
130 var x = new X2JS({
131 'arrayAccessFormPaths': [
132 function (elementName, elementPath) {
133 return elementName === 'element';
134 }
135 ]
136 });
137 var js = x.xml2js(xml);
138  
139 assert.ok(js.document);
140 assert.ok(js.document.element);
141 assert.ok(js.document.element.length);
142 assert.strictEqual(js.document.element.length, 1);
143 assert.ok(js.document.element[0], 'value');
144 });
145  
146 QUnit.test('Datetime parsing via path', function (assert) {
147 var xml = '<document><datetimeElement>2002-10-10T12:00:00+04:00</datetimeElement></document>';
148 var x = new X2JS({
149 'datetimeAccessFormPaths': [
150 'document.datetimeElement'
151 ]
152 });
153 var js = x.xml2js(xml);
154  
155 assert.ok(js.document);
156 assert.ok(js.document.datetimeElement);
157 assert.ok(js.document.datetimeElement instanceof Date);
158 assert.strictEqual(js.document.datetimeElement.getFullYear(), 2002);
159 });
160  
161 QUnit.test('Datetime parsing via regex', function (assert) {
162 var xml = '<document><datetimeElement>2002-10-10T12:00:00+04:00</datetimeElement></document>';
163 var x = new X2JS({
164 'datetimeAccessFormPaths': [
165 /.*\.datetimeElement$/
166 ]
167 });
168 var js = x.xml2js(xml);
169  
170 assert.ok(js.document);
171 assert.ok(js.document.datetimeElement);
172 assert.ok(js.document.datetimeElement instanceof Date);
173 assert.strictEqual(js.document.datetimeElement.getFullYear(), 2002);
174 });
175  
176 QUnit.test('Datetime parsing via function', function (assert) {
177 var xml = '<document><datetimeElement>2002-10-10T12:00:00+04:00</datetimeElement></document>';
178 var x = new X2JS({
179 'datetimeAccessFormPaths': [
180 function (elementPath) {
181 return elementPath === 'document.datetimeElement';
182 }
183 ]
184 });
185 var js = x.xml2js(xml);
186  
187 assert.ok(js.document);
188 assert.ok(js.document.datetimeElement);
189 assert.ok(js.document.datetimeElement instanceof Date);
190 assert.strictEqual(js.document.datetimeElement.getFullYear(), 2002);
191 });
192  
193 QUnit.test('Datetime parsing in different formats', function (assert) {
194 var xml = '<document>' +
195 '<datetimeElement>2002-10-10T12:00:00+04:00</datetimeElement>' +
196 '<datetimeElement>2002-10-10T12:00:00Z</datetimeElement>' +
197 '<datetimeElement>2002-10-10T12:00:00</datetimeElement>' +
198 '<datetimeElement>2002-10-10T12:00:00Z</datetimeElement>' +
199 '</document>';
200 var x = new X2JS({
201 'datetimeAccessFormPaths': [
202 'document.datetimeElement'
203 ]
204 });
205 var js = x.xml2js(xml);
206  
207 assert.ok(js.document);
208 assert.ok(js.document.datetimeElement);
209 assert.ok(js.document.datetimeElement.length);
210 assert.strictEqual(js.document.datetimeElement.length, 4);
211  
212 for (var i = 0; i < js.document.datetimeElement.length; i++) {
213 assert.ok(js.document.datetimeElement[i]);
214 assert.ok(js.document.datetimeElement[i] instanceof Date);
215 assert.strictEqual(js.document.datetimeElement[i].getFullYear(), 2002);
216 }
217 });
218 });