2012-08-01 23:05:29 +04:00
|
|
|
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
|
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
|
|
|
|
|
|
|
"use strict";
|
|
|
|
|
2012-10-31 20:13:28 +04:00
|
|
|
this.EXPORTED_SYMBOLS = [
|
2012-08-01 23:05:29 +04:00
|
|
|
"TestingUtils",
|
|
|
|
];
|
|
|
|
|
2012-10-31 20:13:28 +04:00
|
|
|
this.TestingUtils = {
|
2012-08-01 23:05:29 +04:00
|
|
|
/**
|
|
|
|
* Perform a deep copy of an Array or Object.
|
|
|
|
*/
|
|
|
|
deepCopy: function deepCopy(thing, noSort) {
|
|
|
|
if (typeof(thing) != "object" || thing == null) {
|
|
|
|
return thing;
|
|
|
|
}
|
|
|
|
|
|
|
|
if (Array.isArray(thing)) {
|
|
|
|
let ret = [];
|
|
|
|
for (let element of thing) {
|
|
|
|
ret.push(this.deepCopy(element, noSort));
|
|
|
|
}
|
|
|
|
|
|
|
|
return ret;
|
|
|
|
}
|
|
|
|
|
|
|
|
let ret = {};
|
2016-01-07 03:02:16 +03:00
|
|
|
let props = Object.keys(thing);
|
2012-08-01 23:05:29 +04:00
|
|
|
|
|
|
|
if (!noSort) {
|
|
|
|
props = props.sort();
|
|
|
|
}
|
|
|
|
|
|
|
|
for (let prop of props) {
|
|
|
|
ret[prop] = this.deepCopy(thing[prop], noSort);
|
|
|
|
}
|
|
|
|
|
|
|
|
return ret;
|
|
|
|
},
|
|
|
|
};
|