corrade-nucleus-nucleons – Rev 37

Subversion Repositories:
Rev:
(function (root, factory) {
        'use strict';

    if (typeof module === 'object' && module.exports) {
        // Node. Does not work with strict CommonJS, but only CommonJS-like
                // environments that support module.exports, like Node.
        factory(require('./x2js'), require('qunit-cli'));
    } else {
        // Browser globals (root is window)
        factory(root.X2JS, root.QUnit);
        }
})(this, function (X2JS, QUnit) {
        'use strict';

        // Test cases are full of magic numbers and that's fine.
        /* eslint-disable no-magic-numbers */

        QUnit.module('Converting XML to JavaScript objects');

        QUnit.test('Basic XML', function (assert) {
                var xml = '<document>' +
                        '<element attribute="value" />' +
                        '<elementX />' +
                        '<elementX />' +
                        '<elementY>hello there</elementY>' +
                        '<elementZ><![CDATA[hello again]]></elementZ>' +
                        '<elementZA>Test<![CDATA[ hello again]]></elementZA>' +
                        '</document>';
                var x = new X2JS();
                var js = x.xml2js(xml);

                assert.ok(js.document);
                assert.ok(js.document.element);
                assert.ok(js.document.element._attribute);
                assert.strictEqual(js.document.element._attribute, 'value');

                assert.ok(js.document.elementX);
                assert.ok(js.document.elementX.length);
                assert.strictEqual(js.document.elementX.length, 2);
                assert.strictEqual(js.document.elementX[0], '');
                assert.strictEqual(js.document.elementX[1], '');

                assert.ok(js.document.elementY);
                assert.strictEqual(js.document.elementY.toString(), 'hello there');
                assert.strictEqual(js.document.elementY, 'hello there');

                assert.ok(js.document.elementZ);
                assert.strictEqual(js.document.elementZ.toString(), 'hello again');
                assert.strictEqual(js.document.elementZ, 'hello again');

                assert.ok(js.document.elementZA);
                assert.strictEqual(js.document.elementZA.toString(), 'Test hello again');
                assert.strictEqual(js.document.elementZA.__cdata, ' hello again');
        });

        QUnit.test('XML with namespace prefixes', function (assert) {
                var xml = '<ns:root xmlns:ns="http://example.com" xmlns:ns2="http://example.com(2)">' +
                        '<nonamespace>' +
                        '<ns2:el ns:attribute="yes" />' +
                        '</nonamespace>' +
                        '</ns:root>';

                var x = new X2JS();
                var js = x.xml2js(xml);

                // We don't understand namespaces but we do remember the prefixes.
                assert.ok(js);
                assert.ok(js.root);
                assert.strictEqual(js.root.__prefix, 'ns');
                assert.ok(js.root.nonamespace);
                assert.ok(js.root.nonamespace.el);
                assert.strictEqual(js.root.nonamespace.el.__prefix, 'ns2');

                // Except for attributes, which we don't acknowledge can even use namespaces.
                // Perhaps not the most convenient but whatever, not an important feature.
                assert.ok(js.root.nonamespace.el['_ns:attribute']);
        });

        QUnit.test('XML with declaration', function (assert) {
                var xml = '<?xml version="1.0" encoding="utf-8" ?>\n' +
                        '<document>' +
                        '<element>great success</element>' +
                        '</document>';
                var x = new X2JS();
                var js = x.xml2js(xml);

                assert.ok(js.document);
                assert.ok(js.document.element);
                assert.strictEqual(js.document.element, 'great success');
        });

        QUnit.test('Passing non-string to xml2js returns null', function (assert) {
                var x = new X2JS();

                assert.propEqual(x.xml2js({ "wololo": "rogan" }), null);
                assert.propEqual(x.xml2js(99), null);
                assert.propEqual(x.xml2js(undefined), null);
        });
});

Generated by GNU Enscript 1.6.5.90.