From: Tomasz Paciorek Date: Tue, 8 Oct 2013 12:26:57 +0000 (+0200) Subject: [namespace] - various fixes X-Git-Tag: 2.2.1_release~105^2~12 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=b4ad6e04fed4be4fc008ccb022b87e2abd72d78a;p=test%2Ftct%2Fweb%2Fapi.git [namespace] - various fixes Change-Id: Ib5cd3b17e5648c8d72354d47893dee115a3e4d5d --- diff --git a/tct-namespace-tizen-tests/configure.ac b/tct-namespace-tizen-tests/configure.ac index aa2ab5c2c..acc5d2870 100644 --- a/tct-namespace-tizen-tests/configure.ac +++ b/tct-namespace-tizen-tests/configure.ac @@ -10,8 +10,7 @@ AC_INIT([tct-namespace-tizen-tests], [2.4.2], [p.szydelko@samsung.com]) AM_INIT_AUTOMAKE([-Wall -Werror foreign]) AC_CONFIG_FILES([Makefile \ - namespace/Makefile \ - resources/Makefile \ - testkit/Makefile \ -]) +namespace/Makefile \ +namespace/support/Makefile \ +resources/Makefile testkit/Makefile]) AC_OUTPUT diff --git a/tct-namespace-tizen-tests/namespace/Alarm_AlarmManagerObject.html b/tct-namespace-tizen-tests/namespace/Alarm_AlarmManagerObject.html index 09e3f9778..36d05f755 100644 --- a/tct-namespace-tizen-tests/namespace/Alarm_AlarmManagerObject.html +++ b/tct-namespace-tizen-tests/namespace/Alarm_AlarmManagerObject.html @@ -24,7 +24,7 @@ Authors: Alarm_AlarmManagerObject - + @@ -39,7 +39,7 @@ Authors: test(function () { assert_type(tizen.alarm, "object", "tizen.alarm object must exist"); assert_not_equals(tizen.alarm, null, "tizen.alarm"); -}, "Alarm_AlarmManagerObject"); +}, document.title); diff --git a/tct-namespace-tizen-tests/namespace/Application_ApplicationManagerObject.html b/tct-namespace-tizen-tests/namespace/Application_ApplicationManagerObject.html index e2157f3c7..918f849d4 100644 --- a/tct-namespace-tizen-tests/namespace/Application_ApplicationManagerObject.html +++ b/tct-namespace-tizen-tests/namespace/Application_ApplicationManagerObject.html @@ -24,7 +24,7 @@ Authors: Application_ApplicationManagerObject - + @@ -39,7 +39,7 @@ Authors: test(function () { assert_type(tizen.application, "object", "tizen.application object must exist"); assert_not_equals(tizen.application, null, "tizen.application"); -}, "Application_ApplicationManagerObject"); +}, document.title); diff --git a/tct-namespace-tizen-tests/namespace/Bluetooth_BluetoothManagerObject.html b/tct-namespace-tizen-tests/namespace/Bluetooth_BluetoothManagerObject.html index ea4b91bcf..df22f89b1 100644 --- a/tct-namespace-tizen-tests/namespace/Bluetooth_BluetoothManagerObject.html +++ b/tct-namespace-tizen-tests/namespace/Bluetooth_BluetoothManagerObject.html @@ -24,7 +24,7 @@ Authors: Bluetooth_BluetoothManagerObject - + @@ -47,7 +47,7 @@ test(function () { } else { assert_equals(tizen.bluetooth, undefined, "tizen.bluetooth must return undefined"); } -}, "Bluetooth_BluetoothManagerObject"); +}, document.title); diff --git a/tct-namespace-tizen-tests/namespace/Bookmark_BookmarkManagerObject.html b/tct-namespace-tizen-tests/namespace/Bookmark_BookmarkManagerObject.html index 913d3f71d..6882b549b 100644 --- a/tct-namespace-tizen-tests/namespace/Bookmark_BookmarkManagerObject.html +++ b/tct-namespace-tizen-tests/namespace/Bookmark_BookmarkManagerObject.html @@ -24,7 +24,7 @@ Authors: Bookmark_BookmarkManagerObject - + @@ -39,7 +39,7 @@ Authors: test(function () { assert_type(tizen.bookmark, "object", "tizen.bookmark object must exist"); assert_not_equals(tizen.bookmark, null, "tizen.bookmark"); -}, "Bookmark_BookmarkManagerObject"); +}, document.title); diff --git a/tct-namespace-tizen-tests/namespace/Calendar_CalendarManagerObject.html b/tct-namespace-tizen-tests/namespace/Calendar_CalendarManagerObject.html index 238ed0e00..07bb15b93 100644 --- a/tct-namespace-tizen-tests/namespace/Calendar_CalendarManagerObject.html +++ b/tct-namespace-tizen-tests/namespace/Calendar_CalendarManagerObject.html @@ -24,7 +24,7 @@ Authors: Calendar_CalendarManagerObject - + @@ -39,7 +39,7 @@ Authors: test(function () { assert_type(tizen.calendar, "object", "tizen.calendar object must exist"); assert_not_equals(tizen.calendar, null, "tizen.calendar"); -}, "Calendar_CalendarManagerObject"); +}, document.title); diff --git a/tct-namespace-tizen-tests/namespace/Callhistory_CallHistoryObject.html b/tct-namespace-tizen-tests/namespace/Callhistory_CallHistoryObject.html index fb36ede48..bce3470de 100644 --- a/tct-namespace-tizen-tests/namespace/Callhistory_CallHistoryObject.html +++ b/tct-namespace-tizen-tests/namespace/Callhistory_CallHistoryObject.html @@ -24,7 +24,7 @@ Authors: Callhistory_CallHistoryObject - + @@ -47,7 +47,7 @@ test(function () { } else { assert_equals(tizen.callhistory, undefined, "tizen.callhistory must return undefined"); } -}, "Callhistory_CallHistoryObject"); +}, document.title); diff --git a/tct-namespace-tizen-tests/namespace/Contact_ContactManagerObject.html b/tct-namespace-tizen-tests/namespace/Contact_ContactManagerObject.html index 480f873ec..85aed4163 100644 --- a/tct-namespace-tizen-tests/namespace/Contact_ContactManagerObject.html +++ b/tct-namespace-tizen-tests/namespace/Contact_ContactManagerObject.html @@ -24,7 +24,7 @@ Authors: Contact_ContactManagerObject - + @@ -39,7 +39,7 @@ Authors: test(function () { assert_type(tizen.contact, "object", "tizen.contact object must exist"); assert_not_equals(tizen.contact, null, "tizen.contact"); -}, "Contact_ContactManagerObject"); +}, document.title); diff --git a/tct-namespace-tizen-tests/namespace/Content_ContentManagerObject.html b/tct-namespace-tizen-tests/namespace/Content_ContentManagerObject.html index acdfb09c4..31b8ffa3c 100644 --- a/tct-namespace-tizen-tests/namespace/Content_ContentManagerObject.html +++ b/tct-namespace-tizen-tests/namespace/Content_ContentManagerObject.html @@ -24,7 +24,7 @@ Authors: Content_ContentManagerObject - + @@ -39,7 +39,7 @@ Authors: test(function () { assert_type(tizen.content, "object", "tizen.content object must exist"); assert_not_equals(tizen.content, null, "tizen.content"); -}, "Content_ContentManagerObject"); +}, document.title); diff --git a/tct-namespace-tizen-tests/namespace/DataControl_DataControlManagerObject.html b/tct-namespace-tizen-tests/namespace/DataControl_DataControlManagerObject.html index f7a4aea99..e8fae00cb 100644 --- a/tct-namespace-tizen-tests/namespace/DataControl_DataControlManagerObject.html +++ b/tct-namespace-tizen-tests/namespace/DataControl_DataControlManagerObject.html @@ -24,7 +24,7 @@ Authors: DataControl_DataControlManagerObject - + @@ -39,7 +39,7 @@ Authors: test(function () { assert_type(tizen.datacontrol, "object", "tizen.datacontrol object must exist"); assert_not_equals(tizen.datacontrol, null, "tizen.datacontrol"); -}, "DataControl_DataControlManagerObject"); +}, document.title); diff --git a/tct-namespace-tizen-tests/namespace/DataSync_DataSynchronizationManagerObject.html b/tct-namespace-tizen-tests/namespace/DataSync_DataSynchronizationManagerObject.html index de0404ff8..3d3a64053 100644 --- a/tct-namespace-tizen-tests/namespace/DataSync_DataSynchronizationManagerObject.html +++ b/tct-namespace-tizen-tests/namespace/DataSync_DataSynchronizationManagerObject.html @@ -24,7 +24,7 @@ Authors: DataSync_DataSynchronizationManagerObject - + @@ -39,7 +39,7 @@ Authors: test(function () { assert_type(tizen.datasync, "object", "tizen.datasync object must exist"); assert_not_equals(tizen.datasync, null, "tizen.datasync"); -}, "DataSync_DataSynchronizationManagerObject"); +}, document.title); diff --git a/tct-namespace-tizen-tests/namespace/Download_DownloadManagerObject.html b/tct-namespace-tizen-tests/namespace/Download_DownloadManagerObject.html index 50794fc38..4bcb5bdef 100644 --- a/tct-namespace-tizen-tests/namespace/Download_DownloadManagerObject.html +++ b/tct-namespace-tizen-tests/namespace/Download_DownloadManagerObject.html @@ -24,7 +24,7 @@ Authors: Download_DownloadManagerObject - + @@ -39,7 +39,7 @@ Authors: test(function () { assert_type(tizen.download, "object", "tizen.download object must exist"); assert_not_equals(tizen.download, null, "tizen.download"); -}, "Download_DownloadManagerObject"); +}, document.title); diff --git a/tct-namespace-tizen-tests/namespace/Filesystem_FileSystemManagerObject.html b/tct-namespace-tizen-tests/namespace/Filesystem_FileSystemManagerObject.html index 1c73e3ea3..b83a143f3 100644 --- a/tct-namespace-tizen-tests/namespace/Filesystem_FileSystemManagerObject.html +++ b/tct-namespace-tizen-tests/namespace/Filesystem_FileSystemManagerObject.html @@ -24,7 +24,7 @@ Authors: Filesystem_FileSystemManagerObject - + @@ -39,7 +39,7 @@ Authors: test(function () { assert_type(tizen.filesystem, "object", "tizen.filesystem object must exist"); assert_not_equals(tizen.filesystem, null, "tizen.filesystem"); -}, "Filesystem_FileSystemManagerObject"); +}, document.title); diff --git a/tct-namespace-tizen-tests/namespace/Makefile.am b/tct-namespace-tizen-tests/namespace/Makefile.am index b2927e270..0b5d424df 100644 --- a/tct-namespace-tizen-tests/namespace/Makefile.am +++ b/tct-namespace-tizen-tests/namespace/Makefile.am @@ -1,3 +1,4 @@ -worker_DATA = * +SUBDIRS = support +worker_DATA = *.html workerdir = /opt/tct-namespace-tizen-tests/namespace EXTRA_DIST = $(worker_DATA) diff --git a/tct-namespace-tizen-tests/namespace/MessagePort_MessagePortManagerObject.html b/tct-namespace-tizen-tests/namespace/MessagePort_MessagePortManagerObject.html index 26134a541..fee269a14 100644 --- a/tct-namespace-tizen-tests/namespace/MessagePort_MessagePortManagerObject.html +++ b/tct-namespace-tizen-tests/namespace/MessagePort_MessagePortManagerObject.html @@ -24,7 +24,7 @@ Authors: MessagePort_MessagePortManagerObject - + @@ -39,7 +39,7 @@ Authors: test(function () { assert_type(tizen.messageport, "object", "tizen.messageport object must exist"); assert_not_equals(tizen.messageport, null, "tizen.messageport"); -}, "MessagePort_MessagePortManagerObject"); +}, document.title); diff --git a/tct-namespace-tizen-tests/namespace/Messaging_MessageManagerObject.html b/tct-namespace-tizen-tests/namespace/Messaging_MessageManagerObject.html index 292fa1642..e6f423dc9 100644 --- a/tct-namespace-tizen-tests/namespace/Messaging_MessageManagerObject.html +++ b/tct-namespace-tizen-tests/namespace/Messaging_MessageManagerObject.html @@ -24,7 +24,7 @@ Authors: Messaging_MessageManagerObject - + @@ -39,7 +39,7 @@ Authors: test(function () { assert_type(tizen.messaging, "object", "tizen.messaging object must exist"); assert_not_equals(tizen.messaging, null, "tizen.messaging"); -}, "Messaging_MessageManagerObject"); +}, document.title); diff --git a/tct-namespace-tizen-tests/namespace/NFC_NFCManagerObject.html b/tct-namespace-tizen-tests/namespace/NFC_NFCManagerObject.html index 94222194d..801cd2350 100644 --- a/tct-namespace-tizen-tests/namespace/NFC_NFCManagerObject.html +++ b/tct-namespace-tizen-tests/namespace/NFC_NFCManagerObject.html @@ -24,7 +24,7 @@ Authors: NFC_NFCManagerObject - + @@ -47,7 +47,7 @@ test(function () { } else { assert_equals(tizen.nfc, undefined, "tizen.nfc must return undefined"); } -}, "NFC_NFCManagerObject"); +}, document.title); diff --git a/tct-namespace-tizen-tests/namespace/NetworkBearerSelection_NetworkBearerSelectionObject.html b/tct-namespace-tizen-tests/namespace/NetworkBearerSelection_NetworkBearerSelectionObject.html index c3318a05d..e277b9971 100644 --- a/tct-namespace-tizen-tests/namespace/NetworkBearerSelection_NetworkBearerSelectionObject.html +++ b/tct-namespace-tizen-tests/namespace/NetworkBearerSelection_NetworkBearerSelectionObject.html @@ -24,7 +24,7 @@ Authors: NetworkBearerSelection_NetworkBearerSelectionObject - + @@ -47,7 +47,7 @@ test(function () { } else { assert_equals(tizen.networkbearerselection, undefined, "tizen.networkbearerselection must return undefined"); } -}, "NetworkBearerSelection_NetworkBearerSelectionObject "); +}, document.title); diff --git a/tct-namespace-tizen-tests/namespace/Notification_NotificationObject.html b/tct-namespace-tizen-tests/namespace/Notification_NotificationObject.html index 420ab23ec..0ec3b096c 100644 --- a/tct-namespace-tizen-tests/namespace/Notification_NotificationObject.html +++ b/tct-namespace-tizen-tests/namespace/Notification_NotificationObject.html @@ -24,7 +24,7 @@ Authors: Notification_NotificationObject - + @@ -39,7 +39,7 @@ Authors: test(function () { assert_type(tizen.notification, "object", "tizen.notification object must exist"); assert_not_equals(tizen.notification, null, "tizen.notification"); -}, "Notification_NotificationObject"); +}, document.title); diff --git a/tct-namespace-tizen-tests/namespace/Package_PackageManagerObject.html b/tct-namespace-tizen-tests/namespace/Package_PackageManagerObject.html index 4c99cec88..114bd1722 100644 --- a/tct-namespace-tizen-tests/namespace/Package_PackageManagerObject.html +++ b/tct-namespace-tizen-tests/namespace/Package_PackageManagerObject.html @@ -24,7 +24,7 @@ Authors: Package_PackageManagerObject - + @@ -39,7 +39,7 @@ Authors: test(function () { assert_type(tizen.package, "object", "tizen.package object must exist"); assert_not_equals(tizen.package, null, "tizen.package"); -}, "Package_PackageManagerObject"); +}, document.title); diff --git a/tct-namespace-tizen-tests/namespace/Power_PowerManagerObject.html b/tct-namespace-tizen-tests/namespace/Power_PowerManagerObject.html index 686dc3d18..66dacdd01 100644 --- a/tct-namespace-tizen-tests/namespace/Power_PowerManagerObject.html +++ b/tct-namespace-tizen-tests/namespace/Power_PowerManagerObject.html @@ -24,7 +24,7 @@ Authors: Power_PowerManagerObject - + @@ -39,7 +39,7 @@ Authors: test(function () { assert_type(tizen.power, "object", "tizen.power object must exist"); assert_not_equals(tizen.power, null, "tizen.power"); -}, "Power_PowerManagerObject"); +}, document.title); diff --git a/tct-namespace-tizen-tests/namespace/Push_PushManagerObject.html b/tct-namespace-tizen-tests/namespace/Push_PushManagerObject.html index 11074258c..8fd5442e7 100644 --- a/tct-namespace-tizen-tests/namespace/Push_PushManagerObject.html +++ b/tct-namespace-tizen-tests/namespace/Push_PushManagerObject.html @@ -24,7 +24,7 @@ Authors: Push_PushManagerObject - + @@ -47,7 +47,7 @@ test(function () { } else { assert_equals(tizen.push, undefined, "tizen.push must return undefined"); } -}, "Push_PushManagerObject"); +}, document.title); diff --git a/tct-namespace-tizen-tests/namespace/SecureElement_SEServiceManagerObject.html b/tct-namespace-tizen-tests/namespace/SecureElement_SEServiceManagerObject.html index 650e7d8e5..7c4d9f01f 100644 --- a/tct-namespace-tizen-tests/namespace/SecureElement_SEServiceManagerObject.html +++ b/tct-namespace-tizen-tests/namespace/SecureElement_SEServiceManagerObject.html @@ -24,7 +24,7 @@ Authors: SecureElement_SEServiceManagerObject - + @@ -47,7 +47,7 @@ test(function () { } else { assert_equals(tizen.seService, undefined, "tizen.seService must return undefined"); } -}, "SecureElement_SEServiceManagerObject"); +}, document.title); diff --git a/tct-namespace-tizen-tests/namespace/SystemInfo_SystemInfoObject.html b/tct-namespace-tizen-tests/namespace/SystemInfo_SystemInfoObject.html index bf12c730d..31ce197d5 100644 --- a/tct-namespace-tizen-tests/namespace/SystemInfo_SystemInfoObject.html +++ b/tct-namespace-tizen-tests/namespace/SystemInfo_SystemInfoObject.html @@ -24,7 +24,7 @@ Authors: SystemInfo_SystemInfoObject - + @@ -39,7 +39,7 @@ Authors: test(function () { assert_type(tizen.systeminfo, "object", "tizen.systeminfo object must exist"); assert_not_equals(tizen.systeminfo, null, "tizen.systeminfo"); -}, "SystemInfo_SystemInfoObject"); +}, document.title); diff --git a/tct-namespace-tizen-tests/namespace/SystemSetting_SystemSettingObject.html b/tct-namespace-tizen-tests/namespace/SystemSetting_SystemSettingObject.html index 4b44b5422..03ce979b3 100644 --- a/tct-namespace-tizen-tests/namespace/SystemSetting_SystemSettingObject.html +++ b/tct-namespace-tizen-tests/namespace/SystemSetting_SystemSettingObject.html @@ -24,7 +24,7 @@ Authors: SystemSetting_SystemSettingObject - + @@ -39,7 +39,7 @@ Authors: test(function () { assert_type(tizen.systemsetting, "object", "tizen.systemsetting object must exist"); assert_not_equals(tizen.systemsetting, null, "tizen.systemsetting"); -}, "SystemSetting_SystemSettingObject"); +}, document.title); diff --git a/tct-namespace-tizen-tests/namespace/Time_TimeManagerObject.html b/tct-namespace-tizen-tests/namespace/Time_TimeManagerObject.html index b6d2dcccf..1279093a4 100644 --- a/tct-namespace-tizen-tests/namespace/Time_TimeManagerObject.html +++ b/tct-namespace-tizen-tests/namespace/Time_TimeManagerObject.html @@ -24,7 +24,7 @@ Authors: Time_TimeManagerObject - + @@ -39,7 +39,7 @@ Authors: test(function () { assert_type(tizen.time, "object", "tizen.time object must exist"); assert_not_equals(tizen.time, null, "tizen.time"); -}, "Time_TimeManagerObject"); +}, document.title); diff --git a/tct-namespace-tizen-tests/namespace/Tizen_TizenObject.html b/tct-namespace-tizen-tests/namespace/Tizen_TizenObject.html index b2fb8ecc7..ef7d1d997 100644 --- a/tct-namespace-tizen-tests/namespace/Tizen_TizenObject.html +++ b/tct-namespace-tizen-tests/namespace/Tizen_TizenObject.html @@ -24,7 +24,7 @@ Authors: Tizen_TizenObject - + @@ -39,7 +39,7 @@ Authors: test(function () { assert_type(tizen, "object", "tizen object must exist"); assert_not_equals(tizen, null, "tizen"); -}, "Tizen_TizenObject"); +}, document.title); diff --git a/tct-namespace-tizen-tests/namespace/support/Makefile.am b/tct-namespace-tizen-tests/namespace/support/Makefile.am new file mode 100644 index 000000000..1c90b1fcc --- /dev/null +++ b/tct-namespace-tizen-tests/namespace/support/Makefile.am @@ -0,0 +1,3 @@ +supportdir = /opt/tct-namespace-tizen-tests/namespace/support +support_DATA = *.js +EXTRA_DIST = $(support_DATA) diff --git a/tct-namespace-tizen-tests/namespace/support/unitcommon.js b/tct-namespace-tizen-tests/namespace/support/unitcommon.js new file mode 100644 index 000000000..9f972c1eb --- /dev/null +++ b/tct-namespace-tizen-tests/namespace/support/unitcommon.js @@ -0,0 +1,559 @@ +/* + +Copyright (c) 2013 Samsung Electronics Co., Ltd. + +Licensed under the Apache License, Version 2.0 (the License); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + + + +Authors: + + */ + + +MIN_BYTE = -128; +MAX_BYTE = 127; +MIN_OCTET = 0; +MAX_OCTET = 255; +MIN_SHORT = -32768; +MAX_SHORT = 32767; +MIN_UNSIGNED_SHORT = 0; +MAX_UNSIGNED_SHORT = 65535; +MIN_LONG = -2147483648; +MAX_LONG = 2147483647; +MIN_UNSIGNED_LONG = 0; +MAX_UNSIGNED_LONG = 4294967295; +MIN_LONG_LONG = -9223372036854775808; +MAX_LONG_LONG = 9223372036854775807; +MIN_UNSIGNED_LONG_LONG = 0; +MAX_UNSIGNED_LONG_LONG = 18446744073709551615; + +TYPE_MISMATCH_EXCEPTION = {name: 'TypeMismatchError'}; +NOT_FOUND_EXCEPTION = {name: 'NotFoundError'}; +INVALID_VALUES_EXCEPTION = {name: 'InvalidValuesError'}; +IO_EXCEPTION = {name: 'IOError'}; +SECURITY_EXCEPTION = {name: 'SecurityError'}; + + +(function () { + var head_src = document.head.innerHTML; + if (head_src.search(/\/testharness.js\W/) === -1) { + document.write('\n'); + } + if (head_src.search(/\/testharnessreport.js\W/) === -1) { + document.write('\n'); + } +})(); + +var _registered_types = {}; + +function _resolve_registered_type(type) { + while (type in _registered_types) { + type = _registered_types[type]; + } + return type; +} + +/** + * Method checks extra argument for none argument method. + * The only check is that method will not throw an exception. + * Example usage: + * checkExtraArgument(tizen.notification, "removeAll"); + * + * @param object object + * @param methodName string - name of the method + */ +function checkExtraArgument(object, methodName) { + var extraArgument = [ + null, + undefined, + "Tizen", + 1, + false, + ["one", "two"], + {argument: 1}, + function () {} + ], i; + + for (i = 0; i < extraArgument.length; i++) { + object[methodName](extraArgument[i]); + } +} + +/** + * Method to validate conversion. + * Example usage: + * conversionTable = getTypeConversionExceptions("functionObject", true); + * for(i = 0; i < conversionTable.length; i++) { + * errorCallback = conversionTable[i][0]; + * exceptionName = conversionTable[i][1]; + * + * assert_throws({name : exceptionName}, + * function () { + * tizen.systemsetting.setProperty("HOME_SCREEN", + * propertyValue, successCallback, errorCallback); + * }, exceptionName + " should be thrown - given incorrect errorCallback."); + * } + * + * @param conversionType + * @param isOptional + * @returns table of tables which contain value (index 0) and exceptionName (index 1) + * + */ +function getTypeConversionExceptions(conversionType, isOptional) { + var exceptionName = "TypeMismatchError", + conversionTable; + switch (conversionType) { + case "enum": + conversionTable = [ + [undefined, exceptionName], + [null, exceptionName], + [0, exceptionName], + [true, exceptionName], + ["dummyInvalidEnumValue", exceptionName], + [{ }, exceptionName] + ]; + break; + case "double": + conversionTable = [ + [undefined, exceptionName], + [NaN, exceptionName], + [Number.POSITIVE_INFINITY, exceptionName], + [Number.NEGATIVE_INFINITY, exceptionName], + ["TIZEN", exceptionName], + [{ name : "TIZEN" }, exceptionName], + [function () { }, exceptionName] + ]; + break; + case "object": + conversionTable = [ + [true, exceptionName], + [false, exceptionName], + [NaN, exceptionName], + [0, exceptionName], + ["", exceptionName], + ["TIZEN", exceptionName], + [undefined, exceptionName] + ]; + if (!isOptional) { + conversionTable.push([null, exceptionName]); + } + break; + case "functionObject": + conversionTable = [ + [true, exceptionName], + [false, exceptionName], + [NaN, exceptionName], + [0, exceptionName], + ["", exceptionName], + ["TIZEN", exceptionName], + [[], exceptionName], + [{ }, exceptionName], + [undefined, exceptionName] + ]; + if (!isOptional) { + conversionTable.push([null, exceptionName]); + } + break; + case "array": + conversionTable = [ + [true, exceptionName], + [false, exceptionName], + [NaN, exceptionName], + [0, exceptionName], + ["", exceptionName], + ["TIZEN", exceptionName], + [{ }, exceptionName], + [function () { }, exceptionName], + [undefined, exceptionName] + ]; + if (!isOptional) { + conversionTable.push([null, exceptionName]); + } + break; + case "dictionary": + conversionTable = [ + [true, exceptionName], + [false, exceptionName], + [NaN, exceptionName], + [0, exceptionName], + ["", exceptionName], + ["TIZEN", exceptionName], + [undefined, exceptionName] + ]; + if (!isOptional) { + conversionTable.push([null, exceptionName]); + } + break; + default: + assert_unreached("Fix your test. Wrong conversionType '" + conversionType + "'."); + }; + + return conversionTable; +} + + +function assert_type(obj, type, description) { + var org_type = type, prop_name, prop_type, prop_value; + + type = _resolve_registered_type(type); + + if (typeof (type) === 'string') { + type = type.toLowerCase(); + switch (type) { + case 'object': + case 'string': + case 'number': + case 'function': + case 'boolean': + case 'undefined': + case 'xml': + assert_equals(typeof (obj), type, description); + break; + case 'null': + assert_true(obj === null, description); + break; + case 'array': + assert_true(Array.isArray(obj), description); + break; + case 'date': + assert_true(obj instanceof Date, description); + break; + case 'byte': + assert_equals(typeof (obj), 'number', description); + assert_greater_than_equal(obj, MIN_BYTE, description + " - value too low."); + assert_less_than_equal(obj, MAX_BYTE, description + " - value too high."); + assert_equals(Math.abs(obj % 1), 0, description + " - value is not an integer."); + break; + case 'octet': + assert_equals(typeof (obj), 'number', description); + assert_greater_than_equal(obj, MIN_OCTET, description + " - value too low."); + assert_less_than_equal(obj, MAX_OCTET, description + " - value too high."); + assert_equals(obj % 1, 0, description + " - value is not an integer."); + break; + case 'short': + assert_equals(typeof (obj), 'number', description); + assert_greater_than_equal(obj, MIN_SHORT, description + " - value too low."); + assert_less_than_equal(obj, MAX_SHORT, description + " - value too high."); + assert_equals(Math.abs(obj % 1), 0, description + " - value is not an integer."); + break; + case 'unsigned short': + assert_equals(typeof (obj), 'number', description); + assert_greater_than_equal(obj, MIN_UNSIGNED_SHORT, description + " - value too low."); + assert_less_than_equal(obj, MAX_UNSIGNED_SHORT, description + " - value too high."); + assert_equals(obj % 1, 0, description + " - value is not an integer."); + break; + case 'long': + assert_equals(typeof (obj), 'number', description); + assert_greater_than_equal(obj, MIN_LONG, description + " - value too low."); + assert_less_than_equal(obj, MAX_LONG, description + " - value too high."); + assert_equals(Math.abs(obj % 1), 0, description + " - value is not an integer."); + break; + case 'unsigned long': + assert_equals(typeof (obj), 'number', description); + assert_greater_than_equal(obj, MIN_UNSIGNED_LONG, description + " - value too low."); + assert_less_than_equal(obj, MAX_UNSIGNED_LONG, description + " - value too high."); + assert_equals(obj % 1, 0, description + " - value is not an integer."); + break; + case 'long long': + assert_equals(typeof (obj), 'number', description); + assert_greater_than_equal(obj, MIN_LONG_LONG, description + " - value too low."); + assert_less_than_equal(obj, MAX_LONG_LONG, description + " - value too high."); + assert_equals(Math.abs(obj % 1), 0, description + " - value is not an integer."); + break; + case 'unsigned long long': + assert_equals(typeof (obj), 'number', description); + assert_greater_than_equal(obj, MIN_UNSIGNED_LONG_LONG, description + " - value too low."); + assert_less_than_equal(obj, MAX_UNSIGNED_LONG_LONG, description + " - value too high."); + assert_equals(obj % 1, 0, description + " - value is not an integer."); + break; + default: + assert_unreached('Fix your test. Wrong type \'' + org_type + '\''); + } + } else if (typeof (type) === 'function') { + assert_true(obj instanceof type, description); + } else if (typeof (type) === 'object') { + for (prop_name in type) { + prop_type = type[prop_name]; + if (prop_type === 'function') { + assert_inherits(obj, prop_name); + assert_equals(typeof obj[prop_name], prop_type, 'Object should have method ' + prop_name); + } else { + assert_own_property(obj, prop_name); + } + } + } else { + assert_unreached('Fix your test. Wrong type ' + org_type); + } +} + +function register_type(alias, type_spec) { + _registered_types[alias] = type_spec; +} + +/** + * Method to check if attribute is const. + * Example usage: + * check_const(tizen.bluetooth.deviceMinor, 'TOY_DOLL', 0x03, 'number', 0x29B); + * + * @param obj object to test which has const attribute + * @param attributeName attribute name. + * @param expectedValue expected value of provided attribute name + * @param expectedType expected type of provided attribute name + * @param valueToAssign value to assign in order to check if attribute value can be modified + */ +function check_const(obj, attributeName, expectedValue, expectedType, valueToAssign) { + var tmp; + if (expectedValue === valueToAssign) { + assert_unreached("Fix your test. The same values given for " + attributeName + + " in 'value' and 'valueToSet' arguments."); + } + if (typeof (attributeName) === "string") { + assert_true(attributeName in obj, "Name " + attributeName + " doesn't exist in provided object."); + assert_equals(obj[attributeName], expectedValue, "Value of " + attributeName + " is diffrent."); + if (typeof (expectedType) !== "undefined") { + if (expectedValue === null) { + assert_type(obj[attributeName], "object", "Type of " + attributeName + " is different."); + } else { + assert_type(obj[attributeName], expectedType, "Type of " + attributeName + " is different."); + } + } else { + assert_unreached("Fix your test. Wrong type " + expectedType); + } + tmp = obj[attributeName]; + obj[attributeName] = valueToAssign; + assert_equals(obj[attributeName], tmp, attributeName + " can be modified."); + } else { + assert_unreached("Fix your test. Wrong type of name " + typeof (attributeName)); + } +} + +/** + * Method to check if attribute is readonly. + * Example usage: + * check_readonly(statusNotification, "postedTime", null, 'object', new Date()); + * + * @param obj object to test which has readonly attribute + * @param attributeName attribute name. + * @param expectedValue expected value of provided attribute name + * @param expectedType expected type of provided attribute name + * @param valueToAssign value to assign in order to check if attribute value can be modified + */ +function check_readonly(obj, attributeName, expectedValue, expectedType, valueToAssign) { + check_const(obj, attributeName, expectedValue, expectedType, valueToAssign); +} + +/** + * Method to check if attribute can be set to null. + * Example usage: + * check_not_nullable(syncInfo, "mode"); + * + * @param obj object to test which has not nullable attribute + * @param attributeName attribute name. + */ +function check_not_nullable(obj, attributeName) +{ var old_value = obj[attributeName]; + obj[attributeName] = null; + assert_not_equals(obj[attributeName], null, "Attribute " + attributeName + " can be set to null."); + obj[attributeName] = old_value; +} + +/** + * Method to check NoInterfaceObject + * Example usage: + * check_no_interface_object("BluetoothAdapter") + * + * @param interfaceName interface name + */ +function check_no_interface_object(interfaceName) { + assert_throws({name: "TypeError"}, function () { + tizen[interfaceName](); + },"Wrong call as a function"); + assert_throws({name: "TypeError"}, function () { + new tizen[interfaceName](); + },"Wrong call as a new function"); + assert_throws({name: "TypeError"}, function () { + ({}) instanceof tizen[interfaceName]; + },"instanceof exception"); + assert_equals(tizen[interfaceName], undefined, interfaceName + " is not undefined."); +} + + +/** + * Method to check Constructors + * Example usage: + * check_constructor("BluetoothAdapter") + * + * @param constructorName constructor name + */ + +function check_constructor(constructorName) { + assert_true(constructorName in tizen, "No " + constructorName + " in tizen."); + assert_false({} instanceof tizen[constructorName],"Custom object is not instance of " + constructorName); + assert_throws({ + name: "TypeError" + }, function () { + tizen[constructorName](); + }, "Constructor called as function."); +} + +/** + * Method to check if given method can be overridden in a given object - (TEMPORARY REMOVED). + * That method also checks if given method exists in a given object. + * Example usage: + * check_method_exists(tizen.notification, "get"); + * + * @param obj object with method + * @param methodName name of the method to check. + */ +function check_method_exists(obj, methodName) { + assert_type(obj[methodName], 'function', "Method does not exist."); +} + +/** + * Method to check extensibility of given object. + * Method checks if new attribute and method can be added. + * Example usage: + * check_extensibility(tizen.notification); + * + * @param obj object to check + */ +function check_extensibility(obj) { + var dummyAttribute = "dummyAttributeValue", dummyMethodResult = "dummyMethodResultValue"; + obj.newDummyMethod = function() { + return dummyMethodResult; + } + assert_equals(obj.newDummyMethod(), dummyMethodResult, "Incorrect result from added method."); + + obj.newDummyAttribute = dummyAttribute; + assert_equals(obj.newDummyAttribute, dummyAttribute, "Incorrect result from added attribute."); +} + +/** + * Method to check if attribute can be modify. + * Example usage: + * check_attr(downloadRequest, "fileName", default_val, "string", "file_name.html"); + * + * @param obj object to test which has not readonly attribute + * @param attributeName attribute name. + * @param expectedValue expected value of provided attribute name + * @param expectedType expected type of provided attribute name + * @param valueToAssign value to assign in order to check if attribute value can be modified + */ +function check_attribute(obj, attributeName, expectedValue, expectedType, valueToAssign) { + if (expectedValue === valueToAssign) { + assert_unreached("Fix your test. The same values given for " + attributeName + + " in 'value' and 'valueToSet' arguments."); + } + if (typeof (attributeName) === "string") { + assert_true(attributeName in obj, "Name " + attributeName + " doesn't exist in provided object."); + assert_equals(obj[attributeName], expectedValue, "Value of " + attributeName + " is diffrent."); + if (typeof (expectedType) !== "undefined") { + if (expectedValue === null) { + assert_type(obj[attributeName], "object", "Type of " + attributeName + " is different."); + } else { + assert_type(obj[attributeName], expectedType, "Type of " + attributeName + " is different."); + } + } else { + assert_unreached("Fix your test. Wrong type " + expectedType); + } + obj[attributeName] = valueToAssign; + assert_equals(obj[attributeName], valueToAssign, attributeName + " can be modified."); + } else { + assert_unreached("Fix your test. Wrong type of name " + typeof (attributeName)); + } +} + +/** + * Method to check if whole array can be overwritten with an invalid value. + * Sample usage: + * check_invalid_array_assignments(message, "to", false); + * + * @param obj object which has the array as its property + * @param array name of the array to check + * @param isNullable indicates if the array can be null + */ +function check_invalid_array_assignments(obj, array, isNullable) { + var args = [undefined, true, false, NaN, 0, "TIZEN", {}, function () {}], + val = obj[array], i; + + if (!isNullable) { + obj[array] = null; + assert_not_equals(obj[array], null, "Non-nullable array was set to null"); + assert_type(obj[array], "array", "Non-nullable array type changed after assigning null"); + assert_equals(obj[array].toString(), val.toString(), "Non-nullable array contents changed after assigning null"); + } + + for (i = 0 ; i < args.length ; i++) { + obj[array] = args[i]; + assert_type(obj[array], "array", "Array type changed after assigning an invalid value"); + assert_equals(obj[array].toString(), val.toString(), "Array contents changed after assigning an invalid value"); + } +} + +/** + * Method to check if an object can be overwritten with an invalid value. + * Sample usage: + * check_invalid_object_assignments(message, "body", false); + * + * @param parentObj object which has the 'obj' object as its property + * @param obj name of the object to check + * @param isNullable indicates if the object can be null + */ +function check_invalid_obj_assignments(parentObj, obj, isNullable) { + var args = [undefined, true, false, NaN, 0, "TIZEN", function () {}], + val = parentObj[obj], i; + + if (!isNullable) { + parentObj[obj] = null; + assert_equals(parentObj[obj], val, "Non-nullable obj was modified after assigning null"); + } + + for (i = 0 ; i < args.length ; i++) { + parentObj[obj] = args[i]; + assert_equals(parentObj[obj], val, "The object was set to " + args[i]); + } +} + +/** + * Method to validate conversion for listeners. + * Example usage: + * incorrectListeners = getListenerConversionExceptions(["oninstalled", "onupdated", "onuninstalled"]); + * for(i = 0; i < incorrectListeners.length; i++) { + * packageInformationEventCallback = incorrectListeners[i][0]; + * exceptionName = incorrectListeners[i][1]; + * assert_throws({name : exceptionName}, + * function () { + * tizen.package.setPackageInfoEventListener(packageInformationEventCallback); + * }, exceptionName + " should be thrown - given incorrect successCallback."); + * } + * + * + * @param callbackNames Array with names + * @returns {Array} table of tables which contain incorrect listener (index 0) and exceptionName (index 1) + * + */ +function getListenerConversionExceptions(callbackNames) { + var result = [], conversionTable, i, j, listenerName; + conversionTable = getTypeConversionExceptions("functionObject", false); + + for (i = 0; i < callbackNames.length; i++) { + for (j = 0; j < conversionTable.length; j++) { + listenerName = {}; + listenerName[callbackNames[i]] = conversionTable[j][0]; + result.push([listenerName, conversionTable[j][1]]); + } + } + + return result; +}