nexus site path corrected
[portal.git] / ecomp-portal-FE / client / bower_components / lodash / vendor / underscore / test / cross-document.js
1 (function() {
2   if (typeof document == 'undefined') return;
3
4   var _ = typeof require == 'function' ? require('..') : window._;
5
6   QUnit.module('Cross Document');
7   /* global iObject, iElement, iArguments, iFunction, iArray, iError, iString, iNumber, iBoolean, iDate, iRegExp, iNaN, iNull, iUndefined, ActiveXObject */
8
9   // Setup remote variables for iFrame tests.
10   var iframe = document.createElement('iframe');
11   iframe.frameBorder = iframe.height = iframe.width = 0;
12   document.body.appendChild(iframe);
13   var iDoc = (iDoc = iframe.contentDocument || iframe.contentWindow).document || iDoc;
14   iDoc.write(
15     [
16       '<script>',
17       'parent.iElement = document.createElement("div");',
18       'parent.iArguments = (function(){ return arguments; })(1, 2, 3);',
19       'parent.iArray = [1, 2, 3];',
20       'parent.iString = new String("hello");',
21       'parent.iNumber = new Number(100);',
22       'parent.iFunction = (function(){});',
23       'parent.iDate = new Date();',
24       'parent.iRegExp = /hi/;',
25       'parent.iNaN = NaN;',
26       'parent.iNull = null;',
27       'parent.iBoolean = new Boolean(false);',
28       'parent.iUndefined = undefined;',
29       'parent.iObject = {};',
30       'parent.iError = new Error();',
31       '</script>'
32     ].join('\n')
33   );
34   iDoc.close();
35
36   QUnit.test('isEqual', function(assert) {
37
38     assert.ok(!_.isEqual(iNumber, 101));
39     assert.ok(_.isEqual(iNumber, 100));
40
41     // Objects from another frame.
42     assert.ok(_.isEqual({}, iObject), 'Objects with equivalent members created in different documents are equal');
43
44     // Array from another frame.
45     assert.ok(_.isEqual([1, 2, 3], iArray), 'Arrays with equivalent elements created in different documents are equal');
46   });
47
48   QUnit.test('isEmpty', function(assert) {
49     assert.ok(!_([iNumber]).isEmpty(), '[1] is not empty');
50     assert.ok(!_.isEmpty(iArray), '[] is empty');
51     assert.ok(_.isEmpty(iObject), '{} is empty');
52   });
53
54   QUnit.test('isElement', function(assert) {
55     assert.ok(!_.isElement('div'), 'strings are not dom elements');
56     assert.ok(_.isElement(document.body), 'the body tag is a DOM element');
57     assert.ok(_.isElement(iElement), 'even from another frame');
58   });
59
60   QUnit.test('isArguments', function(assert) {
61     assert.ok(_.isArguments(iArguments), 'even from another frame');
62   });
63
64   QUnit.test('isObject', function(assert) {
65     assert.ok(_.isObject(iElement), 'even from another frame');
66     assert.ok(_.isObject(iFunction), 'even from another frame');
67   });
68
69   QUnit.test('isArray', function(assert) {
70     assert.ok(_.isArray(iArray), 'even from another frame');
71   });
72
73   QUnit.test('isString', function(assert) {
74     assert.ok(_.isString(iString), 'even from another frame');
75   });
76
77   QUnit.test('isNumber', function(assert) {
78     assert.ok(_.isNumber(iNumber), 'even from another frame');
79   });
80
81   QUnit.test('isBoolean', function(assert) {
82     assert.ok(_.isBoolean(iBoolean), 'even from another frame');
83   });
84
85   QUnit.test('isFunction', function(assert) {
86     assert.ok(_.isFunction(iFunction), 'even from another frame');
87   });
88
89   QUnit.test('isDate', function(assert) {
90     assert.ok(_.isDate(iDate), 'even from another frame');
91   });
92
93   QUnit.test('isRegExp', function(assert) {
94     assert.ok(_.isRegExp(iRegExp), 'even from another frame');
95   });
96
97   QUnit.test('isNaN', function(assert) {
98     assert.ok(_.isNaN(iNaN), 'even from another frame');
99   });
100
101   QUnit.test('isNull', function(assert) {
102     assert.ok(_.isNull(iNull), 'even from another frame');
103   });
104
105   QUnit.test('isUndefined', function(assert) {
106     assert.ok(_.isUndefined(iUndefined), 'even from another frame');
107   });
108
109   QUnit.test('isError', function(assert) {
110     assert.ok(_.isError(iError), 'even from another frame');
111   });
112
113   if (typeof ActiveXObject != 'undefined') {
114     QUnit.test('IE host objects', function(assert) {
115       var xml = new ActiveXObject('Msxml2.DOMDocument.3.0');
116       assert.ok(!_.isNumber(xml));
117       assert.ok(!_.isBoolean(xml));
118       assert.ok(!_.isNaN(xml));
119       assert.ok(!_.isFunction(xml));
120       assert.ok(!_.isNull(xml));
121       assert.ok(!_.isUndefined(xml));
122     });
123
124     QUnit.test('#1621 IE 11 compat mode DOM elements are not functions', function(assert) {
125       var fn = function() {};
126       var xml = new ActiveXObject('Msxml2.DOMDocument.3.0');
127       var div = document.createElement('div');
128
129       // JIT the function
130       var count = 200;
131       while (count--) {
132         _.isFunction(fn);
133       }
134
135       assert.equal(_.isFunction(xml), false);
136       assert.equal(_.isFunction(div), false);
137       assert.equal(_.isFunction(fn), true);
138     });
139   }
140
141 }());