summaryrefslogtreecommitdiffstats
path: root/src/interpreter/imports/qtsystemtest/scripts/Datatype.js
diff options
context:
space:
mode:
Diffstat (limited to 'src/interpreter/imports/qtsystemtest/scripts/Datatype.js')
-rw-r--r--src/interpreter/imports/qtsystemtest/scripts/Datatype.js142
1 files changed, 142 insertions, 0 deletions
diff --git a/src/interpreter/imports/qtsystemtest/scripts/Datatype.js b/src/interpreter/imports/qtsystemtest/scripts/Datatype.js
new file mode 100644
index 0000000..1b2fa7a
--- /dev/null
+++ b/src/interpreter/imports/qtsystemtest/scripts/Datatype.js
@@ -0,0 +1,142 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/
+**
+** This file is part of QtSystemTest.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+.pragma library
+
+/// FIXME: Qt5, Error.stack can be enabled by calling prepareStack once
+Object.defineProperties(Error.prototype, {
+ __addStack: {
+ value: function(level) {
+ if (this.stack) {
+ return;
+ }
+
+ var stack = level === undefined ? Qt.qst.stack() : Qt.qst.stack(level);
+ // this function (top of the stack) with the right values from Error
+ stack[0] = {
+ fileName: this.fileName,
+ lineNumber: this.lineNumber,
+ functionName: '<unknown function>'
+ };
+ this.stack = stack;
+ }
+ }
+});
+
+
+Object.defineProperties(Array.prototype, {
+ isEmpty: {
+ value: function() { return this.length === 0; }
+ },
+
+ clear: {
+ value: function() { this.length = 0; }
+ },
+
+ last: {
+ value: function() { return this[this.length-1]; }
+ },
+
+ first: {
+ value: function() { return this[0]; }
+ },
+
+ contains: {
+ value: function(element) {
+ if (this === undefined || this === null) {
+ throw new TypeError();
+ }
+ return this.indexOf(element) !== -1;
+ }
+ },
+
+ remove: {
+ value: function(from, to) {
+ var rest = this.slice((to || from) + 1 || this.length);
+ this.length = from < 0 ? this.length + from : from;
+ return this.push.apply(this, rest);
+ }
+ }
+});
+
+
+Object.defineProperties(String.prototype, {
+ startsWith: {
+ value: function(prefix) { return this.indexOf(prefix) === 0; }
+ },
+
+ endsWith: {
+ value: function(suffix) {
+ return this.indexOf(suffix, this.length - suffix.length) !== -1; }
+ },
+
+ left: {
+ value: function(len) { return this.substring(0, len); }
+ },
+
+ right: {
+ value: function(len) { return this.substring(this.length- len); }
+ },
+
+ repeat: {
+ value: function( num ) { return new Array( num + 1 ).join(this); }
+ },
+ trim: {
+ value: function() { return this.replace(/^\s+|\s+$/g, ""); }
+ }
+});
+
+
+Date.timestamp = function() {
+ function pad(n, places) {
+ var str = ''+n;
+ if ( str.length >= places) {
+ return str;
+ }
+ return '0'.repeat(places - str.length) + str;
+ }
+ var now = new Date();
+ var timestamp = pad(now.getHours(), 2) + ':'
+ + pad( now.getMinutes(), 2) + ':'
+ + pad( now.getSeconds(), 2) + ' - '
+ + pad( now.getMilliseconds(), 3);
+ return timestamp;
+}