--- /dev/null
+Copyright (c) 2014 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.
\ No newline at end of file
--- /dev/null
+
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
+
+ APPENDIX: How to apply the Apache License to your work.
+
+ To apply the Apache License to your work, attach the following
+ boilerplate notice, with the fields enclosed by brackets "[]"
+ replaced with your own identifying information. (Don't include
+ the brackets!) The text should be enclosed in the appropriate
+ comment syntax for the file format. We also recommend that a
+ file or class name and description of purpose be included on the
+ same "printed page" as the copyright notice for easier
+ identification within third-party archives.
+
+ Copyright [yyyy] [name of copyright owner]
+
+ 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.
\ No newline at end of file
--- /dev/null
+----------------------------------------------
+License
+----------------------------------------------
+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:
+ Saleh Enam Shohag <saleh.enam@samsung.com>
+
+----------------------------------------------
+Introduction
+----------------------------------------------
+This test suite is for testing tizen HumanActivity API, which covers the following specifications:
+TBD
+
+----------------------------------------------
+Test Environment
+----------------------------------------------
+1. Testkit-stub must be installed on target device.
+2. Testkit-lite must be installed on test machine.
+
+
+----------------------------------------------
+Build and Run
+----------------------------------------------
+(Suppose you only get the source code and Testkit-Lite has been set up on your test machine.
+ If you have got tct-humanactivitymonitor-tizen-tests ZIP packages, you can directly go to step 3 on the test machine;
+ if you have not installed Testkit-Lite, you need to install the latest version.)
+
+Steps:
+1. Prepare for building by running the following command:
+ cd tct-humanactivitymonitor-tizen-tests
+
+2. Build ZIP package by running the following command:
+ ./pack.sh
+
+3. Unzip the package on the test machine by running the following command:
+ unzip -o tct-humanactivitymonitor-tizen-tests-<version>.zip -d /home/owner/share/tct
+
+4. Install the package on the test machine by running the following command:
+ /home/owner/share/tct/opt/tct-humanactivitymonitor-tizen-tests/inst.sh
+
+5. Run test cases by running the following command on host:
+ testkit-lite -f device:/home/owner/share/tct/opt/tct-humanactivitymonitor-tizen-tests/tests.xml -e "WRTLauncher" -o tct-humanactivitymonitor-tizen-tests.results.xml
\ No newline at end of file
--- /dev/null
+#!/bin/bash
+PATH=/bin:/usr/bin:/sbin:/usr/sbin
+for i in `grep -r "0xA" /var/cynara/db/_ | grep $1`
+do
+ CLIENT=`echo $i | cut -d ";" -f1`
+ USER=`echo $i | cut -d ";" -f2`
+ PRIVILEGE=`echo $i | cut -d ";" -f3`
+ #echo "cyad --erase=\"\" -r=no -c $CLIENT -u $USER -p $PRIVILEGE"
+ cyad --erase="" -r=no -c $CLIENT -u $USER -p $PRIVILEGE
+done
--- /dev/null
+<widget id='http://tizen.org/test/tct-humanactivitymonitor-tizen-tests' xmlns='http://www.w3.org/ns/widgets' xmlns:tizen='http://tizen.org/ns/widgets' version='3.0'>
+ <access origin="*"/>
+ <name>tct-humanactivitymonitor-tizen-tests</name>
+ <tizen:privilege name="http://tizen.org/privilege/healthinfo"/>
+ <tizen:privilege name="http://tizen.org/privilege/location"/>
+ <icon src="icon.png" height="117" width="117"/>
+ <tizen:application id="api1human0.WebAPItizenHumanTests" package="api1human0" required_version="3.0"/>
+ <tizen:setting screen-orientation="landscape" />
+ <tizen:setting background-support="enable"/>
+</widget>
\ No newline at end of file
--- /dev/null
+<!DOCTYPE html>
+<!--
+Copyright (c) 2014 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:
+ Wei Zhang <wei625.zhang@samsung.com>
+
+-->
+<html>
+<head>
+<title>HumanActivityAccumulativePedometerData_notexist</title>
+<meta charset="utf-8"/>
+<script src="support/unitcommon.js"></script>
+</head>
+<body>
+<div id="log"></div>
+<script>
+//==== TEST: HumanActivityAccumulativePedometerData_notexist
+//==== LABEL Check if interface HumanActivityAccumulativePedometerData exists, it should not
+//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityAccumulativePedometerData:HumanActivityAccumulativePedometerData U
+//==== SPEC_URL TBD
+//==== PRIORITY P3
+//==== TEST_CRITERIA NIO
+
+test(function () {
+ check_no_interface_object("HumanActivityAccumulativePedometerData");
+}, document.title);
+
+</script>
+</body>
+</html>
\ No newline at end of file
--- /dev/null
+<!DOCTYPE html>
+<!--
+Copyright (c) 2014 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:
+ Saud Mohammad Mostafa <saud.mm@samsung.com>
+ Saleh Enam Shohag <saleh.enam@samsung.com>
+
+-->
+<html>
+<head>
+<title>HumanActivityAccumulativePedometerInfo_notexist</title>
+<meta charset="utf-8"/>
+<script src="support/unitcommon.js"></script>
+</head>
+<body>
+<div id="log"></div>
+<script>
+//==== TEST: HumanActivityAccumulativePedometerInfo_notexist
+//==== LABEL Check if interface HumanActivityAccumulativePedometerInfo exists, it should not
+//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityAccumulativePedometerInfo:HumanActivityAccumulativePedometerInfo U
+//==== SPEC_URL TBD
+//==== PRIORITY P3
+//==== TEST_CRITERIA NIO
+
+test(function () {
+ check_no_interface_object("HumanActivityAccumulativePedometerInfo");
+}, document.title);
+
+</script>
+</body>
+</html>
\ No newline at end of file
--- /dev/null
+<!DOCTYPE html>
+<!--
+Copyright (c) 2014 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:
+ Saleh Enam Shohag <saleh.enam@samsung.com>
+
+-->
+<html>
+<head>
+<title>HumanActivityData_notexist</title>
+<meta charset="utf-8"/>
+<script src="support/unitcommon.js"></script>
+</head>
+<body>
+<div id="log"></div>
+<script>
+//==== TEST: HumanActivityData_notexist
+//==== LABEL Check if interface HumanActivityData exists, it should not
+//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityData:HumanActivityData U
+//==== SPEC_URL TBD
+//==== PRIORITY P3
+//==== TEST_CRITERIA NIO
+
+test(function () {
+ check_no_interface_object("HumanActivityData");
+}, document.title);
+
+</script>
+</body>
+</html>
\ No newline at end of file
--- /dev/null
+<!DOCTYPE html>
+<!--
+Copyright (c) 2014 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:
+ Wei Zhang <wei625.zhang@samsung.com>
+
+-->
+<html>
+<head>
+<title>HumanActivityGPSInfoArray_notexist</title>
+<meta charset="utf-8"/>
+<script src="support/unitcommon.js"></script>
+</head>
+<body>
+<div id="log"></div>
+<script>
+//==== TEST: HumanActivityGPSInfoArray_notexist
+//==== LABEL Check if interface HumanActivityGPSInfoArray exists, it should not
+//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityGPSInfoArray:HumanActivityGPSInfoArray U
+//==== SPEC_URL TBD
+//==== PRIORITY P3
+//==== TEST_CRITERIA NIO
+
+test(function () {
+ check_no_interface_object("HumanActivityGPSInfoArray");
+}, document.title);
+
+</script>
+</body>
+</html>
\ No newline at end of file
--- /dev/null
+<!DOCTYPE html>\r
+<!--\r
+Copyright (c) 2014 Samsung Electronics Co., Ltd.\r
+\r
+Licensed under the Apache License, Version 2.0 (the License);\r
+you may not use this file except in compliance with the License.\r
+You may obtain a copy of the License at\r
+\r
+ http://www.apache.org/licenses/LICENSE-2.0\r
+\r
+Unless required by applicable law or agreed to in writing, software\r
+distributed under the License is distributed on an "AS IS" BASIS,\r
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+See the License for the specific language governing permissions and\r
+limitations under the License.\r
+\r
+Authors:\r
+ Ran Wang <ran22.wang@samsung.com>\r
+\r
+-->\r
+<html>\r
+<head>\r
+<title>HumanActivityGPSInfo_altitude_attribute</title>\r
+<meta charset="utf-8"/>\r
+<script src="support/unitcommon.js"></script>\r
+<script src="support/humanactivitymonitor_common.js"></script>\r
+</head>\r
+<body>\r
+<div id="log"></div>\r
+<script>\r
+//==== TEST: HumanActivityGPSInfo_altitude_attribute\r
+//==== LABEL Check if HumanActivityGPSInfo::altitude exists, has type double, and is readonly\r
+//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityGPSInfo:altitude A\r
+//==== SPEC_URL TBD\r
+//==== PRIORITY P1\r
+//==== ONLOAD_DELAY 9\r
+//==== TEST_CRITERIA AE AT ARO\r
+\r
+setup({timeout: 9000});\r
+\r
+var t = async_test(document.title, {timeout: 9000}), getHumanActivityDataSuccess, getHumanActivityDataError, humanActivityType = "GPS";\r
+\r
+t.step(function () {\r
+ add_result_callback(function () {\r
+ tizen.humanactivitymonitor.stop(humanActivityType);\r
+ });\r
+\r
+ getHumanActivityDataError = t.step_func(function (error) {\r
+ assert_unreached("getHumanActivityDataError is called" + error.name);\r
+ });\r
+\r
+ getHumanActivityDataSuccess = t.step_func(function (gpsInfo) {\r
+ check_readonly(gpsInfo, "altitude", gpsInfo.altitude, "double", gpsInfo.altitude + 10);\r
+ t.done();\r
+ });\r
+\r
+ tizen.humanactivitymonitor.start(humanActivityType);\r
+ tizen.humanactivitymonitor.getHumanActivityData(humanActivityType, getHumanActivityDataSuccess, getHumanActivityDataError);\r
+});\r
+\r
+</script>\r
+</body>\r
+</html>
\ No newline at end of file
--- /dev/null
+<!DOCTYPE html>\r
+<!--\r
+Copyright (c) 2014 Samsung Electronics Co., Ltd.\r
+\r
+Licensed under the Apache License, Version 2.0 (the License);\r
+you may not use this file except in compliance with the License.\r
+You may obtain a copy of the License at\r
+\r
+ http://www.apache.org/licenses/LICENSE-2.0\r
+\r
+Unless required by applicable law or agreed to in writing, software\r
+distributed under the License is distributed on an "AS IS" BASIS,\r
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+See the License for the specific language governing permissions and\r
+limitations under the License.\r
+\r
+Authors:\r
+ Ran Wang <ran22.wang@samsung.com>\r
+\r
+-->\r
+<html>\r
+<head>\r
+<title>HumanActivityGPSInfo_errorRange_attribute</title>\r
+<meta charset="utf-8"/>\r
+<script src="support/unitcommon.js"></script>\r
+<script src="support/humanactivitymonitor_common.js"></script>\r
+</head>\r
+<body>\r
+<div id="log"></div>\r
+<script>\r
+//==== TEST: HumanActivityGPSInfo_errorRange_attribute\r
+//==== LABEL Check if HumanActivityGPSInfo::errorRange exists, has type long, and is readonly\r
+//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityGPSInfo:errorRange A\r
+//==== SPEC_URL TBD\r
+//==== PRIORITY P1\r
+//==== ONLOAD_DELAY 9\r
+//==== TEST_CRITERIA AE AT ARO\r
+\r
+setup({timeout: 9000});\r
+\r
+var t = async_test(document.title, {timeout: 9000}), getHumanActivityDataSuccess, getHumanActivityDataError, humanActivityType = "GPS";\r
+\r
+t.step(function () {\r
+ add_result_callback(function () {\r
+ tizen.humanactivitymonitor.stop(humanActivityType);\r
+ });\r
+\r
+ getHumanActivityDataError = t.step_func(function (error) {\r
+ assert_unreached("getHumanActivityDataError is called" + error.name);\r
+ });\r
+\r
+ getHumanActivityDataSuccess = t.step_func(function (gpsInfo) {\r
+ check_readonly(gpsInfo, "errorRange", gpsInfo.errorRange, "long", gpsInfo.errorRange + 10);\r
+ t.done();\r
+ });\r
+\r
+ tizen.humanactivitymonitor.start(humanActivityType);\r
+ tizen.humanactivitymonitor.getHumanActivityData(humanActivityType, getHumanActivityDataSuccess, getHumanActivityDataError);\r
+});\r
+\r
+</script>\r
+</body>\r
+</html>
\ No newline at end of file
--- /dev/null
+<!DOCTYPE html>\r
+<!--\r
+Copyright (c) 2014 Samsung Electronics Co., Ltd.\r
+\r
+Licensed under the Apache License, Version 2.0 (the License);\r
+you may not use this file except in compliance with the License.\r
+You may obtain a copy of the License at\r
+\r
+ http://www.apache.org/licenses/LICENSE-2.0\r
+\r
+Unless required by applicable law or agreed to in writing, software\r
+distributed under the License is distributed on an "AS IS" BASIS,\r
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+See the License for the specific language governing permissions and\r
+limitations under the License.\r
+\r
+Authors:\r
+ Ran Wang <ran22.wang@samsung.com>\r
+\r
+-->\r
+<html>\r
+<head>\r
+<title>HumanActivityGPSInfo_latitude_attribute</title>\r
+<meta charset="utf-8"/>\r
+<script src="support/unitcommon.js"></script>\r
+<script src="support/humanactivitymonitor_common.js"></script>\r
+</head>\r
+<body>\r
+<div id="log"></div>\r
+<script>\r
+//==== TEST: HumanActivityGPSInfo_latitude_attribute\r
+//==== LABEL Check if HumanActivityGPSInfo::latitude exists, has type double, and is readonly\r
+//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityGPSInfo:latitude A\r
+//==== SPEC_URL TBD\r
+//==== PRIORITY P1\r
+//==== ONLOAD_DELAY 9\r
+//==== TEST_CRITERIA AE AT ARO\r
+\r
+setup({timeout: 9000});\r
+\r
+var t = async_test(document.title, {timeout: 9000}), getHumanActivityDataSuccess, getHumanActivityDataError, humanActivityType = "GPS";\r
+\r
+t.step(function () {\r
+ add_result_callback(function () {\r
+ tizen.humanactivitymonitor.stop(humanActivityType);\r
+ });\r
+\r
+ getHumanActivityDataError = t.step_func(function (error) {\r
+ assert_unreached("getHumanActivityDataError is called" + error.name);\r
+ });\r
+\r
+ getHumanActivityDataSuccess = t.step_func(function (gpsInfo) {\r
+ check_readonly(gpsInfo, "latitude", gpsInfo.latitude, "double", gpsInfo.latitude + 10);\r
+ t.done();\r
+ });\r
+\r
+ tizen.humanactivitymonitor.start(humanActivityType);\r
+ tizen.humanactivitymonitor.getHumanActivityData(humanActivityType, getHumanActivityDataSuccess, getHumanActivityDataError);\r
+});\r
+\r
+</script>\r
+</body>\r
+</html>
\ No newline at end of file
--- /dev/null
+<!DOCTYPE html>\r
+<!--\r
+Copyright (c) 2014 Samsung Electronics Co., Ltd.\r
+\r
+Licensed under the Apache License, Version 2.0 (the License);\r
+you may not use this file except in compliance with the License.\r
+You may obtain a copy of the License at\r
+\r
+ http://www.apache.org/licenses/LICENSE-2.0\r
+\r
+Unless required by applicable law or agreed to in writing, software\r
+distributed under the License is distributed on an "AS IS" BASIS,\r
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+See the License for the specific language governing permissions and\r
+limitations under the License.\r
+\r
+Authors:\r
+ Ran Wang <ran22.wang@samsung.com>\r
+\r
+-->\r
+<html>\r
+<head>\r
+<title>HumanActivityGPSInfo_longitude_attribute</title>\r
+<meta charset="utf-8"/>\r
+<script src="support/unitcommon.js"></script>\r
+<script src="support/humanactivitymonitor_common.js"></script>\r
+</head>\r
+<body>\r
+<div id="log"></div>\r
+<script>\r
+//==== TEST: HumanActivityGPSInfo_longitude_attribute\r
+//==== LABEL Check if HumanActivityGPSInfo::longitude exists, has type double, and is readonly\r
+//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityGPSInfo:longitude A\r
+//==== SPEC_URL TBD\r
+//==== PRIORITY P1\r
+//==== ONLOAD_DELAY 9\r
+//==== TEST_CRITERIA AE AT ARO\r
+\r
+setup({timeout: 9000});\r
+\r
+var t = async_test(document.title, {timeout: 9000}), getHumanActivityDataSuccess, getHumanActivityDataError, humanActivityType = "GPS";\r
+\r
+t.step(function () {\r
+ add_result_callback(function () {\r
+ tizen.humanactivitymonitor.stop(humanActivityType);\r
+ });\r
+\r
+ getHumanActivityDataError = t.step_func(function (error) {\r
+ assert_unreached("getHumanActivityDataError is called" + error.name);\r
+ });\r
+\r
+ getHumanActivityDataSuccess = t.step_func(function (gpsInfo) {\r
+ check_readonly(gpsInfo, "longitude", gpsInfo.longitude, "double", gpsInfo.longitude + 10);\r
+ t.done();\r
+ });\r
+\r
+ tizen.humanactivitymonitor.start(humanActivityType);\r
+ tizen.humanactivitymonitor.getHumanActivityData(humanActivityType, getHumanActivityDataSuccess, getHumanActivityDataError);\r
+});\r
+\r
+</script>\r
+</body>\r
+</html>
\ No newline at end of file
--- /dev/null
+<!DOCTYPE html>
+<!--
+Copyright (c) 2014 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:
+ Wei Zhang <wei625.zhang@samsung.com>
+
+-->
+<html>
+<head>
+<title>HumanActivityGPSInfo_notexist</title>
+<meta charset="utf-8"/>
+<script src="support/unitcommon.js"></script>
+</head>
+<body>
+<div id="log"></div>
+<script>
+//==== TEST: HumanActivityGPSInfo_notexist
+//==== LABEL Check if interface HumanActivityGPSInfo exists, it should not
+//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityGPSInfo:HumanActivityGPSInfo U
+//==== SPEC_URL TBD
+//==== PRIORITY P3
+//==== TEST_CRITERIA NIO
+
+test(function () {
+ check_no_interface_object("HumanActivityGPSInfo");
+}, document.title);
+
+</script>
+</body>
+</html>
\ No newline at end of file
--- /dev/null
+<!DOCTYPE html>\r
+<!--\r
+Copyright (c) 2014 Samsung Electronics Co., Ltd.\r
+\r
+Licensed under the Apache License, Version 2.0 (the License);\r
+you may not use this file except in compliance with the License.\r
+You may obtain a copy of the License at\r
+\r
+ http://www.apache.org/licenses/LICENSE-2.0\r
+\r
+Unless required by applicable law or agreed to in writing, software\r
+distributed under the License is distributed on an "AS IS" BASIS,\r
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+See the License for the specific language governing permissions and\r
+limitations under the License.\r
+\r
+Authors:\r
+ Ran Wang <ran22.wang@samsung.com>\r
+\r
+-->\r
+<html>\r
+<head>\r
+<title>HumanActivityGPSInfo_speed_attribute</title>\r
+<meta charset="utf-8"/>\r
+<script src="support/unitcommon.js"></script>\r
+<script src="support/humanactivitymonitor_common.js"></script>\r
+</head>\r
+<body>\r
+<div id="log"></div>\r
+<script>\r
+//==== TEST: HumanActivityGPSInfo_speed_attribute\r
+//==== LABEL Check if HumanActivityGPSInfo::speed exists, has type double, and is readonly\r
+//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityGPSInfo:speed A\r
+//==== SPEC_URL TBD\r
+//==== PRIORITY P1\r
+//==== ONLOAD_DELAY 9\r
+//==== TEST_CRITERIA AE AT ARO\r
+\r
+setup({timeout: 9000});\r
+\r
+var t = async_test(document.title, {timeout: 9000}), getHumanActivityDataSuccess, getHumanActivityDataError, humanActivityType = "GPS";\r
+\r
+t.step(function () {\r
+ add_result_callback(function () {\r
+ tizen.humanactivitymonitor.stop(humanActivityType);\r
+ });\r
+\r
+ getHumanActivityDataError = t.step_func(function (error) {\r
+ assert_unreached("getHumanActivityDataError is called" + error.name);\r
+ });\r
+\r
+ getHumanActivityDataSuccess = t.step_func(function (gpsInfo) {\r
+ check_readonly(gpsInfo, "speed", gpsInfo.speed, "double", gpsInfo.speed + 10);\r
+ t.done();\r
+ });\r
+\r
+ tizen.humanactivitymonitor.start(humanActivityType);\r
+ tizen.humanactivitymonitor.getHumanActivityData(humanActivityType, getHumanActivityDataSuccess, getHumanActivityDataError);\r
+});\r
+\r
+</script>\r
+</body>\r
+</html>
\ No newline at end of file
--- /dev/null
+<!DOCTYPE html>\r
+<!--\r
+Copyright (c) 2014 Samsung Electronics Co., Ltd.\r
+\r
+Licensed under the Apache License, Version 2.0 (the License);\r
+you may not use this file except in compliance with the License.\r
+You may obtain a copy of the License at\r
+\r
+ http://www.apache.org/licenses/LICENSE-2.0\r
+\r
+Unless required by applicable law or agreed to in writing, software\r
+distributed under the License is distributed on an "AS IS" BASIS,\r
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+See the License for the specific language governing permissions and\r
+limitations under the License.\r
+\r
+Authors:\r
+ Ran Wang <ran22.wang@samsung.com>\r
+\r
+-->\r
+<html>\r
+<head>\r
+<title>HumanActivityGPSInfo_timestamp_attribute</title>\r
+<meta charset="utf-8"/>\r
+<script src="support/unitcommon.js"></script>\r
+<script src="support/humanactivitymonitor_common.js"></script>\r
+</head>\r
+<body>\r
+<div id="log"></div>\r
+<script>\r
+//==== TEST: HumanActivityGPSInfo_timestamp_attribute\r
+//==== LABEL Check if HumanActivityGPSInfo::speed exists, has type long, and is readonly\r
+//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityGPSInfo:speed A\r
+//==== SPEC_URL TBD\r
+//==== PRIORITY P1\r
+//==== ONLOAD_DELAY 9\r
+//==== TEST_CRITERIA AE AT ARO\r
+\r
+setup({timeout: 9000});\r
+\r
+var t = async_test(document.title, {timeout: 9000}), getHumanActivityDataSuccess, getHumanActivityDataError, humanActivityType = "GPS";\r
+\r
+t.step(function () {\r
+ add_result_callback(function () {\r
+ tizen.humanactivitymonitor.stop(humanActivityType);\r
+ });\r
+\r
+ getHumanActivityDataError = t.step_func(function (error) {\r
+ assert_unreached("getHumanActivityDataError is called" + error.name);\r
+ });\r
+\r
+ getHumanActivityDataSuccess = t.step_func(function (gpsInfo) {\r
+ check_readonly(gpsInfo, "timestamp", gpsInfo.timestamp, "long", gpsInfo.timestamp + 10);\r
+ t.done();\r
+ });\r
+\r
+ tizen.humanactivitymonitor.start(humanActivityType);\r
+ tizen.humanactivitymonitor.getHumanActivityData(humanActivityType, getHumanActivityDataSuccess, getHumanActivityDataError);\r
+});\r
+\r
+</script>\r
+</body>\r
+</html>
\ No newline at end of file
--- /dev/null
+<!DOCTYPE html>\r
+<!--\r
+Copyright (c) 2014 Samsung Electronics Co., Ltd.\r
+\r
+Licensed under the Apache License, Version 2.0 (the License);\r
+you may not use this file except in compliance with the License.\r
+You may obtain a copy of the License at\r
+\r
+ http://www.apache.org/licenses/LICENSE-2.0\r
+\r
+Unless required by applicable law or agreed to in writing, software\r
+distributed under the License is distributed on an "AS IS" BASIS,\r
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+See the License for the specific language governing permissions and\r
+limitations under the License.\r
+\r
+Authors:\r
+ Ran Wang <ran22.wang@samsung.com>\r
+\r
+-->\r
+<html>\r
+<head>\r
+<title>HumanActivityHRMData_heartRate_attribute</title>\r
+<meta charset="utf-8"/>\r
+<script src="support/unitcommon.js"></script>\r
+<script src="support/humanactivitymonitor_common.js"></script>\r
+</head>\r
+<body>\r
+<div id="log"></div>\r
+<script>\r
+//==== TEST: HumanActivityHRMData_heartRate_attribute\r
+//==== LABEL Check if HumanActivityHRMData::heartRate exists, has type long, and is readonly\r
+//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityGPSInfo:heartRate A\r
+//==== SPEC_URL TBD\r
+//==== PRIORITY P1\r
+//==== ONLOAD_DELAY 9\r
+//==== TEST_CRITERIA AE AT ARO\r
+\r
+setup({timeout: 9000});\r
+\r
+var t = async_test(document.title, {timeout: 9000}), getHumanActivityDataSuccess, getHumanActivityDataError, humanActivityType = "HRM";\r
+\r
+t.step(function () {\r
+ add_result_callback(function () {\r
+ tizen.humanactivitymonitor.stop(humanActivityType);\r
+ });\r
+\r
+ getHumanActivityDataError = t.step_func(function (error) {\r
+ assert_unreached("getHumanActivityDataError is called" + error.name);\r
+ });\r
+\r
+ getHumanActivityDataSuccess = t.step_func(function (hrmInfo) {\r
+ check_readonly(hrmInfo, "heartRate", hrmInfo.heartRate, "long", hrmInfo.heartRate + 10);\r
+ t.done();\r
+ });\r
+\r
+ tizen.humanactivitymonitor.start(humanActivityType);\r
+ setTimeout(function(){ tizen.humanactivitymonitor.getHumanActivityData(humanActivityType, getHumanActivityDataSuccess, getHumanActivityDataError); }, 1000);\r
+ \r
+});\r
+\r
+</script>\r
+</body>\r
+</html>\r
--- /dev/null
+<!DOCTYPE html>
+<!--
+Copyright (c) 2014 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:
+ Wei Zhang <wei625.zhang@samsung.com>
+
+-->
+<html>
+<head>
+<title>HumanActivityHRMData_notexist</title>
+<meta charset="utf-8"/>
+<script src="support/unitcommon.js"></script>
+</head>
+<body>
+<div id="log"></div>
+<script>
+//==== TEST: HumanActivityHRMData_notexist
+//==== LABEL Check if interface HumanActivityHRMData exists, it should not
+//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityHRMData:HumanActivityHRMData U
+//==== SPEC_URL TBD
+//==== PRIORITY P3
+//==== TEST_CRITERIA NIO
+
+test(function () {
+ check_no_interface_object("HumanActivityHRMData");
+}, document.title);
+
+</script>
+</body>
+</html>
\ No newline at end of file
--- /dev/null
+<!DOCTYPE html>\r
+<!--\r
+Copyright (c) 2014 Samsung Electronics Co., Ltd.\r
+\r
+Licensed under the Apache License, Version 2.0 (the License);\r
+you may not use this file except in compliance with the License.\r
+You may obtain a copy of the License at\r
+\r
+ http://www.apache.org/licenses/LICENSE-2.0\r
+\r
+Unless required by applicable law or agreed to in writing, software\r
+distributed under the License is distributed on an "AS IS" BASIS,\r
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+See the License for the specific language governing permissions and\r
+limitations under the License.\r
+\r
+Authors:\r
+ Ran Wang <ran22.wang@samsung.com>\r
+\r
+-->\r
+<html>\r
+<head>\r
+<title>HumanActivityHRMData_rRInterval_attribute</title>\r
+<meta charset="utf-8"/>\r
+<script src="support/unitcommon.js"></script>\r
+<script src="support/humanactivitymonitor_common.js"></script>\r
+</head>\r
+<body>\r
+<div id="log"></div>\r
+<script>\r
+//==== TEST: HumanActivityHRMData_rRInterval_attribute\r
+//==== LABEL Check if HumanActivityHRMData::rRInterval exists, has type long, and is readonly\r
+//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityGPSInfo:rRInterval A\r
+//==== SPEC_URL TBD\r
+//==== PRIORITY P1\r
+//==== ONLOAD_DELAY 9\r
+//==== TEST_CRITERIA AE AT ARO\r
+\r
+setup({timeout: 9000});\r
+\r
+var t = async_test(document.title, {timeout: 9000}), getHumanActivityDataSuccess, getHumanActivityDataError, humanActivityType = "HRM";\r
+\r
+t.step(function () {\r
+ add_result_callback(function () {\r
+ tizen.humanactivitymonitor.stop(humanActivityType);\r
+ });\r
+\r
+ getHumanActivityDataError = t.step_func(function (error) {\r
+ assert_unreached("getHumanActivityDataError is called" + error.name);\r
+ });\r
+\r
+ getHumanActivityDataSuccess = t.step_func(function (hrmInfo) {\r
+ check_readonly(hrmInfo, "rRInterval", hrmInfo.rRInterval, "long", hrmInfo.rRInterval + 10);\r
+ t.done();\r
+ });\r
+\r
+ tizen.humanactivitymonitor.start(humanActivityType);\r
+ setTimeout(function(){ tizen.humanactivitymonitor.getHumanActivityData(humanActivityType, getHumanActivityDataSuccess, getHumanActivityDataError); }, 1000);\r
+ \r
+});\r
+\r
+</script>\r
+</body>\r
+</html>\r
--- /dev/null
+<!DOCTYPE html>
+<!--
+Copyright (c) 2014 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:
+ Saud Mohammad Mostafa <saud.mm@samsung.com>
+
+-->
+<html>
+<head>
+<title>HumanActivityMonitorManagerObject_notexist</title>
+<meta charset="utf-8"/>
+<script src="support/unitcommon.js"></script>
+</head>
+<body>
+<div id="log"></div>
+<script>
+//==== TEST: HumanActivityMonitorManagerObject_notexist
+//==== LABEL Check if interface HumanActivityMonitorManagerObject exists, it should not
+//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityMonitorManagerObject U
+//==== SPEC_URL TBD
+//==== PRIORITY P3
+//==== TEST_CRITERIA NIO
+
+test(function () {
+ check_no_interface_object("HumanActivityMonitorManagerObject");
+}, document.title);
+
+</script>
+</body>
+</html>
\ No newline at end of file
--- /dev/null
+<!DOCTYPE html>
+<!--
+Copyright (c) 2016 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:
+ Hyukin Kwon <hyukin.kwon@samsung.com>
+
+-->
+<html>
+<head>
+<title>HumanActivityMonitorManager_addActivityRecognitionListener_STATIONARY</title>
+<meta charset="utf-8"/>
+<script src="support/unitcommon.js"></script>
+<script src="support/humanactivitymonitor_common.js"></script>
+</head>
+<body>
+<div id="log"></div>
+<script>
+//==== TEST: HumanActivityMonitorManager_addActivityRecognitionListener_STATIONARY
+//==== LABEL Check if the method addActivityRecognitionListener of HumanActivityMonitorManager returns proper value
+//==== SPEC Tizen Web API:HumanActivityMonitor:HumanActivityMonitorManager:addActivityRecognitionListener M
+//==== SPEC_URL TBD
+//==== PRIORITY P1
+//==== EXECUTION_TYPE manual
+//==== STEP Press run button, then keep the device stationary
+//==== EXPECT Pass
+//==== TEST_CRITERIA MR MMINA CBT
+//==== ONLOAD_DELAY 60
+
+setup({"timeout": 60000});
+
+var t = async_test(document.title, {"timeout": 60000}), returnedValue = null, humanActivityType = "STATIONARY", listener;
+
+t.step(function () {
+ add_result_callback(function () {
+ tizen.humanactivitymonitor.removeActivityRecognitionListener(returnedValue);
+ });
+
+ listener = t.step_func(function (info) {
+ assert_type(info, "object", "info is not an object");
+ assert_own_property(info, "type", "info does not have type property");
+ assert_equals(info.type, "STATIONARY", "Expected STATIONARY, but got " + info.type);
+ assert_own_property(info, "timestamp", "info does not have timestamp property");
+ assert_type(info.timestamp, "long", "info.timestamp is not long type");
+ assert_in_array(info.accuracy, ["LOW", "MEDIUM", "HIGH"], "Incorrect value of type");
+ assert_type(info, "object", "info is not an object");
+ t.done();
+ });
+
+ returnedValue = tizen.humanactivitymonitor.addActivityRecognitionListener(humanActivityType, listener);
+ assert_type(returnedValue, "long", "Incorrect type returned from addActivityRecognitionListener");
+ alert("Keep the device stationary after pressing OK.");
+});
+</script>
+</body>
+</html>
--- /dev/null
+<!DOCTYPE html>
+<!--
+Copyright (c) 2016 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:
+ Hyukin Kwon <hyukin.kwon@samsung.com>
+
+-->
+<html>
+<head>
+<title>HumanActivityMonitorManager_addActivityRecognitionListener_WALKING</title>
+<meta charset="utf-8"/>
+<script src="support/unitcommon.js"></script>
+<script src="support/humanactivitymonitor_common.js"></script>
+</head>
+<body>
+<div id="log"></div>
+<script>
+//==== TEST: HumanActivityMonitorManager_addActivityRecognitionListener_WALKING
+//==== LABEL Check if the method addActivityRecognitionListener of HumanActivityMonitorManager returns proper value
+//==== SPEC Tizen Web API:HumanActivityMonitor:HumanActivityMonitorManager:addActivityRecognitionListener M
+//==== SPEC_URL TBD
+//==== PRIORITY P1
+//==== EXECUTION_TYPE manual
+//==== STEP Press run button. Pretend walking with the device.
+//==== EXPECT Pass
+//==== TEST_CRITERIA MR MMINA CBT
+//==== ONLOAD_DELAY 60
+
+setup({"timeout": 60000});
+
+var t = async_test(document.title, {"timeout": 60000}), returnedValue = null, humanActivityType = "WALKING", listener;
+
+t.step(function () {
+ add_result_callback(function () {
+ tizen.humanactivitymonitor.removeActivityRecognitionListener(returnedValue);
+ });
+
+ listener = t.step_func(function (info) {
+ assert_type(info, "object", "info is not an object");
+ assert_own_property(info, "type", "info does not have type property");
+ assert_equals(info.type, "WALKING", "Expected WALKING, but got " + info.type);
+ assert_own_property(info, "timestamp", "info does not have timestamp property");
+ assert_type(info.timestamp, "long", "info.timestamp is not long type");
+ assert_in_array(info.accuracy, ["LOW", "MEDIUM", "HIGH"], "Incorrect value of type");
+ assert_type(info, "object", "info is not an object");
+ t.done();
+ });
+
+ returnedValue = tizen.humanactivitymonitor.addActivityRecognitionListener(humanActivityType, listener);
+ assert_type(returnedValue, "long", "Incorrect type returned from addActivityRecognitionListener");
+ alert("Grab the device, and pretend walking after pressing OK.");
+});
+</script>
+</body>
+</html>
--- /dev/null
+<!DOCTYPE html>
+<!--
+Copyright (c) 2016 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:
+ Hyukin Kwon <hyukin.kwon@samsung.com>
+
+-->
+<html>
+<head>
+<title>HumanActivityMonitorManager_addActivityRecognitionListener_errorCallback_TypeMismatch</title>
+<meta charset="utf-8"/>
+<script src="support/unitcommon.js"></script>
+<script src="support/humanactivitymonitor_common.js"></script>
+</head>
+<body>
+<div id="log"></div>
+<script>
+//==== TEST: HumanActivityMonitorManager_addActivityRecognitionListener_errorCallback_TypeMismatch
+//==== LABEL Check if the method addActivityRecognitionListener of HumanActivityMonitorManager throws TypeMismatchError when invalid type value is assigned for errorCallback parameter
+//==== SPEC Tizen Web API:HumanActivityMonitor:HumanActivityMonitorManager:addActivityRecognitionListener M
+//==== SPEC_URL TBD
+//==== PRIORITY P2
+//==== TEST_CRITERIA MC
+
+test(function () {
+ var humanActivityType = "STATIONARY", listener, errorCallback, conversionTable, exceptionName;
+ listener = function () {};
+ conversionTable = getTypeConversionExceptions("functionObject", false);
+ for (i = 0; i < conversionTable.length; i++) {
+ listener = conversionTable[i][0];
+ exceptionName = conversionTable[i][1];
+ assert_throws(TYPE_MISMATCH_EXCEPTION, function () {
+ tizen.humanactivitymonitor.addActivityRecognitionListener(humanActivityType, listener, errorCallback);
+ }, "TypeMismatchError should be thrown - given incorrect listener");
+ }
+}, document.title);
+</script>
+</body>
+</html>
\ No newline at end of file
--- /dev/null
+<!DOCTYPE html>
+<!--
+Copyright (c) 2016 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:
+ Hyukin Kwon <hyukin.kwon@samsung.com>
+
+-->
+<html>
+<head>
+<title>HumanActivityMonitorManager_addActivityRecognitionListener_exist</title>
+<meta charset="utf-8"/>
+<script src="support/unitcommon.js"></script>
+<script src="support/humanactivitymonitor_common.js"></script>
+</head>
+<body>
+<div id="log"></div>
+<script>
+//==== TEST: HumanActivityMonitorManager_addActivityRecognitionListener_exist
+//==== LABEL Check if the method addActivityRecognitionListener of HumanActivityMonitorManager exist
+//==== SPEC Tizen Web API:HumanActivityMonitor:HumanActivityMonitorManager:addActivityRecognitionListener M
+//==== SPEC_URL TBD
+//==== PRIORITY P1
+//==== TEST_CRITERIA ME
+
+test(function () {
+ check_method_exists(tizen.humanactivitymonitor, "addActivityRecognitionListener");
+}, document.title);
+</script>
+</body>
+</html>
\ No newline at end of file
--- /dev/null
+<!DOCTYPE html>
+<!--
+Copyright (c) 2016 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:
+ Hyukin Kwon <hyukin.kwon@samsung.com>
+
+-->
+<html>
+<head>
+<title>HumanActivityMonitorManager_addActivityRecognitionListener_type_TypeMismatch</title>
+<meta charset="utf-8"/>
+<script src="support/unitcommon.js"></script>
+<script src="support/humanactivitymonitor_common.js"></script>
+</head>
+<body>
+<div id="log"></div>
+<script>
+//==== TEST: HumanActivityMonitorManager_addActivityRecognitionListener_type_TypeMismatch
+//==== LABEL Check if the method addActivityRecognitionListener of HumanActivityMonitorManager throws TypeMismatchError when invalid value is assigned for type parameter
+//==== SPEC Tizen Web API:HumanActivityMonitor:HumanActivityMonitorManager:addActivityRecognitionListener M
+//==== SPEC_URL TBD
+//==== PRIORITY P2
+//==== TEST_CRITERIA MC MTCB MTL
+
+test(function () {
+ var humanActivityType = "STATIONARY", listener, conversionTable, exceptionName;
+ conversionTable = getTypeConversionExceptions("functionObject", false);
+ for (i = 0; i < conversionTable.length; i++) {
+ listener = conversionTable[i][0];
+ exceptionName = conversionTable[i][1];
+ assert_throws(TYPE_MISMATCH_EXCEPTION, function () {
+ tizen.humanactivitymonitor.addActivityRecognitionListener(humanActivityType, listener);
+ }, "TypeMismatchError should be thrown - given incorrect listener");
+ }
+}, document.title);
+</script>
+</body>
+</html>
\ No newline at end of file
--- /dev/null
+<!DOCTYPE html>
+<!--
+Copyright (c) 2016 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:
+ Hyukin Kwon <hyukin.kwon@samsung.com>
+
+-->
+<html>
+<head>
+<title>HumanActivityMonitorManager_addActivityRecognitionListener_misarg</title>
+<meta charset="utf-8"/>
+<script src="support/unitcommon.js"></script>
+<script src="support/humanactivitymonitor_common.js"></script>
+</head>
+<body>
+<div id="log"></div>
+<script>
+//==== TEST: HumanActivityMonitorManager_addActivityRecognitionListener_misarg
+//==== LABEL Check if the method addActivityRecognitionListener of HumanActivityMonitorManager throws TypeMismatchError when no param assigned
+//==== SPEC Tizen Web API:HumanActivityMonitor:HumanActivityMonitorManager:addActivityRecognitionListener M
+//==== SPEC_URL TBD
+//==== PRIORITY P2
+//==== TEST_CRITERIA MMA
+
+test(function () {
+ assert_throws(TYPE_MISMATCH_EXCEPTION, function () {
+ tizen.humanactivitymonitor.addActivityRecognitionListener();
+ }, TYPE_MISMATCH_EXCEPTION + " should be thrown when no argument assigned");
+}, document.title);
+</script>
+</body>
+</html>
\ No newline at end of file
--- /dev/null
+<!DOCTYPE html>
+<!--
+Copyright (c) 2016 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:
+ Hyukin Kwon <hyukin.kwon@samsung.com>
+
+-->
+<html>
+<head>
+<title>HumanActivityMonitorManager_addActivityRecognitionListener_listener_TypeMismatch</title>
+<meta charset="utf-8"/>
+<script src="support/unitcommon.js"></script>
+<script src="support/humanactivitymonitor_common.js"></script>
+</head>
+<body>
+<div id="log"></div>
+<script>
+//==== TEST: HumanActivityMonitorManager_addActivityRecognitionListener_listener_TypeMismatch
+//==== LABEL Check if the method addActivityRecognitionListener of HumanActivityMonitorManager throws TypeMismatchError when invalid type value is assigned for listener parameter
+//==== SPEC Tizen Web API:HumanActivityMonitor:HumanActivityMonitorManager:addActivityRecognitionListener M
+//==== SPEC_URL TBD
+//==== PRIORITY P2
+//==== TEST_CRITERIA MC
+
+test(function () {
+ var humanActivityType = "INVALID", listener;
+ listener = function () {};
+ assert_throws(TYPE_MISMATCH_EXCEPTION, function () {
+ tizen.humanactivitymonitor.addActivityRecognitionListener(humanActivityType, listener);
+ });
+}, document.title);
+</script>
+</body>
+</html>
\ No newline at end of file
--- /dev/null
+<!DOCTYPE html>
+<!--
+Copyright (c) 2016 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:
+ Hyukin Kwon <hyukin.kwon@samsung.com>
+
+-->
+<html>
+<head>
+<title>HumanActivityMonitorManager_addActivityRecognitionListener_with_errorCallback</title>
+<meta charset="utf-8"/>
+<script src="support/unitcommon.js"></script>
+<script src="support/humanactivitymonitor_common.js"></script>
+</head>
+<body>
+<div id="log"></div>
+<script>
+//==== TEST: HumanActivityMonitorManager_addActivityRecognitionListener_with_errorCallback
+//==== LABEL Check if the method addActivityRecognitionListener of HumanActivityMonitorManager returns proper value with errorcallback assigned
+//==== SPEC Tizen Web API:HumanActivityMonitor:HumanActivityMonitorManager:addActivityRecognitionListener M
+//==== SPEC_URL TBD
+//==== PRIORITY P1
+//==== EXECUTION_TYPE manual
+//==== STEP Press run button, then keep the device stationary
+//==== EXPECT Pass
+//==== TEST_CRITERIA MR MOA CBT
+//==== ONLOAD_DELAY 60
+
+setup({"timeout": 60000});
+
+var t = async_test(document.title, {"timeout": 60000}), returnedValue = null, humanActivityType = "STATIONARY", listener, errorCallback;
+
+t.step(function () {
+ add_result_callback(function () {
+ tizen.humanactivitymonitor.removeActivityRecognitionListener(returnedValue);
+ });
+
+ errorCallback = t.step_func(function (error) {
+ assert_unreached("Error callback should not be invoked, but was invoked with the error " + error.name);
+ });
+
+ listener = t.step_func(function (info) {
+ assert_type(info, "object", "info is not an object");
+ assert_own_property(info, "type", "info does not have type property");
+ assert_equals(info.type, "STATIONARY", "Expected STATIONARY, but got " + info.type);
+ assert_own_property(info, "timestamp", "info does not have timestamp property");
+ assert_type(info.timestamp, "long", "info.timestamp is not long type");
+ assert_in_array(info.accuracy, ["LOW", "MEDIUM", "HIGH"], "Incorrect value of type");
+ assert_type(info, "object", "info is not an object");
+ t.done();
+ });
+
+ returnedValue = tizen.humanactivitymonitor.addActivityRecognitionListener(humanActivityType, listener, errorCallback);
+ assert_type(returnedValue, "long", "Incorrect type returned from addActivityRecognitionListener");
+ alert("Keep the device stationary after pressing OK.");
+});
+</script>
+</body>
+</html>
--- /dev/null
+<!DOCTYPE html>
+<!--
+Copyright (c) 2016 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:
+ Hyukin Kwon <hyukin.kwon@samsung.com>
+
+-->
+<html>
+<head>
+<title>HumanActivityMonitorManager_addActivityRecognitionListener_with_errorCallback_null</title>
+<meta charset="utf-8"/>
+<script src="support/unitcommon.js"></script>
+<script src="support/humanactivitymonitor_common.js"></script>
+</head>
+<body>
+<div id="log"></div>
+<script>
+//==== TEST: HumanActivityMonitorManager_addActivityRecognitionListener_with_errorCallback_null
+//==== LABEL Check if the method addActivityRecognitionListener of HumanActivityMonitorManager returns proper value with errorcallback null assigned
+//==== SPEC Tizen Web API:HumanActivityMonitor:HumanActivityMonitorManager:addActivityRecognitionListener M
+//==== SPEC_URL TBD
+//==== PRIORITY P1
+//==== EXECUTION_TYPE manual
+//==== STEP Press run button, then keep the device stationary
+//==== EXPECT Pass
+//==== TEST_CRITERIA MR MMINA CBT
+//==== ONLOAD_DELAY 60
+
+setup({"timeout": 60000});
+
+var t = async_test(document.title, {"timeout": 60000}), returnedValue = null, humanActivityType = "STATIONARY", listener;
+
+t.step(function () {
+ add_result_callback(function () {
+ tizen.humanactivitymonitor.removeActivityRecognitionListener(returnedValue);
+ });
+
+ listener = t.step_func(function (info) {
+ assert_type(info, "object", "info is not an object");
+ assert_own_property(info, "type", "info does not have type property");
+ assert_equals(info.type, "STATIONARY", "Expected STATIONARY, but got " + info.type);
+ assert_own_property(info, "timestamp", "info does not have timestamp property");
+ assert_type(info.timestamp, "long", "info.timestamp is not long type");
+ assert_in_array(info.accuracy, ["LOW", "MEDIUM", "HIGH"], "Incorrect value of type");
+ assert_type(info, "object", "info is not an object");
+ t.done();
+ });
+
+ returnedValue = tizen.humanactivitymonitor.addActivityRecognitionListener(humanActivityType, listener, null);
+ assert_type(returnedValue, "long", "Incorrect type returned from addActivityRecognitionListener");
+ alert("Keep the device stationary after pressing OK.");
+});
+</script>
+</body>
+</html>
--- /dev/null
+<!DOCTYPE html>
+<!--
+Copyright (c) 2014 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:
+ Saud Mohammad Mostafa <saud.mm@samsung.com>
+ Saleh Enam Shohag <saleh.enam@samsung.com>
+
+-->
+<html>
+<head>
+<title>HumanActivityMonitorManager_extend</title>
+<meta charset="utf-8"/>
+<script src="support/unitcommon.js"></script>
+</head>
+<body>
+<div id="log"></div>
+<script>
+//==== TEST: HumanActivityMonitorManager_extend
+//==== LABEL Check if HumanActivityMonitorManager is extendable
+//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityMonitorManager:HumanActivityMonitorManager U
+//==== SPEC_URL TBD
+//==== PRIORITY P3
+//==== TEST_CRITERIA OBX
+
+test(function () {
+ check_extensibility(tizen.humanactivitymonitor);
+}, document.title);
+
+</script>
+</body>
+</html>
\ No newline at end of file
--- /dev/null
+<!DOCTYPE html>
+<!--
+Copyright (c) 2014 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:
+ Saud Mohammad Mostafa <saud.mm@samsung.com>
+
+-->
+<html>
+<head>
+<title>HumanActivityMonitorManager_getHumanActivityData</title>
+<meta charset="utf-8"/>
+<script src="support/unitcommon.js"></script>
+<script src="support/humanactivitymonitor_common.js"></script>
+</head>
+<body>
+<div id="log"></div>
+<script>
+//==== TEST: HumanActivityMonitorManager_getHumanActivityData
+//==== LABEL Check if method getHumanActivityData of HumanActivityMonitorManager returns properly value
+//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityMonitorManager:getHumanActivityData M
+//==== SPEC_URL TBD
+//==== PRIORITY P1
+//==== TEST_CRITERIA MR MMINA
+
+test(function () {
+ var returnedValue = null, humanActivityType = "PEDOMETER";
+
+ add_result_callback(function () {
+ tizen.humanactivitymonitor.stop(humanActivityType);
+ });
+
+ try {
+ returnedValue = tizen.humanactivitymonitor.start(humanActivityType);
+ assert_equals(returnedValue, undefined, "Incorrect returned value");
+ returnedValue = tizen.humanactivitymonitor.getHumanActivityData(humanActivityType, function () {});
+ assert_equals(returnedValue, undefined, "Incorrect returned value");
+ } catch (e) {
+ if(e.name === NOT_SUPPORTED_EXCEPTION) {
+ //do nothing here
+ } else {
+ assert_unreached("unexpected exception is thrown" + e.name + ", msg: " + e.message);
+ }
+ }
+}, document.title);
+
+</script>
+</body>
+</html>
\ No newline at end of file
--- /dev/null
+<!DOCTYPE html>
+<!--
+Copyright (c) 2014 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:
+ Saud Mohammad Mostafa <saud.mm@samsung.com>
+ Saleh Enam Shohag <saleh.enam@samsung.com>
+
+-->
+<html>
+<head>
+<title>HumanActivityMonitorManager_getHumanActivityData_errorCallback_TypeMismatch</title>
+<meta charset="utf-8"/>
+<script src="support/unitcommon.js"></script>
+<script src="support/humanactivitymonitor_common.js"></script>
+</head>
+<body>
+<div id="log"></div>
+<script>
+//==== TEST: HumanActivityMonitorManager_getHumanActivityData_errorCallback_TypeMismatch
+//==== LABEL Check if HumanActivityMonitorManager::getHumanActivityData() with incorrect errorCallback argument throws exception
+//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityMonitorManager:getHumanActivityData M
+//==== SPEC_URL TBD
+//==== PRIORITY P2
+//==== ONLOAD_DELAY 30
+//==== TEST_CRITERIA MC
+
+setup({timeout: 30000});
+
+var t = async_test(document.title, {timeout: 30000}), successCallback, errorCallback, conversionTable, exceptionName, i, humanActivityType;
+
+t.step(function () {
+ add_result_callback(function () {
+ tizen.humanactivitymonitor.stop(humanActivityType);
+ });
+
+ successCallback = t.step_func(function (humanActivityData) {
+ assert_unreached("Should not be here.");
+ });
+
+ humanActivityType = "PEDOMETER";
+ tizen.humanactivitymonitor.start(humanActivityType);
+ conversionTable = getTypeConversionExceptions("functionObject", true);
+ for (i = 0; i < conversionTable.length; i++) {
+ errorCallback = conversionTable[i][0];
+ exceptionName = conversionTable[i][1];
+ assert_throws(TYPE_MISMATCH_EXCEPTION, function () {
+ tizen.humanactivitymonitor.getHumanActivityData(humanActivityType, successCallback, errorCallback);
+ }, " should be thrown - given incorrect errorCallback");
+ }
+ t.done();
+});
+
+</script>
+</body>
+</html>
\ No newline at end of file
--- /dev/null
+<!DOCTYPE html>
+<!--
+Copyright (c) 2014 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:
+ Saud Mohammad Mostafa <saud.mm@samsung.com>
+ Saleh Enam Shohag <saleh.enam@samsung.com>
+
+-->
+<html>
+<head>
+<title>HumanActivityMonitorManager_getHumanActivityData_errorCallback_invalid_cb</title>
+<meta charset="utf-8"/>
+<script src="support/unitcommon.js"></script>
+</head>
+<body>
+<div id="log"></div>
+<script>
+//==== TEST: HumanActivityMonitorManager_getHumanActivityData_errorCallback_invalid_cb
+//==== LABEL Check if HumanActivityMonitorManager::getHumanActivityData() method throws exception when errorCallback is invalid
+//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityMonitorManager:getHumanActivityData M
+//==== SPEC_URL TBD
+//==== PRIORITY P2
+//==== ONLOAD_DELAY 30
+//==== TEST_CRITERIA MTCB
+
+setup({timeout: 30000});
+
+var t = async_test(document.title, {timeout: 30000}), successCallback, invalidCallback, humanActivityType = "PEDOMETER";
+
+t.step(function () {
+ add_result_callback(function () {
+ tizen.humanactivitymonitor.stop(humanActivityType);
+ });
+
+ successCallback = t.step_func(function (humanActivityData) {
+ assert_unreached("Should not be here.");
+ });
+
+ invalidCallback = {
+ onerror: t.step_func(function (error) {
+ assert_unreached("Invalid errorCallback should not be invoked: " + error.name + ": " + error.message);
+ })
+ };
+
+ tizen.humanactivitymonitor.start(humanActivityType);
+ assert_throws(TYPE_MISMATCH_EXCEPTION, function () {
+ tizen.humanactivitymonitor.getHumanActivityData(humanActivityType, successCallback, invalidCallback);
+ }, TYPE_MISMATCH_EXCEPTION + "should be thrown");
+ t.done();
+});
+
+</script>
+</body>
+</html>
\ No newline at end of file
--- /dev/null
+<!DOCTYPE html>
+<!--
+Copyright (c) 2014 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:
+ Saleh Enam Shohag <saleh.enam@samsung.com>
+
+-->
+<html>
+<head>
+<title>HumanActivityMonitorManager_getHumanActivityData_errorCallback_invoked</title>
+<meta charset="utf-8"/>
+<script src="support/unitcommon.js"></script>
+</head>
+<body>
+<div id="log"></div>
+<script>
+//==== TEST: HumanActivityMonitorManager_getHumanActivityData_errorCallback_invoked
+//==== LABEL Check exception in error callback of HumanActivityMonitorManager::getHumanActivityData() method
+//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityMonitorManager:getHumanActivityData M
+//==== SPEC_URL TBD
+//==== PRIORITY P2
+//==== ONLOAD_DELAY 30
+//==== TEST_CRITERIA MERRCB
+
+setup({timeout: 30000});
+
+var t = async_test(document.title, {timeout: 30000}), successCallback, errorCallback, humanActivityType = "PEDOMETER";
+
+t.step(function () {
+ successCallback = t.step_func(function (humanActivityData) {
+ assert_unreached("SuccessCallback should not invoke");
+ });
+
+ errorCallback = t.step_func(function (error) {
+ assert_equals(error.name, "ServiceNotAvailableError", "Incorrect error name");
+ assert_type(error.message, "string", "Error message is not string");
+ assert_not_equals(error.message, "", "Error message is empty");
+ t.done();
+ });
+
+ tizen.humanactivitymonitor.getHumanActivityData(humanActivityType, successCallback, errorCallback);
+});
+
+</script>
+</body>
+</html>
\ No newline at end of file
--- /dev/null
+<!DOCTYPE html>
+<!--
+Copyright (c) 2014 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:
+ Saud Mohammad Mostafa <saud.mm@samsung.com>
+ Saleh Enam Shohag <saleh.enam@samsung.com>
+
+-->
+<html>
+<head>
+<title>HumanActivityMonitorManager_getHumanActivityData_exist</title>
+<meta charset="utf-8"/>
+<script src="support/unitcommon.js"></script>
+</head>
+<body>
+<div id="log"></div>
+<script>
+//==== TEST: HumanActivityMonitorManager_getHumanActivityData_exist
+//==== LABEL Check if HumanActivityMonitorManager::getHumanActivityData() method exists
+//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityMonitorManager:getHumanActivityData M
+//==== SPEC_URL TBD
+//==== PRIORITY P0
+//==== TEST_CRITERIA ME
+
+test(function () {
+ check_method_exists(tizen.humanactivitymonitor, "getHumanActivityData");
+}, document.title);
+
+</script>
+</body>
+</html>
\ No newline at end of file
--- /dev/null
+<!DOCTYPE html>
+<!--
+Copyright (c) 2014 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:
+ Saud Mohammad Mostafa <saud.mm@samsung.com>
+ Saleh Enam Shohag <saleh.enam@samsung.com>
+
+-->
+<html>
+<head>
+<title>HumanActivityMonitorManager_getHumanActivityData_misarg</title>
+<meta charset="utf-8"/>
+<script src="support/unitcommon.js"></script>
+</head>
+<body>
+<div id="log"></div>
+<script>
+//==== TEST: HumanActivityMonitorManager_getHumanActivityData_misarg
+//==== LABEL Check if HumanActivityMonitorManager::getHumanActivityData() throws exception when successCallback is missing
+//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityMonitorManager:getHumanActivityData M
+//==== SPEC_URL TBD
+//==== PRIORITY P2
+//==== TEST_CRITERIA MMA
+
+test(function () {
+ var humanActivityType;
+ add_result_callback(function () {
+ tizen.humanactivitymonitor.stop(humanActivityType);
+ });
+
+ humanActivityType = "PEDOMETER";
+ tizen.humanactivitymonitor.start(humanActivityType);
+ assert_throws(TYPE_MISMATCH_EXCEPTION, function () {
+ tizen.humanactivitymonitor.getHumanActivityData();
+ }, TYPE_MISMATCH_EXCEPTION + " should be thrown");
+}, document.title);
+
+</script>
+</body>
+</html>
\ No newline at end of file
--- /dev/null
+<!DOCTYPE html>
+<!--
+Copyright (c) 2014 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:
+ Wei Zhang <wei625.zhang@samsung.com>
+
+-->
+<html>
+<head>
+<title>HumanActivityMonitorManager_getHumanActivityData_stepStatus_NOT_MOVING</title>
+<script src="support/unitcommon.js"></script>
+<meta charset="utf-8"/>
+<script src="support/humanactivitymonitor_common.js"></script>
+</head>
+<body>
+<div id="log"></div>
+<script>
+//==== TEST: HumanActivityMonitorManager_getHumanActivityData_stepStatus_NOT_MOVING
+//==== LABEL Check if the specifies the pedometer user's current movement type is NOT_MOVING
+//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityMonitorManager:getHumanActivityData M
+//==== SPEC_URL TBD
+//==== PRIORITY P1
+//==== EXECUTION_TYPE manual
+//==== STEP Press run button, then keep the device stationary.
+//==== EXPECT Pass
+//==== ONLOAD_DELAY 30
+//==== TEST_CRITERIA MR MMINA
+
+setup({timeout: 30000});
+
+var t = async_test(document.title, {timeout: 30000}), successCallback, returnedValue = null, humanActivityType;
+
+t.step(function () {
+ add_result_callback(function () {
+ tizen.humanactivitymonitor.stop(humanActivityType);
+ });
+
+ successCallback = t.step_func(function (humanActivityData) {
+ assert_equals(returnedValue, undefined, "Incorrect returned value");
+ if (humanActivityData.stepStatus === "NOT_MOVING")
+ t.done();
+ });
+
+ humanActivityType = "PEDOMETER";
+ tizen.humanactivitymonitor.start(humanActivityType);
+ setTimeout(function(){
+ returnedValue = tizen.humanactivitymonitor.getHumanActivityData(humanActivityType, successCallback);}, 20000);
+});
+
+</script>
+</body>
+</html>
\ No newline at end of file
--- /dev/null
+<!DOCTYPE html>
+<!--
+Copyright (c) 2014 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:
+ Wei Zhang <wei625.zhang@samsung.com>
+
+-->
+<html>
+<head>
+<title>HumanActivityMonitorManager_getHumanActivityData_stepStatus_RUNNING</title>
+<script src="support/unitcommon.js"></script>
+<meta charset="utf-8"/>
+<script src="support/humanactivitymonitor_common.js"></script>
+</head>
+<body>
+<div id="log"></div>
+<script>
+//==== TEST: HumanActivityMonitorManager_getHumanActivityData_stepStatus_RUNNING
+//==== LABEL Check if the specifies the pedometer user's current movement type is RUNNING
+//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityMonitorManager:getHumanActivityData M
+//==== SPEC_URL TBD
+//==== PRIORITY P1
+//==== EXECUTION_TYPE manual
+//==== STEP Press run button. Pretend running with the device.
+//==== EXPECT Pass
+//==== ONLOAD_DELAY 30
+//==== TEST_CRITERIA MR MMINA
+
+setup({timeout: 30000});
+
+var t = async_test(document.title, {timeout: 30000}), successCallback, returnedValue = null, humanActivityType;
+
+t.step(function () {
+ add_result_callback(function () {
+ tizen.humanactivitymonitor.stop(humanActivityType);
+ });
+
+ successCallback = t.step_func(function (humanActivityData) {
+ assert_equals(returnedValue, undefined, "Incorrect returned value");
+ if (humanActivityData.stepStatus === "RUNNING")
+ t.done();
+ });
+
+ humanActivityType = "PEDOMETER";
+ tizen.humanactivitymonitor.start(humanActivityType);
+ setTimeout(function(){
+ returnedValue = tizen.humanactivitymonitor.getHumanActivityData(humanActivityType, successCallback);}, 20000);
+});
+
+</script>
+</body>
+</html>
\ No newline at end of file
--- /dev/null
+<!DOCTYPE html>
+<!--
+Copyright (c) 2014 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:
+ Wei Zhang <wei625.zhang@samsung.com>
+
+-->
+<html>
+<head>
+<title>HumanActivityMonitorManager_getHumanActivityData_stepStatus_UNKNOWN</title>
+<script src="support/unitcommon.js"></script>
+<meta charset="utf-8"/>
+<script src="support/humanactivitymonitor_common.js"></script>
+</head>
+<body>
+<div id="log"></div>
+<script>
+//==== TEST: HumanActivityMonitorManager_getHumanActivityData_stepStatus_UNKNOWN
+//==== LABEL Check if the specifies the pedometer user's current movement type is UNKNOWN
+//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityMonitorManager:getHumanActivityData M
+//==== SPEC_URL TBD
+//==== PRIORITY P1
+//==== EXECUTION_TYPE manual
+//==== STEP Press run button, press Power key to keep the device LCD off, then Pretend walking with the device.
+//==== EXPECT Pass
+//==== ONLOAD_DELAY 30
+//==== TEST_CRITERIA MR MMINA
+
+setup({timeout: 30000});
+
+var t = async_test(document.title, {timeout: 30000}), successCallback, returnedValue = null, humanActivityType;
+
+t.step(function () {
+ add_result_callback(function () {
+ tizen.humanactivitymonitor.stop(humanActivityType);
+ });
+
+ successCallback = t.step_func(function (humanActivityData) {
+ assert_equals(returnedValue, undefined, "Incorrect returned value");
+ if (humanActivityData.stepStatus === "UNKNOWN")
+ t.done();
+ });
+
+ humanActivityType = "PEDOMETER";
+ tizen.humanactivitymonitor.start(humanActivityType);
+ setTimeout(function(){
+ returnedValue = tizen.humanactivitymonitor.getHumanActivityData(humanActivityType, successCallback);}, 20000);
+});
+
+</script>
+</body>
+</html>
\ No newline at end of file
--- /dev/null
+<!DOCTYPE html>
+<!--
+Copyright (c) 2014 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:
+ Wei Zhang <wei625.zhang@samsung.com>
+
+-->
+<html>
+<head>
+<title>HumanActivityMonitorManager_getHumanActivityData_stepStatus_WALKING</title>
+<script src="support/unitcommon.js"></script>
+<meta charset="utf-8"/>
+<script src="support/humanactivitymonitor_common.js"></script>
+</head>
+<body>
+<div id="log"></div>
+<script>
+//==== TEST: HumanActivityMonitorManager_getHumanActivityData_stepStatus_WALKING
+//==== LABEL Check if the specifies the pedometer user's current movement type is WALKING
+//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityMonitorManager:getHumanActivityData M
+//==== SPEC_URL TBD
+//==== PRIORITY P1
+//==== EXECUTION_TYPE manual
+//==== STEP Press run button. Pretend walking with the device.
+//==== EXPECT Pass
+//==== ONLOAD_DELAY 30
+//==== TEST_CRITERIA MR MMINA
+
+setup({timeout: 30000});
+
+var t = async_test(document.title, {timeout: 30000}), successCallback, returnedValue = null, humanActivityType;
+
+t.step(function () {
+ add_result_callback(function () {
+ tizen.humanactivitymonitor.stop(humanActivityType);
+ });
+
+ successCallback = t.step_func(function (humanActivityData) {
+ assert_equals(returnedValue, undefined, "Incorrect returned value");
+ if (humanActivityData.stepStatus === "WALKING")
+ t.done();
+ });
+
+ humanActivityType = "PEDOMETER";
+ tizen.humanactivitymonitor.start(humanActivityType);
+ setTimeout(function(){
+ returnedValue = tizen.humanactivitymonitor.getHumanActivityData(humanActivityType, successCallback);}, 20000);
+});
+
+</script>
+</body>
+</html>
\ No newline at end of file
--- /dev/null
+<!DOCTYPE html>
+<!--
+Copyright (c) 2014 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:
+ Saud Mohammad Mostafa <saud.mm@samsung.com>
+
+-->
+<html>
+<head>
+<title>HumanActivityMonitorManager_getHumanActivityData_successCallback_TypeMismatch</title>
+<meta charset="utf-8"/>
+<script src="support/unitcommon.js"></script>
+</head>
+<body>
+<div id="log"></div>
+<script>
+//==== TEST: HumanActivityMonitorManager_getHumanActivityData_successCallback_TypeMismatch
+//==== LABEL Check if HumanActivityMonitorManager::getHumanActivityData() with incorrect successCallback argument throws exception
+//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityMonitorManager:getHumanActivityData M
+//==== SPEC_URL TBD
+//==== PRIORITY P2
+//==== ONLOAD_DELAY 30
+//==== TEST_CRITERIA MC
+
+setup({timeout: 30000});
+
+var t = async_test(document.title, {timeout: 30000}), successCallback, conversionTable, exceptionName, i, humanActivityType;
+
+t.step(function () {
+ add_result_callback(function () {
+ tizen.humanactivitymonitor.stop(humanActivityType);
+ });
+
+ humanActivityType = "PEDOMETER";
+ tizen.humanactivitymonitor.start(humanActivityType);
+ conversionTable = getTypeConversionExceptions("functionObject", false);
+ for (i = 0; i < conversionTable.length; i++) {
+ successCallback = conversionTable[i][0];
+ exceptionName = conversionTable[i][1];
+ assert_throws(TYPE_MISMATCH_EXCEPTION, function () {
+ tizen.humanactivitymonitor.getHumanActivityData(humanActivityType, successCallback);
+ }, TYPE_MISMATCH_EXCEPTION + " should be thrown - given incorrect successCallback");
+ }
+ t.done();
+});
+
+</script>
+</body>
+</html>
\ No newline at end of file
--- /dev/null
+<!DOCTYPE html>
+<!--
+Copyright (c) 2014 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:
+ Saud Mohammad Mostafa <saud.mm@samsung.com>
+ Saleh Enam Shohag <saleh.enam@samsung.com>
+
+-->
+<html>
+<head>
+<title>HumanActivityMonitorManager_getHumanActivityData_successCallback_invalid_cb </title>
+<meta charset="utf-8"/>
+<script src="support/unitcommon.js"></script>
+</head>
+<body>
+<div id="log"></div>
+<script>
+//==== TEST: HumanActivityMonitorManager_getHumanActivityData_successCallback_invalid_cb
+//==== LABEL Check if HumanActivityMonitorManager::getHumanActivityData() method throws exception when successCallback is invalid
+//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityMonitorManager:getHumanActivityData M
+//==== SPEC_URL TBD
+//==== PRIORITY P2
+//==== ONLOAD_DELAY 30
+//==== TEST_CRITERIA MTCB
+
+setup({timeout: 30000});
+
+var t = async_test(document.title, {timeout: 30000}), invalidCallback, humanActivityType
+
+t.step(function () {
+ add_result_callback(function () {
+ tizen.humanactivitymonitor.stop(humanActivityType);
+ });
+
+ invalidCallback = {
+ onsuccess: t.step_func(function (humanActivityData) {
+ assert_unreached("Invalid success callback invoked");
+ })
+ };
+
+ humanActivityType = "PEDOMETER";
+ tizen.humanactivitymonitor.start(humanActivityType);
+ assert_throws(TYPE_MISMATCH_EXCEPTION, function () {
+ tizen.humanactivitymonitor.getHumanActivityData(humanActivityType, invalidCallback);
+ }, TYPE_MISMATCH_EXCEPTION + "should be thrown");
+ t.done();
+});
+
+</script>
+</body>
+</html>
\ No newline at end of file
--- /dev/null
+<!DOCTYPE html>
+<!--
+Copyright (c) 2014 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:
+ Saleh Enam Shohag <saleh.enam@samsung.com>
+
+-->
+<html>
+<head>
+<title>HumanActivityMonitorManager_getHumanActivityData_type_HRM</title>
+<script src="support/unitcommon.js"></script>
+<meta charset="utf-8"/>
+<script src="support/humanactivitymonitor_common.js"></script>
+</head>
+<body>
+<div id="log"></div>
+<script>
+//==== TEST: HumanActivityMonitorManager_getHumanActivityData_type_HRM
+//==== LABEL Check if HumanActivityMonitorManager::getHumanActivityData() method works properly for HumanActivityType HRM
+//==== SPEC Tizen Web API:System:HumanActivityMonitor:HumanActivityMonitorManager:getHumanActivityData M
+//==== SPEC_URL TBD
+//==== PRIORITY P1
+//==== ONLOAD_DELAY 30
+//==== TEST_CRITERIA MR MMINA
+
+setup({timeout: 30000});
+
+var t = async_test(document.title, {timeout: 30000}), successCallback, returnedValue = null, humanActivityType;
+
+t.step(function () {
+ add_result_callback(function () {
+ tizen.humanactivitymonitor.stop(humanActivityType);
+ });
+
+ successCallback = t.step_func(function (humanActivityData) {
+ assert_equals(returnedValue, undefined, "Incorrect returned value");
+ t.done();
+ });
+
+ humanActivityType = "HRM";
+ tizen.humanactivitymonitor.start(humanActivityType);
+ setTimeout(function(){ returnedValue = tizen.humanactivitymonitor.getHumanActivityData(humanActivityType, successCallback); }, 3000);
+
+});
+
+</script>
+</body>
+</html>
--- /dev/null
+<!DOCTYPE html>
+<!--
+Copyright (c) 2014 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:
+ Saud Mohammad Mostafa <saud.mm@samsung.com>
+ Saleh Enam Shohag <saleh.enam@samsung.com>
+
+-->
+<html>
+<head>
+<title>HumanActivityMonitorManager_getHumanActivityData_type_PEDOMETER</title>
+<script src="support/unitcommon.js"></script>
+<meta charset="utf-8"/>
+<script src="support/humanactivitymonitor_common.js"></script>
+</head>
+<body>
+<div id="log"></div>
+<script>
+//==== TEST: HumanActivityMonitorManager_getHumanActivityData_type_PEDOMETER
+//==== LABEL Check if HumanActivityMonitorManager::getHumanActivityData() method works properly
+//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityMonitorManager:getHumanActivityData M
+//==== SPEC_URL TBD
+//==== PRIORITY P1
+//==== ONLOAD_DELAY 30
+//==== TEST_CRITERIA MR MMINA
+
+setup({timeout: 30000});
+
+var t = async_test(document.title, {timeout: 30000}), successCallback, returnedValue = null, humanActivityType;
+
+t.step(function () {
+ add_result_callback(function () {
+ tizen.humanactivitymonitor.stop(humanActivityType);
+ });
+
+ successCallback = t.step_func(function (humanActivityData) {
+ assert_equals(returnedValue, undefined, "Incorrect returned value");
+ check_human_activity_pedometer_data(humanActivityData);
+ t.done();
+ });
+
+ humanActivityType = "PEDOMETER";
+ tizen.humanactivitymonitor.start(humanActivityType);
+ returnedValue = tizen.humanactivitymonitor.getHumanActivityData(humanActivityType, successCallback);
+});
+
+</script>
+</body>
+</html>
\ No newline at end of file
--- /dev/null
+<!DOCTYPE html>
+<!--
+Copyright (c) 2014 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:
+ Saud Mohammad Mostafa <saud.mm@samsung.com>
+
+-->
+<html>
+<head>
+<title>HumanActivityMonitorManager_getHumanActivityData_with_errorCallback</title>
+<meta charset="utf-8"/>
+<script src="support/unitcommon.js"></script>
+<script src="support/humanactivitymonitor_common.js"></script>
+</head>
+<body>
+<div id="log"></div>
+<script>
+//==== TEST: HumanActivityMonitorManager_getHumanActivityData_with_errorCallback
+//==== LABEL Check if HumanActivityMonitorManager::getHumanActivityData() method works properly with optional argument
+//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityMonitorManager:getHumanActivityData M
+//==== SPEC_URL TBD
+//==== PRIORITY P1
+//==== ONLOAD_DELAY 30
+//==== TEST_CRITERIA MR MOA
+
+setup({timeout: 30000});
+
+var t = async_test(document.title, {timeout: 30000}), successCallback, errorCallback, returnedValue = null, humanActivityType;
+
+t.step(function () {
+ add_result_callback(function () {
+ tizen.humanactivitymonitor.stop(humanActivityType);
+ });
+
+ successCallback = t.step_func(function (humanActivityData) {
+ assert_equals(returnedValue, undefined, "Incorrect returned value");
+ check_human_activity_pedometer_data(humanActivityData);
+ t.done();
+ });
+
+ errorCallback = t.step_func(function (error) {
+ assert_unreached("error callback invoked: name: " + error.name + ", msg: " + error.message);
+ });
+ humanActivityType = "PEDOMETER";
+ tizen.humanactivitymonitor.start(humanActivityType);
+ returnedValue = tizen.humanactivitymonitor.getHumanActivityData(humanActivityType, successCallback, errorCallback);
+});
+
+</script>
+</body>
+</html>
\ No newline at end of file
--- /dev/null
+<!DOCTYPE html>
+<!--
+Copyright (c) 2014 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:
+ Saud Mohammad Mostafa <saud.mm@samsung.com>
+
+-->
+<html>
+<head>
+<title>HumanActivityMonitorManager_in_tizen</title>
+<meta charset="utf-8"/>
+<script src="support/unitcommon.js"></script>
+</head>
+<body>
+<div id="log"></div>
+<script>
+//==== TEST: HumanActivityMonitorManager_in_tizen
+//==== LABEL Check if humanactivitymonitor exists in tizen
+//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityMonitorManager:HumanActivityMonitorManager U
+//==== SPEC_URL TBD
+//==== PRIORITY P3
+//==== TEST_CRITERIA OBME
+
+test(function () {
+ assert_true("humanactivitymonitor" in tizen, "No humanactivitymonitor in tizen");
+ check_readonly(tizen, "humanactivitymonitor", tizen.humanactivitymonitor, "object", "dummyValue");
+}, document.title);
+
+</script>
+</body>
+</html>
\ No newline at end of file
--- /dev/null
+<!DOCTYPE html>
+<!--
+Copyright (c) 2014 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:
+ Saud Mohammad Mostafa <saud.mm@samsung.com>
+
+-->
+<html>
+<head>
+<title>HumanActivityMonitorManager_notexist</title>
+<meta charset="utf-8"/>
+<script src="support/unitcommon.js"></script>
+</head>
+<body>
+<div id="log"></div>
+<script>
+//==== TEST: HumanActivityMonitorManager_notexist
+//==== LABEL Check if interface HumanActivityMonitorManager exists, it should not
+//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityMonitorManager:HumanActivityMonitorManager U
+//==== SPEC_URL TBD
+//==== PRIORITY P3
+//==== TEST_CRITERIA NIO
+
+test(function () {
+ check_no_interface_object("HumanActivityMonitorManager");
+}, document.title);
+
+</script>
+</body>
+</html>
\ No newline at end of file
--- /dev/null
+<!DOCTYPE html>
+<!--
+Copyright (c) 2016 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:
+ Xiaoyan Qian <xy.qian@samsung.com>
+
+-->
+<html>
+<head>
+<title>HumanActivityMonitorManager_readRecorderData_NotSupportedError</title>
+<meta charset="utf-8"/>
+<script src="support/unitcommon.js"></script>
+</head>
+<body>
+<div id="log"></div>
+<script>
+//==== TEST: HumanActivityMonitorManager_readRecorderData_NotSupportedError
+//==== LABEL Check if readRecorderData throw NotSupportedError called with not supported human activity recorder type
+//==== SPEC Tizen Web API:System:HumanActivityMonitor:HumanActivityMonitorManager:readRecorderData M
+//==== SPEC_URL TBD
+//==== PRIORITY P2
+//==== TEST_CRITERIA MC
+
+setup({timeout: 30000});
+
+var t = async_test(document.title, {timeout: 30000}), successCallback, date = new Date(), endTime = date.getTime(), startTime = date.setDate(date.getDate() - 1),
+ query = {
+ startTime: startTime/1000,
+ endTime: endTime/1000,
+ interval: 1440
+ };
+
+t.step(function () {
+ successCallback = t.step_func(function (humanactivitydata) {
+ assert_unreached("success callback should not be invoked");
+ });
+
+ if (!tizen.systeminfo.getCapability("http://tizen.org/feature/sensor.pedometer")) {
+ assert_throws(NOT_SUPPORTED_EXCEPTION, function () {
+ tizen.humanactivitymonitor.readRecorderData("PEDOMETER", query, successCallback);
+ }, "NotSupportedError exception should throw");
+ }
+ if (!tizen.systeminfo.getCapability("http://tizen.org/feature/sensor.heart_rate_monitor")) {
+ assert_throws(NOT_SUPPORTED_EXCEPTION, function () {
+ tizen.humanactivitymonitor.readRecorderData("HRM", query, successCallback);
+ }, "NotSupportedError exception should throw");
+ }
+ if (!tizen.systeminfo.getCapability("http://tizen.org/feature/sensor.sleep_monitor")) {
+ assert_throws(NOT_SUPPORTED_EXCEPTION, function () {
+ tizen.humanactivitymonitor.readRecorderData("SLEEP_MONITOR", query, successCallback);
+ }, "NotSupportedError exception should throw");
+ }
+ if (!tizen.systeminfo.getCapability("http://tizen.org/feature/sensor.barometer")) {
+ assert_throws(NOT_SUPPORTED_EXCEPTION, function () {
+ tizen.humanactivitymonitor.readRecorderData("PRESSURE", query, successCallback);
+ }, "NotSupportedError exception should throw");
+ }
+
+ t.done();
+});
+
+</script>
+</body>
+</html>
\ No newline at end of file
--- /dev/null
+<!DOCTYPE html>
+<!--
+Copyright (c) 2016 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.
+
+Author:
+ Xiaoyan Qian <xy.qian@samsung.com>
+
+-->
+<html>
+<head>
+<title>HumanActivityMonitorManager_readRecorderData_errorCallback_TypeMismatch</title>
+<meta charset="utf-8"/>
+<script src="support/unitcommon.js"></script>
+</head>
+<body>
+<div id="log"></div>
+<script>
+//==== TEST: HumanActivityMonitorManager_readRecorderData_errorCallback_TypeMismatch
+//==== LABEL Check if readRecorderData throws exception when errorCallback is incorrect
+//==== ONLOAD_DELAY 30
+//==== SPEC Tizen Web API:System:HumanActivityMonitor:HumanActivityMonitorManager:readRecorderData M
+//==== SPEC_URL TBD
+//==== PRIORITY P2
+//==== TEST_CRITERIA MC
+
+setup({timeout: 30000});
+
+var t = async_test(document.title, {timeout: 30000}), conversionTable, successCallback, errorCallback, exceptionName, i,
+ date = new Date(), endTime = date.getTime(), startTime = date.setDate(date.getDate() - 1),
+ query = {
+ startTime: startTime/1000,
+ endTime: endTime/1000,
+ interval: 1440
+ };
+
+t.step(function () {
+ conversionTable = getTypeConversionExceptions("functionObject", true);
+
+ successCallback = t.step_func(function (playlist) {
+ assert_unreached("createPlaylist() success callback should not be invoked.");
+ });
+
+ for (i = 0; i < conversionTable.length; i++) {
+ errorCallback = conversionTable[i][0];
+ exceptionName = conversionTable[i][1];
+ assert_throws({name: exceptionName},
+ function () {
+ tizen.humanactivitymonitor.readRecorderData("PEDOMETER", query, successCallback, errorCallback);
+ }, "Given incorrect error callback.");
+ }
+
+ t.done();
+});
+
+</script>
+</body>
+</html>
\ No newline at end of file
--- /dev/null
+<!DOCTYPE html>
+<!--
+Copyright (c) 2016 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:
+ Xiaoyan Qian <xy.qian@samsung.com>
+
+-->
+<html>
+<head>
+<title>HumanActivityMonitorManager_readRecorderData_errorCallback_invalid_cb</title>
+<meta charset="utf-8"/>
+<script src="support/unitcommon.js"></script>
+</head>
+<body>
+<div id="log"></div>
+<script>
+//==== TEST: HumanActivityMonitorManager_readRecorderData_errorCallback_invalid_cb
+//==== LABEL Check if readRecorderData throws exception when error callback is invalid
+//==== SPEC Tizen Web API:System:HumanActivityMonitor:HumanActivityMonitorManager:readRecorderData M
+//==== SPEC_URL TBD
+//==== PRIORITY P2
+//==== TEST_CRITERIA MTCB
+
+setup({timeout: 30000});
+
+var t = async_test(document.title, {timeout: 30000}), successCallback, incorrectCallback, date = new Date(), endTime = date.getTime(), startTime = date.setDate(date.getDate() - 1),
+ query = {
+ startTime: startTime/1000,
+ endTime: endTime/1000,
+ interval: 1440
+ };
+
+t.step(function () {
+ successCallback = t.step_func(function (humanactivitydata) {
+ assert_unreached("readRecorderData() success callback should not be invoked");
+ });
+
+ incorrectCallback = {
+ onerror: t.step_func(function (error) {
+ assert_unreached("Invalid error callback invoked:" + error.name + ": " + error.message);
+ })
+ };
+
+ assert_throws(TYPE_MISMATCH_EXCEPTION,
+ function () {
+ tizen.humanactivitymonitor.readRecorderData("PEDOMETER", query, successCallback, incorrectCallback);
+ }, "Given invalid successCallback.");
+
+ t.done();
+});
+
+</script>
+</body>
+</html>
\ No newline at end of file
--- /dev/null
+<!DOCTYPE html>
+<!--
+Copyright (c) 2016 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:
+ Xiaoyan Qian <xy.qian@samsung.com>
+
+-->
+<html>
+<head>
+<title>HumanActivityMonitorManager_readRecorderData_exist</title>
+<meta charset="utf-8"/>
+<script src="support/unitcommon.js"></script>
+</head>
+<body>
+<div id="log"></div>
+<script>
+//==== TEST: HumanActivityMonitorManager_readRecorderData_exist
+//==== LABEL Check if readRecorderData exists
+//==== SPEC Tizen Web API:System:HumanActivityMonitor:HumanActivityMonitorManager:readRecorderData M
+//==== SPEC_URL TBD
+//==== PRIORITY P0
+//==== TEST_CRITERIA ME
+
+test(function () {
+ assert_true("readRecorderData" in tizen.humanactivitymonitor, "HumanActivityMonitorManager should have readRecorderData method");
+ check_method_exists(tizen.humanactivitymonitor, "readRecorderData");
+}, document.title);
+
+</script>
+</body>
+</html>
\ No newline at end of file
--- /dev/null
+<!DOCTYPE html>
+<!--
+Copyright (c) 2016 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:
+ Xiaoyan Qian <xy.qian@samsung.com>
+
+-->
+<html>
+<head>
+<title>HumanActivityMonitorManager_readRecorderData_misarg</title>
+<meta charset="utf-8"/>
+<script src="support/unitcommon.js"></script>
+</head>
+<body>
+<div id="log"></div>
+<script>
+//==== TEST: HumanActivityMonitorManager_readRecorderData_misarg
+//==== LABEL Check if HumanActivityMonitorManager::readRecorderData() called with missing non-optional argument throws an exception
+//==== PRIORITY P1
+//==== SPEC Tizen Web API:System:HumanActivityMonitor:HumanActivityMonitorManager:readRecorderData M
+//==== SPEC_URL TBD
+//==== TEST_CRITERIA MMA
+
+test(function () {
+ assert_throws(TYPE_MISMATCH_EXCEPTION, function () {
+ tizen.humanactivitymonitor.readRecorderData();
+ }, "TypeMismatchError exception should throw");
+}, document.title);
+
+</script>
+</body>
+</html>
\ No newline at end of file
--- /dev/null
+<!DOCTYPE html>
+<!--
+Copyright (c) 2016 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.
+
+Author:
+ Xiaoyan Qian <xy.qian@samsung.com>
+
+-->
+<html>
+<head>
+<title>HumanActivityMonitorManager_readRecorderData_query_TypeMismatch</title>
+<meta charset="utf-8"/>
+<script src="support/unitcommon.js"></script>
+</head>
+<body>
+<div id="log"></div>
+<script>
+//==== TEST: HumanActivityMonitorManager_readRecorderData_query_TypeMismatch
+//==== LABEL Check if readRecorderData throws exception when query is incorrect
+//==== ONLOAD_DELAY 30
+//==== SPEC Tizen Web API:System:HumanActivityMonitor:HumanActivityMonitorManager:readRecorderData M
+//==== SPEC_URL TBD
+//==== PRIORITY P2
+//==== TEST_CRITERIA MC
+
+setup({timeout: 30000});
+
+var t = async_test(document.title, {timeout: 30000}), conversionTable, successCallback, errorCallback, exceptionName, i,
+ date = new Date(), endTime = date.getTime(), startTime = date.setDate(date.getDate() - 1),
+ query = {
+ startTime: startTime/1000,
+ endTime: endTime/1000,
+ interval: 1440
+ };
+
+t.step(function () {
+ conversionTable = getTypeConversionExceptions("dictionary", true);
+
+ errorCallback = t.step_func(function (error) {
+ assert_unreached("readRecorderData() error callback was invoked: " + error.name + " msg: " + error.message);
+ });
+
+ successCallback = t.step_func(function (humanactivitydata) {
+ assert_unreached("readRecorderData() success callback should not be invoked");
+ });
+
+ for (i = 0; i < conversionTable.length; i++) {
+ query = conversionTable[i][0];
+ exceptionName = conversionTable[i][1];
+ assert_throws({name: exceptionName},
+ function () {
+ tizen.humanactivitymonitor.readRecorderData("PEDOMETER", query, successCallback, errorCallback);
+ }, "Given incorrect query callback.");
+ }
+
+ t.done();
+});
+
+</script>
+</body>
+</html>
\ No newline at end of file
--- /dev/null
+<!DOCTYPE html>
+<!--
+Copyright (c) 2016 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:
+ Xiaoyan Qian <xy.qian@samsung.com>
+
+-->
+<html>
+<head>
+<title>HumanActivityMonitorManager_readRecorderData_query_empty</title>
+<meta charset="utf-8"/>
+<script src="support/unitcommon.js"></script>
+</head>
+<body>
+<div id="log"></div>
+<script>
+//==== TEST: HumanActivityMonitorManager_readRecorderData_query_empty
+//==== LABEL Check if readRecorderData can be called with empty object as query argument
+//==== SPEC Tizen Web API:System:HumanActivityMonitor:HumanActivityMonitorManager:readRecorderData M
+//==== SPEC_URL TBD
+//==== PRIORITY P1
+//==== EXECUTION_TYPE manual
+//==== STEP Press run button. Pretend walking with the device.
+//==== EXPECT Pass
+//==== TEST_CRITERIA MTD
+//==== ONLOAD_DELAY 60
+
+setup({timeout: 90000});
+
+var t = async_test(document.title, {timeout: 90000}), retValue = null, successCallback;
+
+t.step(function () {
+
+ add_result_callback(function () {
+ tizen.humanactivitymonitor.stopRecorder("PEDOMETER");
+ });
+
+ successCallback = t.step_func(function (humanactivitydata) {
+ assert_equals(retValue, undefined, "readRecorderData should return undefined");
+ t.done();
+ });
+
+ tizen.humanactivitymonitor.startRecorder("PEDOMETER");
+ setTimeout(function(){tizen.humanactivitymonitor.stopRecorder("PEDOMETER");
+ retValue = tizen.humanactivitymonitor.readRecorderData("PEDOMETER", {}, successCallback);}, 60000);
+
+});
+
+</script>
+</body>
+</html>
\ No newline at end of file
--- /dev/null
+<!DOCTYPE html>
+<!--
+Copyright (c) 2016 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.
+
+Author:
+ Xiaoyan Qian <xy.qian@samsung.com>
+
+-->
+<html>
+<head>
+<title>HumanActivityMonitorManager_readRecorderData_successCallback_TypeMismatch</title>
+<meta charset="utf-8"/>
+<script src="support/unitcommon.js"></script>
+</head>
+<body>
+<div id="log"></div>
+<script>
+//==== TEST: HumanActivityMonitorManager_readRecorderData_successCallback_TypeMismatch
+//==== LABEL Check if readRecorderData throws exception when successCallback is incorrect
+//==== ONLOAD_DELAY 30
+//==== SPEC Tizen Web API:System:HumanActivityMonitor:HumanActivityMonitorManager:readRecorderData M
+//==== SPEC_URL TBD
+//==== PRIORITY P2
+//==== TEST_CRITERIA MC
+
+setup({timeout: 30000});
+
+var t = async_test(document.title, {timeout: 30000}), conversionTable, successCallback, errorCallback, exceptionName, i,
+ date = new Date(), endTime = date.getTime(), startTime = date.setDate(date.getDate() - 1),
+ query = {
+ startTime: startTime/1000,
+ endTime: endTime/1000,
+ interval: 1440
+ };
+
+t.step(function () {
+ conversionTable = getTypeConversionExceptions("functionObject", true);
+
+ errorCallback = t.step_func(function (error) {
+ assert_unreached("readRecorderData() error callback was invoked: " + error.name + " msg: " + error.message);
+ });
+
+ for (i = 0; i < conversionTable.length; i++) {
+ successCallback = conversionTable[i][0];
+ exceptionName = conversionTable[i][1];
+ assert_throws({name: exceptionName},
+ function () {
+ tizen.humanactivitymonitor.readRecorderData("PEDOMETER", query, successCallback, errorCallback);
+ }, "Given incorrect success callback.");
+ }
+
+ t.done();
+});
+
+</script>
+</body>
+</html>
\ No newline at end of file
--- /dev/null
+<!DOCTYPE html>
+<!--
+Copyright (c) 2016 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:
+ Xiaoyan Qian <xy.qian@samsung.com>
+
+-->
+<html>
+<head>
+<title>HumanActivityMonitorManager_readRecorderData_successCallback_invalid_cb</title>
+<meta charset="utf-8"/>
+<script src="support/unitcommon.js"></script>
+</head>
+<body>
+<div id="log"></div>
+<script>
+//==== TEST: HumanActivityMonitorManager_readRecorderData_successCallback_invalid_cb
+//==== LABEL Check if readRecorderData throws exception when success callback is invalid
+//==== SPEC Tizen Web API:System:HumanActivityMonitor:HumanActivityMonitorManager:readRecorderData M
+//==== SPEC_URL TBD
+//==== PRIORITY P2
+//==== TEST_CRITERIA MTCB
+
+test(function () {
+ var incorrectCallback, date = new Date(), endTime = date.getTime(), startTime = date.setDate(date.getDate() - 1),
+ query = {
+ startTime: startTime/1000,
+ endTime: endTime/1000,
+ interval: 1440
+ };
+
+ incorrectCallback = {
+ onsuccess: function (humanactivitydata) {
+ assert_unreached("Invalid success callback invoked.");
+ }
+ };
+
+ assert_throws(TYPE_MISMATCH_EXCEPTION,
+ function () {
+ tizen.humanactivitymonitor.readRecorderData("PEDOMETER", query, incorrectCallback);
+ }, "Given invalid successCallback.");
+
+}, document.title);
+
+</script>
+</body>
+</html>
\ No newline at end of file
--- /dev/null
+<!DOCTYPE html>
+<!--
+Copyright (c) 2016 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:
+ Xiaoyan Qian <xy.qian@samsung.com>
+
+-->
+<html>
+<head>
+<title>HumanActivityMonitorManager_readRecorderData_type_HRM</title>
+<meta charset="utf-8"/>
+<script src="support/unitcommon.js"></script>
+</head>
+<body>
+<div id="log"></div>
+<script>
+//==== TEST: HumanActivityMonitorManager_readRecorderData_type_HRM
+//==== LABEL Check if readRecorderData without optional arguments works properly for HRM HumanActivity type
+//==== SPEC Tizen Web API:System:HumanActivityMonitor:HumanActivityMonitorManager:readRecorderData M
+//==== SPEC_URL TBD
+//==== PRIORITY P1
+//==== TEST_CRITERIA MR MMINA
+
+setup({timeout: 1500000});
+
+var t = async_test(document.title, {timeout: 1500000}), retValue = null, successCallback, date = new Date(), endTime = date.getTime() + 1200000, startTime = date.setDate(date.getDate() - 1),
+ options = {
+ interval: 10,
+ retentionPeriod: 1
+ },
+ query = {
+ startTime: startTime/1000,
+ endTime: endTime/1000,
+ interval: 10
+ };
+
+t.step(function () {
+ add_result_callback(function () {
+ tizen.humanactivitymonitor.stopRecorder("HRM");
+ });
+
+ successCallback = t.step_func(function (humanactivitydata) {
+ assert_equals(retValue, undefined, "readRecorderData should return undefined");
+ t.done();
+ });
+
+ errorCallback = t.step_func(function (error) {
+ assert_unreached("Invalid error callback invoked:" + error.name + ": " + error.message);
+ });
+
+ tizen.humanactivitymonitor.startRecorder("HRM", options);
+ setTimeout(function() {
+ retValue = tizen.humanactivitymonitor.readRecorderData("HRM", query, successCallback);}, 600000);
+
+});
+
+</script>
+</body>
+</html>
\ No newline at end of file
--- /dev/null
+<!DOCTYPE html>
+<!--
+Copyright (c) 2016 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:
+ Xiaoyan Qian <xy.qian@samsung.com>
+
+-->
+<html>
+<head>
+<title>HumanActivityMonitorManager_readRecorderData_type_PEDOMETER</title>
+<meta charset="utf-8"/>
+<script src="support/unitcommon.js"></script>
+</head>
+<body>
+<div id="log"></div>
+<script>
+//==== TEST: HumanActivityMonitorManager_readRecorderData_type_PEDOMETER
+//==== LABEL Check if readRecorderData without optional arguments works properly for PEDOMETER HumanActivity type
+//==== SPEC Tizen Web API:System:HumanActivityMonitor:HumanActivityMonitorManager:readRecorderData M
+//==== SPEC_URL TBD
+//==== PRIORITY P1
+//==== EXECUTION_TYPE manual
+//==== STEP Press run button. Pretend walking with the device.
+//==== EXPECT Pass
+//==== TEST_CRITERIA MR MMINA
+//==== ONLOAD_DELAY 60
+
+setup({timeout: 90000});
+
+var t = async_test(document.title, {timeout: 90000}), retValue = null, successCallback, date = new Date(), startTime = date.getTime(), endTime = date.setDate(date.getDate() + 1),
+ query = {
+ startTime: startTime/1000,
+ endTime: endTime/1000,
+ interval: 1440
+ };
+
+t.step(function () {
+ add_result_callback(function () {
+ tizen.humanactivitymonitor.stopRecorder("PEDOMETER");
+ });
+ successCallback = t.step_func(function (humanactivitydata) {
+ assert_equals(retValue, undefined, "readRecorderData should return undefined");
+ t.done();
+ });
+
+ tizen.humanactivitymonitor.startRecorder("PEDOMETER");
+ setTimeout(function(){tizen.humanactivitymonitor.stopRecorder("PEDOMETER");
+ retValue = tizen.humanactivitymonitor.readRecorderData("PEDOMETER", query, successCallback);}, 60000);
+
+});
+
+</script>
+</body>
+</html>
\ No newline at end of file
--- /dev/null
+<!DOCTYPE html>
+<!--
+Copyright (c) 2016 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:
+ Xiaoyan Qian <xy.qian@samsung.com>
+
+-->
+<html>
+<head>
+<title>HumanActivityMonitorManager_readRecorderData_type_PRESSURE</title>
+<meta charset="utf-8"/>
+<script src="support/unitcommon.js"></script>
+</head>
+<body>
+<div id="log"></div>
+<script>
+//==== TEST: HumanActivityMonitorManager_readRecorderData_type_PRESSURE
+//==== LABEL Check if readRecorderData without optional arguments works properly for PRESSURE HumanActivity type
+//==== SPEC Tizen Web API:System:HumanActivityMonitor:HumanActivityMonitorManager:readRecorderData M
+//==== SPEC_URL TBD
+//==== PRIORITY P1
+//==== TEST_CRITERIA MR MMINA
+
+setup({timeout: 150000});
+
+var t = async_test(document.title, {timeout: 150000}), retValue = null, successCallback, date = new Date(), endTime = date.getTime() + 120000, startTime = date.setDate(date.getDate() - 1),
+ query = {
+ startTime: startTime/1000,
+ endTime: endTime/1000,
+ interval: 10
+ };
+
+t.step(function () {
+
+ add_result_callback(function () {
+ tizen.humanactivitymonitor.stopRecorder("PRESSURE");
+ });
+
+ successCallback = t.step_func(function (humanactivitydata) {
+ assert_equals(retValue, undefined, "readRecorderData should return undefined");
+ tizen.humanactivitymonitor.stopRecorder("PRESSURE");
+ t.done();
+ });
+
+ tizen.humanactivitymonitor.startRecorder("PRESSURE");
+ setTimeout(function(){
+ retValue = tizen.humanactivitymonitor.readRecorderData("PRESSURE", query, successCallback);}, 60000);
+
+});
+
+</script>
+</body>
+</html>
\ No newline at end of file
--- /dev/null
+<!DOCTYPE html>
+<!--
+Copyright (c) 2016 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:
+ Xiaoyan Qian <xy.qian@samsung.com>
+
+-->
+<html>
+<head>
+<title>HumanActivityMonitorManager_readRecorderData_type_SLEEP_MONITOR</title>
+<meta charset="utf-8"/>
+<script src="support/unitcommon.js"></script>
+</head>
+<body>
+<div id="log"></div>
+<script>
+//==== TEST: HumanActivityMonitorManager_readRecorderData_type_SLEEP_MONITOR
+//==== LABEL Check if readRecorderData without optional arguments works properly for SLEEP_MONITOR HumanActivity type
+//==== SPEC Tizen Web API:System:HumanActivityMonitor:HumanActivityMonitorManager:readRecorderData M
+//==== SPEC_URL TBD
+//==== PRIORITY P1
+//==== TEST_CRITERIA MR MMINA
+
+setup({timeout: 30000});
+
+var t = async_test(document.title, {timeout: 30000}), retValue = null, successCallback, date = new Date(), endTime = date.getTime(), startTime = date.setDate(date.getDate() - 1),
+ query = {
+ startTime: startTime/1000,
+ endTime: endTime/1000,
+ interval: 1440
+ };
+
+t.step(function () {
+ add_result_callback(function () {
+ tizen.humanactivitymonitor.stopRecorder("SLEEP_MONITOR");
+ });
+
+ successCallback = t.step_func(function (humanactivitydata) {
+ assert_equals(retValue, undefined, "readRecorderData should return undefined");
+ t.done();
+ });
+
+ tizen.humanactivitymonitor.startRecorder("SLEEP_MONITOR");
+ setTimeout(function(){tizen.humanactivitymonitor.stopRecorder("SLEEP_MONITOR");
+ retValue = tizen.humanactivitymonitor.readRecorderData("SLEEP_MONITOR", query, successCallback);}, 100);
+
+});
+
+</script>
+</body>
+</html>
\ No newline at end of file
--- /dev/null
+<!DOCTYPE html>
+<!--
+Copyright (c) 2016 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:
+ Xiaoyan Qian <xy.qian@samsung.com>
+
+-->
+<html>
+<head>
+<title>HumanActivityMonitorManager_readRecorderData_with_errorCallback</title>
+<meta charset="utf-8"/>
+<script src="support/unitcommon.js"></script>
+</head>
+<body>
+<div id="log"></div>
+<script>
+//==== TEST: HumanActivityMonitorManager_readRecorderData_with_errorCallback
+//==== LABEL Check if readRecorderData with optional arguments works properly
+//==== SPEC Tizen Web API:System:HumanActivityMonitor:HumanActivityMonitorManager:readRecorderData M
+//==== SPEC_URL TBD
+//==== PRIORITY P1
+//==== TEST_CRITERIA MR MOA
+
+setup({timeout: 120000});
+
+var t = async_test(document.title, {timeout: 120000}), retValue = null, successCallback, errorCallback, date = new Date(), startTime = date.getTime(), endTime = date.setDate(date.getDate() + 1),
+ query = {
+ startTime: startTime/1000,
+ endTime: endTime/1000,
+ interval: 1440
+ };
+
+t.step(function () {
+ add_result_callback(function () {
+ tizen.humanactivitymonitor.stopRecorder("PEDOMETER");
+ });
+
+ successCallback = t.step_func(function (humanactivitydata) {
+ assert_equals(retValue, undefined, "readRecorderData should return undefined");
+ t.done();
+ });
+
+ errorCallback = t.step_func(function (error) {
+ assert_unreached("Invalid error callback invoked:" + error.name + ": " + error.message);
+ });
+
+ tizen.humanactivitymonitor.startRecorder("PEDOMETER");
+ setTimeout(function(){tizen.humanactivitymonitor.stopRecorder("PEDOMETER");
+ retValue = tizen.humanactivitymonitor.readRecorderData("PEDOMETER", query, successCallback, errorCallback);}, 60000);
+
+});
+
+</script>
+</body>
+</html>
\ No newline at end of file
--- /dev/null
+<!DOCTYPE html>
+<!--
+Copyright (c) 2016 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:
+ Hyukin Kwon <hyukin.kwon@samsung.com>
+
+-->
+<html>
+<head>
+<title>HumanActivityMonitorManager_removeActivityRecognitionListener</title>
+<meta charset="utf-8"/>
+<script src="support/unitcommon.js"></script>
+<script src="support/humanactivitymonitor_common.js"></script>
+</head>
+<body>
+<div id="log"></div>
+<script>
+//==== TEST: HumanActivityMonitorManager_removeActivityRecognitionListener_STATIONARY
+//==== LABEL Check if the method removeActivityRecognitionListener of HumanActivityMonitorManager returns proper value
+//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityMonitorManager:removeActivityRecognitionListener M
+//==== SPEC_URL TBD
+//==== PRIORITY P1
+//==== EXECUTION_TYPE manual
+//==== STEP Press run button, then pretend walking with the device for 15 seconds
+//==== EXPECT Pass
+//==== TEST_CRITERIA MR MMINA
+//==== ONLOAD_DELAY 20
+
+setup({"timeout": 20000});
+
+var t = async_test(document.title, {"timeout": 20000}), returnedId = null, returnedValue = undefined, humanActivityType = "WALKING", listener;
+
+t.step(function () {
+ listener = t.step_func(function (info) {
+ assert_unreached("Callback should not be invoked after removeActivityRecognitionListener call");
+ });
+
+ returnedId = tizen.humanactivitymonitor.addActivityRecognitionListener(humanActivityType, listener);
+ returnedValue = tizen.humanactivitymonitor.removeActivityRecognitionListener(returnedId);
+ assert_equals(returnedValue, undefined, "Should return nothing");
+ alert("Grab the device, and pretend walking for 15 seconds after pressing OK");
+ setTimeout(function () {t.done();}, 15000);
+});
+</script>
+</body>
+</html>
\ No newline at end of file
--- /dev/null
+<!DOCTYPE html>
+<!--
+Copyright (c) 2016 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:
+ Hyukin Kwon <hyukin.kwon@samsung.com>
+
+-->
+<html>
+<head>
+<title>HumanActivityMonitorManager_removeActivityRecognitionListener_exist</title>
+<meta charset="utf-8"/>
+<script src="support/unitcommon.js"></script>
+<script src="support/humanactivitymonitor_common.js"></script>
+</head>
+<body>
+<div id="log"></div>
+<script>
+//==== TEST: HumanActivityMonitorManager_removeActivityRecognitionListener_exist
+//==== LABEL Check if the method removeActivityRecognitionListener of HumanActivityMonitorManager exist
+//==== SPEC Tizen Web API:HumanActivityMonitor:HumanActivityMonitorManager:removeActivityRecognitionListener M
+//==== SPEC_URL TBD
+//==== PRIORITY P1
+//==== TEST_CRITERIA ME
+
+test(function () {
+ check_method_exists(tizen.humanactivitymonitor, "addActivityRecognitionListener");
+}, document.title);
+</script>
+</body>
+</html>
\ No newline at end of file
--- /dev/null
+<!DOCTYPE html>
+<!--
+Copyright (c) 2016 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:
+ Hyukin Kwon <hyukin.kwon@samsung.com>
+
+-->
+<html>
+<head>
+<title>HumanActivityMonitorManager_removeActivityRecognitionListener_invalid_id</title>
+<meta charset="utf-8"/>
+<script src="support/unitcommon.js"></script>
+<script src="support/humanactivitymonitor_common.js"></script>
+</head>
+<body>
+<div id="log"></div>
+<script>
+//==== TEST: HumanActivityMonitorManager_removeActivityRecognitionListener_invalid_id
+//==== LABEL Check if the method removeActivityRecognitionListener of HumanActivityMonitorManager ignores invalid id
+//==== SPEC Tizen Web API:HumanActivityMonitor:HumanActivityMonitorManager:removeActivityRecognitionListener M
+//==== SPEC_URL TBD
+//==== PRIORITY P2
+//==== TEST_CRITERIA MMA
+//==== ONLOAD_DELAY 3
+
+setup({"timeout": 3000});
+
+var t = async_test(document.title, {"timeout": 3000}), invalidId = 10000, errorCallback;
+
+t.step(function () {
+ errorCallback = t.step_func(function (error) {
+ assert_unreached("Error callback should not be invoked, but was invoked with the error " + error.name);
+ });
+
+ try {
+ tizen.humanactivitymonitor.removeActivityRecognitionListener(invalidId, errorCallback);
+ setTimeout(function () {t.done();}, 2000);
+ } catch (error) {
+ assert_unreached("Should not throw any error, but threw " + error.name);
+ }
+});
+</script>
+</body>
+</html>
--- /dev/null
+<!DOCTYPE html>
+<!--
+Copyright (c) 2016 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:
+ Hyukin Kwon <hyukin.kwon@samsung.com>
+
+-->
+<html>
+<head>
+<title>HumanActivityMonitorManager_removeActivityRecognitionListener_misarg</title>
+<meta charset="utf-8"/>
+<script src="support/unitcommon.js"></script>
+<script src="support/humanactivitymonitor_common.js"></script>
+</head>
+<body>
+<div id="log"></div>
+<script>
+//==== TEST: HumanActivityMonitorManager_removeActivityRecognitionListener_exist
+//==== LABEL Check if the method removeActivityRecognitionListener of HumanActivityMonitorManager ignores invalid id when no param assigned (undefined converted to 0)
+//==== SPEC Tizen Web API:HumanActivityMonitor:HumanActivityMonitorManager:removeActivityRecognitionListener M
+//==== SPEC_URL TBD
+//==== PRIORITY P2
+//==== TEST_CRITERIA MMA
+
+test(function () {
+ try {
+ tizen.humanactivitymonitor.removeActivityRecognitionListener();
+ } catch (error) {
+ assert_unreached("Should not throw any error, but threw " + error.name);
+ }
+}, document.title);
+</script>
+</body>
+</html>
\ No newline at end of file
--- /dev/null
+<!DOCTYPE html>
+<!--
+Copyright (c) 2016 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:
+ Hyukin Kwon <hyukin.kwon@samsung.com>
+
+-->
+<html>
+<head>
+<title>HumanActivityMonitorManager_removeActivityRecognitionListener</title>
+<meta charset="utf-8"/>
+<script src="support/unitcommon.js"></script>
+<script src="support/humanactivitymonitor_common.js"></script>
+</head>
+<body>
+<div id="log"></div>
+<script>
+//==== TEST: HumanActivityMonitorManager_removeActivityRecognitionListener_STATIONARY
+//==== LABEL Check if the method removeActivityRecognitionListener of HumanActivityMonitorManager returns proper value with errorcallback assigned
+//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityMonitorManager:removeActivityRecognitionListener M
+//==== SPEC_URL TBD
+//==== PRIORITY P1
+//==== EXECUTION_TYPE manual
+//==== STEP Press run button, then pretend walking with the device for 15 seconds
+//==== EXPECT Pass
+//==== TEST_CRITERIA MR MMINA CBT
+//==== ONLOAD_DELAY 20
+
+setup({"timeout": 20000});
+
+var t = async_test(document.title, {"timeout": 20000}), returnedId = null, returnedValue = undefined, humanActivityType = "WALKING", listener, errorCallback;
+
+t.step(function () {
+ listener = t.step_func(function (info) {
+ assert_unreached("Callback should not be invoked after removeActivityRecognitionListener call");
+ });
+
+ errorCallback = t.step_func(function (error) {
+ assert_unreached("Error callback should not be invoked, but was invoked with the error " + error.name);
+ });
+
+ returnedId = tizen.humanactivitymonitor.addActivityRecognitionListener(humanActivityType, listener);
+ returnedValue = tizen.humanactivitymonitor.removeActivityRecognitionListener(returnedId, errorCallback);
+ assert_equals(returnedValue, undefined, "Should return nothing");
+ alert("Grab the device, and pretend walking for 15 seconds after pressing OK");
+ setTimeout(function () {t.done();}, 15000);
+});
+</script>
+</body>
+</html>
\ No newline at end of file
--- /dev/null
+<!DOCTYPE html>
+<!--
+Copyright (c) 2016 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:
+ Hyukin Kwon <hyukin.kwon@samsung.com>
+
+-->
+<html>
+<head>
+<title>HumanActivityMonitorManager_removeActivityRecognitionListener</title>
+<meta charset="utf-8"/>
+<script src="support/unitcommon.js"></script>
+<script src="support/humanactivitymonitor_common.js"></script>
+</head>
+<body>
+<div id="log"></div>
+<script>
+//==== TEST: HumanActivityMonitorManager_removeActivityRecognitionListener_STATIONARY
+//==== LABEL Check if the method removeActivityRecognitionListener of HumanActivityMonitorManager returns proper value with errorcallback null assigned
+//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityMonitorManager:removeActivityRecognitionListener M
+//==== SPEC_URL TBD
+//==== PRIORITY P1
+//==== EXECUTION_TYPE manual
+//==== STEP Press run button, then pretend walking with the device for 15 seconds
+//==== EXPECT Pass
+//==== TEST_CRITERIA MR MMINA CBT
+//==== ONLOAD_DELAY 20
+
+setup({"timeout": 20000});
+
+var t = async_test(document.title, {"timeout": 20000}), returnedId = null, returnedValue = undefined, humanActivityType = "WALKING", listener;
+
+t.step(function () {
+ listener = t.step_func(function (info) {
+ assert_unreached("Callback should not be invoked after removeActivityRecognitionListener call");
+ });
+
+ returnedId = tizen.humanactivitymonitor.addActivityRecognitionListener(humanActivityType, listener);
+ returnedValue = tizen.humanactivitymonitor.removeActivityRecognitionListener(returnedId, null);
+ assert_equals(returnedValue, undefined, "Should return nothing");
+ alert("Grab the device, and pretend walking for 15 seconds after pressing OK");
+ setTimeout(function () {t.done();}, 15000);
+});
+</script>
+</body>
+</html>
\ No newline at end of file
--- /dev/null
+<!DOCTYPE html>
+<!--
+Copyright (c) 2014 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:
+ Saleh Enam Shohag <saleh.enam@samsung.com>
+
+-->
+<html>
+<head>
+<title>HumanActivityMonitorManager_setAccumulativePedometerListener</title>
+<meta charset="utf-8"/>
+<script src="support/unitcommon.js"></script>
+</head>
+<body>
+<div id="log"></div>
+<script>
+//==== TEST: HumanActivityMonitorManager_setAccumulativePedometerListener
+//==== LABEL Check if HumanActivityMonitorManager::setAccumulativePedometerListener() method works properly
+//==== PRIORITY P1
+//==== ONLOAD_DELAY 30
+//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityMonitorManager:setAccumulativePedometerListener M
+//==== SPEC_URL TBD
+//==== TEST_CRITERIA MAST MR
+
+setup({timeout: 30000});
+
+var t = async_test(document.title, {timeout: 30000}), changeCallback, returnedValue = null;
+
+t.step(function () {
+ changeCallback = t.step_func(function (pedometerInfo) {
+ assert_equals(returnedValue, undefined, "setAccumulativePedometerListener should return undefined.");
+ t.done();
+ });
+
+ returnedValue = tizen.humanactivitymonitor.setAccumulativePedometerListener(changeCallback);
+});
+
+</script>
+</body>
+</html>
\ No newline at end of file
--- /dev/null
+<!DOCTYPE html>
+<!--
+Copyright (c) 2014 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:
+ Saleh Enam Shohag <saleh.enam@samsung.com>
+
+-->
+<html>
+<head>
+<title>HumanActivityMonitorManager_setAccumulativePedometerListener_changeCallback_TypeMismatch</title>
+<meta charset="utf-8"/>
+<script src="support/unitcommon.js"></script>
+</head>
+<body>
+<div id="log"></div>
+<script>
+//==== TEST: HumanActivityMonitorManager_setAccumulativePedometerListener_changeCallback_TypeMismatch
+//==== LABEL Check if HumanActivityMonitorManager::setAccumulativePedometerListener() with incorrect changeCallback argument throws exception
+//==== PRIORITY P2
+//==== ONLOAD_DELAY 30
+//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityMonitorManager:setAccumulativePedometerListener M
+//==== SPEC_URL TBD
+//==== TTEST_CRITERIA MC
+
+setup({timeout: 30000});
+
+var t = async_test(document.title, {timeout: 30000}),
+ conversionTable, changeCallback, exceptionName, i;
+
+t.step(function () {
+ conversionTable = getTypeConversionExceptions("functionObject", false);
+ for (i = 0; i < conversionTable.length; i++) {
+ changeCallback = conversionTable[i][0];
+ exceptionName = conversionTable[i][1];
+ assert_throws(TYPE_MISMATCH_EXCEPTION, function () {
+ tizen.humanactivitymonitor.setAccumulativePedometerListener(changeCallback);
+ }, TYPE_MISMATCH_EXCEPTION + "should be thrown");
+ }
+ t.done();
+});
+
+</script>
+</body>
+</html>
\ No newline at end of file
--- /dev/null
+<!DOCTYPE html>
+<!--
+Copyright (c) 2014 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:
+ Saleh Enam Shohag <saleh.enam@samsung.com>
+
+-->
+<html>
+<head>
+<title>HumanActivityMonitorManager_setAccumulativePedometerListener_changeCallback_invalid_cb</title>
+<meta charset="utf-8"/>
+<script src="support/unitcommon.js"></script>
+</head>
+<body>
+<div id="log"></div>
+<script>
+//==== TEST: HumanActivityMonitorManager_setAccumulativePedometerListener_changeCallback_invalid_cb
+//==== LABEL Check if HumanActivityMonitorManager::setAccumulativePedometerListener() method throws exception when changeCallback is invalid
+//==== PRIORITY: P2
+//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityMonitorManager:setAccumulativePedometerListener M
+//==== SPEC_URL TBD
+//==== ONLOAD_DELAY 30
+//==== TEST_CRITERIA MTCB
+
+setup({timeout: 30000});
+
+var t = async_test(document.title, {timeout: 30000}), invalidCallback;
+
+t.step(function () {
+ invalidCallback = {
+ onsuccess: t.step_func(function (pedometerInfo) {
+ assert_unreached("setAccumulativePedometerListener() changeCallback should not invoked");
+ })
+ };
+
+ assert_throws(TYPE_MISMATCH_EXCEPTION, function () {
+ tizen.humanactivitymonitor.setAccumulativePedometerListener(invalidCallback);
+ }, TYPE_MISMATCH_EXCEPTION + " should be thrown");
+ t.done();
+});
+
+</script>
+</body>
+</html>
--- /dev/null
+<!DOCTYPE html>
+<!--
+Copyright (c) 2014 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:
+ Saleh Enam Shohag <saleh.enam@samsung.com>
+
+-->
+<html>
+<head>
+<title>HumanActivityMonitorManager_setAccumulativePedometerListener_exist</title>
+<meta charset="utf-8"/>
+<script src="support/unitcommon.js"></script>
+</head>
+<body>
+<div id="log"></div>
+<script>
+//==== TEST: HumanActivityMonitorManager_setAccumulativePedometerListener_exist
+//==== LABEL Check if method HumanActivityMonitorManager::setAccumulativePedometerListener() exists
+//==== PRIORITY P0
+//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityMonitorManager:setAccumulativePedometerListener M
+//==== SPEC_URL TBD
+//==== TEST_CRITERIA ME
+
+test(function () {
+ check_method_exists(tizen.humanactivitymonitor, "setAccumulativePedometerListener");
+}, document.title);
+
+</script>
+</body>
+</html>
\ No newline at end of file
--- /dev/null
+<!DOCTYPE html>
+<!--
+Copyright (c) 2014 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:
+ Saleh Enam Shohag <saleh.enam@samsung.com>
+
+-->
+<html>
+<head>
+<title>HumanActivityMonitorManager_setAccumulativePedometerListener_misarg</title>
+<meta charset="utf-8"/>
+<script src="support/unitcommon.js"></script>
+</head>
+<body>
+<div id="log"></div>
+<script>
+//==== TEST: HumanActivityMonitorManager_setAccumulativePedometerListener_misarg
+//==== LABEL Check if HumanActivityMonitorManager::setAccumulativePedometerListener() throws exception when changeCallback is missing
+//==== PRIORITY: P2
+//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityMonitorManager:setAccumulativePedometerListener M
+//==== SPEC_URL TBD
+//==== TEST_CRITERIA MMA
+
+test(function () {
+ assert_throws(TYPE_MISMATCH_EXCEPTION, function () {
+ tizen.humanactivitymonitor.setAccumulativePedometerListener();
+ }, "Invoked without non-optional arguments.");
+}, document.title);
+
+</script>
+</body>
+</html>
\ No newline at end of file
--- /dev/null
+<!DOCTYPE html>
+<!--
+Copyright (c) 2016 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:
+ Xiaoyan Qian <xy.qian@samsung.com>
+
+-->
+<html>
+<head>
+<title>HumanActivityMonitorManager_startRecorder_NotSupportedError</title>
+<meta charset="utf-8"/>
+<script src="support/unitcommon.js"></script>
+</head>
+<body>
+<div id="log"></div>
+<script>
+//==== TEST: HumanActivityMonitorManager_startRecorder_NotSupportedError
+//==== LABEL Check if HumanActivityMonitorManager::startRecorder() throw NotSupportedError called with not supported human activity recorder type
+//==== PRIORITY P1
+//==== SPEC Tizen Web API:System:HumanActivityMonitor:HumanActivityMonitorManager:startRecorder M
+//==== SPEC_URL TBD
+//==== TEST_CRITERIA MC
+
+test(function () {
+ if (!tizen.systeminfo.getCapability("http://tizen.org/feature/sensor.pedometer")) {
+ assert_throws(NOT_SUPPORTED_EXCEPTION, function () {
+ tizen.humanactivitymonitor.startRecorder("PEDOMETER");
+ }, "NotSupportedError exception should throw");
+ }
+ if (!tizen.systeminfo.getCapability("http://tizen.org/feature/sensor.heart_rate_monitor")) {
+ assert_throws(NOT_SUPPORTED_EXCEPTION, function () {
+ tizen.humanactivitymonitor.startRecorder("HRM");
+ }, "NotSupportedError exception should throw");
+ }
+ if (!tizen.systeminfo.getCapability("http://tizen.org/feature/sensor.sleep_monitor")) {
+ assert_throws(NOT_SUPPORTED_EXCEPTION, function () {
+ tizen.humanactivitymonitor.startRecorder("SLEEP_MONITOR");
+ }, "NotSupportedError exception should throw");
+ }
+ if (!tizen.systeminfo.getCapability("http://tizen.org/feature/sensor.barometer")) {
+ assert_throws(NOT_SUPPORTED_EXCEPTION, function () {
+ tizen.humanactivitymonitor.startRecorder("PRESSURE");
+ }, "NotSupportedError exception should throw");
+ }
+}, document.title);
+
+</script>
+</body>
+</html>
\ No newline at end of file
--- /dev/null
+<!DOCTYPE html>
+<!--
+Copyright (c) 2016 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:
+ Xiaoyan Qian <xy.qian@samsung.com>
+
+-->
+<html>
+<head>
+<title>HumanActivityMonitorManager_startRecorder_exist</title>
+<meta charset="utf-8"/>
+<script src="support/unitcommon.js"></script>
+</head>
+<body>
+<div id="log"></div>
+<script>
+//==== TEST: HumanActivityMonitorManager_startRecorder_exist
+//==== LABEL Check if startRecorder exists
+//==== SPEC Tizen Web API:System:HumanActivityMonitor:HumanActivityMonitorManager:startRecorder M
+//==== SPEC_URL TBD
+//==== PRIORITY P0
+//==== TEST_CRITERIA ME
+
+test(function () {
+ assert_true("startRecorder" in tizen.humanactivitymonitor, "HumanActivityMonitorManager should have startRecorder method");
+ check_method_exists(tizen.humanactivitymonitor, "startRecorder");
+}, document.title);
+
+</script>
+</body>
+</html>
\ No newline at end of file
--- /dev/null
+<!DOCTYPE html>
+<!--
+Copyright (c) 2016 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:
+ Xiaoyan Qian <xy.qian@samsung.com>
+
+-->
+<html>
+<head>
+<title>HumanActivityMonitorManager_startRecorder_misarg</title>
+<meta charset="utf-8"/>
+<script src="support/unitcommon.js"></script>
+</head>
+<body>
+<div id="log"></div>
+<script>
+//==== TEST: HumanActivityMonitorManager_startRecorder_misarg
+//==== LABEL Check if HumanActivityMonitorManager::startRecorder() called with missing non-optional argument throws an exception
+//==== PRIORITY P1
+//==== SPEC Tizen Web API:System:HumanActivityMonitor:HumanActivityMonitorManager:startRecorder M
+//==== SPEC_URL TBD
+//==== TEST_CRITERIA MMA
+
+test(function () {
+ assert_throws(TYPE_MISMATCH_EXCEPTION, function () {
+ tizen.humanactivitymonitor.startRecorder();
+ }, "TypeMismatchError exception should throw");
+}, document.title);
+
+</script>
+</body>
+</html>
\ No newline at end of file
--- /dev/null
+<!DOCTYPE html>
+<!--
+Copyright (c) 2016 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:
+ Xiaoyan Qian <xy.qian@samsung.com>
+
+-->
+<html>
+<head>
+<title>HumanActivityMonitorManager_startRecorder_option_empty</title>
+<meta charset="utf-8"/>
+<script src="support/unitcommon.js"></script>
+</head>
+<body>
+<div id="log"></div>
+<script>
+//==== TEST: HumanActivityMonitorManager_startRecorder_option_empty
+//==== LABEL Check if HumanActivityMonitorManager::startRecorder() can be called with empty object as option argument
+//==== PRIORITY P1
+//==== SPEC Tizen Web API:System:HumanActivityMonitor:HumanActivityMonitorManager:startRecorder M
+//==== SPEC_URL TBD
+//==== TEST_CRITERIA MR MTD
+
+test(function () {
+ add_result_callback(function () {
+ tizen.humanactivitymonitor.stopRecorder(humanActivityType);
+ });
+
+ var returnedValue = null, humanActivityType = "PEDOMETER";
+ returnedValue = tizen.humanactivitymonitor.startRecorder(humanActivityType, {});
+ assert_equals(returnedValue, undefined, "Incorrect returned value");
+}, document.title);
+
+</script>
+</body>
+</html>
\ No newline at end of file
--- /dev/null
+<!DOCTYPE html>
+<!--
+Copyright (c) 2016 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:
+ Xiaoyan Qian <xy.qian@samsung.com>
+
+-->
+<html>
+<head>
+<title>HumanActivityMonitorManager_startRecorder_type_HRM</title>
+<meta charset="utf-8"/>
+<script src="support/unitcommon.js"></script>
+</head>
+<body>
+<div id="log"></div>
+<script>
+//==== TEST: HumanActivityMonitorManager_startRecorder_type_HRM
+//==== LABEL Check if method HumanActivityMonitorManager::startRecorder() works properly for HRM HumanActivity type
+//==== PRIORITY P1
+//==== SPEC Tizen Web API:System:HumanActivityMonitor:HumanActivityMonitorManager:startRecorder M
+//==== SPEC_URL TBD
+//==== TEST_CRITERIA MR MMINA
+
+test(function () {
+ var returnedValue = null, humanActivityType = "HRM";
+
+ add_result_callback(function () {
+ tizen.humanactivitymonitor.stopRecorder(humanActivityType);
+ });
+
+ try {
+ tizen.humanactivitymonitor.stopRecorder(humanActivityType);
+ returnedValue = tizen.humanactivitymonitor.startRecorder(humanActivityType);
+ assert_equals(returnedValue, undefined, "Incorrect returned value from startRecorder method");
+ tizen.humanactivitymonitor.stopRecorder(humanActivityType);
+ } catch (e) {
+ if(e.name === NOT_SUPPORTED_EXCEPTION) {
+ } else {
+ assert_unreached("unexpected exception is thrown" + e.name + ", msg: " + e.message);
+ }
+ }
+}, document.title);
+
+</script>
+</body>
+</html>
\ No newline at end of file
--- /dev/null
+<!DOCTYPE html>
+<!--
+Copyright (c) 2016 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:
+ Xiaoyan Qian <xy.qian@samsung.com>
+
+-->
+<html>
+<head>
+<title>HumanActivityMonitorManager_startRecorder_type_PEDOMETER</title>
+<meta charset="utf-8"/>
+<script src="support/unitcommon.js"></script>
+</head>
+<body>
+<div id="log"></div>
+<script>
+//==== TEST: HumanActivityMonitorManager_startRecorder_type_PEDOMETER
+//==== LABEL Check if method HumanActivityMonitorManager::startRecorder() works properly for PEDOMETER HumanActivity type
+//==== PRIORITY P1
+//==== SPEC Tizen Web API:System:HumanActivityMonitor:HumanActivityMonitorManager:startRecorder M
+//==== SPEC_URL TBD
+//==== TEST_CRITERIA MR MMINA
+
+test(function () {
+ var returnedValue = null, humanActivityType = "PEDOMETER";
+
+ add_result_callback(function () {
+ tizen.humanactivitymonitor.stopRecorder(humanActivityType);
+ });
+
+ try {
+ returnedValue = tizen.humanactivitymonitor.startRecorder(humanActivityType);
+ assert_equals(returnedValue, undefined, "Incorrect returned value from startRecorder method");
+ tizen.humanactivitymonitor.stopRecorder(humanActivityType);
+ } catch (e) {
+ if(e.name === NOT_SUPPORTED_EXCEPTION) {
+ } else {
+ assert_unreached("unexpected exception is thrown" + e.name + ", msg: " + e.message);
+ }
+ }
+}, document.title);
+
+</script>
+</body>
+</html>
\ No newline at end of file
--- /dev/null
+<!DOCTYPE html>
+<!--
+Copyright (c) 2016 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:
+ Xiaoyan Qian <xy.qian@samsung.com>
+
+-->
+<html>
+<head>
+<title>HumanActivityMonitorManager_startRecorder_type_PRESSURE</title>
+<meta charset="utf-8"/>
+<script src="support/unitcommon.js"></script>
+</head>
+<body>
+<div id="log"></div>
+<script>
+//==== TEST: HumanActivityMonitorManager_startRecorder_type_PRESSURE
+//==== LABEL Check if method HumanActivityMonitorManager::startRecorder() works properly for PRESSURE HumanActivity type
+//==== PRIORITY P1
+//==== SPEC Tizen Web API:System:HumanActivityMonitor:HumanActivityMonitorManager:startRecorder M
+//==== SPEC_URL TBD
+//==== TEST_CRITERIA MR MMINA
+
+test(function () {
+ var returnedValue = null, humanActivityType = "PRESSURE";
+
+ add_result_callback(function () {
+ tizen.humanactivitymonitor.stopRecorder(humanActivityType);
+ });
+
+ try {
+ tizen.humanactivitymonitor.stopRecorder(humanActivityType);
+ returnedValue = tizen.humanactivitymonitor.startRecorder(humanActivityType);
+ assert_equals(returnedValue, undefined, "Incorrect returned value from startRecorder method");
+ tizen.humanactivitymonitor.stopRecorder(humanActivityType);
+ } catch (e) {
+ if(e.name === NOT_SUPPORTED_EXCEPTION) {
+ } else {
+ assert_unreached("unexpected exception is thrown" + e.name + ", msg: " + e.message);
+ }
+ }
+}, document.title);
+
+</script>
+</body>
+</html>
\ No newline at end of file
--- /dev/null
+<!DOCTYPE html>
+<!--
+Copyright (c) 2016 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:
+ Xiaoyan Qian <xy.qian@samsung.com>
+
+-->
+<html>
+<head>
+<title>HumanActivityMonitorManager_startRecorder_type_SLEEP_MONITOR</title>
+<meta charset="utf-8"/>
+<script src="support/unitcommon.js"></script>
+</head>
+<body>
+<div id="log"></div>
+<script>
+//==== TEST: HumanActivityMonitorManager_startRecorder_type_SLEEP_MONITOR
+//==== LABEL Check if method HumanActivityMonitorManager::startRecorder() works properly for SLEEP_MONITOR HumanActivity type
+//==== PRIORITY P1
+//==== SPEC Tizen Web API:System:HumanActivityMonitor:HumanActivityMonitorManager:startRecorder M
+//==== SPEC_URL TBD
+//==== TEST_CRITERIA MR MMINA
+
+test(function () {
+ var returnedValue = null, humanActivityType = "SLEEP_MONITOR";
+
+ add_result_callback(function () {
+ tizen.humanactivitymonitor.stopRecorder(humanActivityType);
+ });
+
+ try {
+ returnedValue = tizen.humanactivitymonitor.startRecorder(humanActivityType);
+ assert_equals(returnedValue, undefined, "Incorrect returned value from startRecorder method");
+ tizen.humanactivitymonitor.stopRecorder(humanActivityType);
+ } catch (e) {
+ if(e.name === NOT_SUPPORTED_EXCEPTION) {
+ } else {
+ assert_unreached("unexpected exception is thrown" + e.name + ", msg: " + e.message);
+ }
+ }
+}, document.title);
+
+</script>
+</body>
+</html>
\ No newline at end of file
--- /dev/null
+<!DOCTYPE html>
+<!--
+Copyright (c) 2016 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:
+ Xiaoyan Qian <xy.qian@samsung.com>
+
+-->
+<html>
+<head>
+<title>HumanActivityMonitorManager_startRecorder_with_option</title>
+<meta charset="utf-8"/>
+<script src="support/unitcommon.js"></script>
+</head>
+<body>
+<div id="log"></div>
+<script>
+//==== TEST: HumanActivityMonitorManager_startRecorder_with_option
+//==== LABEL Check if method HumanActivityMonitorManager::startRecorder() works properly with optional argument
+//==== PRIORITY P1
+//==== SPEC Tizen Web API:System:HumanActivityMonitor:HumanActivityMonitorManager:startRecorder M
+//==== SPEC_URL TBD
+//==== TEST_CRITERIA MR MOA
+
+test(function () {
+ var returnedValue = null, humanActivityType = "HRM",
+ options = {
+ retentionPeriod: 1
+ };
+
+ add_result_callback(function () {
+ tizen.humanactivitymonitor.stopRecorder(humanActivityType);
+ });
+
+ try {
+ returnedValue = tizen.humanactivitymonitor.startRecorder(humanActivityType, options);
+ assert_equals(returnedValue, undefined, "Incorrect returned value from startRecorder method");
+ tizen.humanactivitymonitor.stopRecorder(humanActivityType);
+ } catch (e) {
+ if(e.name === NOT_SUPPORTED_EXCEPTION) {
+ } else {
+ assert_unreached("unexpected exception is thrown" + e.name + ", msg: " + e.message);
+ }
+ }
+}, document.title);
+
+</script>
+</body>
+</html>
\ No newline at end of file
--- /dev/null
+<!DOCTYPE html>
+<!--
+Copyright (c) 2014 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:
+ Saleh Enam Shohag <saleh.enam@samsung.com>
+
+-->
+<html>
+<head>
+<title>HumanActivityMonitorManager_start_HumanActivityMonitorSuccessCallback_TypeMismatch </title>
+<meta charset="utf-8"/>
+<script src="support/unitcommon.js"></script>
+</head>
+<body>
+<div id="log"></div>
+<script>
+//==== TEST: HumanActivityMonitorManager_start_HumanActivityMonitorSuccessCallback_TypeMismatch
+//==== LABEL Check if HumanActivityMonitorManager::start() with incorrect successCallback argument throws exception
+//==== PRIORITY P2
+//==== ONLOAD_DELAY 30
+//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityMonitorManager:start M
+//==== SPEC_URL TBD
+//==== TEST_CRITERIA MC
+
+setup({timeout: 90000});
+
+var t = async_test(document.title, {timeout: 90000}), successCallback, conversionTable, i, humanActivityType = "PEDOMETER";
+
+t.step(function () {
+ conversionTable = getTypeConversionExceptions("functionObject", true);
+ for (i = 0; i < conversionTable.length; i++) {
+ successCallback = conversionTable[i][0];
+ exceptionName = conversionTable[i][1];
+ assert_throws(TYPE_MISMATCH_EXCEPTION, function () {
+ tizen.humanactivitymonitor.start(humanActivityType, successCallback);
+ }, TYPE_MISMATCH_EXCEPTION + "should be thrown");
+ }
+ t.done();
+});
+
+</script>
+</body>
+</html>
\ No newline at end of file
--- /dev/null
+<!DOCTYPE html>
+<!--
+Copyright (c) 2014 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:
+ Saleh Enam Shohag <saleh.enam@samsung.com>
+
+-->
+<html>
+<head>
+<title>HumanActivityMonitorManager_start_HumanActivityMonitorSuccessCallback_invalid_cb </title>
+<meta charset="utf-8"/>
+<script src="support/unitcommon.js"></script>
+</head>
+<body>
+<div id="log"></div>
+<script>
+//==== TEST: HumanActivityMonitorManager_start_HumanActivityMonitorSuccessCallback_invalid_cb
+//==== LABEL Check if HumanActivityMonitorManager::start() method throws exception when HumanActivityMonitorSuccessCallback is invalid
+//==== PRIORITY P2
+//==== ONLOAD_DELAY 30
+//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityMonitorManager:start M
+//==== SPEC_URL TBD
+//==== TEST_CRITERIA MTCB
+
+setup({timeout: 9000});
+
+var t = async_test(document.title, {timeout: 9000}), invalidCallback, humanActivityType = "PEDOMETER";
+
+t.step(function () {
+ invalidCallback = {
+ onsuccess: t.step_func(function (humanActivityData) {
+ assert_unreached("Invalid success callback invoked");
+ })
+ };
+
+ assert_throws(TYPE_MISMATCH_EXCEPTION, function () {
+ tizen.humanactivitymonitor.start(humanActivityType, invalidCallback);
+ }, TYPE_MISMATCH_EXCEPTION + "should be thrown");
+ t.done();
+});
+
+</script>
+</body>
+</html>
\ No newline at end of file
--- /dev/null
+<!DOCTYPE html>
+<!--
+Copyright (c) 2014 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:
+ Saleh Enam Shohag <saleh.enam@samsung.com>
+
+-->
+<html>
+<head>
+<title>HumanActivityMonitorManager_start_changedCallback_TypeMismatch </title>
+<meta charset="utf-8"/>
+<script src="support/unitcommon.js"></script>
+</head>
+<body>
+<div id="log"></div>
+<script>
+//==== TEST: HumanActivityMonitorManager_start_changedCallback_TypeMismatch
+//==== LABEL Check if HumanActivityMonitorManager::start() with incorrect successCallback argument throws exception
+//==== PRIORITY P2
+//==== ONLOAD_DELAY 30
+//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityMonitorManager:start M
+//==== SPEC_URL TBD
+//==== TEST_CRITERIA MC
+
+setup({timeout: 90000});
+
+var t = async_test(document.title, {timeout: 90000}), successCallback, conversionTable, i, humanActivityType = "PEDOMETER";
+
+t.step(function () {
+ conversionTable = getTypeConversionExceptions("functionObject", true);
+ for (i = 0; i < conversionTable.length; i++) {
+ successCallback = conversionTable[i][0];
+ exceptionName = conversionTable[i][1];
+ assert_throws(TYPE_MISMATCH_EXCEPTION, function () {
+ tizen.humanactivitymonitor.start(humanActivityType, successCallback);
+ }, TYPE_MISMATCH_EXCEPTION + "should be thrown");
+ }
+ t.done();
+});
+
+</script>
+</body>
+</html>
\ No newline at end of file
--- /dev/null
+<!DOCTYPE html>
+<!--
+Copyright (c) 2014 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:
+ Saleh Enam Shohag <saleh.enam@samsung.com>
+
+-->
+<html>
+<head>
+<title>HumanActivityMonitorManager_start_changedCallback_invalid_cb </title>
+<meta charset="utf-8"/>
+<script src="support/unitcommon.js"></script>
+</head>
+<body>
+<div id="log"></div>
+<script>
+//==== TEST: HumanActivityMonitorManager_start_changedCallback_invalid_cb
+//==== LABEL Check if HumanActivityMonitorManager::start() method throws exception when HumanActivityMonitorSuccessCallback is invalid
+//==== PRIORITY P2
+//==== ONLOAD_DELAY 30
+//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityMonitorManager:start M
+//==== SPEC_URL TBD
+//==== TEST_CRITERIA MTCB
+
+setup({timeout: 9000});
+
+var t = async_test(document.title, {timeout: 9000}), invalidCallback, humanActivityType = "PEDOMETER";
+
+t.step(function () {
+ invalidCallback = {
+ onsuccess: t.step_func(function (humanActivityData) {
+ assert_unreached("Invalid success callback invoked");
+ })
+ };
+
+ assert_throws(TYPE_MISMATCH_EXCEPTION, function () {
+ tizen.humanactivitymonitor.start(humanActivityType, invalidCallback);
+ }, TYPE_MISMATCH_EXCEPTION + "should be thrown");
+ t.done();
+});
+
+</script>
+</body>
+</html>
\ No newline at end of file
--- /dev/null
+<!DOCTYPE html>
+<!--
+Copyright (c) 2016 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:
+ Wei Zhang <wei625.zhang@samsung.com>
+
+-->
+<html>
+<head>
+<title>HumanActivityMonitorManager_start_errorCallback_TypeMismatch </title>
+<meta charset="utf-8"/>
+<script src="support/unitcommon.js"></script>
+</head>
+<body>
+<div id="log"></div>
+<script>
+//==== TEST: HumanActivityMonitorManager_start_errorCallback_TypeMismatch
+//==== LABEL Check if HumanActivityMonitorManager::start() with incorrect errorCallback argument throws exception
+//==== PRIORITY P2
+//==== ONLOAD_DELAY 30
+//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityMonitorManager:start M
+//==== SPEC_URL TBD
+//==== TEST_CRITERIA MC
+
+setup({timeout: 90000});
+
+var t = async_test(document.title, {timeout: 90000}), successCallback, errorCallback, conversionTable, i, humanActivityType = "PEDOMETER";
+
+t.step(function () {
+
+ successCallback = t.step_func(function (humanActivityData) {
+ assert_unreached("SuccessCallback should not invoke");
+ });
+
+ conversionTable = getTypeConversionExceptions("functionObject", true);
+ for (i = 0; i < conversionTable.length; i++) {
+ errorCallback = conversionTable[i][0];
+ exceptionName = conversionTable[i][1];
+ assert_throws(TYPE_MISMATCH_EXCEPTION, function () {
+ tizen.humanactivitymonitor.start(humanActivityType, successCallback, errorCallback);
+ }, TYPE_MISMATCH_EXCEPTION + "should be thrown");
+ }
+ t.done();
+});
+
+</script>
+</body>
+</html>
\ No newline at end of file
--- /dev/null
+<!DOCTYPE html>
+<!--
+Copyright (c) 2016 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:
+ Wei Zhang <wei625.zhang@samsung.com>
+
+-->
+<html>
+<head>
+<title>HumanActivityMonitorManager_start_errorCallback_invalid_cb </title>
+<meta charset="utf-8"/>
+<script src="support/unitcommon.js"></script>
+</head>
+<body>
+<div id="log"></div>
+<script>
+//==== TEST: HumanActivityMonitorManager_start_errorCallback_invalid_cb
+//==== LABEL Check if HumanActivityMonitorManager::start() method throws exception when ErrorCallback is invalid
+//==== PRIORITY P2
+//==== ONLOAD_DELAY 30
+//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityMonitorManager:start M
+//==== SPEC_URL TBD
+//==== TEST_CRITERIA MTCB
+
+setup({timeout: 9000});
+
+var t = async_test(document.title, {timeout: 9000}), successCallback, invalidCallback, humanActivityType = "PEDOMETER";
+
+t.step(function () {
+
+ successCallback = t.step_func(function (humanActivityData) {
+ assert_unreached("SuccessCallback should not invoke");
+ });
+
+ invalidCallback = {
+ onerror: t.step_func(function (humanActivityData) {
+ assert_unreached("Invalid success callback invoked");
+ })
+ };
+
+ assert_throws(TYPE_MISMATCH_EXCEPTION, function () {
+ tizen.humanactivitymonitor.start(humanActivityType, successCallback, invalidCallback);
+ }, TYPE_MISMATCH_EXCEPTION + "should be thrown");
+ t.done();
+});
+
+</script>
+</body>
+</html>
\ No newline at end of file
--- /dev/null
+<!DOCTYPE html>
+<!--
+Copyright (c) 2016 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:
+ Wei Zhang <wei625.zhang@samsung.com>
+
+-->
+<html>
+<head>
+<title>HumanActivityMonitorManager_start_errorCallback_invoked</title>
+<meta charset="utf-8"/>
+<script src="support/unitcommon.js"></script>
+</head>
+<body>
+<div id="log"></div>
+<script>
+//==== TEST: HumanActivityMonitorManager_start_errorCallback_invoked
+//==== LABEL Check exception in error callback of HumanActivityMonitorManager::start() method
+//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityMonitorManager:start M
+//==== EXECUTION_TYPE manual
+//==== SPEC_URL TBD
+//==== PRIORITY P2
+//==== STEP Please set the GPS function to disabled in the location settings
+//==== EXPECT Pass should be shown in the page after GPS off
+//==== ONLOAD_DELAY 300
+//==== TEST_CRITERIA MERRCB
+
+setup({timeout: 30000});
+
+var t = async_test(document.title, {timeout: 30000}), successCallback, errorCallback, humanActivityType = "GPS";
+
+t.step(function () {
+ successCallback = t.step_func(function (humanActivityData) {
+ //assert_unreached("SuccessCallback should not invoke");
+ });
+
+ errorCallback = t.step_func(function (error) {
+ assert_equals(error.name, "ServiceNotAvailableError", "Incorrect error name");
+ assert_type(error.message, "string", "Error message is not string");
+ assert_not_equals(error.message, "", "Error message is empty");
+ t.done();
+ });
+
+ tizen.humanactivitymonitor.start(humanActivityType, successCallback, errorCallback);
+});
+
+</script>
+</body>
+</html>
\ No newline at end of file
--- /dev/null
+<!DOCTYPE html>
+<!--
+Copyright (c) 2014 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:
+ Saleh Enam Shohag <saleh.enam@samsung.com>
+
+-->
+<html>
+<head>
+<title>HumanActivityMonitorManager_start_exist</title>
+<meta charset="utf-8"/>
+<script src="support/unitcommon.js"></script>
+</head>
+<body>
+<div id="log"></div>
+<script>
+//==== TEST: HumanActivityMonitorManager_start_exist
+//==== LABEL Check if method HumanActivityMonitorManager::start() exists
+//==== PRIORITY P0
+//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityMonitorManager:start M
+//==== SPEC_URL TBD
+//==== TEST_CRITERIA ME
+
+test(function () {
+ check_method_exists(tizen.humanactivitymonitor, "start");
+}, document.title);
+
+</script>
+</body>
+</html>
\ No newline at end of file
--- /dev/null
+<!DOCTYPE html>
+<!--
+Copyright (c) 2014 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:
+ Saleh Enam Shohag <saleh.enam@samsung.com>
+
+-->
+<html>
+<head>
+<title>HumanActivityMonitorManager_start_misarg</title>
+<meta charset="utf-8"/>
+<script src="support/unitcommon.js"></script>
+</head>
+<body>
+<div id="log"></div>
+<script>
+//==== TEST: HumanActivityMonitorManager_start_misarg
+//==== LABEL Check if HumanActivityMonitorManager::start() throws exception when type and successCallback are missing
+//==== PRIORITY P2
+//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityMonitorManager:start M
+//==== SPEC_URL TBD
+//==== TEST_CRITERIA MMA
+
+test(function () {
+ assert_throws(TYPE_MISMATCH_EXCEPTION, function () {
+ tizen.humanactivitymonitor.start();
+ }, TYPE_MISMATCH_EXCEPTION + "should be thrown");
+}, document.title);
+
+</script>
+</body>
+</html>
\ No newline at end of file
--- /dev/null
+<!DOCTYPE html>
+<!--
+Copyright (c) 2014 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:
+ Wei Zhang <wei625.zhang@samsung.com>
+
+-->
+<html>
+<head>
+<title>HumanActivityMonitorManager_start_option_TypeMismatch </title>
+<meta charset="utf-8"/>
+<script src="support/unitcommon.js"></script>
+</head>
+<body>
+<div id="log"></div>
+<script>
+//==== TEST: HumanActivityMonitorManager_start_option_TypeMismatch
+//==== LABEL Check if HumanActivityMonitorManager::start() with incorrect option argument throws exception
+//==== PRIORITY P2
+//==== ONLOAD_DELAY 30
+//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityMonitorManager:start M
+//==== SPEC_URL TBD
+//==== TEST_CRITERIA MC
+
+setup({timeout: 90000});
+
+var t = async_test(document.title, {timeout: 90000}), successCallback, errorCallback, option, conversionTable, i, humanActivityType = "PEDOMETER";
+
+t.step(function () {
+ successCallback = t.step_func(function (humanActivityData) {
+ assert_unreached("successCallback callback should not be invoked");
+ });
+
+ errorCallback = t.step_func(function (e) {
+ assert_unreached("errorCallback exception:" + e.message);
+ });
+
+ conversionTable = getTypeConversionExceptions("dictionary", true);
+ for (i = 0; i < conversionTable.length; i++) {
+ option = conversionTable[i][0];
+ exceptionName = conversionTable[i][1];
+ assert_throws(TYPE_MISMATCH_EXCEPTION, function () {
+ tizen.humanactivitymonitor.start(humanActivityType, successCallback, errorCallback, option);
+ }, TYPE_MISMATCH_EXCEPTION + "should be thrown");
+ }
+ t.done();
+});
+
+</script>
+</body>
+</html>
\ No newline at end of file
--- /dev/null
+<!DOCTYPE html>
+<!--
+Copyright (c) 2014 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:
+ Wei Zhang <wei625.zhang@samsung.com>
+
+-->
+<html>
+<head>
+<title>HumanActivityMonitorManager_start_option_empty</title>
+<meta charset="utf-8"/>
+<script src="support/unitcommon.js"></script>
+<script src="support/humanactivitymonitor_common.js"></script>
+</head>
+<body>
+<div id="log"></div>
+<script>
+//==== TEST: HumanActivityMonitorManager_start_option_empty
+//==== LABEL Check if HumanActivityMonitorManager::start() can be called with empty object as option argument
+//==== PRIORITY P1
+//==== SPEC Tizen Web API:System:HumanActivityMonitor:HumanActivityMonitorManager:start M
+//==== SPEC_URL TBD
+//==== TEST_CRITERIA MR MAST MTD
+
+setup({timeout: 90000});
+
+var t = async_test(document.title, {timeout: 90000}), successCallback, errorCallback, returnedValue = null, humanActivityType = "GPS";
+
+t.step(function () {
+ add_result_callback(function () {
+ tizen.humanactivitymonitor.stop(humanActivityType);
+ });
+ errorCallback = t.step_func(function (e) {
+ assert_unreached("errorCallback exception:" + e.message);
+ });
+ successCallback = t.step_func(function (humanActivityData) {
+ assert_type(humanActivityData, "object", "humanActivityData is not object type");
+ assert_equals(returnedValue, undefined, "Incorrect returned value");
+ t.done();
+ });
+ returnedValue = tizen.humanactivitymonitor.start(humanActivityType, successCallback, errorCallback, {});
+});
+
+</script>
+</body>
+</html>
\ No newline at end of file
--- /dev/null
+<!DOCTYPE html>
+<!--
+Copyright (c) 2014 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:
+ Saleh Enam Shohag <saleh.enam@samsung.com>
+
+-->
+<html>
+<head>
+<title>HumanActivityMonitorManager_start_type_GPS</title>
+<meta charset="utf-8"/>
+<script src="support/unitcommon.js"></script>
+<script src="support/humanactivitymonitor_common.js"></script>
+</head>
+<body>
+<div id="log"></div>
+<script>
+//==== TEST: HumanActivityMonitorManager_start_type_GPS
+//==== LABEL Check if method HumanActivityMonitorManager::start() works properly for GPS HumanActivity type
+//==== PRIORITY P1
+//==== SPEC Tizen Web API:System:HumanActivityMonitor:HumanActivityMonitorManager:start M
+//==== SPEC_URL TBD
+//==== TEST_CRITERIA MR MAST
+
+test(function () {
+ var returnedValue = null, humanActivityType = "GPS";
+ try {
+ returnedValue = tizen.humanactivitymonitor.start(humanActivityType);
+ assert_equals(returnedValue, undefined, "Incorrect returned value from start method");
+ tizen.humanactivitymonitor.stop(humanActivityType);
+ } catch (e) {
+ if(e.name === NOT_SUPPORTED_EXCEPTION) {
+ } else {
+ assert_unreached("unexpected exception is thrown" + e.name + ", msg: " + e.message);
+ }
+ }
+}, document.title);
+
+</script>
+</body>
+</html>
\ No newline at end of file
--- /dev/null
+<!DOCTYPE html>
+<!--
+Copyright (c) 2014 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:
+ Saleh Enam Shohag <saleh.enam@samsung.com>
+
+-->
+<html>
+<head>
+<title>HumanActivityMonitorManager_start_type_HRM</title>
+<meta charset="utf-8"/>
+<script src="support/unitcommon.js"></script>
+<script src="support/humanactivitymonitor_common.js"></script>
+</head>
+<body>
+<div id="log"></div>
+<script>
+//==== TEST: HumanActivityMonitorManager_start_type_HRM
+//==== LABEL Check if method HumanActivityMonitorManager::start() works properly for HRM HumanActivity type
+//==== PRIORITY P1
+//==== SPEC Tizen Web API:System:HumanActivityMonitor:HumanActivityMonitorManager:start M
+//==== SPEC_URL TBD
+//==== TEST_CRITERIA MR MAST
+
+test(function () {
+ var returnedValue = null, humanActivityType = "HRM";
+ try {
+ returnedValue = tizen.humanactivitymonitor.start(humanActivityType);
+ assert_equals(returnedValue, undefined, "Incorrect returned value from start method");
+ tizen.humanactivitymonitor.stop(humanActivityType);
+ } catch (e) {
+ if(e.name === NOT_SUPPORTED_EXCEPTION) {
+ } else {
+ assert_unreached("unexpected exception is thrown" + e.name + ", msg: " + e.message);
+ }
+ }
+}, document.title);
+
+</script>
+</body>
+</html>
\ No newline at end of file
--- /dev/null
+<!DOCTYPE html>
+<!--
+Copyright (c) 2014 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:
+ Saleh Enam Shohag <saleh.enam@samsung.com>
+
+-->
+<html>
+<head>
+<title>HumanActivityMonitorManager_start_type_PEDOMETER</title>
+<meta charset="utf-8"/>
+<script src="support/unitcommon.js"></script>
+<script src="support/humanactivitymonitor_common.js"></script>
+</head>
+<body>
+<div id="log"></div>
+<script>
+//==== TEST: HumanActivityMonitorManager_start_type_PEDOMETER
+//==== LABEL Check if method HumanActivityMonitorManager::start() works properly for PEDOMETER
+//==== PRIORITY P1
+//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityMonitorManager:start M
+//==== SPEC_URL TBD
+//==== TEST_CRITERIA MR MAST
+
+test(function () {
+ var returnedValue = null, humanActivityType = "PEDOMETER";
+ try {
+ returnedValue = tizen.humanactivitymonitor.start(humanActivityType);
+ assert_equals(returnedValue, undefined, "Incorrect returned value from start method");
+ tizen.humanactivitymonitor.stop(humanActivityType);
+ } catch (e) {
+ if(e.name === NOT_SUPPORTED_EXCEPTION) {
+ } else {
+ assert_unreached("unexpected exception is thrown" + e.name + ", msg: " + e.message);
+ }
+ }
+}, document.title);
+
+</script>
+</body>
+</html>
\ No newline at end of file
--- /dev/null
+<!DOCTYPE html>
+<!--
+Copyright (c) 2016 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:
+ Wei Zhang <wei625.zhang@samsung.com>
+
+-->
+<html>
+<head>
+<title>HumanActivityMonitorManager_start_type_SLEEP_MONITOR</title>
+<meta charset="utf-8"/>
+<script src="support/unitcommon.js"></script>
+<script src="support/humanactivitymonitor_common.js"></script>
+</head>
+<body>
+<div id="log"></div>
+<script>
+//==== TEST: HumanActivityMonitorManager_start_type_SLEEP_MONITOR
+//==== LABEL Check if method HumanActivityMonitorManager::start() works properly for SLEEP_MONITOR HumanActivity type
+//==== PRIORITY P1
+//==== SPEC Tizen Web API:System:HumanActivityMonitor:HumanActivityMonitorManager:start M
+//==== SPEC_URL TBD
+//==== TEST_CRITERIA MR MAST
+
+test(function () {
+ var returnedValue = null, humanActivityType = "SLEEP_MONITOR";
+ try {
+ returnedValue = tizen.humanactivitymonitor.start(humanActivityType);
+ assert_equals(returnedValue, undefined, "Incorrect returned value from start method");
+ tizen.humanactivitymonitor.stop(humanActivityType);
+ } catch (e) {
+ if(e.name === NOT_SUPPORTED_EXCEPTION) {
+ } else {
+ assert_unreached("unexpected exception is thrown" + e.name + ", msg: " + e.message);
+ }
+ }
+}, document.title);
+
+</script>
+</body>
+</html>
\ No newline at end of file
--- /dev/null
+<!DOCTYPE html>
+<!--
+Copyright (c) 2014 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:
+ Saleh Enam Shohag <saleh.enam@samsung.com>
+
+-->
+<html>
+<head>
+<title>HumanActivityMonitorManager_start_type_WRIST_UP</title>
+<meta charset="utf-8"/>
+<script src="support/unitcommon.js"></script>
+<script src="support/humanactivitymonitor_common.js"></script>
+</head>
+<body>
+<div id="log"></div>
+<script>
+//==== TEST: HumanActivityMonitorManager_start_type_WRIST_UP
+//==== LABEL Check if method HumanActivityMonitorManager::start() works properly for WRIST_UP
+//==== PRIORITY P1
+//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityMonitorManager:start M
+//==== SPEC_URL TBD
+//==== TEST_CRITERIA MR MAST
+
+test(function () {
+ var returnedValue = null, humanActivityType = "WRIST_UP";
+ try {
+ returnedValue = tizen.humanactivitymonitor.start(humanActivityType);
+ assert_equals(returnedValue, undefined, "Incorrect returned value from start method");
+ tizen.humanactivitymonitor.stop(humanActivityType);
+ } catch (e) {
+ if(e.name === NOT_SUPPORTED_EXCEPTION) {
+ } else {
+ assert_unreached("unexpected exception is thrown" + e.name + ", msg: " + e.message);
+ }
+ }
+}, document.title);
+
+</script>
+</body>
+</html>
\ No newline at end of file
--- /dev/null
+<!DOCTYPE html>
+<!--
+Copyright (c) 2014 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:
+ Wei Zhang <wei625.zhang@samsung.com>
+
+-->
+<html>
+<head>
+<title>HumanActivityMonitorManager_start_with_option</title>
+<meta charset="utf-8"/>
+<script src="support/unitcommon.js"></script>
+<script src="support/humanactivitymonitor_common.js"></script>
+</head>
+<body>
+<div id="log"></div>
+<script>
+//==== TEST: HumanActivityMonitorManager_start_with_option
+//==== LABEL Check if method HumanActivityMonitorManager::start() works properly for GPS HumanActivity type with optional argument
+
+//==== PRIORITY P1
+//==== SPEC Tizen Web API:System:HumanActivityMonitor:HumanActivityMonitorManager:start M
+//==== SPEC_URL TBD
+//==== TEST_CRITERIA MR MAST MOA
+
+setup({timeout: 90000});
+
+var t = async_test(document.title, {timeout: 90000}), successCallback, errorCallback, returnedValue = null, humanActivityType = "GPS", option = {callbackInterval: 150000};
+
+t.step(function () {
+ add_result_callback(function () {
+ tizen.humanactivitymonitor.stop(humanActivityType);
+ });
+ errorCallback = t.step_func(function (e) {
+ assert_unreached("errorCallback exception:" + e.message);
+ });
+ successCallback = t.step_func(function (humanActivityData) {
+ assert_type(humanActivityData, "object", "humanActivityData is not object type");
+ assert_equals(returnedValue, undefined, "Incorrect returned value");
+ t.done();
+ });
+ returnedValue = tizen.humanactivitymonitor.start(humanActivityType, successCallback, errorCallback, option);
+});
+
+</script>
+</body>
+</html>
\ No newline at end of file
--- /dev/null
+<!DOCTYPE html>
+<!--
+Copyright (c) 2016 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:
+ Xiaoyan Qian <xy.qian@samsung.com>
+
+-->
+<html>
+<head>
+<title>HumanActivityMonitorManager_stopRecorder_NotSupportedError</title>
+<meta charset="utf-8"/>
+<script src="support/unitcommon.js"></script>
+</head>
+<body>
+<div id="log"></div>
+<script>
+//==== TEST: HumanActivityMonitorManager_stopRecorder_NotSupportedError
+//==== LABEL Check if HumanActivityMonitorManager::stopRecorder() throw NotSupportedError called with not supported human activity recorder type
+//==== PRIORITY P2
+//==== SPEC Tizen Web API:System:HumanActivityMonitor:HumanActivityMonitorManager:stopRecorder M
+//==== SPEC_URL TBD
+//==== TEST_CRITERIA MC
+
+test(function () {
+ if (!tizen.systeminfo.getCapability("http://tizen.org/feature/sensor.pedometer")) {
+ assert_throws(NOT_SUPPORTED_EXCEPTION, function () {
+ tizen.humanactivitymonitor.stopRecorder("PEDOMETER");
+ }, "NotSupportedError exception should throw");
+ }
+ if (!tizen.systeminfo.getCapability("http://tizen.org/feature/sensor.heart_rate_monitor")) {
+ assert_throws(NOT_SUPPORTED_EXCEPTION, function () {
+ tizen.humanactivitymonitor.stopRecorder("HRM");
+ }, "NotSupportedError exception should throw");
+ }
+ if (!tizen.systeminfo.getCapability("http://tizen.org/feature/sensor.sleep_monitor")) {
+ assert_throws(NOT_SUPPORTED_EXCEPTION, function () {
+ tizen.humanactivitymonitor.stopRecorder("SLEEP_MONITOR");
+ }, "NotSupportedError exception should throw");
+ }
+ if (!tizen.systeminfo.getCapability("http://tizen.org/feature/sensor.barometer")) {
+ assert_throws(NOT_SUPPORTED_EXCEPTION, function () {
+ tizen.humanactivitymonitor.stopRecorder("PRESSURE");
+ }, "NotSupportedError exception should throw");
+ }
+}, document.title);
+
+</script>
+</body>
+</html>
\ No newline at end of file
--- /dev/null
+<!DOCTYPE html>
+<!--
+Copyright (c) 2016 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:
+ Xiaoyan Qian <xy.qian@samsung.com>
+
+-->
+<html>
+<head>
+<title>HumanActivityMonitorManager_stopRecorder_exist</title>
+<meta charset="utf-8"/>
+<script src="support/unitcommon.js"></script>
+</head>
+<body>
+<div id="log"></div>
+<script>
+//==== TEST: HumanActivityMonitorManager_stopRecorder_exist
+//==== LABEL Check if stopRecorder exists
+//==== SPEC Tizen Web API:System:HumanActivityMonitor:HumanActivityMonitorManager:stopRecorder M
+//==== SPEC_URL TBD
+//==== PRIORITY P0
+//==== TEST_CRITERIA ME
+
+test(function () {
+ assert_true("stopRecorder" in tizen.humanactivitymonitor, "HumanActivityMonitorManager should have stopRecorder method");
+ check_method_exists(tizen.humanactivitymonitor, "stopRecorder");
+}, document.title);
+
+</script>
+</body>
+</html>
\ No newline at end of file
--- /dev/null
+<!DOCTYPE html>
+<!--
+Copyright (c) 2016 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:
+ Xiaoyan Qian <xy.qian@samsung.com>
+
+-->
+<html>
+<head>
+<title>HumanActivityMonitorManager_stopRecorder_misarg</title>
+<meta charset="utf-8"/>
+<script src="support/unitcommon.js"></script>
+</head>
+<body>
+<div id="log"></div>
+<script>
+//==== TEST: HumanActivityMonitorManager_stopRecorder_misarg
+//==== LABEL Check if HumanActivityMonitorManager::stopRecorder() called with missing non-optional argument throws an exception
+//==== PRIORITY P1
+//==== SPEC Tizen Web API:System:HumanActivityMonitor:HumanActivityMonitorManager:stopRecorder M
+//==== SPEC_URL TBD
+//==== TEST_CRITERIA MMA
+
+test(function () {
+ assert_throws(TYPE_MISMATCH_EXCEPTION, function () {
+ tizen.humanactivitymonitor.stopRecorder();
+ }, "TypeMismatchError exception should throw");
+}, document.title);
+
+</script>
+</body>
+</html>
\ No newline at end of file
--- /dev/null
+<!DOCTYPE html>
+<!--
+Copyright (c) 2016 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:
+ Xiaoyan Qian <xy.qian@samsung.com>
+
+-->
+<html>
+<head>
+<title>HumanActivityMonitorManager_stopRecorder_type_HRM</title>
+<meta charset="utf-8"/>
+<script src="support/unitcommon.js"></script>
+</head>
+<body>
+<div id="log"></div>
+<script>
+//==== TEST: HumanActivityMonitorManager_stopRecorder_type_HRM
+//==== LABEL Check if method HumanActivityMonitorManager::stopRecorder() works properly for HRM HumanActivity type
+//==== PRIORITY P1
+//==== SPEC Tizen Web API:System:HumanActivityMonitor:HumanActivityMonitorManager:stopRecorder M
+//==== SPEC_URL TBD
+//==== TEST_CRITERIA MR
+
+test(function () {
+ var returnedValue = null, humanActivityType = "HRM";
+
+ add_result_callback(function () {
+ tizen.humanactivitymonitor.stopRecorder(humanActivityType);
+ });
+
+ try {
+ tizen.humanactivitymonitor.startRecorder(humanActivityType);
+ returnedValue = tizen.humanactivitymonitor.stopRecorder(humanActivityType);
+ assert_equals(returnedValue, undefined, "Incorrect returned value from stopRecorder method");
+ } catch (e) {
+ if(e.name === NOT_SUPPORTED_EXCEPTION) {
+ } else {
+ assert_unreached("unexpected exception is thrown" + e.name + ", msg: " + e.message);
+ }
+ }
+}, document.title);
+
+</script>
+</body>
+</html>
\ No newline at end of file
--- /dev/null
+<!DOCTYPE html>
+<!--
+Copyright (c) 2016 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:
+ Xiaoyan Qian <xy.qian@samsung.com>
+
+-->
+<html>
+<head>
+<title>HumanActivityMonitorManager_stopRecorder_type_PEDOMETER</title>
+<meta charset="utf-8"/>
+<script src="support/unitcommon.js"></script>
+</head>
+<body>
+<div id="log"></div>
+<script>
+//==== TEST: HumanActivityMonitorManager_stopRecorder_type_PEDOMETER
+//==== LABEL Check if method HumanActivityMonitorManager::stopRecorder() works properly for PEDOMETER HumanActivity type
+//==== PRIORITY P1
+//==== SPEC Tizen Web API:System:HumanActivityMonitor:HumanActivityMonitorManager:stopRecorder M
+//==== SPEC_URL TBD
+//==== TEST_CRITERIA MR
+
+test(function () {
+ var returnedValue = null, humanActivityType = "PEDOMETER";
+
+ add_result_callback(function () {
+ tizen.humanactivitymonitor.stopRecorder(humanActivityType);
+ });
+
+ try {
+ tizen.humanactivitymonitor.startRecorder(humanActivityType);
+ returnedValue = tizen.humanactivitymonitor.stopRecorder(humanActivityType);
+ assert_equals(returnedValue, undefined, "Incorrect returned value from stopRecorder method");
+ } catch (e) {
+ if(e.name === NOT_SUPPORTED_EXCEPTION) {
+ } else {
+ assert_unreached("unexpected exception is thrown" + e.name + ", msg: " + e.message);
+ }
+ }
+}, document.title);
+
+</script>
+</body>
+</html>
\ No newline at end of file
--- /dev/null
+<!DOCTYPE html>
+<!--
+Copyright (c) 2016 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:
+ Xiaoyan Qian <xy.qian@samsung.com>
+
+-->
+<html>
+<head>
+<title>HumanActivityMonitorManager_stopRecorder_type_PRESSURE</title>
+<meta charset="utf-8"/>
+<script src="support/unitcommon.js"></script>
+</head>
+<body>
+<div id="log"></div>
+<script>
+//==== TEST: HumanActivityMonitorManager_stopRecorder_type_PRESSURE
+//==== LABEL Check if method HumanActivityMonitorManager::stopRecorder() works properly for PRESSURE HumanActivity type
+//==== PRIORITY P1
+//==== SPEC Tizen Web API:System:HumanActivityMonitor:HumanActivityMonitorManager:stopRecorder M
+//==== SPEC_URL TBD
+//==== TEST_CRITERIA MR
+
+test(function () {
+ var returnedValue = null, humanActivityType = "PRESSURE";
+
+ add_result_callback(function () {
+ tizen.humanactivitymonitor.stopRecorder(humanActivityType);
+ });
+
+ try {
+ tizen.humanactivitymonitor.startRecorder(humanActivityType);
+ returnedValue = tizen.humanactivitymonitor.stopRecorder(humanActivityType);
+ assert_equals(returnedValue, undefined, "Incorrect returned value from startRecorder method");
+ } catch (e) {
+ if(e.name === NOT_SUPPORTED_EXCEPTION) {
+ } else {
+ assert_unreached("unexpected exception is thrown" + e.name + ", msg: " + e.message);
+ }
+ }
+}, document.title);
+
+</script>
+</body>
+</html>
\ No newline at end of file
--- /dev/null
+<!DOCTYPE html>
+<!--
+Copyright (c) 2016 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:
+ Xiaoyan Qian <xy.qian@samsung.com>
+
+-->
+<html>
+<head>
+<title>HumanActivityMonitorManager_stopRecorder_type_SLEEP_MONITOR</title>
+<meta charset="utf-8"/>
+<script src="support/unitcommon.js"></script>
+</head>
+<body>
+<div id="log"></div>
+<script>
+//==== TEST: HumanActivityMonitorManager_stopRecorder_type_SLEEP_MONITOR
+//==== LABEL Check if method HumanActivityMonitorManager::stopRecorder () works properly for SLEEP_MONITOR HumanActivity type
+//==== PRIORITY P1
+//==== SPEC Tizen Web API:System:HumanActivityMonitor:HumanActivityMonitorManager:stopRecorder M
+//==== SPEC_URL TBD
+//==== TEST_CRITERIA MR
+
+test(function () {
+ var returnedValue = null, humanActivityType = "SLEEP_MONITOR";
+
+ add_result_callback(function () {
+ tizen.humanactivitymonitor.stopRecorder(humanActivityType);
+ });
+
+ try {
+ tizen.humanactivitymonitor.startRecorder(humanActivityType);
+ returnedValue = tizen.humanactivitymonitor.stopRecorder(humanActivityType);
+ assert_equals(returnedValue, undefined, "Incorrect returned value from stopRecorder method");
+ } catch (e) {
+ if(e.name === NOT_SUPPORTED_EXCEPTION) {
+ } else {
+ assert_unreached("unexpected exception is thrown" + e.name + ", msg: " + e.message);
+ }
+ }
+}, document.title);
+
+</script>
+</body>
+</html>
\ No newline at end of file
--- /dev/null
+<!DOCTYPE html>
+<!--
+Copyright (c) 2014 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:
+ Wahid Dilawar Al-Hakim <wahid.h@samsung.com>
+
+-->
+<html>
+<head>
+<title>HumanActivityMonitorManager_stop_exist</title>
+<meta charset="utf-8"/>
+<script src="support/unitcommon.js"></script>
+</head>
+<body>
+<div id="log"></div>
+<script>
+//==== TEST: HumanActivityMonitorManager_stop_exist
+//==== LABEL Check if HumanActivityMonitorManager::stop() method exists
+//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityMonitorManager:stop M
+//==== SPEC_URL TBD
+//==== PRIORITY P0
+//==== TEST_CRITERIA ME
+
+test(function () {
+ check_method_exists(tizen.humanactivitymonitor, "stop");
+}, document.title);
+
+</script>
+</body>
+</html>
\ No newline at end of file
--- /dev/null
+<!DOCTYPE html>
+<!--
+Copyright (c) 2014 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:
+ Wahid Dilawar Al-Hakim <wahid.h@samsung.com>
+
+-->
+<html>
+<head>
+<title>HumanActivityMonitorManager_stop_misarg</title>
+<meta charset="utf-8"/>
+<script src="support/unitcommon.js"></script>
+</head>
+<body>
+<div id="log"></div>
+<script>
+//==== TEST: HumanActivityMonitorManager_stop_misarg
+//==== LABEL Check if HumanActivityMonitorManager::stop() throws exception when type is missing
+//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityMonitorManager:stop M
+//==== SPEC_URL TBD
+//==== PRIORITY P2
+//==== TEST_CRITERIA MMA
+
+test(function () {
+ assert_throws(TYPE_MISMATCH_EXCEPTION, function () {
+ tizen.humanactivitymonitor.stop();
+ }, TYPE_MISMATCH_EXCEPTION + "should be thrown");
+}, document.title);
+
+</script>
+</body>
+</html>
\ No newline at end of file
--- /dev/null
+<!DOCTYPE html>
+<!--
+Copyright (c) 2014 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:
+ Saleh Enam Shohag <saleh.enam@samsung.com>
+
+-->
+<html>
+<head>
+<title>HumanActivityMonitorManager_stop_type_GPS</title>
+<meta charset="utf-8"/>
+<script src="support/unitcommon.js"></script>
+</head>
+<body>
+<div id="log"></div>
+<script>
+//==== TEST: HumanActivityMonitorManager_stop_type_GPS
+//==== LABEL Check if HumanActivityMonitorManager::stop() method works properly for HumanActivity type GPS
+//==== SPEC Tizen Web API:System:HumanActivityMonitor:HumanActivityMonitorManager:stop M
+//==== SPEC_URL TBD
+//==== PRIORITY P1
+//==== TEST_CRITERIA MR
+
+test(function () {
+ var returnedValue, humanActivityType = "GPS";
+ returnedValue = tizen.humanactivitymonitor.start(humanActivityType);
+ assert_equals(returnedValue, undefined, "Incorrect returned value from start method");
+ returnedValue = null;
+ returnedValue = tizen.humanactivitymonitor.stop(humanActivityType);
+ assert_equals(returnedValue, undefined, "Incorrect returned value from stop method");
+}, document.title);
+
+</script>
+</body>
+</html>
\ No newline at end of file
--- /dev/null
+<!DOCTYPE html>
+<!--
+Copyright (c) 2014 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:
+ Saleh Enam Shohag <saleh.enam@samsung.com>
+
+-->
+<html>
+<head>
+<title>HumanActivityMonitorManager_stop_type_HRM</title>
+<meta charset="utf-8"/>
+<script src="support/unitcommon.js"></script>
+</head>
+<body>
+<div id="log"></div>
+<script>
+//==== TEST: HumanActivityMonitorManager_stop_type_HRM
+//==== LABEL Check if HumanActivityMonitorManager::stop() method works properly for HumanActivity type HRM
+//==== SPEC Tizen Web API:System:HumanActivityMonitor:HumanActivityMonitorManager:stop M
+//==== SPEC_URL TBD
+//==== PRIORITY P1
+//==== TEST_CRITERIA MR
+
+test(function () {
+ var returnedValue, humanActivityType = "HRM";
+ returnedValue = tizen.humanactivitymonitor.start(humanActivityType);
+ assert_equals(returnedValue, undefined, "Incorrect returned value from start method");
+ returnedValue = null;
+ returnedValue = tizen.humanactivitymonitor.stop(humanActivityType);
+ assert_equals(returnedValue, undefined, "Incorrect returned value from stop method");
+}, document.title);
+
+</script>
+</body>
+</html>
\ No newline at end of file
--- /dev/null
+<!DOCTYPE html>
+<!--
+Copyright (c) 2014 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:
+ Wahid Dilawar Al-Hakim <wahid.h@samsung.com>
+
+-->
+<html>
+<head>
+<title>HumanActivityMonitorManager_stop_type_PEDOMETER</title>
+<meta charset="utf-8"/>
+<script src="support/unitcommon.js"></script>
+</head>
+<body>
+<div id="log"></div>
+<script>
+//==== TEST: HumanActivityMonitorManager_stop_type_PEDOMETER
+//==== LABEL Check if HumanActivityMonitorManager::stop() method works properly
+//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityMonitorManager:stop M
+//==== SPEC_URL TBD
+//==== PRIORITY P1
+//==== TEST_CRITERIA MR
+
+test(function () {
+ var returnedValue, humanActivityType = "PEDOMETER";
+ returnedValue = tizen.humanactivitymonitor.start(humanActivityType);
+ assert_equals(returnedValue, undefined, "Incorrect returned value from start method");
+ returnedValue = null;
+ returnedValue = tizen.humanactivitymonitor.stop(humanActivityType);
+ assert_equals(returnedValue, undefined, "Incorrect returned value from stop method");
+}, document.title);
+
+</script>
+</body>
+</html>
\ No newline at end of file
--- /dev/null
+<!DOCTYPE html>
+<!--
+Copyright (c) 2016 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:
+ Wei Zhang <wei625.zhang@samsung.com>
+
+-->
+<html>
+<head>
+<title>HumanActivityMonitorManager_stop_type_SLEEP_MONITOR</title>
+<meta charset="utf-8"/>
+<script src="support/unitcommon.js"></script>
+</head>
+<body>
+<div id="log"></div>
+<script>
+//==== TEST: HumanActivityMonitorManager_stop_type_SLEEP_MONITOR
+//==== LABEL Check if HumanActivityMonitorManager::stop() method works properly for HumanActivity type SLEEP_MONITOR
+//==== SPEC Tizen Web API:System:HumanActivityMonitor:HumanActivityMonitorManager:stop M
+//==== SPEC_URL TBD
+//==== PRIORITY P1
+//==== TEST_CRITERIA MR
+
+test(function () {
+ var returnedValue, humanActivityType = "SLEEP_MONITOR";
+ returnedValue = tizen.humanactivitymonitor.start(humanActivityType);
+ assert_equals(returnedValue, undefined, "Incorrect returned value from start method");
+ returnedValue = null;
+ returnedValue = tizen.humanactivitymonitor.stop(humanActivityType);
+ assert_equals(returnedValue, undefined, "Incorrect returned value from stop method");
+}, document.title);
+
+</script>
+</body>
+</html>
\ No newline at end of file
--- /dev/null
+<!DOCTYPE html>
+<!--
+Copyright (c) 2014 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:
+ Wahid Dilawar Al-Hakim <wahid.h@samsung.com>
+
+-->
+<html>
+<head>
+<title>HumanActivityMonitorManager_stop_type_WRIST_UP</title>
+<meta charset="utf-8"/>
+<script src="support/unitcommon.js"></script>
+</head>
+<body>
+<div id="log"></div>
+<script>
+//==== TEST: HumanActivityMonitorManager_stop_type_WRIST_UP
+//==== LABEL Check if HumanActivityMonitorManager::stop() method with WRIST_UP works properly
+//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityMonitorManager:stop M
+//==== SPEC_URL TBD
+//==== PRIORITY P1
+//==== TEST_CRITERIA MR
+
+test(function () {
+ var returnedValue = null, humanActivityType = "WRIST_UP";
+ returnedValue = tizen.humanactivitymonitor.start(humanActivityType);
+ assert_equals(returnedValue, undefined, "Incorrect returned value from start method");
+ returnedValue = tizen.humanactivitymonitor.stop(humanActivityType);
+ assert_equals(returnedValue, undefined, "Incorrect returned value from stop method");
+}, document.title);
+
+</script>
+</body>
+</html>
\ No newline at end of file
--- /dev/null
+<!DOCTYPE html>
+<!--
+Copyright (c) 2014 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:
+ Wahid Dilawar Al-Hakim <wahid.h@samsung.com>
+
+-->
+<html>
+<head>
+<title>HumanActivityMonitorManager_unsetAccumulativePedometerListener</title>
+<meta charset="utf-8"/>
+<script src="support/unitcommon.js"></script>
+</head>
+<body>
+<div id="log"></div>
+<script>
+//==== TEST: HumanActivityMonitorManager_unsetAccumulativePedometerListener
+//==== LABEL Check if HumanActivityMonitorManager::unsetAccumulativePedometerListener() method works properly
+//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:humanactivitymonitor:unsetAccumulativePedometerListener M
+//==== SPEC_URL TBD
+//==== PRIORITY: P1
+//==== ONLOAD_DELAY 30
+//==== TEST_CRITERIA MNA MNAST MR
+
+setup({timeout: 30000});
+
+var t = async_test(document.title, {timeout: 30000}), changeCallback, returnedValue = null;
+
+t.step(function () {
+ changeCallback = t.step(function (pedometer) {
+ returnedValue = tizen.humanactivitymonitor.unsetAccumulativePedometerListener();
+ assert_equals(returnedValue, undefined, "unsetAccumulativePedometerListener should return undefined.");
+ assert_equals(pedometer, undefined, "unsetAccumulativePedometerListener should return undefined.");
+ t.done();
+ });
+
+ tizen.humanactivitymonitor.setAccumulativePedometerListener(changeCallback);
+});
+
+</script>
+</body>
+</html>
\ No newline at end of file
--- /dev/null
+<!DOCTYPE html>
+<!--
+Copyright (c) 2014 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:
+ Wahid Dilawar Al-Hakim <wahid.h@samsung.com>
+
+-->
+<html>
+<head>
+<title>HumanActivityMonitorManager_unsetAccumulativePedometerListener_exist</title>
+<meta charset="utf-8"/>
+<script src="support/unitcommon.js"></script>
+</head>
+<body>
+<div id="log"></div>
+<script>
+//==== TEST: HumanActivityMonitorManager_unsetAccumulativePedometerListener_exist
+//==== LABEL Check if HumanActivityMonitorManager::unsetAccumulativePedometerListener() method exists
+//==== PRIORITY: P0
+//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityMonitorManager:unsetAccumulativePedometerListener M
+//==== SPEC_URL TBD
+//==== TEST_CRITERIA ME
+
+test(function () {
+ check_method_exists(tizen.humanactivitymonitor, "unsetAccumulativePedometerListener");
+}, document.title);
+
+</script>
+</body>
+</html>
\ No newline at end of file
--- /dev/null
+<!DOCTYPE html>
+<!--
+Copyright (c) 2014 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:
+ Wahid Dilawar Al-Hakim <wahid.h@samsung.com>
+
+-->
+<html>
+<head>
+<title>HumanActivityMonitorManager_unsetAccumulativePedometerListener_extra_argument</title>
+<meta charset="utf-8"/>
+<script src="support/unitcommon.js"></script>
+</head>
+<body>
+<div id="log"></div>
+<script>
+//==== TEST: HumanActivityMonitorManager_unsetAccumulativePedometerListener_extra_argument
+//==== LABEL Check if HumanActivityMonitorManager::unsetAccumulativePedometerListener() method with extra argument
+//==== PRIORITY: P1
+//==== SPEC: Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityMonitorManager:unsetAccumulativePedometerListener M
+//==== SPEC_URL TBD
+//==== TEST_CRITERIA MNAEX
+
+test(function () {
+ checkExtraArgument(tizen.humanactivitymonitor, "unsetAccumulativePedometerListener");
+}, document.title);
+
+</script>
+</body>
+</html>
\ No newline at end of file
--- /dev/null
+<!DOCTYPE html>
+<!--
+Copyright (c) 2014 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:
+ Hyukin Kwon <hyukin.kwon@samsung.com>
+
+-->
+<html>
+<head>
+<title>HumanActivityMonitorOption_callbackInterval_type_GPS</title>
+<meta charset="utf-8"/>
+<script src="support/unitcommon.js"></script>
+<script src="support/humanactivitymonitor_common.js"></script>
+</head>
+<body>
+<div id="log"></div>
+<script>
+//==== TEST: HumanActivityMonitorOption_callbackInterval_type_GPS
+//==== LABEL Check if method HumanActivityMonitorOption::callbackInterval works properly for GPS HumanActivity type
+//==== PRIORITY P1
+//==== EXECUTION_TYPE manual
+//==== SPEC Tizen Web API:System:HumanActivityMonitor:HumanActivityMonitorOption:callbackInterval A
+//==== SPEC_URL TBD
+//==== STEP Wait 155 seconds for the callback
+//==== EXPECT Pass should be shown in the page after 155 seconds
+//==== TEST_CRITERIA
+//==== ONLOAD_DELAY 300
+
+setup({"timeout": 300000});
+
+var t = async_test(document.title, {"timeout": 300000}), changedCallback, startMeasure, endMeasure, humanActivityType = "GPS", cbFlag = 0;
+
+t.step(function () {
+ add_result_callback(function () {
+ tizen.humanactivitymonitor.stop(humanActivityType);
+ });
+
+ changedCallback = t.step_func(function (gpsInfo) {
+ if (cbFlag == 1) {
+ endMeasure = new Date().getTime();
+ assert_approx_equals(endMeasure - startMeasure, 150000, 1000, "Callback should be invoked in given interval time.");
+ t.done();
+ }
+ if (cbFlag == 0) {
+ startMeasure = new Date().getTime();
+ cbFlag = 1;
+ }
+ });
+
+ tizen.humanactivitymonitor.start(humanActivityType, changedCallback, {callbackInterval:155000});
+ startMeasure = new Date().getTime();
+});
+
+</script>
+</body>
+</html>
--- /dev/null
+<!DOCTYPE html>
+<!--
+Copyright (c) 2014 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:
+ Hyukin Kwon <hyukin.kwon@samsung.com>
+
+-->
+<html>
+<head>
+<title>HumanActivityMonitorOption_callbackInterval_type_GPS_default</title>
+<meta charset="utf-8"/>
+<script src="support/unitcommon.js"></script>
+<script src="support/humanactivitymonitor_common.js"></script>
+</head>
+<body>
+<div id="log"></div>
+<script>
+//==== TEST: HumanActivityMonitorOption_callbackInterval_type_GPS_default
+//==== LABEL Check if method HumanActivityMonitorOption::callbackInterval works properly when set to null
+//==== PRIORITY P1
+//==== EXECUTION_TYPE manual
+//==== SPEC Tizen Web API:System:HumanActivityMonitor:HumanActivityMonitorOption:callbackInterval A
+//==== SPEC_URL TBD
+//==== STEP Wait 150 seconds for the callback
+//==== EXPECT Pass should be shown in the page after 150 seconds
+//==== TEST_CRITERIA
+//==== ONLOAD_DELAY 300
+
+setup({"timeout": 300000});
+
+var t = async_test(document.title, {"timeout": 300000}), changedCallback, startMeasure, endMeasure, humanActivityType = "GPS", cbFlag = 0;
+
+t.step(function () {
+ add_result_callback(function () {
+ tizen.humanactivitymonitor.stop(humanActivityType);
+ });
+
+ changedCallback = t.step_func(function (gpsInfo) {
+ if (cbFlag == 1) {
+ endMeasure = new Date().getTime();
+ assert_approx_equals(endMeasure - startMeasure, 150000, 1000, "Callback should be invoked in given interval time.");
+ t.done();
+ }
+ if (cbFlag == 0) {
+ startMeasure = new Date().getTime();
+ cbFlag = 1;
+ }
+ });
+
+ tizen.humanactivitymonitor.start(humanActivityType, changedCallback, {callbackInterval:null});
+});
+
+</script>
+</body>
+</html>
--- /dev/null
+<!DOCTYPE html>
+<!--
+Copyright (c) 2014 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:
+ Hyukin Kwon <hyukin.kwon@samsung.com>
+
+-->
+<html>
+<head>
+<title>HumanActivityMonitorOption_callbackInterval_type_HRM</title>
+<meta charset="utf-8"/>
+<script src="support/unitcommon.js"></script>
+<script src="support/humanactivitymonitor_common.js"></script>
+</head>
+<body>
+<div id="log"></div>
+<script>
+//==== TEST: HumanActivityMonitorOption_callbackInterval_type_HRM
+//==== LABEL Check if method HumanActivityMonitorOption::callbackInterval works properly for HRM HumanActivity type
+//==== PRIORITY P1
+//==== SPEC Tizen Web API:System:HumanActivityMonitor:HumanActivityMonitorOption:callbackInterval A
+//==== SPEC_URL TBD
+//==== TEST_CRITERIA
+
+var t = async_test(document.title), changedCallback, startMeasure, endMeasure, humanActivityType = "HRM", cbFlag = 0;
+
+t.step(function () {
+ add_result_callback(function () {
+ tizen.humanactivitymonitor.stop(humanActivityType);
+ });
+
+ changedCallback = t.step_func(function (hrmInfo) {
+ if (cbFlag == 1) {
+ endMeasure = new Date().getTime();
+ assert_approx_equals(endMeasure - startMeasure, 500, 100, "Callback should be invoked in given interval time.");
+ t.done();
+ }
+ if (cbFlag == 0) {
+ startMeasure = new Date().getTime();
+ cbFlag = 1;
+ }
+ });
+
+ tizen.humanactivitymonitor.start(humanActivityType, changedCallback, {callbackInterval:500});
+});
+
+</script>
+</body>
+</html>
--- /dev/null
+<!DOCTYPE html>
+<!--
+Copyright (c) 2014 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:
+ Hyukin Kwon <hyukin.kwon@samsung.com>
+
+-->
+<html>
+<head>
+<title>HumanActivityMonitorOption_callbackInterval_type_HRM_default</title>
+<meta charset="utf-8"/>
+<script src="support/unitcommon.js"></script>
+<script src="support/humanactivitymonitor_common.js"></script>
+</head>
+<body>
+<div id="log"></div>
+<script>
+//==== TEST: HumanActivityMonitorOption_callbackInterval_type_HRM_default
+//==== LABEL Check if method HumanActivityMonitorOption::callbackInterval() works properly when set to null
+//==== PRIORITY P1
+//==== SPEC Tizen Web API:System:HumanActivityMonitor:HumanActivityMonitorOption:callbackInterval A
+//==== SPEC_URL TBD
+//==== TEST_CRITERIA
+
+var t = async_test(document.title), changedCallback, startMeasure, endMeasure, humanActivityType = "HRM", cbFlag = 0;
+
+t.step(function () {
+ add_result_callback(function () {
+ tizen.humanactivitymonitor.stop(humanActivityType);
+ });
+
+ changedCallback = t.step_func(function (hrmInfo) {
+ if (cbFlag == 1) {
+ endMeasure = new Date().getTime();
+ assert_approx_equals(endMeasure - startMeasure, 100, 50, "Callback should be invoked in given interval time.");
+ t.done();
+ }
+ if (cbFlag == 0) {
+ startMeasure = new Date().getTime();
+ cbFlag = 1;
+ }
+ });
+
+ tizen.humanactivitymonitor.start(humanActivityType, changedCallback, {callbackInterval:null});
+ startMeasure = new Date().getTime();
+});
+
+</script>
+</body>
+</html>
--- /dev/null
+<!DOCTYPE html>
+<!--
+Copyright (c) 2014 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:
+ Hyukin Kwon <hyukin.kwon@samsung.com>
+
+-->
+<html>
+<head>
+<title>HumanActivityMonitorOption_sampleInterval_type_GPS</title>
+<meta charset="utf-8"/>
+<script src="support/unitcommon.js"></script>
+<script src="support/humanactivitymonitor_common.js"></script>
+</head>
+<body>
+<div id="log"></div>
+<script>
+//==== TEST: HumanActivityMonitorOption_sampleInterval_type_GPS
+//==== LABEL Check if method HumanActivityMonitorOption::sampleInterval works properly for GPS HumanActivity type
+//==== PRIORITY P1
+//==== EXECUTION_TYPE manual
+//==== SPEC Tizen Web API:System:HumanActivityMonitor:HumanActivityMonitorOption:sampleInterval A
+//==== SPEC_URL TBD
+//==== STEP Wait 120 seconds for the callback
+//==== EXPECT Pass should be shown in the page after 120 seconds
+//==== TEST_CRITERIA
+//==== ONLOAD_DELAY 300
+
+setup({"timeout": 300000});
+
+var t = async_test(document.title, {"timeout": 300000}), changedCallback, humanActivityType = "GPS", cbFlag = 0;
+
+t.step(function () {
+ add_result_callback(function () {
+ tizen.humanactivitymonitor.stop(humanActivityType);
+ });
+
+ changedCallback = t.step_func(function (gpsInfo) {
+ if (cbFlag == 1) {
+ assert_approx_equals(gpsInfo.gpsInfo.length, 60, 5, "GPS information should be sampled approximately 60 times");
+ t.done();
+ }
+ if (cbFlag == 0) {
+ cbFlag = 1;
+ }
+ });
+
+ tizen.humanactivitymonitor.start(humanActivityType, changedCallback, {callbackInterval:120000, sampleInterval:2000});
+});
+
+</script>
+</body>
+</html>
--- /dev/null
+<!DOCTYPE html>
+<!--
+Copyright (c) 2014 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:
+ Hyukin Kwon <hyukin.kwon@samsung.com>
+
+-->
+<html>
+<head>
+<title>HumanActivityMonitorOption_sampleInterval_type_GPS_default</title>
+<meta charset="utf-8"/>
+<script src="support/unitcommon.js"></script>
+<script src="support/humanactivitymonitor_common.js"></script>
+</head>
+<body>
+<div id="log"></div>
+<script>
+//==== TEST: HumanActivityMonitorOption_sampleInterval_type_GPS_default
+//==== LABEL Check if method HumanActivityMonitorOption::sampleInterval works properly when set to null
+//==== PRIORITY P1
+//==== EXECUTION_TYPE manual
+//==== SPEC Tizen Web API:System:HumanActivityMonitor:HumanActivityMonitorOption:sampleInterval A
+//==== SPEC_URL TBD
+//==== STEP Wait 120 seconds for the callback
+//==== EXPECT Pass should be shown in the page after 120 seconds
+//==== TEST_CRITERIA
+//==== ONLOAD_DELAY 300
+
+setup({"timeout": 300000});
+
+var t = async_test(document.title, {"timeout": 300000}), changedCallback, humanActivityType = "GPS", cbFlag = 0;
+
+t.step(function () {
+ add_result_callback(function () {
+ tizen.humanactivitymonitor.stop(humanActivityType);
+ });
+
+ changedCallback = t.step_func(function (gpsInfo) {
+ if (cbFlag == 1) {
+ assert_approx_equals(gpsInfo.gpsInfo.length, 120, 5, "GPS information should be sampled approximately 120 times");
+ t.done();
+ }
+ if (cbFlag == 0) {
+ cbFlag = 1;
+ }
+ });
+
+ tizen.humanactivitymonitor.start(humanActivityType, changedCallback, {callbackInterval:120000, sampleInterval:null});
+});
+
+</script>
+</body>
+</html>
--- /dev/null
+<!DOCTYPE html>
+<!--
+Copyright (c) 2014 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:
+ Wahid Dilawar Al-Hakim <wahid.h@samsung.com>
+
+-->
+<html>
+<head>
+<title>HumanActivityMonitorSuccessCallback_notexist</title>
+<meta charset="utf-8"/>
+<script src="support/unitcommon.js"></script>
+</head>
+<body>
+<div id="log"></div>
+<script>
+//==== TEST: HumanActivityMonitorSuccessCallback_notexist
+//==== LABEL Check if HumanActivityMonitorSuccessCallback does not exist
+//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityMonitorSuccessCallback U
+//==== SPEC_URL TBD
+//==== PRIORITY P3
+//==== TEST_CRITERIA CBNIO
+
+test(function () {
+ check_no_interface_object("HumanActivityMonitorSuccessCallback");
+}, document.title);
+
+</script>
+</body>
+</html>
\ No newline at end of file
--- /dev/null
+<!DOCTYPE html>
+<!--
+Copyright (c) 2014 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:
+ Wahid Dilawar Al-Hakim <wahid.h@samsung.com>
+
+-->
+<html>
+<head>
+<title>HumanActivityMonitorSuccessCallback_onsuccess</title>
+<meta charset="utf-8"/>
+<script src="support/unitcommon.js"></script>
+<script src="support/humanactivitymonitor_common.js"></script>
+</head>
+<body>
+<div id="log"></div>
+<script>
+//==== TEST: HumanActivityMonitorSuccessCallback_onsuccess
+//==== LABEL Test whether HumanActivityMonitorSuccessCallback::onsuccess() is called with argument of proper type
+//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityMonitorSuccessCallback:onsuccess M
+//==== SPEC_URL TBD
+//==== PRIORITY P1
+//==== ONLOAD_DELAY 90
+//==== TEST_CRITERIA CBT CBOA
+
+setup({timeout: 90000});
+
+var t = async_test(document.title, {timeout: 90000}), successCallback, errorCallback, returnedValue = null, humanActivityType = "PEDOMETER";
+
+t.step(function () {
+ add_result_callback(function () {
+ tizen.humanactivitymonitor.stop(humanActivityType);
+ });
+
+ successCallback = t.step_func(function (humanActivityData) {
+ assert_type(humanActivityData, "object", "humanActivityData is not object type");
+ assert_equals(returnedValue, undefined, "Incorrect returned value");
+ check_human_activity_pedometer_data(humanActivityData);
+ t.done();
+ });
+
+ errorCallback = t.step_func(function (error) {
+ assert_unreached("error callback invoked: name: " + error.name + ", msg: " + error.message);
+ });
+
+ returnedValue = tizen.humanactivitymonitor.start(humanActivityType);
+ assert_equals(returnedValue, undefined, "Incorrect returned value");
+ returnedValue = tizen.humanactivitymonitor.getHumanActivityData(humanActivityType, successCallback, errorCallback);
+});
+
+</script>
+</body>
+</html>
\ No newline at end of file
--- /dev/null
+<!DOCTYPE html>
+<!--
+Copyright (c) 2014 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:
+ Saleh Enam Shohag <saleh.enam@samsung.com>
+
+-->
+<html>
+<head>
+<title>HumanActivityPedometerData_cumulativeCalorie_attribute</title>
+<meta charset="utf-8"/>
+<script src="support/unitcommon.js"></script>
+<script src="support/humanactivitymonitor_common.js"></script>
+</head>
+<body>
+<div id="log"></div>
+<script>
+//==== TEST: HumanActivityPedometerData_cumulativeCalorie_attribute
+//==== LABEL Check if HumanActivityPedometerData::cumulativeCalorie exists, has type double, and is readonly
+//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityPedometerData:cumulativeCalorie A
+//==== SPEC_URL TBD
+//==== PRIORITY P1
+//==== ONLOAD_DELAY 9
+//==== TEST_CRITERIA AE AT ARO
+
+setup({timeout: 9000});
+
+var t = async_test(document.title, {timeout: 9000}), getHumanActivityDataSuccess, getHumanActivityDataError, humanActivityType = "PEDOMETER";
+
+t.step(function () {
+ add_result_callback(function () {
+ tizen.humanactivitymonitor.stop(humanActivityType);
+ });
+
+ getHumanActivityDataError = t.step_func(function (error) {
+ assert_unreached("getHumanActivityDataError is called" + error.name);
+ });
+
+ getHumanActivityDataSuccess = t.step_func(function (pedometerInfo) {
+ check_readonly(pedometerInfo, "cumulativeCalorie", pedometerInfo.cumulativeCalorie, "double", pedometerInfo.cumulativeCalorie + 10);
+ t.done();
+ });
+
+ tizen.humanactivitymonitor.start(humanActivityType);
+ tizen.humanactivitymonitor.getHumanActivityData(humanActivityType, getHumanActivityDataSuccess, getHumanActivityDataError);
+});
+
+</script>
+</body>
+</html>
\ No newline at end of file
--- /dev/null
+<!DOCTYPE html>
+<!--
+Copyright (c) 2014 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:
+ Saleh Enam Shohag <saleh.enam@samsung.com>
+
+-->
+<html>
+<head>
+<title>HumanActivityPedometerData_cumulativeDistance_attribute</title>
+<meta charset="utf-8"/>
+<script src="support/unitcommon.js"></script>
+<script src="support/humanactivitymonitor_common.js"></script>
+</head>
+<body>
+<div id="log"></div>
+<script>
+//==== TEST: HumanActivityPedometerData_cumulativeDistance_attribute
+//==== LABEL Check if HumanActivityPedometerData::cumulativeDistance exists, has type double, and is readonly
+//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityPedometerData:cumulativeDistance A
+//==== SPEC_URL TBD
+//==== PRIORITY P1
+//==== ONLOAD_DELAY 9
+//==== TEST_CRITERIA AE AT ARO
+
+setup({timeout: 9000});
+
+var t = async_test(document.title, {timeout: 9000}), getHumanActivityDataSuccess, getHumanActivityDataError, humanActivityType = "PEDOMETER";
+
+t.step(function () {
+ add_result_callback(function () {
+ tizen.humanactivitymonitor.stop(humanActivityType);
+ });
+
+ getHumanActivityDataError = t.step_func(function (error) {
+ assert_unreached("getHumanActivityDataError is called" + error.name);
+ });
+
+ getHumanActivityDataSuccess = t.step_func(function (pedometerInfo) {
+ check_readonly(pedometerInfo, "cumulativeDistance", pedometerInfo.cumulativeDistance, "double", pedometerInfo.cumulativeDistance + 10);
+ t.done();
+ });
+
+ tizen.humanactivitymonitor.start(humanActivityType);
+ tizen.humanactivitymonitor.getHumanActivityData(humanActivityType, getHumanActivityDataSuccess, getHumanActivityDataError);
+});
+
+</script>
+</body>
+</html>
\ No newline at end of file
--- /dev/null
+<!DOCTYPE html>
+<!--
+Copyright (c) 2014 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:
+ Saleh Enam Shohag <saleh.enam@samsung.com>
+
+-->
+<html>
+<head>
+<title>HumanActivityPedometerData_cumulativeRunStepCount_attribute</title>
+<meta charset="utf-8"/>
+<script src="support/unitcommon.js"></script>
+<script src="support/humanactivitymonitor_common.js"></script>
+</head>
+<body>
+<div id="log"></div>
+<script>
+//==== TEST: HumanActivityPedometerData_cumulativeRunStepCount_attribute
+//==== LABEL Check if HumanActivityPedometerData::cumulativeRunStepCount exists, has type double, and is readonly
+//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityPedometerData:cumulativeRunStepCount A
+//==== SPEC_URL TBD
+//==== PRIORITY P1
+//==== ONLOAD_DELAY 9
+//==== TEST_CRITERIA AE AT ARO
+
+setup({timeout: 9000});
+
+var t = async_test(document.title, {timeout: 9000}), getHumanActivityDataSuccess, getHumanActivityDataError, humanActivityType = "PEDOMETER";
+
+t.step(function () {
+ add_result_callback(function () {
+ tizen.humanactivitymonitor.stop(humanActivityType);
+ });
+
+ getHumanActivityDataError = t.step_func(function (error) {
+ assert_unreached("getHumanActivityDataError is called" + error.name);
+ });
+
+ getHumanActivityDataSuccess = t.step_func(function (pedometerInfo) {
+ check_readonly(pedometerInfo, "cumulativeRunStepCount", pedometerInfo.cumulativeRunStepCount, "double",
+ pedometerInfo.cumulativeRunStepCount + 10);
+ t.done();
+ });
+
+ tizen.humanactivitymonitor.start(humanActivityType);
+ tizen.humanactivitymonitor.getHumanActivityData(humanActivityType, getHumanActivityDataSuccess, getHumanActivityDataError);
+});
+
+</script>
+</body>
+</html>
\ No newline at end of file
--- /dev/null
+<!DOCTYPE html>
+<!--
+Copyright (c) 2014 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:
+ Saleh Enam Shohag <saleh.enam@samsung.com>
+
+-->
+<html>
+<head>
+<title>HumanActivityPedometerData_cumulativeTotalStepCount_attribute</title>
+<meta charset="utf-8"/>
+<script src="support/unitcommon.js"></script>
+<script src="support/humanactivitymonitor_common.js"></script>
+</head>
+<body>
+<div id="log"></div>
+<script>
+//==== TEST: HumanActivityPedometerData_cumulativeTotalStepCount_attribute
+//==== LABEL Check if HumanActivityPedometerData::cumulativeTotalStepCount exists, has type double, and is readonly
+//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityPedometerData:cumulativeTotalStepCount A
+//==== SPEC_URL TBD
+//==== PRIORITY P1
+//==== ONLOAD_DELAY 9
+//==== TEST_CRITERIA AE AT ARO
+
+setup({timeout: 9000});
+
+var t = async_test(document.title, {timeout: 9000}), getHumanActivityDataSuccess, getHumanActivityDataError, humanActivityType = "PEDOMETER";
+
+t.step(function () {
+ add_result_callback(function () {
+ tizen.humanactivitymonitor.stop(humanActivityType);
+ });
+
+ getHumanActivityDataError = t.step_func(function (error) {
+ assert_unreached("getHumanActivityDataError is called" + error.name);
+ });
+
+ getHumanActivityDataSuccess = t.step_func(function (pedometerInfo) {
+ check_readonly(pedometerInfo, "cumulativeTotalStepCount", pedometerInfo.cumulativeTotalStepCount, "double",
+ pedometerInfo.cumulativeTotalStepCount + 10);
+ t.done();
+ });
+
+ tizen.humanactivitymonitor.start(humanActivityType);
+ tizen.humanactivitymonitor.getHumanActivityData(humanActivityType, getHumanActivityDataSuccess, getHumanActivityDataError);
+});
+
+</script>
+</body>
+</html>
\ No newline at end of file
--- /dev/null
+<!DOCTYPE html>
+<!--
+Copyright (c) 2014 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:
+ Saleh Enam Shohag <saleh.enam@samsung.com>
+
+-->
+<html>
+<head>
+<title>HumanActivityPedometerData_cumulativeWalkStepCount_attribute</title>
+<meta charset="utf-8"/>
+<script src="support/unitcommon.js"></script>
+<script src="support/humanactivitymonitor_common.js"></script>
+</head>
+<body>
+<div id="log"></div>
+<script>
+//==== TEST: HumanActivityPedometerData_cumulativeWalkStepCount_attribute
+//==== LABEL Check if HumanActivityPedometerData::cumulativeWalkStepCount exists, has type double, and is readonly
+//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityPedometerData:cumulativeWalkStepCount A
+//==== SPEC_URL TBD
+//==== PRIORITY P1
+//==== ONLOAD_DELAY 9
+//==== TEST_CRITERIA AE AT ARO
+
+setup({timeout: 9000});
+
+var t = async_test(document.title, {timeout: 9000}), getHumanActivityDataSuccess, getHumanActivityDataError, humanActivityType = "PEDOMETER";
+
+t.step(function () {
+ add_result_callback(function () {
+ tizen.humanactivitymonitor.stop(humanActivityType);
+ });
+
+ getHumanActivityDataError = t.step_func(function (error) {
+ assert_unreached("getHumanActivityDataError is called" + error.name);
+ });
+
+ getHumanActivityDataSuccess = t.step_func(function (pedometerInfo) {
+ check_readonly(pedometerInfo, "cumulativeWalkStepCount", pedometerInfo.cumulativeWalkStepCount, "double",
+ pedometerInfo.cumulativeWalkStepCount + 10);
+ t.done();
+ });
+
+ tizen.humanactivitymonitor.start(humanActivityType);
+ tizen.humanactivitymonitor.getHumanActivityData(humanActivityType, getHumanActivityDataSuccess, getHumanActivityDataError);
+});
+
+</script>
+</body>
+</html>
\ No newline at end of file
--- /dev/null
+<!DOCTYPE html>
+<!--
+Copyright (c) 2014 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:
+ Wahid Dilawar Al-Hakim <wahid.h@samsung.com>
+
+-->
+<html>
+<head>
+<title>HumanActivityPedometerData_extend</title>
+<meta charset="utf-8"/>
+<script src="support/unitcommon.js"></script>
+</head>
+<body>
+<div id="log"></div>
+<script>
+//==== TEST: HumanActivityPedometerData_extend
+//==== LABEL Check if HumanActivityPedometerData object is extendable
+//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityPedometerData:HumanActivityPedometerData U
+//==== SPEC_URL TBD
+//==== PRIORITY P3
+//==== ONLOAD_DELAY 90
+//==== TEST_CRITERIA OBX
+
+setup({timeout: 90000});
+
+var t = async_test(document.title, {timeout: 90000}), successCallback, errorCallback, humanActivityType = "PEDOMETER";
+
+t.step(function () {
+ add_result_callback(function () {
+ tizen.humanactivitymonitor.stop(humanActivityType);
+ });
+
+ successCallback = t.step_func(function (humanActivityData) {
+ check_extensibility(humanActivityData);
+ t.done();
+ });
+
+ errorCallback = t.step_func(function (error) {
+ assert_unreached("error callback invoked: name: " + error.name + ", msg: " + error.message);
+ });
+
+ tizen.humanactivitymonitor.start(humanActivityType);
+ tizen.humanactivitymonitor.getHumanActivityData(humanActivityType, successCallback, errorCallback);
+});
+
+</script>
+</body>
+</html>
\ No newline at end of file
--- /dev/null
+<!DOCTYPE html>
+<!--
+Copyright (c) 2014 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:
+ Wahid Dilawar Al-Hakim <wahid.h@samsung.com>
+
+-->
+<html>
+<head>
+<title>HumanActivityPedometerData_notexist</title>
+<meta charset="utf-8"/>
+<script src="support/unitcommon.js"></script>
+</head>
+<body>
+<div id="log"></div>
+<script>
+//==== TEST: HumanActivityPedometerData_notexist
+//==== LABEL Check if interface HumanActivityPedometerData exists, it should not
+//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityPedometerData:HumanActivityPedometerData U
+//==== SPEC_URL TBD
+//==== PRIORITY P3
+//==== TEST_CRITERIA NIO
+
+test(function () {
+ check_no_interface_object("HumanActivityPedometerData");
+}, document.title);
+
+</script>
+</body>
+</html>
\ No newline at end of file
--- /dev/null
+<!DOCTYPE html>
+<!--
+Copyright (c) 2014 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:
+ Saleh Enam Shohag <saleh.enam@samsung.com>
+
+-->
+<html>
+<head>
+<title>HumanActivityPedometerData_speed_attribute</title>
+<meta charset="utf-8"/>
+<script src="support/unitcommon.js"></script>
+<script src="support/humanactivitymonitor_common.js"></script>
+</head>
+<body>
+<div id="log"></div>
+<script>
+//==== TEST: HumanActivityPedometerData_speed_attribute
+//==== LABEL Check if HumanActivityPedometerData::speed exists, has type double, and is readonly
+//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityPedometerData:speed A
+//==== SPEC_URL TBD
+//==== PRIORITY P1
+//==== ONLOAD_DELAY 9
+//==== TEST_CRITERIA AE AT ARO
+
+setup({timeout: 9000});
+
+var t = async_test(document.title, {timeout: 9000}), getHumanActivityDataSuccess, getHumanActivityDataError, humanActivityType = "PEDOMETER";
+
+t.step(function () {
+ add_result_callback(function () {
+ tizen.humanactivitymonitor.stop(humanActivityType);
+ });
+
+ getHumanActivityDataError = t.step_func(function (error) {
+ assert_unreached("getHumanActivityDataError is called" + error.name);
+ });
+
+ getHumanActivityDataSuccess = t.step_func(function (pedometerInfo) {
+ check_readonly(pedometerInfo, "speed", pedometerInfo.speed, "double", pedometerInfo.speed + 10);
+ t.done();
+ });
+
+ tizen.humanactivitymonitor.start(humanActivityType);
+ tizen.humanactivitymonitor.getHumanActivityData(humanActivityType, getHumanActivityDataSuccess, getHumanActivityDataError);
+});
+
+</script>
+</body>
+</html>
\ No newline at end of file
--- /dev/null
+<!DOCTYPE html>
+<!--
+Copyright (c) 2014 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:
+ Wei Zhang <wei625.zhang@samsung.com>
+
+-->
+<html>
+<head>
+<title>HumanActivityPedometerData_stepCountDifferences_attribute</title>
+<meta charset="utf-8"/>
+<script src="support/unitcommon.js"></script>
+<script src="support/humanactivitymonitor_common.js"></script>
+</head>
+<body>
+<div id="log"></div>
+<script>
+//==== TEST: HumanActivityPedometerData_stepCountDifferences_attribute
+//==== LABEL Check if HumanActivityPedometerData::stepCountDifferences exists, has type double, and is readonly
+//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityPedometerData:stepCountDifferences A
+//==== SPEC_URL TBD
+//==== PRIORITY P1
+//==== ONLOAD_DELAY 9
+//==== TEST_CRITERIA AE AT ARO
+
+setup({timeout: 9000});
+
+var t = async_test(document.title, {timeout: 9000}), getHumanActivityDataSuccess, getHumanActivityDataError, humanActivityType = "PEDOMETER";
+
+t.step(function () {
+ add_result_callback(function () {
+ tizen.humanactivitymonitor.stop(humanActivityType);
+ });
+
+ getHumanActivityDataError = t.step_func(function (error) {
+ assert_unreached("getHumanActivityDataError is called" + error.name);
+ });
+
+ getHumanActivityDataSuccess = t.step_func(function (pedometerInfo) {
+ check_readonly(pedometerInfo, "stepCountDifferences", pedometerInfo.stepCountDifferences, "array", [10, 500]);
+ t.done();
+ });
+
+ tizen.humanactivitymonitor.start(humanActivityType);
+ tizen.humanactivitymonitor.getHumanActivityData(humanActivityType, getHumanActivityDataSuccess, getHumanActivityDataError);
+});
+
+</script>
+</body>
+</html>
\ No newline at end of file
--- /dev/null
+<!DOCTYPE html>
+<!--
+Copyright (c) 2014 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:
+ Saleh Enam Shohag <saleh.enam@samsung.com>
+
+-->
+<html>
+<head>
+<title>HumanActivityPedometerData_stepStatus_attribute</title>
+<meta charset="utf-8"/>
+<script src="support/unitcommon.js"></script>
+<script src="support/humanactivitymonitor_common.js"></script>
+</head>
+<body>
+<div id="log"></div>
+<script>
+//==== TEST: HumanActivityPedometerData_stepStatus_attribute
+//==== LABEL Check if HumanActivityPedometerData::stepStatus exists, has type string, and is readonly
+//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityPedometerData:stepStatus A
+//==== SPEC_URL TBD
+//==== PRIORITY P1
+//==== ONLOAD_DELAY 9
+//==== TEST_CRITERIA AE AT ARO
+
+setup({timeout: 9000});
+
+var t = async_test(document.title, {timeout: 9000}), getHumanActivityDataSuccess, getHumanActivityDataError, humanActivityType = "PEDOMETER";
+
+t.step(function () {
+ add_result_callback(function () {
+ tizen.humanactivitymonitor.stop(humanActivityType);
+ });
+
+ getHumanActivityDataError = t.step_func(function (error) {
+ assert_unreached("getHumanActivityDataError is called" + error.name);
+ });
+
+ getHumanActivityDataSuccess = t.step_func(function (pedometerInfo) {
+ check_readonly(pedometerInfo, "stepStatus", pedometerInfo.stepStatus, "string", pedometerInfo.stepStatus + "10");
+ t.done();
+ });
+
+ tizen.humanactivitymonitor.start(humanActivityType);
+ tizen.humanactivitymonitor.getHumanActivityData(humanActivityType, getHumanActivityDataSuccess, getHumanActivityDataError);
+});
+
+</script>
+</body>
+</html>
\ No newline at end of file
--- /dev/null
+<!DOCTYPE html>
+<!--
+Copyright (c) 2014 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:
+ Saleh Enam Shohag <saleh.enam@samsung.com>
+
+-->
+<html>
+<head>
+<title>HumanActivityPedometerData_walkingFrequency_attribute</title>
+<meta charset="utf-8"/>
+<script src="support/unitcommon.js"></script>
+<script src="support/humanactivitymonitor_common.js"></script>
+</head>
+<body>
+<div id="log"></div>
+<script>
+//==== TEST: HumanActivityPedometerData_walkingFrequency_attribute
+//==== LABEL Check if HumanActivityPedometerData::walkingFrequency exists, has type double, and is readonly
+//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityPedometerData:walkingFrequency A
+//==== SPEC_URL TBD
+//==== PRIORITY P1
+//==== ONLOAD_DELAY 9
+//==== TEST_CRITERIA AE AT ARO
+
+setup({timeout: 9000});
+
+var t = async_test(document.title, {timeout: 9000}), getHumanActivityDataSuccess, getHumanActivityDataError, humanActivityType = "PEDOMETER";
+
+t.step(function () {
+ add_result_callback(function () {
+ tizen.humanactivitymonitor.stop(humanActivityType);
+ });
+
+ getHumanActivityDataError = t.step_func(function (error) {
+ assert_unreached("getHumanActivityDataError is called" + error.name);
+ });
+
+ getHumanActivityDataSuccess = t.step_func(function (pedometerInfo) {
+ check_readonly(pedometerInfo, "walkingFrequency", pedometerInfo.walkingFrequency, "double", pedometerInfo.walkingFrequency + 10);
+ t.done();
+ });
+
+ tizen.humanactivitymonitor.start(humanActivityType);
+ tizen.humanactivitymonitor.getHumanActivityData(humanActivityType, getHumanActivityDataSuccess, getHumanActivityDataError);
+});
+
+</script>
+</body>
+</html>
\ No newline at end of file
--- /dev/null
+<!DOCTYPE html>
+<!--
+Copyright (c) 2016 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:
+ Xiaoyan Qian <xy.qian@samsung.com>
+
+-->
+
+<html>
+<head>
+<title>HumanActivityReadRecorderSuccessCallback_notexist</title>
+<script src="support/unitcommon.js"></script>
+</head>
+
+<body>
+<div id="log"></div>
+<script>
+//==== TEST: HumanActivityReadRecorderSuccessCallback_notexist
+//==== LABEL Check if HumanActivityReadRecorderSuccessCallback cannot be called in new expression and as a function or in new expression
+//==== PRIORITY P3
+//==== SPEC Tizen Web API:System:HumanActivityMonitor:HumanActivityReadRecorderSuccessCallback:HumanActivityReadRecorderSuccessCallback U
+//==== SPEC_URL TBD
+//==== TEST_CRITERIA NIO
+
+test(function () {
+ check_no_interface_object("HumanActivityReadRecorderSuccessCallback");
+}, document.title);
+
+</script>
+</body>
+</html>
\ No newline at end of file
--- /dev/null
+<!DOCTYPE html>
+<!--
+Copyright (c) 2016 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:
+ Xiaoyan Qian <xy.qian@samsung.com>
+
+-->
+<html>
+<head>
+<title>HumanActivityReadRecorderSuccessCallback_onsuccess</title>
+<meta charset="utf-8"/>
+<script src="support/unitcommon.js"></script>
+</head>
+<body>
+<div id="log"></div>
+<!--<button type="button" onclick="stopRecorder()">Click</button>-->
+<script>
+//==== TEST: HumanActivityReadRecorderSuccessCallback_onsuccess
+//==== LABEL Check if HumanActivityReadRecorderSuccessCallback onsuccess is called and if its arguments have proper type
+//==== SPEC Tizen Web API:System:HumanActivityMonitor:HumanActivityReadRecorderSuccessCallback:HumanActivityReadRecorderSuccessCallback U
+//==== SPEC_URL TBD
+//==== PRIORITY P1
+//==== EXECUTION_TYPE manual
+//==== STEP Press run button. Waiting for 10 minutes, then press the Click button.
+//==== EXPECT Pass
+//==== TEST_CRITERIA CBT CBOA
+//==== ONLOAD_DELAY 60
+
+setup({timeout: 60000});
+
+var t = async_test(document.title, {timeout: 60000}), successCallback, errorCallback, date = new Date(), endTime = date.getTime(), startTime = date.setDate(date.getDate() - 1),
+ query = {
+ startTime: startTime/1000,
+ endTime: endTime/1000,
+ interval: 10
+ };
+t.step(function () {
+
+ successCallback = t.step_func(function (humanactivitydata) {
+ assert_not_equals(humanactivitydata , null, "Argument should not be null.");
+ assert_type(humanactivitydata[0], "object", "Incorrect type.");
+ assert_type(humanactivitydata[0].heartRate, "number", "heartRate type check");
+ assert_type(humanactivitydata[0].startTime, "number", "startTime type check");
+ assert_type(humanactivitydata[0].endTime, "number", "endTime type check");
+ assert_not_equals(humanactivitydata[0].heartRate, null, "heartRate should not be null");
+ assert_not_equals(humanactivitydata[0].startTime, null, "startTime should not be null");
+ assert_not_equals(humanactivitydata[0].endTime, null, "endTime should not be null");
+ t.done();
+ });
+
+ errorCallback = t.step_func(function (error) {
+ assert_unreached("Invalid error callback invoked:" + error.name + ": " + error.message);
+ });
+
+ tizen.humanactivitymonitor.readRecorderData("HRM", query, successCallback);
+
+});
+
+</script>
+</body>
+</html>
\ No newline at end of file
--- /dev/null
+<!DOCTYPE html>
+<!--
+Copyright (c) 2014 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:
+ Wei Zhang <wei625.zhang@samsung.com>
+
+-->
+<html>
+<head>
+<title>HumanActivityRecognitionData_notexist</title>
+<meta charset="utf-8"/>
+<script src="support/unitcommon.js"></script>
+</head>
+<body>
+<div id="log"></div>
+<script>
+//==== TEST: HumanActivityRecognitionData_notexist
+//==== LABEL Check if interface HumanActivityRecognitionData exists, it should not
+//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityRecognitionData:HumanActivityRecognitionData U
+//==== SPEC_URL TBD
+//==== PRIORITY P3
+//==== TEST_CRITERIA NIO
+
+test(function () {
+ check_no_interface_object("HumanActivityRecognitionData");
+}, document.title);
+
+</script>
+</body>
+</html>
\ No newline at end of file
--- /dev/null
+<!DOCTYPE html>
+<!--
+Copyright (c) 2016 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:
+ Xiaoyan Qian <xy.qian@samsung.com>
+
+-->
+
+<html>
+<head>
+<title>HumanActivityRecorderData_notexist</title>
+<script src="support/unitcommon.js"></script>
+</head>
+
+<body>
+<div id="log"></div>
+<script>
+//==== TEST: HumanActivityRecorderData_notexist
+//==== LABEL Check if HumanActivityRecorderData cannot be called in new expression and as a function or in new expression
+//==== PRIORITY P3
+//==== SPEC Tizen Web API:System:HumanActivityMonitor:HumanActivityRecorderData:HumanActivityRecorderData U
+//==== SPEC_URL TBD
+//==== TEST_CRITERIA NIO
+
+test(function () {
+ check_no_interface_object("HumanActivityRecorderData");
+}, document.title);
+
+</script>
+</body>
+</html>
\ No newline at end of file
--- /dev/null
+<!DOCTYPE html>
+<!--
+Copyright (c) 2016 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:
+ Xiaoyan Qian <xy.qian@samsung.com>
+
+-->
+<html>
+<head>
+<title>HumanActivityRecorderHRMData_endTime_attribute</title>
+<meta charset="utf-8"/>
+<script src="support/unitcommon.js"></script>
+</head>
+<body>
+<div id="log"></div>
+<script>
+//==== TEST: HumanActivityRecorderHRMData_endTime_attribute
+//==== LABEL Check if HumanActivityRecorderHRMData have endTime attribute with proper type, readonly
+//==== SPEC Tizen Web API:System:HumanActivityMonitor:HumanActivityRecorderHRMData:endTime A
+//==== SPEC_URL TBD
+//==== PRIORITY P1
+//==== TEST_CRITERIA AE AT ARO
+
+setup({timeout: 60000});
+
+var t = async_test(document.title, {timeout: 60000}), successCallback, date = new Date(), endTime = date.getTime(), startTime = date.setDate(date.getDate() - 1),
+ query = {
+ startTime: startTime/1000,
+ endTime: endTime/1000,
+ interval: 1440
+ };
+
+t.step(function () {
+
+ successCallback = t.step_func(function (humanactivitydata) {
+ assert_greater_than(humanactivitydata.length, 0, "data is not found");
+ check_readonly(humanactivitydata[0], "endTime", humanactivitydata[0].endTime, "number", humanactivitydata[0].endTime + 100);
+ t.done();
+ });
+
+ tizen.humanactivitymonitor.readRecorderData("HRM", query, successCallback);
+
+});
+
+</script>
+</body>
+</html>
\ No newline at end of file
--- /dev/null
+<!DOCTYPE html>
+<!--
+Copyright (c) 2016 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:
+ Xiaoyan Qian <xy.qian@samsung.com>
+
+-->
+<html>
+<head>
+<title>HumanActivityRecorderHRMData_heartRate_attribute</title>
+<meta charset="utf-8"/>
+<script src="support/unitcommon.js"></script>
+</head>
+<body>
+<div id="log"></div>
+<script>
+//==== TEST: HumanActivityRecorderHRMData_heartRate_attribute
+//==== LABEL Check if HumanActivityRecorderHRMData have heartRate attribute with proper type, readonly
+//==== SPEC Tizen Web API:System:HumanActivityMonitor:HumanActivityRecorderHRMData:heartRate A
+//==== SPEC_URL TBD
+//==== PRIORITY P1
+//==== TEST_CRITERIA AE AT ARO
+
+setup({timeout: 60000});
+
+var t = async_test(document.title, {timeout: 60000}), successCallback, date = new Date(), endTime = date.getTime(), startTime = date.setDate(date.getDate() - 1),
+ query = {
+ startTime: startTime/1000,
+ endTime: endTime/1000,
+ interval: 1440
+ };
+
+t.step(function () {
+
+ successCallback = t.step_func(function (humanactivitydata) {
+ assert_greater_than(humanactivitydata.length, 0, "data is not found");
+ check_readonly(humanactivitydata[0], "heartRate", humanactivitydata[0].heartRate, "number", humanactivitydata[0].heartRate + 100);
+ t.done();
+ });
+
+ tizen.humanactivitymonitor.readRecorderData("HRM", query, successCallback);
+
+});
+
+</script>
+</body>
+</html>
\ No newline at end of file
--- /dev/null
+<!DOCTYPE html>
+<!--
+Copyright (c) 2016 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:
+ Xiaoyan Qian <xy.qian@samsung.com>
+
+-->
+
+<html>
+<head>
+<title>HumanActivityRecorderHRMData_notexist</title>
+<script src="support/unitcommon.js"></script>
+</head>
+
+<body>
+<div id="log"></div>
+<script>
+//==== TEST: HumanActivityRecorderHRMData_notexist
+//==== LABEL Check if HumanActivityRecorderHRMData cannot be called in new expression and as a function or in new expression
+//==== PRIORITY P3
+//==== SPEC Tizen Web API:System:HumanActivityMonitor:HumanActivityRecorderHRMData:HumanActivityRecorderHRMData U
+//==== SPEC_URL TBD
+//==== TEST_CRITERIA NIO
+
+test(function () {
+ check_no_interface_object("HumanActivityRecorderHRMData");
+}, document.title);
+
+</script>
+</body>
+</html>
\ No newline at end of file
--- /dev/null
+<!DOCTYPE html>
+<!--
+Copyright (c) 2016 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:
+ Xiaoyan Qian <xy.qian@samsung.com>
+
+-->
+<html>
+<head>
+<title>HumanActivityRecorderHRMData_startTime_attribute</title>
+<meta charset="utf-8"/>
+<script src="support/unitcommon.js"></script>
+</head>
+<body>
+<div id="log"></div>
+<script>
+//==== TEST: HumanActivityRecorderHRMData_startTime_attribute
+//==== LABEL Check if HumanActivityRecorderHRMData have startTime attribute with proper type, readonly
+//==== SPEC Tizen Web API:System:HumanActivityMonitor:HumanActivityRecorderHRMData:startTime A
+//==== SPEC_URL TBD
+//==== PRIORITY P1
+//==== TEST_CRITERIA AE AT ARO
+
+setup({timeout: 60000});
+
+var t = async_test(document.title, {timeout: 60000}), successCallback, date = new Date(), endTime = date.getTime(), startTime = date.setDate(date.getDate() - 1),
+ query = {
+ startTime: startTime/1000,
+ endTime: endTime/1000,
+ interval: 1440
+ };
+
+t.step(function () {
+
+ successCallback = t.step_func(function (humanactivitydata) {
+ assert_greater_than(humanactivitydata.length, 0, "data is not found");
+ check_readonly(humanactivitydata[0], "startTime", humanactivitydata[0].startTime, "number", humanactivitydata[0].startTime + 100);
+ t.done();
+ });
+
+ tizen.humanactivitymonitor.readRecorderData("HRM", query, successCallback);
+
+});
+
+</script>
+</body>
+</html>
\ No newline at end of file
--- /dev/null
+<!DOCTYPE html>
+<!--
+Copyright (c) 2016 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:
+ Xiaoyan Qian <xy.qian@samsung.com>
+
+-->
+<html>
+<head>
+<title>HumanActivityRecorderPedometerData_calorie_attribute</title>
+<meta charset="utf-8"/>
+<script src="support/unitcommon.js"></script>
+</head>
+<body>
+<div id="log"></div>
+<script>
+//==== TEST: HumanActivityRecorderPedometerData_calorie_attribute
+//==== LABEL Check if HumanActivityRecorderPedometerData have calorie attribute with proper type, readonly
+//==== SPEC Tizen Web API:System:HumanActivityMonitor:HumanActivityRecorderPedometerData:calorie A
+//==== SPEC_URL TBD
+//==== PRIORITY P1
+//==== EXECUTION_TYPE manual
+//==== STEP Press run button. Pretend walking with the device.
+//==== EXPECT Pass
+//==== TEST_CRITERIA AE AT ARO
+//==== ONLOAD_DELAY 60
+
+setup({timeout: 90000});
+
+var t = async_test(document.title, {timeout: 90000}), retValue = null, successCallback, date = new Date(), startTime = date.getTime(), endTime = date.setDate(date.getDate() + 1),
+ query = {
+ startTime: startTime/1000,
+ endTime: endTime/1000,
+ interval: 1440
+ };
+
+t.step(function () {
+
+ add_result_callback(function () {
+ tizen.humanactivitymonitor.stopRecorder("PEDOMETER");
+ });
+
+ successCallback = t.step_func(function (humanactivitydata) {
+ assert_greater_than(humanactivitydata.length, 0, "data is not found");
+ check_readonly(humanactivitydata[0], "calorie", humanactivitydata[0].calorie, "number", humanactivitydata[0].calorie + 100);
+ t.done();
+ });
+
+ tizen.humanactivitymonitor.startRecorder("PEDOMETER");
+ setTimeout(function(){tizen.humanactivitymonitor.stopRecorder("PEDOMETER");
+ retValue = tizen.humanactivitymonitor.readRecorderData("PEDOMETER", query, successCallback);}, 60000);
+
+});
+
+</script>
+</body>
+</html>
\ No newline at end of file
--- /dev/null
+<!DOCTYPE html>
+<!--
+Copyright (c) 2016 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:
+ Xiaoyan Qian <xy.qian@samsung.com>
+
+-->
+<html>
+<head>
+<title>HumanActivityRecorderPedometerData_distance_attribute</title>
+<meta charset="utf-8"/>
+<script src="support/unitcommon.js"></script>
+</head>
+<body>
+<div id="log"></div>
+<script>
+//==== TEST: HumanActivityRecorderPedometerData_distance_attribute
+//==== LABEL Check if HumanActivityRecorderPedometerData have distance attribute with proper type, readonly
+//==== SPEC Tizen Web API:System:HumanActivityMonitor:HumanActivityRecorderPedometerData:distance A
+//==== SPEC_URL TBD
+//==== PRIORITY P1
+//==== EXECUTION_TYPE manual
+//==== STEP Press run button. Pretend walking with the device.
+//==== EXPECT Pass
+//==== TEST_CRITERIA AE AT ARO
+//==== ONLOAD_DELAY 60
+
+setup({timeout: 90000});
+
+var t = async_test(document.title, {timeout: 90000}), retValue = null, successCallback, date = new Date(), startTime = date.getTime(), endTime = date.setDate(date.getDate() + 1),
+ query = {
+ startTime: startTime/1000,
+ endTime: endTime/1000,
+ interval: 1440
+ };
+
+t.step(function () {
+
+ add_result_callback(function () {
+ tizen.humanactivitymonitor.stopRecorder("PEDOMETER");
+ });
+
+ successCallback = t.step_func(function (humanactivitydata) {
+ assert_greater_than(humanactivitydata.length, 0, "data is not found");
+ check_readonly(humanactivitydata[0], "distance", humanactivitydata[0].distance, "number", humanactivitydata[0].distance + 100);
+ t.done();
+ });
+
+ tizen.humanactivitymonitor.startRecorder("PEDOMETER");
+ setTimeout(function(){tizen.humanactivitymonitor.stopRecorder("PEDOMETER");
+ retValue = tizen.humanactivitymonitor.readRecorderData("PEDOMETER", query, successCallback);}, 60000);
+
+});
+
+</script>
+</body>
+</html>
\ No newline at end of file
--- /dev/null
+<!DOCTYPE html>
+<!--
+Copyright (c) 2016 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:
+ Xiaoyan Qian <xy.qian@samsung.com>
+
+-->
+<html>
+<head>
+<title>HumanActivityRecorderPedometerData_endTime_attribute</title>
+<meta charset="utf-8"/>
+<script src="support/unitcommon.js"></script>
+</head>
+<body>
+<div id="log"></div>
+<script>
+//==== TEST: HumanActivityRecorderPedometerData_endTime_attribute
+//==== LABEL Check if HumanActivityRecorderPedometerData have endTime attribute with proper type, readonly
+//==== SPEC Tizen Web API:System:HumanActivityMonitor:HumanActivityRecorderPedometerData:endTime A
+//==== SPEC_URL TBD
+//==== PRIORITY P1
+//==== EXECUTION_TYPE manual
+//==== STEP Press run button. Pretend walking with the device.
+//==== EXPECT Pass
+//==== TEST_CRITERIA AE AT ARO
+//==== ONLOAD_DELAY 60
+
+setup({timeout: 120000});
+
+var t = async_test(document.title, {timeout: 120000}), successCallback, date = new Date(), startTime = date.getTime(), endTime = date.setDate(date.getDate() + 1),
+ query = {
+ startTime: startTime/1000,
+ endTime: endTime/1000,
+ interval: 1440
+ };
+
+t.step(function () {
+
+ add_result_callback(function () {
+ tizen.humanactivitymonitor.stopRecorder("PEDOMETER");
+ });
+
+ successCallback = t.step_func(function (humanactivitydata) {
+ assert_greater_than(humanactivitydata.length, 0, "data is not found");
+ check_readonly(humanactivitydata[0], "endTime", humanactivitydata[0].endTime, "number", humanactivitydata[0].endTime + 100);
+ t.done();
+ });
+
+ tizen.humanactivitymonitor.startRecorder("PEDOMETER");
+ setTimeout(function(){tizen.humanactivitymonitor.stopRecorder("PEDOMETER");
+ retValue = tizen.humanactivitymonitor.readRecorderData("PEDOMETER", query, successCallback);}, 60000);
+
+});
+
+</script>
+</body>
+</html>
\ No newline at end of file
--- /dev/null
+<!DOCTYPE html>
+<!--
+Copyright (c) 2016 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:
+ Xiaoyan Qian <xy.qian@samsung.com>
+
+-->
+
+<html>
+<head>
+<title>HumanActivityRecorderPedometerData_notexist</title>
+<script src="support/unitcommon.js"></script>
+</head>
+
+<body>
+<div id="log"></div>
+<script>
+//==== TEST: HumanActivityRecorderPedometerData_notexist
+//==== LABEL Check if HumanActivityRecorderPedometerData cannot be called in new expression and as a function or in new expression
+//==== PRIORITY P3
+//==== SPEC Tizen Web API:System:HumanActivityMonitor:HumanActivityRecorderPedometerData:HumanActivityRecorderPedometerData U
+//==== SPEC_URL TBD
+//==== TEST_CRITERIA NIO
+
+test(function () {
+ check_no_interface_object("HumanActivityRecorderPedometerData");
+}, document.title);
+
+</script>
+</body>
+</html>
\ No newline at end of file
--- /dev/null
+<!DOCTYPE html>
+<!--
+Copyright (c) 2016 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:
+ Xiaoyan Qian <xy.qian@samsung.com>
+
+-->
+<html>
+<head>
+<title>HumanActivityRecorderPedometerData_runStepCount_attribute</title>
+<meta charset="utf-8"/>
+<script src="support/unitcommon.js"></script>
+</head>
+<body>
+<div id="log"></div>
+<script>
+//==== TEST: HumanActivityRecorderPedometerData_runStepCount_attribute
+//==== LABEL Check if HumanActivityRecorderPedometerData have runStepCount attribute with proper type, readonly
+//==== SPEC Tizen Web API:System:HumanActivityMonitor:HumanActivityRecorderPedometerData:runStepCount A
+//==== SPEC_URL TBD
+//==== PRIORITY P1
+//==== EXECUTION_TYPE manual
+//==== STEP Press run button. Pretend walking with the device.
+//==== EXPECT Pass
+//==== TEST_CRITERIA AE AT ARO
+//==== ONLOAD_DELAY 60
+
+setup({timeout: 120000});
+
+var t = async_test(document.title, {timeout: 120000}), successCallback, date = new Date(), startTime = date.getTime(), endTime = date.setDate(date.getDate() + 1),
+ query = {
+ startTime: startTime/1000,
+ endTime: endTime/1000,
+ interval: 1440
+ };
+
+t.step(function () {
+
+ add_result_callback(function () {
+ tizen.humanactivitymonitor.stopRecorder("PEDOMETER");
+ });
+
+ successCallback = t.step_func(function (humanactivitydata) {
+ assert_greater_than(humanactivitydata.length, 0, "data is not found");
+ check_readonly(humanactivitydata[0], "runStepCount", humanactivitydata[0].runStepCount, "number", humanactivitydata[0].runStepCount + 100);
+ t.done();
+ });
+
+ tizen.humanactivitymonitor.startRecorder("PEDOMETER");
+ setTimeout(function(){tizen.humanactivitymonitor.stopRecorder("PEDOMETER");
+ retValue = tizen.humanactivitymonitor.readRecorderData("PEDOMETER", query, successCallback);}, 60000);
+
+});
+
+</script>
+</body>
+</html>
\ No newline at end of file
--- /dev/null
+<!DOCTYPE html>
+<!--
+Copyright (c) 2016 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:
+ Xiaoyan Qian <xy.qian@samsung.com>
+
+-->
+<html>
+<head>
+<title>HumanActivityRecorderPedometerData_startTime_attribute</title>
+<meta charset="utf-8"/>
+<script src="support/unitcommon.js"></script>
+</head>
+<body>
+<div id="log"></div>
+<script>
+//==== TEST: HumanActivityRecorderPedometerData_startTime_attribute
+//==== LABEL Check if HumanActivityRecorderPedometerData have startTime attribute with proper type, readonly
+//==== SPEC Tizen Web API:System:HumanActivityMonitor:HumanActivityRecorderPedometerData:startTime A
+//==== SPEC_URL TBD
+//==== PRIORITY P1
+//==== EXECUTION_TYPE manual
+//==== STEP Press run button. Pretend walking with the device.
+//==== EXPECT Pass
+//==== TEST_CRITERIA AE AT ARO
+//==== ONLOAD_DELAY 60
+
+setup({timeout: 90000});
+
+var t = async_test(document.title, {timeout: 90000}), retValue = null, successCallback, date = new Date(), startTime = date.getTime(), endTime = date.setDate(date.getDate() + 1),
+ query = {
+ startTime: startTime/1000,
+ endTime: endTime/1000,
+ interval: 1440
+ };
+
+t.step(function () {
+
+ add_result_callback(function () {
+ tizen.humanactivitymonitor.stopRecorder("PEDOMETER");
+ });
+
+ successCallback = t.step_func(function (humanactivitydata) {
+ assert_greater_than(humanactivitydata.length, 0, "data is not found");
+ check_readonly(humanactivitydata[0], "startTime", humanactivitydata[0].startTime, "number", humanactivitydata[0].startTime + 100);
+ t.done();
+ });
+
+ tizen.humanactivitymonitor.startRecorder("PEDOMETER");
+ setTimeout(function(){tizen.humanactivitymonitor.stopRecorder("PEDOMETER");
+ retValue = tizen.humanactivitymonitor.readRecorderData("PEDOMETER", query, successCallback);}, 60000);
+
+});
+
+</script>
+</body>
+</html>
\ No newline at end of file
--- /dev/null
+<!DOCTYPE html>
+<!--
+Copyright (c) 2016 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:
+ Xiaoyan Qian <xy.qian@samsung.com>
+
+-->
+<html>
+<head>
+<title>HumanActivityRecorderPedometerData_totalStepCount_attribute</title>
+<meta charset="utf-8"/>
+<script src="support/unitcommon.js"></script>
+</head>
+<body>
+<div id="log"></div>
+<script>
+//==== TEST: HumanActivityRecorderPedometerData_totalStepCount_attribute
+//==== LABEL Check if HumanActivityRecorderPedometerData have totalStepCount attribute with proper type, readonly
+//==== SPEC Tizen Web API:System:HumanActivityMonitor:HumanActivityRecorderPedometerData:totalStepCount A
+//==== SPEC_URL TBD
+//==== PRIORITY P1
+//==== EXECUTION_TYPE manual
+//==== STEP Press run button. Pretend walking with the device.
+//==== EXPECT Pass
+//==== TEST_CRITERIA AE AT ARO
+//==== ONLOAD_DELAY 60
+
+setup({timeout: 90000});
+
+var t = async_test(document.title, {timeout: 90000}), retValue = null, successCallback, date = new Date(), startTime = date.getTime(), endTime = date.setDate(date.getDate() + 1),
+ query = {
+ startTime: startTime/1000,
+ endTime: endTime/1000,
+ interval: 1440
+ };
+
+t.step(function () {
+
+ add_result_callback(function () {
+ tizen.humanactivitymonitor.stopRecorder("PEDOMETER");
+ });
+
+ successCallback = t.step_func(function (humanactivitydata) {
+ assert_greater_than(humanactivitydata.length, 0, "data is not found");
+ check_readonly(humanactivitydata[0], "totalStepCount", humanactivitydata[0].totalStepCount, "number", humanactivitydata[0].totalStepCount + 100);
+ t.done();
+ });
+
+ tizen.humanactivitymonitor.startRecorder("PEDOMETER");
+ setTimeout(function(){tizen.humanactivitymonitor.stopRecorder("PEDOMETER");
+ retValue = tizen.humanactivitymonitor.readRecorderData("PEDOMETER", query, successCallback);}, 60000);
+
+});
+
+</script>
+</body>
+</html>
\ No newline at end of file
--- /dev/null
+<!DOCTYPE html>
+<!--
+Copyright (c) 2016 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:
+ Xiaoyan Qian <xy.qian@samsung.com>
+
+-->
+<html>
+<head>
+<title>HumanActivityRecorderPedometerData_walkStepCount_attribute</title>
+<meta charset="utf-8"/>
+<script src="support/unitcommon.js"></script>
+</head>
+<body>
+<div id="log"></div>
+<script>
+//==== TEST: HumanActivityRecorderPedometerData_walkStepCount_attribute
+//==== LABEL Check if HumanActivityRecorderPedometerData have walkStepCount attribute with proper type, readonly
+//==== SPEC Tizen Web API:System:HumanActivityMonitor:HumanActivityRecorderPedometerData:walkStepCount A
+//==== SPEC_URL TBD
+//==== PRIORITY P1
+//==== EXECUTION_TYPE manual
+//==== STEP Press run button. Pretend walking with the device.
+//==== EXPECT Pass
+//==== TEST_CRITERIA AE AT ARO
+//==== ONLOAD_DELAY 60
+
+setup({timeout: 90000});
+
+var t = async_test(document.title, {timeout: 90000}), retValue = null, successCallback, date = new Date(), startTime = date.getTime(), endTime = date.setDate(date.getDate() + 1),
+ query = {
+ startTime: startTime/1000,
+ endTime: endTime/1000,
+ interval: 1440
+ };
+
+t.step(function () {
+
+ add_result_callback(function () {
+ tizen.humanactivitymonitor.stopRecorder("PEDOMETER");
+ });
+
+ successCallback = t.step_func(function (humanactivitydata) {
+ assert_greater_than(humanactivitydata.length, 0, "data is not found");
+ check_readonly(humanactivitydata[0], "walkStepCount", humanactivitydata[0].walkStepCount, "number", humanactivitydata[0].walkStepCount + 100);
+ t.done();
+ });
+
+ tizen.humanactivitymonitor.startRecorder("PEDOMETER");
+ setTimeout(function(){tizen.humanactivitymonitor.stopRecorder("PEDOMETER");
+ retValue = tizen.humanactivitymonitor.readRecorderData("PEDOMETER", query, successCallback);}, 60000);
+
+});
+
+</script>
+</body>
+</html>
\ No newline at end of file
--- /dev/null
+<!DOCTYPE html>
+<!--
+Copyright (c) 2016 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:
+ Xiaoyan Qian <xy.qian@samsung.com>
+
+-->
+<html>
+<head>
+<title>HumanActivityRecorderPressureData_average_attribute</title>
+<meta charset="utf-8"/>
+<script src="support/unitcommon.js"></script>
+</head>
+<body>
+<div id="log"></div>
+<script>
+//==== TEST: HumanActivityRecorderPressureData_average_attribute
+//==== LABEL Check if HumanActivityRecorderPressureData have average attribute with proper type, readonly
+//==== SPEC Tizen Web API:System:HumanActivityMonitor:HumanActivityRecorderPressureData:average A
+//==== SPEC_URL TBD
+//==== PRIORITY P1
+//==== TEST_CRITERIA AE AT ARO
+
+setup({timeout: 70000});
+
+var t = async_test(document.title, {timeout: 70000}), successCallback, date = new Date(), endTime = date.getTime(), startTime = date.setDate(date.getDate() - 1),
+ query = {
+ startTime: startTime/1000,
+ endTime: endTime/1000,
+ interval: 1440
+ };
+
+t.step(function () {
+
+ successCallback = t.step_func(function (humanactivitydata) {
+ assert_greater_than(humanactivitydata.length, 0, "data is not found");
+ check_readonly(humanactivitydata[0], "average", humanactivitydata[0].average, "number", humanactivitydata[0].average + 1);
+ t.done();
+ });
+
+ tizen.humanactivitymonitor.readRecorderData("PRESSURE", query, successCallback);
+
+});
+
+</script>
+</body>
+</html>
\ No newline at end of file
--- /dev/null
+<!DOCTYPE html>
+<!--
+Copyright (c) 2016 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:
+ Xiaoyan Qian <xy.qian@samsung.com>
+
+-->
+<html>
+<head>
+<title>HumanActivityRecorderPressureData_endTime_attribute</title>
+<meta charset="utf-8"/>
+<script src="support/unitcommon.js"></script>
+</head>
+<body>
+<div id="log"></div>
+<script>
+//==== TEST: HumanActivityRecorderPressureData_endTime_attribute
+//==== LABEL Check if HumanActivityRecorderPressureData have endTime attribute with proper type, readonly
+//==== SPEC Tizen Web API:System:HumanActivityMonitor:HumanActivityRecorderPressureData:endTime A
+//==== SPEC_URL TBD
+//==== PRIORITY P1
+//==== TEST_CRITERIA AE AT ARO
+
+setup({timeout: 70000});
+
+var t = async_test(document.title, {timeout: 70000}), successCallback, date = new Date(), endTime = date.getTime(), startTime = date.setDate(date.getDate() - 1),
+ query = {
+ startTime: startTime/1000,
+ endTime: endTime/1000,
+ interval: 1440
+ };
+
+t.step(function () {
+
+ successCallback = t.step_func(function (humanactivitydata) {
+ assert_greater_than(humanactivitydata.length, 0, "data is not found");
+ check_readonly(humanactivitydata[0], "endTime", humanactivitydata[0].endTime, "number", humanactivitydata[0].endTime + 100);
+ t.done();
+ });
+
+ tizen.humanactivitymonitor.readRecorderData("PRESSURE", query, successCallback);
+
+});
+
+</script>
+</body>
+</html>
\ No newline at end of file
--- /dev/null
+<!DOCTYPE html>
+<!--
+Copyright (c) 2016 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:
+ Xiaoyan Qian <xy.qian@samsung.com>
+
+-->
+<html>
+<head>
+<title>HumanActivityRecorderPressureData_max_attribute</title>
+<meta charset="utf-8"/>
+<script src="support/unitcommon.js"></script>
+</head>
+<body>
+<div id="log"></div>
+<script>
+//==== TEST: HumanActivityRecorderPressureData_max_attribute
+//==== LABEL Check if HumanActivityRecorderPressureData have max attribute with proper type, readonly
+//==== SPEC Tizen Web API:System:HumanActivityMonitor:HumanActivityRecorderPressureData:max A
+//==== SPEC_URL TBD
+//==== PRIORITY P1
+//==== TEST_CRITERIA AE AT ARO
+
+setup({timeout: 70000});
+
+var t = async_test(document.title, {timeout: 70000}), successCallback, date = new Date(), endTime = date.getTime(), startTime = date.setDate(date.getDate() - 1),
+ query = {
+ startTime: startTime/1000,
+ endTime: endTime/1000,
+ interval: 1440
+ };
+
+t.step(function () {
+
+ successCallback = t.step_func(function (humanactivitydata) {
+ assert_greater_than(humanactivitydata.length, 0, "data is not found");
+ check_readonly(humanactivitydata[0], "max", humanactivitydata[0].max, "number", humanactivitydata[0].max + 1);
+ t.done();
+ });
+
+ tizen.humanactivitymonitor.readRecorderData("PRESSURE", query, successCallback);
+
+});
+
+</script>
+</body>
+</html>
\ No newline at end of file
--- /dev/null
+<!DOCTYPE html>
+<!--
+Copyright (c) 2016 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:
+ Xiaoyan Qian <xy.qian@samsung.com>
+
+-->
+<html>
+<head>
+<title>HumanActivityRecorderPressureData_min_attribute</title>
+<meta charset="utf-8"/>
+<script src="support/unitcommon.js"></script>
+</head>
+<body>
+<div id="log"></div>
+<script>
+//==== TEST: HumanActivityRecorderPressureData_min_attribute
+//==== LABEL Check if HumanActivityRecorderPressureData have min attribute with proper type, readonly
+//==== SPEC Tizen Web API:System:HumanActivityMonitor:HumanActivityRecorderPressureData:min A
+//==== SPEC_URL TBD
+//==== PRIORITY P1
+//==== TEST_CRITERIA AE AT ARO
+
+setup({timeout: 70000});
+
+var t = async_test(document.title, {timeout: 70000}), successCallback, date = new Date(), endTime = date.getTime(), startTime = date.setDate(date.getDate() - 1),
+ query = {
+ startTime: startTime/1000,
+ endTime: endTime/1000,
+ interval: 1440
+ };
+
+t.step(function () {
+
+ successCallback = t.step_func(function (humanactivitydata) {
+ assert_greater_than(humanactivitydata.length, 0, "data is not found");
+ check_readonly(humanactivitydata[0], "min", humanactivitydata[0].min, "number", humanactivitydata[0].min + 1);
+ t.done();
+ });
+
+ tizen.humanactivitymonitor.readRecorderData("PRESSURE", query, successCallback);
+
+});
+
+</script>
+</body>
+</html>
\ No newline at end of file
--- /dev/null
+<!DOCTYPE html>
+<!--
+Copyright (c) 2016 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:
+ Xiaoyan Qian <xy.qian@samsung.com>
+
+-->
+
+<html>
+<head>
+<title>HumanActivityRecorderPressureData_notexist</title>
+<script src="support/unitcommon.js"></script>
+</head>
+
+<body>
+<div id="log"></div>
+<script>
+//==== TEST: HumanActivityRecorderPressureData_notexist
+//==== LABEL Check if HumanActivityRecorderPressureData cannot be called in new expression and as a function or in new expression
+//==== PRIORITY P3
+//==== SPEC Tizen Web API:System:HumanActivityMonitor:HumanActivityRecorderPressureData:HumanActivityRecorderPressureData U
+//==== SPEC_URL TBD
+//==== TEST_CRITERIA NIO
+
+test(function () {
+ check_no_interface_object("HumanActivityRecorderPressureData");
+}, document.title);
+
+</script>
+</body>
+</html>
\ No newline at end of file
--- /dev/null
+<!DOCTYPE html>
+<!--
+Copyright (c) 2016 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:
+ Xiaoyan Qian <xy.qian@samsung.com>
+
+-->
+<html>
+<head>
+<title>HumanActivityRecorderPressureData_startTime_attribute</title>
+<meta charset="utf-8"/>
+<script src="support/unitcommon.js"></script>
+</head>
+<body>
+<div id="log"></div>
+<script>
+//==== TEST: HumanActivityRecorderPressureData_startTime_attribute
+//==== LABEL Check if HumanActivityRecorderPressureData have startTime attribute with proper type, readonly
+//==== SPEC Tizen Web API:System:HumanActivityMonitor:HumanActivityRecorderPressureData:startTime A
+//==== SPEC_URL TBD
+//==== PRIORITY P1
+//==== TEST_CRITERIA AE AT ARO
+
+setup({timeout: 70000});
+
+var t = async_test(document.title, {timeout: 70000}), successCallback, date = new Date(), endTime = date.getTime(), startTime = date.setDate(date.getDate() - 1),
+ query = {
+ startTime: startTime/1000,
+ endTime: endTime/1000,
+ interval: 1440
+ };
+
+t.step(function () {
+
+ successCallback = t.step_func(function (humanactivitydata) {
+ assert_greater_than(humanactivitydata.length, 0, "data is not found");
+ check_readonly(humanactivitydata[0], "startTime", humanactivitydata[0].startTime, "number", humanactivitydata[0].startTime + 100);
+ t.done();
+ });
+
+ tizen.humanactivitymonitor.readRecorderData("PRESSURE", query, successCallback);
+
+});
+
+</script>
+</body>
+</html>
\ No newline at end of file
--- /dev/null
+<!DOCTYPE html>
+<!--
+Copyright (c) 2016 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:
+ Xiaoyan Qian <xy.qian@samsung.com>
+
+-->
+<html>
+<head>
+<title>HumanActivityRecorderSleepMonitorData_endTime_attribute</title>
+<meta charset="utf-8"/>
+<script src="support/unitcommon.js"></script>
+</head>
+<body>
+<div id="log"></div>
+<script>
+//==== TEST: HumanActivityRecorderSleepMonitorData_endTime_attribute
+//==== LABEL Check if HumanActivityRecorderSleepMonitorData have endTime attribute with proper type, readonly
+//==== SPEC Tizen Web API:System:HumanActivityMonitor:HumanActivityRecorderSleepMonitorData:endTime A
+//==== SPEC_URL TBD
+//==== PRIORITY P1
+//==== TEST_CRITERIA AE AT ARO
+
+setup({timeout: 30000});
+
+var t = async_test(document.title, {timeout: 30000}), successCallback, date = new Date(), endTime = date.getTime(), startTime = date.setDate(date.getDate() - 1),
+ query = {
+ startTime: startTime/1000,
+ endTime: endTime/1000,
+ interval: 1440
+ };
+
+t.step(function () {
+
+ add_result_callback(function () {
+ tizen.humanactivitymonitor.stopRecorder("SLEEP_MONITOR");
+ });
+
+ successCallback = t.step_func(function (humanactivitydata) {
+ assert_greater_than(humanactivitydata.length, 0, "data is not found");
+ check_readonly(humanactivitydata[0], "endTime", humanactivitydata[0].endTime, "number", humanactivitydata[0].endTime + 100);
+ t.done();
+ });
+
+ tizen.humanactivitymonitor.startRecorder("SLEEP_MONITOR");
+ setTimeout(function(){tizen.humanactivitymonitor.stopRecorder("SLEEP_MONITOR");}, 100);
+ tizen.humanactivitymonitor.readRecorderData("SLEEP_MONITOR", query, successCallback);
+
+});
+
+</script>
+</body>
+</html>
\ No newline at end of file
--- /dev/null
+<!DOCTYPE html>
+<!--
+Copyright (c) 2016 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:
+ Xiaoyan Qian <xy.qian@samsung.com>
+
+-->
+
+<html>
+<head>
+<title>HumanActivityRecorderSleepMonitorData_notexist</title>
+<script src="support/unitcommon.js"></script>
+</head>
+
+<body>
+<div id="log"></div>
+<script>
+//==== TEST: HumanActivityRecorderSleepMonitorData_notexist
+//==== LABEL Check if HumanActivityRecorderSleepMonitorData cannot be called in new expression and as a function or in new expression
+//==== PRIORITY P3
+//==== SPEC Tizen Web API:System:HumanActivityMonitor:HumanActivityRecorderSleepMonitorData:HumanActivityRecorderSleepMonitorData U
+//==== SPEC_URL TBD
+//==== TEST_CRITERIA NIO
+
+test(function () {
+ check_no_interface_object("HumanActivityRecorderSleepMonitorData");
+}, document.title);
+
+</script>
+</body>
+</html>
\ No newline at end of file
--- /dev/null
+<!DOCTYPE html>
+<!--
+Copyright (c) 2016 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:
+ Xiaoyan Qian <xy.qian@samsung.com>
+
+-->
+<html>
+<head>
+<title>HumanActivityRecorderSleepMonitorData_startTime_attribute</title>
+<meta charset="utf-8"/>
+<script src="support/unitcommon.js"></script>
+</head>
+<body>
+<div id="log"></div>
+<script>
+//==== TEST: HumanActivityRecorderSleepMonitorData_startTime_attribute
+//==== LABEL Check if HumanActivityRecorderSleepMonitorData have startTime attribute with proper type, readonly
+//==== SPEC Tizen Web API:System:HumanActivityMonitor:HumanActivityRecorderSleepMonitorData:startTime A
+//==== SPEC_URL TBD
+//==== PRIORITY P1
+//==== TEST_CRITERIA AE AT ARO
+
+setup({timeout: 30000});
+
+var t = async_test(document.title, {timeout: 30000}), successCallback, date = new Date(), endTime = date.getTime(), startTime = date.setDate(date.getDate() - 1),
+ query = {
+ startTime: startTime/1000,
+ endTime: endTime/1000,
+ interval: 1440
+ };
+
+t.step(function () {
+
+ add_result_callback(function () {
+ tizen.humanactivitymonitor.stopRecorder("SLEEP_MONITOR");
+ });
+
+ successCallback = t.step_func(function (humanactivitydata) {
+ assert_greater_than(humanactivitydata.length, 0, "data is not found");
+ check_readonly(humanactivitydata[0], "startTime", humanactivitydata[0].startTime, "number", humanactivitydata[0].startTime + 100);
+ t.done();
+ });
+
+ tizen.humanactivitymonitor.startRecorder("SLEEP_MONITOR");
+ setTimeout(function(){tizen.humanactivitymonitor.stopRecorder("SLEEP_MONITOR");}, 100);
+ tizen.humanactivitymonitor.readRecorderData("SLEEP_MONITOR", query, successCallback);
+
+});
+
+</script>
+</body>
+</html>
\ No newline at end of file
--- /dev/null
+<!DOCTYPE html>
+<!--
+Copyright (c) 2016 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:
+ Xiaoyan Qian <xy.qian@samsung.com>
+
+-->
+<html>
+<head>
+<title>HumanActivityRecorderSleepMonitorData_status_attribute</title>
+<meta charset="utf-8"/>
+<script src="support/unitcommon.js"></script>
+</head>
+<body>
+<div id="log"></div>
+<script>
+//==== TEST: HumanActivityRecorderSleepMonitorData_status_attribute
+//==== LABEL Check if HumanActivityRecorderSleepMonitorData have status attribute with proper type, readonly
+//==== SPEC Tizen Web API:System:HumanActivityMonitor:HumanActivityRecorderSleepMonitorData:status A
+//==== SPEC_URL TBD
+//==== PRIORITY P1
+//==== TEST_CRITERIA AE AT ARO AVL
+
+setup({timeout: 30000});
+
+var t = async_test(document.title, {timeout: 30000}), successCallback, date = new Date(), endTime = date.getTime(), startTime = date.setDate(date.getDate() - 1),
+ query = {
+ startTime: startTime/1000,
+ endTime: endTime/1000,
+ interval: 1440
+ };
+
+t.step(function () {
+
+ add_result_callback(function () {
+ tizen.humanactivitymonitor.stopRecorder("SLEEP_MONITOR");
+ });
+
+ successCallback = t.step_func(function (humanactivitydata) {
+ assert_greater_than(humanactivitydata.length, 0, "data is not found");
+ check_readonly(humanactivitydata[0], "status", humanactivitydata[0].status, "string", null);
+ assert_in_array(humanactivitydata[0].status, ["ASLEEP", "AWAKE", "UNKNOWN"], "Incorrect value of status");
+ t.done();
+ });
+
+ tizen.humanactivitymonitor.startRecorder("SLEEP_MONITOR");
+ setTimeout(function(){tizen.humanactivitymonitor.stopRecorder("SLEEP_MONITOR");}, 100);
+ tizen.humanactivitymonitor.readRecorderData("SLEEP_MONITOR", query, successCallback);
+
+});
+
+</script>
+</body>
+</html>
\ No newline at end of file
--- /dev/null
+<!DOCTYPE html>
+<!--
+Copyright (c) 2014 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:
+ Wei Zhang <wei625.zhang@samsung.com>
+
+-->
+<html>
+<head>
+<title>HumanActivitySleepMonitorData_notexist</title>
+<meta charset="utf-8"/>
+<script src="support/unitcommon.js"></script>
+</head>
+<body>
+<div id="log"></div>
+<script>
+//==== TEST: HumanActivitySleepMonitorData_notexist
+//==== LABEL Check if interface HumanActivitySleepMonitorData exists, it should not
+//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivitySleepMonitorData:HumanActivitySleepMonitorData U
+//==== SPEC_URL TBD
+//==== PRIORITY P3
+//==== TEST_CRITERIA NIO
+
+test(function () {
+ check_no_interface_object("HumanActivitySleepMonitorData");
+}, document.title);
+
+</script>
+</body>
+</html>
\ No newline at end of file
--- /dev/null
+<!DOCTYPE html>
+<!--
+Copyright (c) 2016 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:
+ Wei Zhang <wei625.zhang@samsung.com>
+
+-->
+<html>
+<head>
+<title>HumanActivitySleepMonitorData_status_attribute</title>
+<meta charset="utf-8"/>
+<script src="support/unitcommon.js"></script>
+</head>
+<body>
+<div id="log"></div>
+<script>
+//==== TEST: HumanActivitySleepMonitorData_status_attribute
+//==== LABEL Check if HumanActivitySleepMonitorData::status exists and is readonly
+//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivitySleepMonitorData:status A
+//==== SPEC_URL TBD
+//==== PRIORITY P1
+//==== ONLOAD_DELAY 9
+//==== TEST_CRITERIA AE AT ARO
+
+setup({timeout: 9000});
+
+var t = async_test(document.title, {timeout: 9000}), getHumanActivityDataSuccess, getHumanActivityDataError, humanActivityType = "SLEEP_MONITOR";
+
+t.step(function () {
+ add_result_callback(function () {
+ tizen.humanactivitymonitor.stop(humanActivityType);
+ });
+
+ getHumanActivityDataError = t.step_func(function (error) {
+ assert_unreached("getHumanActivityDataError is called" + error.name);
+ });
+
+ getHumanActivityDataSuccess = t.step_func(function (slpInfo) {
+ check_readonly(slpInfo, "status", slpInfo.status, "string", "UNKNOWN");
+ t.done();
+ });
+
+ tizen.humanactivitymonitor.start(humanActivityType);
+ tizen.humanactivitymonitor.getHumanActivityData(humanActivityType, getHumanActivityDataSuccess, getHumanActivityDataError);
+});
+
+</script>
+</body>
+</html>
\ No newline at end of file
--- /dev/null
+<!DOCTYPE html>
+<!--
+Copyright (c) 2016 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:
+ Wei Zhang <wei625.zhang@samsung.com>
+
+-->
+<html>
+<head>
+<title>HumanActivitySleepMonitorData_timestamp_attribute</title>
+<meta charset="utf-8"/>
+<script src="support/unitcommon.js"></script>
+</head>
+<body>
+<div id="log"></div>
+<script>
+//==== TEST: HumanActivitySleepMonitorData_timestamp_attribute
+//==== LABEL Check if HumanActivitySleepMonitorData::timestamp exists, has type long, and is readonly
+//==== SPEC Tizen Web API:TBD:HumanActivityMonitor:HumanActivitySleepMonitorData:timestamp A
+//==== SPEC_URL TBD
+//==== PRIORITY P1
+//==== TEST_CRITERIA AE AT ARO
+
+setup({timeout: 9000});
+
+var t = async_test(document.title, {timeout: 9000}), getHumanActivityDataSuccess, getHumanActivityDataError, humanActivityType = "SLEEP_MONITOR";
+
+t.step(function () {
+ add_result_callback(function () {
+ tizen.humanactivitymonitor.stop(humanActivityType);
+ });
+
+ getHumanActivityDataError = t.step_func(function (error) {
+ assert_unreached("getHumanActivityDataError is called" + error.name);
+ });
+
+ getHumanActivityDataSuccess = t.step_func(function (slpInfo) {
+ check_readonly(slpInfo, "timestamp", slpInfo.timestamp, "long", slpInfo.timestamp + 10);
+ t.done();
+ });
+
+ tizen.humanactivitymonitor.start(humanActivityType);
+ tizen.humanactivitymonitor.getHumanActivityData(humanActivityType, getHumanActivityDataSuccess, getHumanActivityDataError);
+});
+
+
+</script>
+</body>
+</html>
\ No newline at end of file
--- /dev/null
+179 path=wearable/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_getHumanActivityData_HumanActivityMonitorSuccessCallback_TypeMismatch.html
+27 atime=1402486842.502028
\ No newline at end of file
--- /dev/null
+<!DOCTYPE html>
+<!--
+Copyright (c) 2014 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:
+ Wei Zhang <wei625.zhang@samsung.com>
+
+-->
+<html>
+<head>
+<title>StepDifference_notexist</title>
+<meta charset="utf-8"/>
+<script src="support/unitcommon.js"></script>
+</head>
+<body>
+<div id="log"></div>
+<script>
+//==== TEST: StepDifference_notexist
+//==== LABEL Check if interface StepDifference exists, it should not
+//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:StepDifference:StepDifference U
+//==== SPEC_URL TBD
+//==== PRIORITY P3
+//==== TEST_CRITERIA NIO
+
+test(function () {
+ check_no_interface_object("StepDifference");
+}, document.title);
+
+</script>
+</body>
+</html>
\ No newline at end of file
--- /dev/null
+/*
+
+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:
+ Wei Zhang <wei625.zhang@samsung.com>
+
+*/
+
+SERVICE_NOT_AVAILABLE_ERR = "ServiceNotAvailableError";
+NOT_SUPPORTED_EXCEPTION = "NotSupportedError";
+
+var PEDOMETER_STEP_STATUS = [
+ "NOT_MOVING", "WALKING", "RUNNING", "UNKNOWN"
+];
+
+function check_human_activity_pedometer_data(human_activity_data) {
+ check_readonly(human_activity_data, "stepStatus", human_activity_data.stepStatus, "string", "dummyValue");
+ assert_in_array(human_activity_data.stepStatus, PEDOMETER_STEP_STATUS, "stepStatus has wrong enum value");
+ check_readonly(human_activity_data, "speed", human_activity_data.speed, "double", 0.1);
+ check_readonly(human_activity_data, "walkingFrequency", human_activity_data.walkingFrequency, "double", 0.1);
+ check_readonly(human_activity_data, "cumulativeDistance", human_activity_data.cumulativeDistance, "double", 0.1);
+ check_readonly(human_activity_data, "cumulativeCalorie", human_activity_data.cumulativeCalorie, "double", 0.1);
+ check_readonly(human_activity_data, "cumulativeTotalStepCount", human_activity_data.cumulativeTotalStepCount, "double", 0.1);
+ check_readonly(human_activity_data, "cumulativeWalkStepCount", human_activity_data.cumulativeWalkStepCount, "double", 0.1);
+ check_readonly(human_activity_data, "cumulativeRunStepCount", human_activity_data.cumulativeRunStepCount, "double", 0.1);
+}
+
+function check_err_name() {
+}
--- /dev/null
+/*
+
+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'};
+NOT_SUPPORTED_EXCEPTION = {name: 'NotSupportedError'};
+
+(function () {
+ var head_src = document.head.innerHTML;
+ if (head_src.search(/\/testharness.js\W/) === -1) {
+ document.write('<script language="javascript" src="../resources/testharness.js"></script>\n');
+ }
+ if (head_src.search(/\/testharnessreport.js\W/) === -1) {
+ document.write('<script language="javascript" src="../resources/testharnessreport.js"></script>\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],
+ [0, exceptionName],
+ [true, exceptionName],
+ ["dummyInvalidEnumValue", exceptionName],
+ [{ }, exceptionName]
+ ];
+ if (!isOptional) {
+ conversionTable.push([null, 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;
+ case 'double':
+ assert_equals(typeof (obj), 'number', description);
+ 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;
+}
--- /dev/null
+#!/usr/bin/env python
+
+import os
+import shutil
+import glob
+import time
+import sys
+import subprocess
+from optparse import OptionParser, make_option\r
+import ConfigParser
+
+
+SCRIPT_DIR = os.path.dirname(os.path.abspath(__file__))
+PARAMETERS = None
+ADB_CMD = "adb"
+
+
+def doCMD(cmd):
+ # Do not need handle timeout in this short script, let tool do it
+ print "-->> \"%s\"" % cmd
+ output = []
+ cmd_return_code = 1
+ cmd_proc = subprocess.Popen(
+ cmd, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, shell=True)
+
+ while True:
+ output_line = cmd_proc.stdout.readline().strip("\r\n")
+ cmd_return_code = cmd_proc.poll()
+ if output_line == '' and cmd_return_code != None:
+ break
+ sys.stdout.write("%s\n" % output_line)
+ sys.stdout.flush()
+ output.append(output_line)
+
+ return (cmd_return_code, output)
+
+
+def uninstPKGs():
+ action_status = True
+ for root, dirs, files in os.walk(SCRIPT_DIR):
+ for file in files:
+ if file.endswith(".apk"):
+ cmd = "%s -s %s uninstall org.xwalk.%s" % (
+ ADB_CMD, PARAMETERS.device, os.path.basename(os.path.splitext(file)[0]))
+ (return_code, output) = doCMD(cmd)
+ for line in output:
+ if "Failure" in line:
+ action_status = False
+ break
+ return action_status
+
+
+def instPKGs():
+ action_status = True
+ for root, dirs, files in os.walk(SCRIPT_DIR):
+ for file in files:
+ if file.endswith(".apk"):
+ cmd = "%s -s %s install %s" % (ADB_CMD,
+ PARAMETERS.device, os.path.join(root, file))
+ (return_code, output) = doCMD(cmd)
+ for line in output:
+ if "Failure" in line:
+ action_status = False
+ break
+ return action_status
+
+
+def main():
+ try:
+ usage = "usage: inst.py -i"
+ opts_parser = OptionParser(usage=usage)
+ opts_parser.add_option(
+ "-s", dest="device", action="store", help="Specify device")
+ opts_parser.add_option(
+ "-i", dest="binstpkg", action="store_true", help="Install package")
+ opts_parser.add_option(
+ "-u", dest="buninstpkg", action="store_true", help="Uninstall package")
+ global PARAMETERS
+ (PARAMETERS, args) = opts_parser.parse_args()
+ except Exception, e:
+ print "Got wrong option: %s, exit ..." % e
+ sys.exit(1)
+
+ if not PARAMETERS.device:
+ (return_code, output) = doCMD("adb devices")
+ for line in output:
+ if str.find(line, "\tdevice") != -1:
+ PARAMETERS.device = line.split("\t")[0]
+ break
+
+ if not PARAMETERS.device:
+ print "No device found"
+ sys.exit(1)
+
+ if PARAMETERS.binstpkg and PARAMETERS.buninstpkg:
+ print "-i and -u are conflict"
+ sys.exit(1)
+
+ if PARAMETERS.buninstpkg:
+ if not uninstPKGs():
+ sys.exit(1)
+ else:
+ if not instPKGs():
+ sys.exit(1)
+
+if __name__ == "__main__":
+ main()
+ sys.exit(0)
--- /dev/null
+#!/usr/bin/env python
+
+import os
+import shutil
+import glob
+import time
+import sys
+import subprocess
+import string
+from optparse import OptionParser, make_option\r
+import ConfigParser
+
+
+SCRIPT_DIR = os.path.dirname(os.path.abspath(__file__))
+PKG_NAME = os.path.basename(SCRIPT_DIR)
+PARAMETERS = None
+#XW_ENV = "export DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/5000/dbus/user_bus_socket"
+TCT_CONFIG_FILE = "/opt/tools/TCT_CONFIG"
+tct_parser = ConfigParser.ConfigParser()
+tct_parser.read(TCT_CONFIG_FILE)
+SRC_DIR = tct_parser.get('DEVICE', 'DEVICE_SUITE_TARGET_30')
+PKG_SRC_DIR = "%s/tct/opt/%s" % (SRC_DIR, PKG_NAME)
+EXECUTION_MODE_30 = tct_parser.get('DEVICE', 'DEVICE_EXECUTION_MODE_30')
+ADMIN_USER_30 = tct_parser.get('DEVICE', 'DEVICE_ADMIN_USER_30')
+
+def userCheck():
+ global GLOVAL_OPT
+ if ADMIN_USER_30 == EXECUTION_MODE_30:
+ GLOVAL_OPT="--global"
+ else:
+ GLOVAL_OPT=""
+
+
+def askpolicyremoving():
+ for root, dirs, files in os.walk(SCRIPT_DIR):
+ for file in files:
+ if file.endswith(".wgt"):
+ pkg_id = getPKGID(os.path.basename(os.path.splitext(file)[0]))
+
+ print pkg_id
+ print (os.getcwd())
+ print (os.path.dirname(os.path.realpath(__file__)) )
+ if not doRemoteCopy("%s/askpolicy.sh" % SCRIPT_DIR, "%s" % (SRC_DIR)):
+ action_status = False
+ if PARAMETERS.mode == "SDB":
+ cmd = "sdb -s %s shell .%s/askpolicy.sh %s" % (PARAMETERS.device,
+ SRC_DIR, pkg_id)
+ return doCMD(cmd)
+
+def doCMD(cmd):
+ # Do not need handle timeout in this short script, let tool do it
+ print "-->> \"%s\"" % cmd
+ output = []
+ cmd_return_code = 1
+ cmd_proc = subprocess.Popen(
+ cmd, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, shell=True)
+
+ while True:
+ output_line = cmd_proc.stdout.readline().strip("\r\n")
+ cmd_return_code = cmd_proc.poll()
+ if output_line == '' and cmd_return_code != None:
+ break
+ sys.stdout.write("%s\n" % output_line)
+ sys.stdout.flush()
+ output.append(output_line)
+
+ return (cmd_return_code, output)
+
+
+def updateCMD(cmd=None):
+ if "pkgcmd" in cmd:
+ cmd = "su - %s -c '%s;%s'" % (PARAMETERS.user, XW_ENV, cmd)
+ return cmd
+def getUSERID():
+ if PARAMETERS.mode == "SDB":
+ cmd = "sdb -s %s shell id -u %s" % (
+ PARAMETERS.device, PARAMETERS.user)
+ else:
+ cmd = "ssh %s \"id -u %s\"" % (
+ PARAMETERS.device, PARAMETERS.user )
+ return doCMD(cmd)
+
+
+
+
+def getPKGID(pkg_name=None):
+ if PARAMETERS.mode == "SDB":
+ cmd = "sdb -s %s shell %s" % (
+ PARAMETERS.device, updateCMD('pkgcmd -l'))
+ else:
+ cmd = "ssh %s \"%s\"" % (
+ PARAMETERS.device, updateCMD('pkgcmd -l'))
+
+ (return_code, output) = doCMD(cmd)
+ if return_code != 0:
+ return None
+
+ test_pkg_id = None
+ for line in output:
+ if line.find("[" + pkg_name + "]") != -1:
+ pkgidIndex = line.split().index("pkgid")
+ test_pkg_id = line.split()[pkgidIndex+1].strip("[]")
+ break
+ return test_pkg_id
+
+
+def doRemoteCMD(cmd=None):
+ if PARAMETERS.mode == "SDB":
+ cmd = "sdb -s %s shell %s" % (PARAMETERS.device, updateCMD(cmd))
+ else:
+ cmd = "ssh %s \"%s\"" % (PARAMETERS.device, updateCMD(cmd))
+
+ return doCMD(cmd)
+
+
+def doRemoteCopy(src=None, dest=None):
+ if PARAMETERS.mode == "SDB":
+ cmd_prefix = "sdb -s %s push" % PARAMETERS.device
+ cmd = "%s %s %s" % (cmd_prefix, src, dest)
+ else:
+ cmd = "scp -r %s %s:/%s" % (src, PARAMETERS.device, dest)
+
+ (return_code, output) = doCMD(cmd)
+ doRemoteCMD("sync")
+
+ if return_code != 0:
+ return True
+ else:
+ return False
+
+
+def uninstPKGs():
+ action_status = True
+ for root, dirs, files in os.walk(SCRIPT_DIR):
+ if root.endswith("mediasrc"):
+ continue
+
+ for file in files:
+ if file.endswith(".wgt"):
+ pkg_id = getPKGID(os.path.basename(os.path.splitext(file)[0]))
+ if not pkg_id:
+ action_status = False
+ continue
+ (return_code, output) = doRemoteCMD(
+ "pkgcmd %s -u -t wgt -q -n %s" % (GLOVAL_OPT, pkg_id))
+ for line in output:
+ if "Failure" in line:
+ action_status = False
+ break
+
+ (return_code, output) = doRemoteCMD(
+ "rm -rf %s" % PKG_SRC_DIR)
+ if return_code != 0:
+ action_status = False
+
+ return action_status
+
+
+def instPKGs():
+ action_status = True
+ (return_code, output) = doRemoteCMD(
+ "mkdir -p %s" % PKG_SRC_DIR)
+ if return_code != 0:
+ action_status = False
+ for root, dirs, files in os.walk(SCRIPT_DIR):
+ if root.endswith("mediasrc"):
+ continue
+
+ for file in files:
+ if file.endswith(".wgt"):
+ if not doRemoteCopy(os.path.join(root, file), "%s/%s" % (SRC_DIR, file)):
+ action_status = False
+ (return_code, output) = doRemoteCMD(
+ "pkgcmd %s -i -t wgt -q -p %s/%s" % (GLOVAL_OPT, SRC_DIR, file))
+ doRemoteCMD("rm -rf %s/%s" % (SRC_DIR, file))
+ for line in output:
+ if "Failure" in line:
+ action_status = False
+ break
+
+ # Do some special copy/delete... steps
+ '''
+ (return_code, output) = doRemoteCMD(
+ "mkdir -p %s/tests" % PKG_SRC_DIR)
+ if return_code != 0:
+ action_status = False
+
+ if not doRemoteCopy("specname/tests", "%s/tests" % PKG_SRC_DIR):
+ action_status = False
+ '''
+
+ return action_status
+
+
+def main():
+ try:
+ usage = "usage: inst.py -i"
+ opts_parser = OptionParser(usage=usage)
+ opts_parser.add_option(
+ "-m", dest="mode", action="store", help="Specify mode")
+ opts_parser.add_option(
+ "-s", dest="device", action="store", help="Specify device")
+ opts_parser.add_option(
+ "-i", dest="binstpkg", action="store_true", help="Install package")
+ opts_parser.add_option(
+ "-u", dest="buninstpkg", action="store_true", help="Uninstall package")
+ opts_parser.add_option(
+ "-a", dest="user", action="store", help="User name")
+ global PARAMETERS
+ (PARAMETERS, args) = opts_parser.parse_args()
+ except Exception, e:
+ print "Got wrong option: %s, exit ..." % e
+ sys.exit(1)
+
+ if not PARAMETERS.user:
+ PARAMETERS.user = EXECUTION_MODE_30
+ if not PARAMETERS.mode:
+ PARAMETERS.mode = "SDB"
+
+ if PARAMETERS.mode == "SDB":
+ if not PARAMETERS.device:
+ (return_code, output) = doCMD("sdb devices")
+ for line in output:
+ if str.find(line, "\tdevice") != -1:
+ PARAMETERS.device = line.split("\t")[0]
+ break
+ else:
+ PARAMETERS.mode = "SSH"
+
+ if not PARAMETERS.device:
+ print "No device provided"
+ sys.exit(1)
+
+ userCheck()
+
+ user_info = getUSERID()
+ re_code = user_info[0]
+ if re_code == 0 :
+ global XW_ENV
+ userid = user_info[1][0]
+ XW_ENV = "export DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/%s/dbus/user_bus_socket"%str(userid)
+ else:
+ print "[Error] cmd commands error : %s"%str(user_info[1])
+ sys.exit(1)
+ if PARAMETERS.binstpkg and PARAMETERS.buninstpkg:
+ print "-i and -u are conflict"
+ sys.exit(1)
+
+ if PARAMETERS.buninstpkg:
+ if not uninstPKGs():
+ sys.exit(1)
+ else:
+ if not instPKGs():
+ #askpolicyremoving()
+ sys.exit(1)
+
+if __name__ == "__main__":
+ main()
+ sys.exit(0)
--- /dev/null
+#!/usr/bin/env python
+
+import os
+import shutil
+import glob
+import time
+import sys
+import subprocess
+import string
+from optparse import OptionParser, make_option\r
+import ConfigParser
+
+
+SCRIPT_DIR = os.path.dirname(os.path.abspath(__file__))
+PKG_NAME = os.path.basename(SCRIPT_DIR)
+PARAMETERS = None
+#XW_ENV = "export DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/5000/dbus/user_bus_socket"
+TCT_CONFIG_FILE = "/opt/tools/TCT_CONFIG"
+tct_parser = ConfigParser.ConfigParser()
+tct_parser.read(TCT_CONFIG_FILE)
+SRC_DIR = tct_parser.get('DEVICE', 'DEVICE_SUITE_TARGET_30')
+PKG_SRC_DIR = "%s/tct/opt/%s" % (SRC_DIR, PKG_NAME)
+
+
+def doCMD(cmd):
+ # Do not need handle timeout in this short script, let tool do it
+ print "-->> \"%s\"" % cmd
+ output = []
+ cmd_return_code = 1
+ cmd_proc = subprocess.Popen(
+ cmd, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, shell=True)
+
+ while True:
+ output_line = cmd_proc.stdout.readline().strip("\r\n")
+ cmd_return_code = cmd_proc.poll()
+ if output_line == '' and cmd_return_code != None:
+ break
+ sys.stdout.write("%s\n" % output_line)
+ sys.stdout.flush()
+ output.append(output_line)
+
+ return (cmd_return_code, output)
+
+
+def updateCMD(cmd=None):
+ if "pkgcmd" in cmd:
+ cmd = "su - %s -c '%s;%s'" % (PARAMETERS.user, XW_ENV, cmd)
+ return cmd
+def getUSERID():
+ if PARAMETERS.mode == "SDB":
+ cmd = "sdb -s %s shell id -u %s" % (
+ PARAMETERS.device, PARAMETERS.user)
+ else:
+ cmd = "ssh %s \"id -u %s\"" % (
+ PARAMETERS.device, PARAMETERS.user )
+ return doCMD(cmd)
+
+
+
+
+def getPKGID(pkg_name=None):
+ if PARAMETERS.mode == "SDB":
+ cmd = "sdb -s %s shell %s" % (
+ PARAMETERS.device, updateCMD('pkgcmd -l'))
+ else:
+ cmd = "ssh %s \"%s\"" % (
+ PARAMETERS.device, updateCMD('pkgcmd -l'))
+
+ (return_code, output) = doCMD(cmd)
+ if return_code != 0:
+ return None
+
+ test_pkg_id = None
+ for line in output:
+ if line.find("[" + pkg_name + "]") != -1:
+ pkgidIndex = line.split().index("pkgid")
+ test_pkg_id = line.split()[pkgidIndex+1].strip("[]")
+ break
+ return test_pkg_id
+
+
+def doRemoteCMD(cmd=None):
+ if PARAMETERS.mode == "SDB":
+ cmd = "sdb -s %s shell %s" % (PARAMETERS.device, updateCMD(cmd))
+ else:
+ cmd = "ssh %s \"%s\"" % (PARAMETERS.device, updateCMD(cmd))
+
+ return doCMD(cmd)
+
+
+def doRemoteCopy(src=None, dest=None):
+ if PARAMETERS.mode == "SDB":
+ cmd_prefix = "sdb -s %s push" % PARAMETERS.device
+ cmd = "%s %s %s" % (cmd_prefix, src, dest)
+ else:
+ cmd = "scp -r %s %s:/%s" % (src, PARAMETERS.device, dest)
+
+ (return_code, output) = doCMD(cmd)
+ doRemoteCMD("sync")
+
+ if return_code != 0:
+ return True
+ else:
+ return False
+
+
+def uninstPKGs():
+ action_status = True
+ for root, dirs, files in os.walk(SCRIPT_DIR):
+ if root.endswith("mediasrc"):
+ continue
+
+ for file in files:
+ if file.endswith(".xpk"):
+ pkg_id = getPKGID(os.path.basename(os.path.splitext(file)[0]))
+ if not pkg_id:
+ action_status = False
+ continue
+ (return_code, output) = doRemoteCMD(
+ "pkgcmd -u -t xpk -q -n %s" % pkg_id)
+ for line in output:
+ if "Failure" in line:
+ action_status = False
+ break
+
+ (return_code, output) = doRemoteCMD(
+ "rm -rf %s" % PKG_SRC_DIR)
+ if return_code != 0:
+ action_status = False
+
+ return action_status
+
+
+def instPKGs():
+ action_status = True
+ (return_code, output) = doRemoteCMD(
+ "mkdir -p %s" % PKG_SRC_DIR)
+ if return_code != 0:
+ action_status = False
+ for root, dirs, files in os.walk(SCRIPT_DIR):
+ if root.endswith("mediasrc"):
+ continue
+
+ for file in files:
+ if file.endswith(".xpk"):
+ if not doRemoteCopy(os.path.join(root, file), "%s/%s" % (SRC_DIR, file)):
+ action_status = False
+ (return_code, output) = doRemoteCMD(
+ "pkgcmd -i -t xpk -q -p %s/%s" % (SRC_DIR, file))
+ doRemoteCMD("rm -rf %s/%s" % (SRC_DIR, file))
+ for line in output:
+ if "Failure" in line:
+ action_status = False
+ break
+
+ # Do some special copy/delete... steps
+ '''
+ (return_code, output) = doRemoteCMD(
+ "mkdir -p %s/tests" % PKG_SRC_DIR)
+ if return_code != 0:
+ action_status = False
+
+ if not doRemoteCopy("specname/tests", "%s/tests" % PKG_SRC_DIR):
+ action_status = False
+ '''
+
+ return action_status
+
+
+def main():
+ try:
+ usage = "usage: inst.py -i"
+ opts_parser = OptionParser(usage=usage)
+ opts_parser.add_option(
+ "-m", dest="mode", action="store", help="Specify mode")
+ opts_parser.add_option(
+ "-s", dest="device", action="store", help="Specify device")
+ opts_parser.add_option(
+ "-i", dest="binstpkg", action="store_true", help="Install package")
+ opts_parser.add_option(
+ "-u", dest="buninstpkg", action="store_true", help="Uninstall package")
+ opts_parser.add_option(
+ "-a", dest="user", action="store", help="User name")
+ global PARAMETERS
+ (PARAMETERS, args) = opts_parser.parse_args()
+ except Exception, e:
+ print "Got wrong option: %s, exit ..." % e
+ sys.exit(1)
+
+ if not PARAMETERS.user:
+ PARAMETERS.user = "owner"
+ if not PARAMETERS.mode:
+ PARAMETERS.mode = "SDB"
+
+ if PARAMETERS.mode == "SDB":
+ if not PARAMETERS.device:
+ (return_code, output) = doCMD("sdb devices")
+ for line in output:
+ if str.find(line, "\tdevice") != -1:
+ PARAMETERS.device = line.split("\t")[0]
+ break
+ else:
+ PARAMETERS.mode = "SSH"
+
+ if not PARAMETERS.device:
+ print "No device provided"
+ sys.exit(1)
+
+ user_info = getUSERID()
+ re_code = user_info[0]
+ if re_code == 0 :
+ global XW_ENV
+ userid = user_info[1][0]
+ XW_ENV = "export DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/%s/dbus/user_bus_socket"%str(userid)
+ else:
+ print "[Error] cmd commands error : %s"%str(user_info[1])
+ sys.exit(1)
+ if PARAMETERS.binstpkg and PARAMETERS.buninstpkg:
+ print "-i and -u are conflict"
+ sys.exit(1)
+
+ if PARAMETERS.buninstpkg:
+ if not uninstPKGs():
+ sys.exit(1)
+ else:
+ if not instPKGs():
+ sys.exit(1)
+
+if __name__ == "__main__":
+ main()
+ sys.exit(0)
--- /dev/null
+{
+ "version": "3.0",
+ "name": "tct-humanactivitymonitor-tizen-tests",
+ "permissions": ["tabs", "unlimited_storage", "notifications", "http://*/*", "https://*/*"],
+ "description": "tct-humanactivitymonitor-tizen-tests",
+ "webapimanager": true,
+ "file_name": "manifest.json",
+ "app": {
+ "launch": {
+ "local_path": "index.html"
+ }
+ }
+}
\ No newline at end of file
--- /dev/null
+#!/usr/bin/env python
+#
+# Copyright (c) 2014 Intel Corporation.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are met:
+#
+# * Redistributions of works must retain the original copyright notice, this
+# list of conditions and the following disclaimer.
+# * Redistributions in binary form must reproduce the original copyright
+# notice, this list of conditions and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+# * Neither the name of Intel Corporation nor the names of its contributors
+# may be used to endorse or promote products derived from this work without
+# specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY INTEL CORPORATION "AS IS"
+# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+# ARE DISCLAIMED. IN NO EVENT SHALL INTEL CORPORATION BE LIABLE FOR ANY DIRECT,
+# INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+# OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
+# EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#
+# Authors:
+# Fan, Yugang <yugang.fan@intel.com>
+
+import os
+import shutil
+import glob
+import time
+import sys
+import stat
+import random
+import json
+import logging
+import zipfile
+import signal
+import subprocess
+from optparse import OptionParser
+
+reload(sys)
+sys.setdefaultencoding('utf8')
+
+TOOL_VERSION = "v0.1"
+VERSION_FILE = "VERSION"
+DEFAULT_CMD_TIMEOUT = 600
+PKG_TYPES = ["apk", "xpk", "wgt", "apk-aio", "cordova-aio", "cordova", "embeddingapi"]
+PKG_MODES = ["shared", "embedded"]
+PKG_ARCHS = ["x86", "arm"]
+PKG_BLACK_LIST = []
+PKG_NAME = None
+BUILD_PARAMETERS = None
+BUILD_ROOT = None
+BUILD_ROOT_SRC = None
+BUILD_ROOT_SRC_PKG = None
+BUILD_ROOT_SRC_PKG_APP = None
+BUILD_ROOT_SRC_SUB_APP = None
+BUILD_ROOT_PKG = None
+BUILD_ROOT_PKG_APP = None
+LOG = None
+LOG_LEVEL = logging.DEBUG
+
+
+class ColorFormatter(logging.Formatter):
+
+ def __init__(self, msg):
+ logging.Formatter.__init__(self, msg)
+
+ def format(self, record):
+ red, green, yellow, blue = range(4)
+ colors = {'INFO': green, 'DEBUG': blue,
+ 'WARNING': yellow, 'ERROR': red}
+ msg = record.msg
+ if msg[0] == "+":
+ msg = "\33[01m" + msg[1:] + "\033[0m"
+ elif msg[0] == "=":
+ msg = "\33[07m" + msg + "\033[0m"
+ levelname = record.levelname
+ if levelname in colors:
+ msg_color = "\033[0;%dm" % (
+ 31 + colors[levelname]) + msg + "\033[0m"
+ record.msg = msg_color
+
+ return logging.Formatter.format(self, record)
+
+
+def pidExists(pid):
+ if pid < 0:
+ return False
+ try:
+ os.kill(pid, 0)
+ except OSError:
+ return False
+ else:
+ return True
+
+
+def isWindows():
+ return sys.platform == "cygwin" or sys.platform.startswith("win")
+
+
+def killProcesses(ppid=None):
+ if isWindows():
+ subprocess.check_call("TASKKILL /F /PID %s /T" % ppid)
+ else:
+ ppid = str(ppid)
+ pidgrp = []
+
+ def GetChildPids(ppid):
+ command = "ps -ef | awk '{if ($3 ==%s) print $2;}'" % str(ppid)
+ pids = os.popen(command).read()
+ pids = pids.split()
+ return pids
+
+ pidgrp.extend(GetChildPids(ppid))
+ for pid in pidgrp:
+ pidgrp.extend(GetChildPids(pid))
+
+ pidgrp.insert(0, ppid)
+ while len(pidgrp) > 0:
+ pid = pidgrp.pop()
+ try:
+ os.kill(int(pid), signal.SIGKILL)
+ return True
+ except OSError:
+ try:
+ os.popen("kill -9 %d" % int(pid))
+ return True
+ except Exception:
+ return False
+
+
+def safelyGetValue(origin_json=None, key=None):
+ if origin_json and key and key in origin_json:
+ return origin_json[key]
+ return None
+
+
+def checkContains(origin_str=None, key_str=None):
+ if origin_str.upper().find(key_str.upper()) >= 0:
+ return True
+ return False
+
+
+def getRandomStr():
+ str_pool = list("abcdefghijklmnopqrstuvwxyz1234567890")
+ random_str = ""
+ for i in range(15):
+ index = random.randint(0, len(str_pool) - 1)
+ random_str = random_str + str_pool[index]
+
+ return random_str
+
+
+def zipDir(dir_path, zip_file):
+ try:
+ if os.path.exists(zip_file):
+ if not doRemove([zip_file]):
+ return False
+ if not os.path.exists(os.path.dirname(zip_file)):
+ os.makedirs(os.path.dirname(zip_file))
+ z_file = zipfile.ZipFile(zip_file, "w")
+ orig_dir = os.getcwd()
+ os.chdir(dir_path)
+ for root, dirs, files in os.walk("."):
+ for i_file in files:
+ LOG.info("zip %s" % os.path.join(root, i_file))
+ z_file.write(os.path.join(root, i_file))
+ z_file.close()
+ os.chdir(orig_dir)
+ except Exception as e:
+ LOG.error("Fail to pack %s to %s: %s" % (dir_path, zip_file, e))
+ return False
+ LOG.info("Done to zip %s to %s" % (dir_path, zip_file))
+ return True
+
+
+def overwriteCopy(src, dest, symlinks=False, ignore=None):
+ if not os.path.exists(dest):
+ os.makedirs(dest)
+ shutil.copystat(src, dest)
+ sub_list = os.listdir(src)
+ if ignore:
+ excl = ignore(src, sub_list)
+ sub_list = [x for x in sub_list if x not in excl]
+ for i_sub in sub_list:
+ s_path = os.path.join(src, i_sub)
+ d_path = os.path.join(dest, i_sub)
+ if symlinks and os.path.islink(s_path):
+ if os.path.lexists(d_path):
+ os.remove(d_path)
+ os.symlink(os.readlink(s_path), d_path)
+ try:
+ s_path_s = os.lstat(s_path)
+ s_path_mode = stat.S_IMODE(s_path_s.st_mode)
+ os.lchmod(d_path, s_path_mode)
+ except Exception:
+ pass
+ elif os.path.isdir(s_path):
+ overwriteCopy(s_path, d_path, symlinks, ignore)
+ else:
+ shutil.copy2(s_path, d_path)
+
+
+def doCopy(src_item=None, dest_item=None):
+ LOG.info("Copying %s to %s" % (src_item, dest_item))
+ try:
+ if os.path.isdir(src_item):
+ overwriteCopy(src_item, dest_item, symlinks=True)
+ else:
+ if not os.path.exists(os.path.dirname(dest_item)):
+ LOG.info("Create non-existent dir: %s" %
+ os.path.dirname(dest_item))
+ os.makedirs(os.path.dirname(dest_item))
+ shutil.copy2(src_item, dest_item)
+ except Exception as e:
+ LOG.error("Fail to copy file %s: %s" % (src_item, e))
+ return False
+
+ return True
+
+
+def doRemove(target_file_list=None):
+ for i_file in target_file_list:
+ LOG.info("Removing %s" % i_file)
+ try:
+ if os.path.isdir(i_file):
+ shutil.rmtree(i_file)
+ else:
+ os.remove(i_file)
+ except Exception as e:
+ LOG.error("Fail to remove file %s: %s" % (i_file, e))
+ return False
+ return True
+
+
+def updateCopylistPrefix(src_default, dest_default, src_sub, dest_sub):
+ src_new = ""
+ dest_new = ""
+ PACK_TOOL_TAG = "PACK-TOOL-ROOT"
+
+ if src_sub[0:len(PACK_TOOL_TAG)] == PACK_TOOL_TAG:
+ src_new = src_sub.replace(PACK_TOOL_TAG, BUILD_PARAMETERS.pkgpacktools)
+ else:
+ src_new = os.path.join(src_default, src_sub)
+
+ if dest_sub[0:len(PACK_TOOL_TAG)] == PACK_TOOL_TAG:
+ dest_new = dest_sub.replace(PACK_TOOL_TAG, BUILD_ROOT)
+ else:
+ dest_new = os.path.join(dest_default, dest_sub)
+
+ return (src_new, dest_new)
+
+
+def buildSRC(src=None, dest=None, build_json=None):
+ if not os.path.exists(src):
+ LOG.info("+Src dir does not exist, skip build src process ...")
+ return True
+ if not doCopy(src, dest):
+ return False
+ if "blacklist" in build_json:
+ if build_json["blacklist"].count("") > 0:
+ build_json["blacklist"].remove("")
+ black_file_list = []
+ for i_black in build_json["blacklist"]:
+ black_file_list = black_file_list + \
+ glob.glob(os.path.join(dest, i_black))
+
+ black_file_list = list(set(black_file_list))
+ if not doRemove(black_file_list):
+ return False
+
+ if "copylist" in build_json:
+ for i_s_key in build_json["copylist"].keys():
+ if i_s_key and build_json["copylist"][i_s_key]:
+ (src_updated, dest_updated) = updateCopylistPrefix(
+ src, dest, i_s_key, build_json["copylist"][i_s_key])
+ if not doCopy(src_updated, dest_updated):
+ return False
+
+ return True
+
+
+def exitHandler(return_code=1):
+ LOG.info("+Cleaning build root folder ...")
+ if not BUILD_PARAMETERS.bnotclean and os.path.exists(BUILD_ROOT):
+ if not doRemove([BUILD_ROOT]):
+ LOG.error("Fail to clean build root, exit ...")
+ sys.exit(1)
+
+ if return_code == 0:
+ LOG.info("================ DONE ================")
+ else:
+ LOG.error(
+ "================ Found Something Wrong !!! ================")
+ sys.exit(return_code)
+
+
+def prepareBuildRoot():
+ LOG.info("+Preparing build root folder ...")
+ global BUILD_ROOT
+ global BUILD_ROOT_SRC
+ global BUILD_ROOT_SRC_PKG
+ global BUILD_ROOT_SRC_PKG_APP
+ global BUILD_ROOT_SRC_SUB_APP
+ global BUILD_ROOT_PKG
+ global BUILD_ROOT_PKG_APP
+
+ while True:
+ BUILD_ROOT = os.path.join("/tmp", getRandomStr())
+ if os.path.exists(BUILD_ROOT):
+ continue
+ else:
+ break
+
+ BUILD_ROOT_SRC = os.path.join(BUILD_ROOT, PKG_NAME)
+ BUILD_ROOT_SRC_PKG = os.path.join(BUILD_ROOT, "pkg")
+ BUILD_ROOT_SRC_PKG_APP = os.path.join(BUILD_ROOT, "pkg-app")
+ BUILD_ROOT_SRC_SUB_APP = os.path.join(BUILD_ROOT, "sub-app")
+ BUILD_ROOT_PKG = os.path.join(BUILD_ROOT, "pkg", "opt", PKG_NAME)
+ BUILD_ROOT_PKG_APP = os.path.join(BUILD_ROOT, "pkg-app", "opt", PKG_NAME)
+
+ if not doCopy(BUILD_PARAMETERS.srcdir, BUILD_ROOT_SRC):
+ return False
+ if not doRemove(
+ glob.glob(os.path.join(BUILD_ROOT_SRC, "%s*.zip" % PKG_NAME))):
+ return False
+
+ return True
+
+
+def doCMD(cmd, time_out=DEFAULT_CMD_TIMEOUT, no_check_return=False):
+ LOG.info("Doing CMD: [ %s ]" % cmd)
+ pre_time = time.time()
+ cmd_proc = subprocess.Popen(args=cmd, shell=True)
+ while True:
+ cmd_exit_code = cmd_proc.poll()
+ elapsed_time = time.time() - pre_time
+ if cmd_exit_code is None:
+ if elapsed_time >= time_out:
+ killProcesses(ppid=cmd_proc.pid)
+ LOG.error("Timeout to exe CMD")
+ return False
+ else:
+ if not no_check_return and cmd_exit_code != 0:
+ LOG.error("Fail to exe CMD")
+ return False
+ break
+ time.sleep(2)
+ return True
+
+
+def doCMDWithOutput(cmd, time_out=DEFAULT_CMD_TIMEOUT):
+ LOG.info("Doing CMD: [ %s ]" % cmd)
+ pre_time = time.time()
+ output = []
+ cmd_return_code = 1
+ cmd_proc = subprocess.Popen(
+ cmd, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, shell=True)
+
+ while True:
+ output_line = cmd_proc.stdout.readline().strip("\r\n")
+ cmd_return_code = cmd_proc.poll()
+ elapsed_time = time.time() - pre_time
+ if cmd_return_code is None:
+ if elapsed_time >= time_out:
+ killProcesses(ppid=cmd_proc.pid)
+ LOG.error("Timeout to exe CMD")
+ return False
+ elif output_line == '' and cmd_return_code is not None:
+ break
+
+ sys.stdout.write("%s\n" % output_line)
+ sys.stdout.flush()
+ output.append(output_line)
+ if cmd_return_code != 0:
+ LOG.error("Fail to exe CMD")
+
+ return (cmd_return_code, output)
+
+
+def packXPK(build_json=None, app_src=None, app_dest=None, app_name=None):
+ pack_tool = os.path.join(BUILD_ROOT, "make_xpk.py")
+ if not os.path.exists(pack_tool):
+ if not doCopy(
+ os.path.join(BUILD_PARAMETERS.pkgpacktools, "make_xpk.py"),
+ pack_tool):
+ return False
+ orig_dir = os.getcwd()
+ os.chdir(BUILD_ROOT)
+ if os.path.exists("key.file"):
+ if not doRemove(["key.file"]):
+ os.chdir(orig_dir)
+ return False
+
+ key_file = safelyGetValue(build_json, "key-file")
+ if key_file == "key.file":
+ LOG.error(
+ "\"key.file\" is reserved name for default key file, "
+ "pls change the key file name ...")
+ os.chdir(orig_dir)
+ return False
+ if key_file:
+ pack_cmd = "python make_xpk.py %s %s -o %s" % (
+ app_src, key_file, os.path.join(app_dest, "%s.xpk" % app_name))
+ else:
+ pack_cmd = "python make_xpk.py %s key.file -o %s" % (
+ app_src, os.path.join(app_dest, "%s.xpk" % app_name))
+ if not doCMD(pack_cmd, DEFAULT_CMD_TIMEOUT):
+ os.chdir(orig_dir)
+ return False
+
+ os.chdir(orig_dir)
+ return True
+
+
+def packWGT(build_json=None, app_src=None, app_dest=None, app_name=None):
+ if not zipDir(app_src, os.path.join(app_dest, "%s.wgt" % app_name)):
+ return False
+
+ if BUILD_PARAMETERS.signature == True:
+ if safelyGetValue(build_json, "sign-flag") == "true":
+ if not os.path.exists(os.path.join(BUILD_ROOT, "signing")):
+ if not doCopy(
+ os.path.join(BUILD_PARAMETERS.pkgpacktools, "signing"),
+ os.path.join(BUILD_ROOT, "signing")):
+ return False
+ signing_cmd = "%s --dist platform %s" % (
+ os.path.join(BUILD_ROOT, "signing", "sign-widget.sh"),
+ os.path.join(app_dest, "%s.wgt" % app_name))
+ if not doCMD(signing_cmd, DEFAULT_CMD_TIMEOUT):
+ return False
+
+ return True
+
+
+def packAPK(build_json=None, app_src=None, app_dest=None, app_name=None):
+ app_name = app_name.replace("-", "_")
+
+ if not os.path.exists(os.path.join(BUILD_ROOT, "crosswalk")):
+ if not doCopy(
+ os.path.join(BUILD_PARAMETERS.pkgpacktools, "crosswalk"),
+ os.path.join(BUILD_ROOT, "crosswalk")):
+ return False
+
+ files = glob.glob(os.path.join(BUILD_ROOT, "crosswalk", "*.apk"))
+ if files:
+ if not doRemove(files):
+ return False
+
+ ext_opt = ""
+ cmd_opt = ""
+ url_opt = ""
+ mode_opt = ""
+ arch_opt = ""
+ icon_opt = ""
+
+ common_opts = safelyGetValue(build_json, "apk-common-opts")
+ if common_opts is None:
+ common_opts = ""
+
+ tmp_opt = safelyGetValue(build_json, "apk-ext-opt")
+ if tmp_opt:
+ ext_opt = "--extensions='%s'" % os.path.join(BUILD_ROOT_SRC, tmp_opt)
+
+ tmp_opt = safelyGetValue(build_json, "apk-cmd-opt")
+ if tmp_opt:
+ cmd_opt = "--xwalk-command-line='%s'" % tmp_opt
+
+ tmp_opt = safelyGetValue(build_json, "apk-url-opt")
+ if tmp_opt:
+ url_opt = "--app-url='%s'" % tmp_opt
+
+ tmp_opt = safelyGetValue(build_json, "apk-mode-opt")
+ if tmp_opt:
+ if tmp_opt in PKG_MODES:
+ mode_opt = "--mode=%s" % tmp_opt
+ else:
+ LOG.error("Got wrong app mode: %s" % tmp_opt)
+ return False
+ else:
+ mode_opt = "--mode=%s" % BUILD_PARAMETERS.pkgmode
+
+ tmp_opt = safelyGetValue(build_json, "apk-arch-opt")
+ if tmp_opt:
+ if tmp_opt in PKG_ARCHS:
+ arch_opt = "--arch=%s" % tmp_opt
+ else:
+ LOG.error("Got wrong app arch: %s" % tmp_opt)
+ return False
+ else:
+ arch_opt = "--arch=%s" % BUILD_PARAMETERS.pkgarch
+
+ tmp_opt = safelyGetValue(build_json, "apk-icon-opt")
+ if tmp_opt:
+ icon_opt = "--icon=%s" % tmp_opt
+ elif tmp_opt == "":
+ icon_opt = ""
+ else:
+ icon_opt = "--icon=%s/icon.png" % app_src
+
+ if safelyGetValue(build_json, "apk-type") == "MANIFEST":
+ pack_cmd = "python make_apk.py --package=org.xwalk.%s " \
+ "--manifest=%s/manifest.json %s %s %s %s %s" % (
+ app_name, app_src, mode_opt, arch_opt,
+ ext_opt, cmd_opt, common_opts)
+ elif safelyGetValue(build_json, "apk-type") == "HOSTEDAPP":
+ if not url_opt:
+ LOG.error(
+ "Fail to find the key \"apk-url-opt\" for hosted APP packing")
+ return False
+ pack_cmd = "python make_apk.py --package=org.xwalk.%s --name=%s %s " \
+ "%s %s %s %s %s" % (
+ app_name, app_name, mode_opt, arch_opt, ext_opt,
+ cmd_opt, url_opt, common_opts)
+ else:
+ pack_cmd = "python make_apk.py --package=org.xwalk.%s --name=%s " \
+ "--app-root=%s --app-local-path=index.html %s %s " \
+ "%s %s %s %s" % (
+ app_name, app_name, app_src, icon_opt, mode_opt,
+ arch_opt, ext_opt, cmd_opt, common_opts)
+
+ orig_dir = os.getcwd()
+ os.chdir(os.path.join(BUILD_ROOT, "crosswalk"))
+ if not doCMD(pack_cmd, DEFAULT_CMD_TIMEOUT):
+ os.chdir(orig_dir)
+ return False
+
+ files = glob.glob(os.path.join(BUILD_ROOT, "crosswalk", "*.apk"))
+ if files:
+ if not doCopy(files[0], os.path.join(app_dest, "%s.apk" % app_name)):
+ os.chdir(orig_dir)
+ return False
+ else:
+ LOG.error("Fail to find the apk file")
+ os.chdir(orig_dir)
+ return False
+
+ os.chdir(orig_dir)
+ return True
+
+
+def packCordova(build_json=None, app_src=None, app_dest=None, app_name=None):
+ pack_tool = os.path.join(BUILD_ROOT, "cordova")
+ app_name = app_name.replace("-", "_")
+ if not os.path.exists(pack_tool):
+ if not doCopy(
+ os.path.join(BUILD_PARAMETERS.pkgpacktools, "cordova"),
+ pack_tool):
+ return False
+
+ plugin_tool = os.path.join(BUILD_ROOT, "cordova_plugins")
+ if not os.path.exists(plugin_tool):
+ if not doCopy(
+ os.path.join(BUILD_PARAMETERS.pkgpacktools, "cordova_plugins"),
+ plugin_tool):
+ return False
+
+ orig_dir = os.getcwd()
+ os.chdir(pack_tool)
+ pack_cmd = "bin/create %s org.xwalk.%s %s" % (
+ app_name, app_name, app_name)
+ if not doCMD(pack_cmd, DEFAULT_CMD_TIMEOUT):
+ os.chdir(orig_dir)
+ return False
+
+ os.chdir(os.path.join(pack_tool, app_name))
+ plugin_dirs = os.listdir(plugin_tool)
+ for i_dir in plugin_dirs:
+ i_plugin_dir = os.path.join(plugin_tool, i_dir)
+ plugin_install_cmd = "plugman install --platform android --project " \
+ "./ --plugin %s" % i_plugin_dir
+ if not doCMD(plugin_install_cmd, DEFAULT_CMD_TIMEOUT):
+ os.chdir(orig_dir)
+ return False
+ os.chdir(pack_tool)
+
+ if not doCopy(app_src, os.path.join(pack_tool, app_name, "assets", "www")):
+ os.chdir(orig_dir)
+ return False
+ os.chdir(os.path.join(BUILD_ROOT, "cordova", app_name))
+ pack_cmd = "./cordova/build"
+ if not doCMD(pack_cmd, DEFAULT_CMD_TIMEOUT):
+ os.chdir(orig_dir)
+ return False
+
+ if not doCopy(os.path.join(
+ BUILD_ROOT, "cordova", app_name, "bin", "%s-debug.apk" %
+ app_name),
+ os.path.join(app_dest, "%s.apk" % app_name)):
+ os.chdir(orig_dir)
+ return False
+ os.chdir(orig_dir)
+ return True
+
+
+def packEmbeddingAPI(
+ build_json=None, app_src=None, app_dest=None, app_name=None):
+ app_name = app_name.replace("-", "_")
+
+ library_dir_name = safelyGetValue(build_json, "embeddingapi-library-name")
+ if not library_dir_name:
+ LOG.error("Fail to get embeddingapi-library-name ...")
+ return False
+
+ new_library_dir_name = "core_library"
+ pack_tool = os.path.join(app_src, "..", new_library_dir_name)
+
+ if os.path.exists(pack_tool):
+ if not doRemove([pack_tool]):
+ return False
+
+ if not doCopy(
+ os.path.join(BUILD_PARAMETERS.pkgpacktools, library_dir_name),
+ pack_tool):
+ return False
+
+ if os.path.exists(os.path.join(pack_tool, "bin", "res", "crunch")):
+ if not doRemove([os.path.join(pack_tool, "bin", "res", "crunch")]):
+ return False
+
+ orig_dir = os.getcwd()
+ android_project_path = os.path.join(app_src, "android-project")
+ try:
+ os.makedirs(android_project_path)
+ except Exception as e:
+ LOG.error("Fail to create tmp project dir: %s" % e)
+ return False
+
+ (return_code, output) = doCMDWithOutput("android list target")
+ api_level = ""
+ for line in output:
+ if "API level" in line:
+ api_level = line.split(":")[1].strip()
+ break
+ if not api_level:
+ LOG.error("Fail to get Android API Level")
+ os.chdir(orig_dir)
+ return False
+
+ android_project_cmd = "android create project --name %s --target " \
+ "android-%s --path %s --package com.%s " \
+ "--activity MainActivity" % (
+ app_name, api_level, android_project_path, app_name)
+ if not doCMD(android_project_cmd):
+ os.chdir(orig_dir)
+ return False
+
+ try:
+ update_file = open(
+ os.path.join(android_project_path, "project.properties"), "a+")
+ update_file.writelines(
+ "{0}\n".format(
+ "android.library.reference.1=../%s" %
+ new_library_dir_name))
+ update_file.close()
+ except Exception as e:
+ LOG.error(
+ "Fail to update %s: %s" %
+ (os.path.join(
+ android_project_path,
+ "project.properties"),
+ e))
+ os.chdir(orig_dir)
+ return False
+
+ if not doCopy(os.path.join(android_project_path, "build.xml"),
+ os.path.join(app_src, "build.xml")):
+ os.chdir(orig_dir)
+ return False
+
+ if not doCopy(
+ os.path.join(android_project_path, "project.properties"),
+ os.path.join(app_src, "project.properties")):
+ os.chdir(orig_dir)
+ return False
+
+ if not doCopy(
+ os.path.join(android_project_path, "local.properties"),
+ os.path.join(app_src, "local.properties")):
+ os.chdir(orig_dir)
+ return False
+
+ if not doCopy(
+ os.path.join(android_project_path, "local.properties"),
+ os.path.join(pack_tool, "local.properties")):
+ os.chdir(orig_dir)
+ return False
+
+ os.chdir(app_src)
+ if not doCMD("ant debug"):
+ os.chdir(orig_dir)
+ return False
+
+ if not doCopy(
+ os.path.join(app_src, "bin", "%s-debug.apk" % app_name),
+ os.path.join(app_dest, "%s.apk" % app_name)):
+ os.chdir(orig_dir)
+ return False
+ os.chdir(orig_dir)
+ return True
+
+
+def packAPP(build_json=None, app_src=None, app_dest=None, app_name=None):
+ LOG.info("Packing %s(%s)" % (app_name, app_src))
+ if not os.path.exists(app_dest):
+ try:
+ os.makedirs(app_dest)
+ except Exception as e:
+ LOG.error("Fail to init package install dest dir: %s" % e)
+ return False
+
+ if checkContains(BUILD_PARAMETERS.pkgtype, "XPK"):
+ if not packXPK(build_json, app_src, app_dest, app_name):
+ return False
+ elif checkContains(BUILD_PARAMETERS.pkgtype, "WGT"):
+ if not packWGT(build_json, app_src, app_dest, app_name):
+ return False
+ elif checkContains(BUILD_PARAMETERS.pkgtype, "APK"):
+ if not packAPK(build_json, app_src, app_dest, app_name):
+ return False
+ elif checkContains(BUILD_PARAMETERS.pkgtype, "CORDOVA"):
+ if not packCordova(build_json, app_src, app_dest, app_name):
+ return False
+ elif checkContains(BUILD_PARAMETERS.pkgtype, "EMBEDDINGAPI"):
+ if not packEmbeddingAPI(build_json, app_src, app_dest, app_name):
+ return False
+ else:
+ LOG.error("Got wrong pkg type: %s" % BUILD_PARAMETERS.pkgtype)
+ return False
+
+ LOG.info("Success to pack APP: %s" % app_name)
+ return True
+
+
+def createIndexFile(index_file_path=None, hosted_app=None):
+ try:
+ if hosted_app:
+ index_url = "http://127.0.0.1/opt/%s/webrunner/index.html?" \
+ "testsuite=../tests.xml&testprefix=../../.." % PKG_NAME
+ else:
+ index_url = "opt/%s/webrunner/index.html?testsuite=../tests.xml" \
+ "&testprefix=../../.." % PKG_NAME
+ html_content = "<!doctype html><head><meta http-equiv='Refresh' " \
+ "content='1; url=%s'></head>" % index_url
+ index_file = open(index_file_path, "w")
+ index_file.write(html_content)
+ index_file.close()
+ except Exception as e:
+ LOG.error("Fail to create index.html for top-app: %s" % e)
+ return False
+ LOG.info("Success to create index file %s" % index_file_path)
+ return True
+
+
+def buildSubAPP(app_dir=None, build_json=None, app_dest_default=None):
+ app_dir_inside = safelyGetValue(build_json, "app-dir")
+ if app_dir_inside:
+ app_dir = app_dir_inside
+ LOG.info("+Building sub APP(s) from %s ..." % app_dir)
+ app_dir = os.path.join(BUILD_ROOT_SRC, app_dir)
+ app_name = safelyGetValue(build_json, "app-name")
+ if not app_name:
+ app_name = os.path.basename(app_dir)
+
+ app_src = os.path.join(BUILD_ROOT_SRC_SUB_APP, app_name)
+ if buildSRC(app_dir, app_src, build_json):
+ app_dest = safelyGetValue(build_json, "install-path")
+ if app_dest:
+ app_dest = os.path.join(app_dest_default, app_dest)
+ else:
+ app_dest = app_dest_default
+
+ if safelyGetValue(build_json, "all-apps") == "true":
+ app_dirs = os.listdir(app_src)
+ apps_num = 0
+ for i_app_dir in app_dirs:
+ if os.path.isdir(os.path.join(app_src, i_app_dir)):
+ i_app_name = os.path.basename(i_app_dir)
+ if not packAPP(
+ build_json, os.path.join(app_src, i_app_name),
+ app_dest, i_app_name):
+ return False
+ else:
+ apps_num = apps_num + 1
+ if apps_num > 0:
+ LOG.info("Totally packed %d apps in %s" % (apps_num, app_dir))
+ return True
+ else:
+ return packAPP(build_json, app_src, app_dest, app_name)
+ return False
+
+
+def buildPKGAPP(build_json=None):
+ LOG.info("+Building package APP ...")
+ if not doCopy(os.path.join(BUILD_ROOT_SRC, "icon.png"),
+ os.path.join(BUILD_ROOT_SRC_PKG_APP, "icon.png")):
+ return False
+
+ if checkContains(BUILD_PARAMETERS.pkgtype, "XPK"):
+ if not doCopy(
+ os.path.join(BUILD_ROOT_SRC, "manifest.json"),
+ os.path.join(BUILD_ROOT_SRC_PKG_APP, "manifest.json")):
+ return False
+ elif checkContains(BUILD_PARAMETERS.pkgtype, "WGT"):
+ if not doCopy(os.path.join(BUILD_ROOT_SRC, "config.xml"),
+ os.path.join(BUILD_ROOT_SRC_PKG_APP, "config.xml")):
+ return False
+
+ hosted_app = False
+ if safelyGetValue(build_json, "hosted-app") == "true":
+ hosted_app = True
+ if not createIndexFile(
+ os.path.join(BUILD_ROOT_SRC_PKG_APP, "index.html"), hosted_app):
+ return False
+
+ if not hosted_app:
+ if "blacklist" not in build_json:
+ build_json.update({"blacklist": []})
+ build_json["blacklist"].extend(PKG_BLACK_LIST)
+ if not buildSRC(BUILD_ROOT_SRC, BUILD_ROOT_PKG_APP, build_json):
+ return False
+
+ if "subapp-list" in build_json:
+ for i_sub_app in build_json["subapp-list"].keys():
+ if not buildSubAPP(
+ i_sub_app, build_json["subapp-list"][i_sub_app],
+ BUILD_ROOT_PKG_APP):
+ return False
+
+ if not packAPP(
+ build_json, BUILD_ROOT_SRC_PKG_APP, BUILD_ROOT_PKG, PKG_NAME):
+ return False
+
+ return True
+
+
+def buildPKG(build_json=None):
+ if "blacklist" not in build_json:
+ build_json.update({"blacklist": []})
+ build_json["blacklist"].extend(PKG_BLACK_LIST)
+ if not buildSRC(BUILD_ROOT_SRC, BUILD_ROOT_PKG, build_json):
+ return False
+
+ if "subapp-list" in build_json:
+ for i_sub_app in build_json["subapp-list"].keys():
+ if not buildSubAPP(
+ i_sub_app, build_json["subapp-list"][i_sub_app],
+ BUILD_ROOT_PKG):
+ return False
+
+ if "pkg-app" in build_json:
+ if not buildPKGAPP(build_json["pkg-app"]):
+ return False
+
+ return True
+
+
+def main():
+ global LOG
+ LOG = logging.getLogger("pack-tool")
+ LOG.setLevel(LOG_LEVEL)
+ stream_handler = logging.StreamHandler()
+ stream_handler.setLevel(LOG_LEVEL)
+ stream_formatter = ColorFormatter("[%(asctime)s] %(message)s")
+ stream_handler.setFormatter(stream_formatter)
+ LOG.addHandler(stream_handler)
+
+ try:
+ usage = "Usage: ./pack.py -t apk -m shared -a x86"
+ opts_parser = OptionParser(usage=usage)
+ opts_parser.add_option(
+ "-c",
+ "--cfg",
+ dest="pkgcfg",
+ help="specify the path of config json file")
+ opts_parser.add_option(
+ "-t",
+ "--type",
+ dest="pkgtype",
+ help="specify the pkg type, e.g. apk, xpk, wgt ...")
+ opts_parser.add_option(
+ "-m",
+ "--mode",
+ dest="pkgmode",
+ help="specify the apk mode, e.g. shared, embedded")
+ opts_parser.add_option(
+ "-a",
+ "--arch",
+ dest="pkgarch",
+ help="specify the apk arch, e.g. x86, arm")
+ opts_parser.add_option(
+ "-d",
+ "--dest",
+ dest="destdir",
+ help="specify the installation folder for packed package")
+ opts_parser.add_option(
+ "-s",
+ "--src",
+ dest="srcdir",
+ help="specify the path of pkg resource for packing")
+ opts_parser.add_option(
+ "--tools",
+ dest="pkgpacktools",
+ help="specify the parent folder of pack tools")
+ opts_parser.add_option(
+ "--notclean",
+ dest="bnotclean",
+ action="store_true",
+ help="disable the build root clean after the packing")
+ opts_parser.add_option(
+ "--sign",
+ dest="signature",
+ action="store_true",
+ help="signature operation will be done when packing wgt")
+ opts_parser.add_option(
+ "-v",
+ "--version",
+ dest="bversion",
+ action="store_true",
+ help="show this tool's version")
+ opts_parser.add_option(
+ "--pkg-version",
+ dest="pkgversion",
+ help="specify the pkg version, e.g. 0.0.0.1")
+
+ if len(sys.argv) == 1:
+ sys.argv.append("-h")
+
+ global BUILD_PARAMETERS
+ (BUILD_PARAMETERS, args) = opts_parser.parse_args()
+ except Exception as e:
+ LOG.error("Got wrong options: %s, exit ..." % e)
+ sys.exit(1)
+
+ if BUILD_PARAMETERS.bversion:
+ print "Version: %s" % TOOL_VERSION
+ sys.exit(0)
+
+ if not BUILD_PARAMETERS.srcdir:
+ BUILD_PARAMETERS.srcdir = os.getcwd()
+ BUILD_PARAMETERS.srcdir = os.path.expanduser(BUILD_PARAMETERS.srcdir)
+
+ if not os.path.exists(
+ os.path.join(BUILD_PARAMETERS.srcdir, "..", "..", VERSION_FILE)):
+ if not os.path.exists(
+ os.path.join(BUILD_PARAMETERS.srcdir, "..", VERSION_FILE)):
+ if not os.path.exists(
+ os.path.join(BUILD_PARAMETERS.srcdir, VERSION_FILE)):
+ LOG.info(
+ "Not found pkg version file, try to use option --pkg-version")
+ pkg_version_file_path = None
+ else:
+ pkg_version_file_path = os.path.join(
+ BUILD_PARAMETERS.srcdir, VERSION_FILE)
+ else:
+ pkg_version_file_path = os.path.join(
+ BUILD_PARAMETERS.srcdir, "..", VERSION_FILE)
+ else:
+ pkg_version_file_path = os.path.join(
+ BUILD_PARAMETERS.srcdir, "..", "..", VERSION_FILE)
+
+ try:
+ pkg_main_version = 0
+ pkg_release_version = 0
+ if BUILD_PARAMETERS.pkgversion:
+ LOG.info("Using %s as pkg version " % BUILD_PARAMETERS.pkgversion)
+ pkg_main_version = BUILD_PARAMETERS.pkgversion
+ else:
+ if pkg_version_file_path is not None:
+ LOG.info("Using pkg version file: %s" % pkg_version_file_path)
+ with open(pkg_version_file_path, "rt") as pkg_version_file:
+ pkg_version_raw = pkg_version_file.read()
+ pkg_version_file.close()
+ pkg_version_json = json.loads(pkg_version_raw)
+ pkg_main_version = pkg_version_json["main-version"]
+ pkg_release_version = pkg_version_json["release-version"]
+ except Exception as e:
+ LOG.error("Fail to read pkg version file: %s, exit ..." % e)
+ sys.exit(1)
+
+ if not BUILD_PARAMETERS.pkgtype:
+ LOG.error("No pkg type provided, exit ...")
+ sys.exit(1)
+ elif not BUILD_PARAMETERS.pkgtype in PKG_TYPES:
+ LOG.error("Wrong pkg type, only support: %s, exit ..." %
+ PKG_TYPES)
+ sys.exit(1)
+
+ if BUILD_PARAMETERS.pkgtype == "apk" or \
+ BUILD_PARAMETERS.pkgtype == "apk-aio":
+ if not BUILD_PARAMETERS.pkgmode:
+ LOG.error("No pkg mode option provided, exit ...")
+ sys.exit(1)
+ elif not BUILD_PARAMETERS.pkgmode in PKG_MODES:
+ LOG.error(
+ "Wrong pkg mode option provided, only support:%s, exit ..." %
+ PKG_MODES)
+ sys.exit(1)
+
+ if not BUILD_PARAMETERS.pkgarch:
+ LOG.error("No pkg arch option provided, exit ...")
+ sys.exit(1)
+ elif not BUILD_PARAMETERS.pkgarch in PKG_ARCHS:
+ LOG.error(
+ "Wrong pkg arch option provided, only support:%s, exit ..." %
+ PKG_ARCHS)
+ sys.exit(1)
+
+ if BUILD_PARAMETERS.pkgtype == "apk-aio" or \
+ BUILD_PARAMETERS.pkgtype == "cordova-aio":
+ if not BUILD_PARAMETERS.destdir or not os.path.exists(
+ BUILD_PARAMETERS.destdir):
+ LOG.error("No all-in-one installation dest dir found, exit ...")
+ sys.exit(1)
+
+ elif not BUILD_PARAMETERS.destdir:
+ BUILD_PARAMETERS.destdir = BUILD_PARAMETERS.srcdir
+ BUILD_PARAMETERS.destdir = os.path.expanduser(BUILD_PARAMETERS.destdir)
+
+ if not BUILD_PARAMETERS.pkgpacktools:
+ BUILD_PARAMETERS.pkgpacktools = os.path.join(
+ BUILD_PARAMETERS.srcdir, "..", "..", "tools")
+ BUILD_PARAMETERS.pkgpacktools = os.path.expanduser(
+ BUILD_PARAMETERS.pkgpacktools)
+
+ config_json = None
+ if BUILD_PARAMETERS.pkgcfg:
+ config_json_file_path = BUILD_PARAMETERS.pkgcfg
+ else:
+ config_json_file_path = os.path.join(
+ BUILD_PARAMETERS.srcdir, "suite.json")
+ try:
+ LOG.info("Using config json file: %s" % config_json_file_path)
+ with open(config_json_file_path, "rt") as config_json_file:
+ config_raw = config_json_file.read()
+ config_json_file.close()
+ config_json = json.loads(config_raw)
+ except Exception as e:
+ LOG.error("Fail to read config json file: %s, exit ..." % e)
+ sys.exit(1)
+
+ global PKG_NAME
+ PKG_NAME = safelyGetValue(config_json, "pkg-name")
+ if not PKG_NAME:
+ PKG_NAME = os.path.basename(BUILD_PARAMETERS.srcdir)
+ LOG.warning(
+ "Fail to read pkg name from json, "
+ "using src dir name as pkg name ...")
+
+ LOG.info("================= %s (%s-%s) ================" %
+ (PKG_NAME, pkg_main_version, pkg_release_version))
+
+ if not safelyGetValue(config_json, "pkg-list"):
+ LOG.error("Fail to read pkg-list, exit ...")
+ sys.exit(1)
+
+ pkg_json = None
+ for i_pkg in config_json["pkg-list"].keys():
+ i_pkg_list = i_pkg.replace(" ", "").split(",")
+ if BUILD_PARAMETERS.pkgtype in i_pkg_list:
+ pkg_json = config_json["pkg-list"][i_pkg]
+
+ if not pkg_json:
+ LOG.error("Fail to read pkg json, exit ...")
+ sys.exit(1)
+
+ if not prepareBuildRoot():
+ exitHandler(1)
+
+ if "pkg-blacklist" in config_json:
+ PKG_BLACK_LIST.extend(config_json["pkg-blacklist"])
+
+ if not buildPKG(pkg_json):
+ exitHandler(1)
+
+ LOG.info("+Building package ...")
+ if BUILD_PARAMETERS.pkgtype == "apk-aio" or \
+ BUILD_PARAMETERS.pkgtype == "cordova-aio":
+ pkg_file_list = os.listdir(os.path.join(BUILD_ROOT, "pkg"))
+ for i_file in pkg_file_list:
+ if not doCopy(
+ os.path.join(BUILD_ROOT, "pkg", i_file),
+ os.path.join(BUILD_PARAMETERS.destdir, i_file)):
+ exitHandler(1)
+ else:
+ pkg_file = os.path.join(
+ BUILD_PARAMETERS.destdir,
+ "%s-%s.%s.zip" %
+ (PKG_NAME,
+ pkg_main_version,
+ pkg_release_version))
+
+
+ if not zipDir(os.path.join(BUILD_ROOT, "pkg"), pkg_file):
+ exitHandler(1)
+
+if __name__ == "__main__":
+ main()
+ exitHandler(0)
--- /dev/null
+The testharness files come from
+https://github.com/w3c/testharness.js (commit 2486f01bf4c58de1c1b7cb39322af7b55c6c700b)
+without any modification.
+
+These tests are copyright by W3C and/or the author listed in the test
+file. The tests are dual-licensed under the W3C Test Suite License:
+http://www.w3.org/Consortium/Legal/2008/04-testsuite-license
+and the BSD 3-clause License:
+http://www.w3.org/Consortium/Legal/2008/03-bsd-license
+under W3C's test suite licensing policy:
+http://www.w3.org/Consortium/Legal/2008/04-testsuite-copyright
+
--- /dev/null
+html {
+ font-family:DejaVu Sans, Bitstream Vera Sans, Arial, Sans;
+}
+
+#log .warning,
+#log .warning a {
+ color: black;
+ background: yellow;
+}
+
+#log .error,
+#log .error a {
+ color: white;
+ background: red;
+}
+
+#log pre {
+ border: 1px solid black;
+ padding: 1em;
+}
+
+section#summary {
+ margin-bottom:1em;
+}
+
+table#results {
+ border-collapse:collapse;
+ table-layout:fixed;
+ width:100%;
+}
+
+table#results th:first-child,
+table#results td:first-child {
+ width:4em;
+}
+
+table#results th:last-child,
+table#results td:last-child {
+ width:50%;
+}
+
+table#results.assertions th:last-child,
+table#results.assertions td:last-child {
+ width:35%;
+}
+
+table#results th {
+ padding:0;
+ padding-bottom:0.5em;
+ border-bottom:medium solid black;
+}
+
+table#results td {
+ padding:1em;
+ padding-bottom:0.5em;
+ border-bottom:thin solid black;
+}
+
+tr.pass > td:first-child {
+ color:green;
+}
+
+tr.fail > td:first-child {
+ color:red;
+}
+
+tr.timeout > td:first-child {
+ color:red;
+}
+
+tr.notrun > td:first-child {
+ color:blue;
+}
+
+.pass > td:first-child, .fail > td:first-child, .timeout > td:first-child, .notrun > td:first-child {
+ font-variant:small-caps;
+}
+
+table#results span {
+ display:block;
+}
+
+table#results span.expected {
+ font-family:DejaVu Sans Mono, Bitstream Vera Sans Mono, Monospace;
+ white-space:pre;
+}
+
+table#results span.actual {
+ font-family:DejaVu Sans Mono, Bitstream Vera Sans Mono, Monospace;
+ white-space:pre;
+}
+
+span.ok {
+ color:green;
+}
+
+tr.error {
+ color:red;
+}
+
+span.timeout {
+ color:red;
+}
+
+span.ok, span.timeout, span.error {
+ font-variant:small-caps;
+}
\ No newline at end of file
--- /dev/null
+/*global self*/
+/*jshint latedef: nofunc*/
+/*
+Distributed under both the W3C Test Suite License [1] and the W3C
+3-clause BSD License [2]. To contribute to a W3C Test Suite, see the
+policies and contribution forms [3].
+
+[1] http://www.w3.org/Consortium/Legal/2008/04-testsuite-license
+[2] http://www.w3.org/Consortium/Legal/2008/03-bsd-license
+[3] http://www.w3.org/2004/10/27-testcases
+*/
+
+/* Documentation is in docs/api.md */
+
+(function ()
+{
+ var debug = false;
+ // default timeout is 10 seconds, test can override if needed
+ var settings = {
+ output:true,
+ harness_timeout:{
+ "normal":3600000,
+ "long":3600000
+ },
+ test_timeout:null
+ };
+
+ var xhtml_ns = "http://www.w3.org/1999/xhtml";
+
+ /*
+ * TestEnvironment is an abstraction for the environment in which the test
+ * harness is used. Each implementation of a test environment has to provide
+ * the following interface:
+ *
+ * interface TestEnvironment {
+ * // Invoked after the global 'tests' object has been created and it's
+ * // safe to call add_*_callback() to register event handlers.
+ * void on_tests_ready();
+ *
+ * // Invoked after setup() has been called to notify the test environment
+ * // of changes to the test harness properties.
+ * void on_new_harness_properties(object properties);
+ *
+ * // Should return a new unique default test name.
+ * DOMString next_default_test_name();
+ *
+ * // Should return the test harness timeout duration in milliseconds.
+ * float test_timeout();
+ *
+ * // Should return the global scope object.
+ * object global_scope();
+ * };
+ */
+
+ /*
+ * A test environment with a DOM. The global object is 'window'. By default
+ * test results are displayed in a table. Any parent windows receive
+ * callbacks or messages via postMessage() when test events occur. See
+ * apisample11.html and apisample12.html.
+ */
+ function WindowTestEnvironment() {
+ this.name_counter = 0;
+ this.window_cache = null;
+ this.output_handler = null;
+ this.all_loaded = false;
+ var this_obj = this;
+ on_event(window, 'load', function() {
+ this_obj.all_loaded = true;
+ });
+ }
+
+ WindowTestEnvironment.prototype._dispatch = function(selector, callback_args, message_arg) {
+ this._forEach_windows(
+ function(w, is_same_origin) {
+ if (is_same_origin && selector in w) {
+ try {
+ w[selector].apply(undefined, callback_args);
+ } catch (e) {
+ if (debug) {
+ throw e;
+ }
+ }
+ }
+ if (supports_post_message(w) && w !== self) {
+ w.postMessage(message_arg, "*");
+ }
+ });
+ };
+
+ WindowTestEnvironment.prototype._forEach_windows = function(callback) {
+ // Iterate of the the windows [self ... top, opener]. The callback is passed
+ // two objects, the first one is the windows object itself, the second one
+ // is a boolean indicating whether or not its on the same origin as the
+ // current window.
+ var cache = this.window_cache;
+ if (!cache) {
+ cache = [[self, true]];
+ var w = self;
+ var i = 0;
+ var so;
+ var origins = location.ancestorOrigins;
+ while (w != w.parent) {
+ w = w.parent;
+ // In WebKit, calls to parent windows' properties that aren't on the same
+ // origin cause an error message to be displayed in the error console but
+ // don't throw an exception. This is a deviation from the current HTML5
+ // spec. See: https://bugs.webkit.org/show_bug.cgi?id=43504
+ // The problem with WebKit's behavior is that it pollutes the error console
+ // with error messages that can't be caught.
+ //
+ // This issue can be mitigated by relying on the (for now) proprietary
+ // `location.ancestorOrigins` property which returns an ordered list of
+ // the origins of enclosing windows. See:
+ // http://trac.webkit.org/changeset/113945.
+ if (origins) {
+ so = (location.origin == origins[i]);
+ } else {
+ so = is_same_origin(w);
+ }
+ cache.push([w, so]);
+ i++;
+ }
+ w = window.opener;
+ if (w) {
+ // window.opener isn't included in the `location.ancestorOrigins` prop.
+ // We'll just have to deal with a simple check and an error msg on WebKit
+ // browsers in this case.
+ cache.push([w, is_same_origin(w)]);
+ }
+ this.window_cache = cache;
+ }
+
+ forEach(cache,
+ function(a) {
+ callback.apply(null, a);
+ });
+ };
+
+ WindowTestEnvironment.prototype.on_tests_ready = function() {
+ var output = new Output();
+ this.output_handler = output;
+
+ var this_obj = this;
+ add_start_callback(function (properties) {
+ this_obj.output_handler.init(properties);
+ this_obj._dispatch("start_callback", [properties],
+ { type: "start", properties: properties });
+ });
+ add_test_state_callback(function(test) {
+ this_obj.output_handler.show_status();
+ this_obj._dispatch("test_state_callback", [test],
+ { type: "test_state", test: test.structured_clone() });
+ });
+ add_result_callback(function (test) {
+ this_obj.output_handler.show_status();
+ this_obj._dispatch("result_callback", [test],
+ { type: "result", test: test.structured_clone() });
+ });
+ add_completion_callback(function (tests, harness_status) {
+ this_obj.output_handler.show_results(tests, harness_status);
+ var cloned_tests = map(tests, function(test) { return test.structured_clone(); });
+ this_obj._dispatch("completion_callback", [tests, harness_status],
+ { type: "complete", tests: cloned_tests,
+ status: harness_status.structured_clone() });
+ });
+ };
+
+ WindowTestEnvironment.prototype.next_default_test_name = function() {
+ //Don't use document.title to work around an Opera bug in XHTML documents
+ var title = document.getElementsByTagName("title")[0];
+ var prefix = (title && title.firstChild && title.firstChild.data) || "Untitled";
+ var suffix = this.name_counter > 0 ? " " + this.name_counter : "";
+ this.name_counter++;
+ return prefix + suffix;
+ };
+
+ WindowTestEnvironment.prototype.on_new_harness_properties = function(properties) {
+ this.output_handler.setup(properties);
+ };
+
+ WindowTestEnvironment.prototype.add_on_loaded_callback = function(callback) {
+ on_event(window, 'load', callback);
+ };
+
+ WindowTestEnvironment.prototype.test_timeout = function() {
+ var metas = document.getElementsByTagName("meta");
+ for (var i = 0; i < metas.length; i++) {
+ if (metas[i].name == "timeout") {
+ if (metas[i].content == "long") {
+ return settings.harness_timeout.long;
+ }
+ break;
+ }
+ }
+ return settings.harness_timeout.normal;
+ };
+
+ WindowTestEnvironment.prototype.global_scope = function() {
+ return window;
+ };
+
+ /*
+ * Base TestEnvironment implementation for a generic web worker.
+ *
+ * Workers accumulate test results. One or more clients can connect and
+ * retrieve results from a worker at any time.
+ *
+ * WorkerTestEnvironment supports communicating with a client via a
+ * MessagePort. The mechanism for determining the appropriate MessagePort
+ * for communicating with a client depends on the type of worker and is
+ * implemented by the various specializations of WorkerTestEnvironment
+ * below.
+ *
+ * A client document using testharness can use fetch_tests_from_worker() to
+ * retrieve results from a worker. See apisample16.html.
+ */
+ function WorkerTestEnvironment() {
+ this.name_counter = 0;
+ this.all_loaded = true;
+ this.message_list = [];
+ this.message_ports = [];
+ }
+
+ WorkerTestEnvironment.prototype._dispatch = function(message) {
+ this.message_list.push(message);
+ for (var i = 0; i < this.message_ports.length; ++i)
+ {
+ this.message_ports[i].postMessage(message);
+ }
+ };
+
+ // The only requirement is that port has a postMessage() method. It doesn't
+ // have to be an instance of a MessagePort, and often isn't.
+ WorkerTestEnvironment.prototype._add_message_port = function(port) {
+ this.message_ports.push(port);
+ for (var i = 0; i < this.message_list.length; ++i)
+ {
+ port.postMessage(this.message_list[i]);
+ }
+ };
+
+ WorkerTestEnvironment.prototype.next_default_test_name = function() {
+ var suffix = this.name_counter > 0 ? " " + this.name_counter : "";
+ this.name_counter++;
+ return "Untitled" + suffix;
+ };
+
+ WorkerTestEnvironment.prototype.on_new_harness_properties = function() {};
+
+ WorkerTestEnvironment.prototype.on_tests_ready = function() {
+ var this_obj = this;
+ add_start_callback(
+ function(properties) {
+ this_obj._dispatch({
+ type: "start",
+ properties: properties,
+ });
+ });
+ add_test_state_callback(
+ function(test) {
+ this_obj._dispatch({
+ type: "test_state",
+ test: test.structured_clone()
+ });
+ });
+ add_result_callback(
+ function(test) {
+ this_obj._dispatch({
+ type: "result",
+ test: test.structured_clone()
+ });
+ });
+ add_completion_callback(
+ function(tests, harness_status) {
+ this_obj._dispatch({
+ type: "complete",
+ tests: map(tests,
+ function(test) {
+ return test.structured_clone();
+ }),
+ status: harness_status.structured_clone()
+ });
+ });
+ };
+
+ WorkerTestEnvironment.prototype.add_on_loaded_callback = function() {};
+
+ WorkerTestEnvironment.prototype.test_timeout = function() {
+ // Tests running in a worker don't have a default timeout. I.e. all
+ // worker tests behave as if settings.explicit_timeout is true.
+ return null;
+ };
+
+ WorkerTestEnvironment.prototype.global_scope = function() {
+ return self;
+ };
+
+ /*
+ * Dedicated web workers.
+ * https://html.spec.whatwg.org/multipage/workers.html#dedicatedworkerglobalscope
+ *
+ * This class is used as the test_environment when testharness is running
+ * inside a dedicated worker.
+ */
+ function DedicatedWorkerTestEnvironment() {
+ WorkerTestEnvironment.call(this);
+ // self is an instance of DedicatedWorkerGlobalScope which exposes
+ // a postMessage() method for communicating via the message channel
+ // established when the worker is created.
+ this._add_message_port(self);
+ }
+ DedicatedWorkerTestEnvironment.prototype = Object.create(WorkerTestEnvironment.prototype);
+
+ DedicatedWorkerTestEnvironment.prototype.on_tests_ready = function() {
+ WorkerTestEnvironment.prototype.on_tests_ready.call(this);
+ // In the absence of an onload notification, we a require dedicated
+ // workers to explicitly signal when the tests are done.
+ tests.wait_for_finish = true;
+ };
+
+ /*
+ * Shared web workers.
+ * https://html.spec.whatwg.org/multipage/workers.html#sharedworkerglobalscope
+ *
+ * This class is used as the test_environment when testharness is running
+ * inside a shared web worker.
+ */
+ function SharedWorkerTestEnvironment() {
+ WorkerTestEnvironment.call(this);
+ var this_obj = this;
+ // Shared workers receive message ports via the 'onconnect' event for
+ // each connection.
+ self.addEventListener("connect",
+ function(message_event) {
+ this_obj._add_message_port(message_event.source);
+ });
+ }
+ SharedWorkerTestEnvironment.prototype = Object.create(WorkerTestEnvironment.prototype);
+
+ SharedWorkerTestEnvironment.prototype.on_tests_ready = function() {
+ WorkerTestEnvironment.prototype.on_tests_ready.call(this);
+ // In the absence of an onload notification, we a require shared
+ // workers to explicitly signal when the tests are done.
+ tests.wait_for_finish = true;
+ };
+
+ /*
+ * Service workers.
+ * http://www.w3.org/TR/service-workers/
+ *
+ * This class is used as the test_environment when testharness is running
+ * inside a service worker.
+ */
+ function ServiceWorkerTestEnvironment() {
+ WorkerTestEnvironment.call(this);
+ this.all_loaded = false;
+ this.on_loaded_callback = null;
+ var this_obj = this;
+ self.addEventListener("message",
+ function(event) {
+ if (event.data.type && event.data.type === "connect") {
+ this_obj._add_message_port(event.ports[0]);
+ event.ports[0].start();
+ }
+ });
+
+ // The oninstall event is received after the service worker script and
+ // all imported scripts have been fetched and executed. It's the
+ // equivalent of an onload event for a document. All tests should have
+ // been added by the time this event is received, thus it's not
+ // necessary to wait until the onactivate event.
+ on_event(self, "install",
+ function(event) {
+ this_obj.all_loaded = true;
+ if (this_obj.on_loaded_callback) {
+ this_obj.on_loaded_callback();
+ }
+ });
+ }
+ ServiceWorkerTestEnvironment.prototype = Object.create(WorkerTestEnvironment.prototype);
+
+ ServiceWorkerTestEnvironment.prototype.add_on_loaded_callback = function(callback) {
+ if (this.all_loaded) {
+ callback();
+ } else {
+ this.on_loaded_callback = callback;
+ }
+ };
+
+ function create_test_environment() {
+ if ('document' in self) {
+ return new WindowTestEnvironment();
+ }
+ if ('DedicatedWorkerGlobalScope' in self &&
+ self instanceof DedicatedWorkerGlobalScope) {
+ return new DedicatedWorkerTestEnvironment();
+ }
+ if ('SharedWorkerGlobalScope' in self &&
+ self instanceof SharedWorkerGlobalScope) {
+ return new SharedWorkerTestEnvironment();
+ }
+ if ('ServiceWorkerGlobalScope' in self &&
+ self instanceof ServiceWorkerGlobalScope) {
+ return new ServiceWorkerTestEnvironment();
+ }
+ throw new Error("Unsupported test environment");
+ }
+
+ var test_environment = create_test_environment();
+
+ function is_shared_worker(worker) {
+ return 'SharedWorker' in self && worker instanceof SharedWorker;
+ }
+
+ function is_service_worker(worker) {
+ return 'ServiceWorker' in self && worker instanceof ServiceWorker;
+ }
+
+ /*
+ * API functions
+ */
+
+ function test(func, name, properties)
+ {
+ var test_name = name ? name : test_environment.next_default_test_name();
+ properties = properties ? properties : {};
+ var test_obj = new Test(test_name, properties);
+ test_obj.step(func, test_obj, test_obj);
+ if (test_obj.phase === test_obj.phases.STARTED) {
+ test_obj.done();
+ }
+ }
+
+ function async_test(func, name, properties)
+ {
+ if (typeof func !== "function") {
+ properties = name;
+ name = func;
+ func = null;
+ }
+ var test_name = name ? name : test_environment.next_default_test_name();
+ properties = properties ? properties : {};
+ var test_obj = new Test(test_name, properties);
+ if (func) {
+ test_obj.step(func, test_obj, test_obj);
+ }
+ return test_obj;
+ }
+
+ function promise_test(func, name, properties) {
+ var test = async_test(name, properties);
+ Promise.resolve(test.step(func, test, test))
+ .then(
+ function() {
+ test.done();
+ })
+ .catch(test.step_func(
+ function(value) {
+ if (value instanceof AssertionError) {
+ throw value;
+ }
+ assert(false, "promise_test", null,
+ "Unhandled rejection with value: ${value}", {value:value});
+ }));
+ }
+
+ function setup(func_or_properties, maybe_properties)
+ {
+ var func = null;
+ var properties = {};
+ if (arguments.length === 2) {
+ func = func_or_properties;
+ properties = maybe_properties;
+ } else if (func_or_properties instanceof Function) {
+ func = func_or_properties;
+ } else {
+ properties = func_or_properties;
+ }
+ tests.setup(func, properties);
+ test_environment.on_new_harness_properties(properties);
+ }
+
+ function done() {
+ if (tests.tests.length === 0) {
+ tests.set_file_is_test();
+ }
+ if (tests.file_is_test) {
+ tests.tests[0].done();
+ }
+ tests.end_wait();
+ }
+
+ function generate_tests(func, args, properties) {
+ forEach(args, function(x, i)
+ {
+ var name = x[0];
+ test(function()
+ {
+ func.apply(this, x.slice(1));
+ },
+ name,
+ Array.isArray(properties) ? properties[i] : properties);
+ });
+ }
+
+ function on_event(object, event, callback)
+ {
+ object.addEventListener(event, callback, false);
+ }
+
+ expose(test, 'test');
+ expose(async_test, 'async_test');
+ expose(promise_test, 'promise_test');
+ expose(generate_tests, 'generate_tests');
+ expose(setup, 'setup');
+ expose(done, 'done');
+ expose(on_event, 'on_event');
+
+ /*
+ * Return a string truncated to the given length, with ... added at the end
+ * if it was longer.
+ */
+ function truncate(s, len)
+ {
+ if (s.length > len) {
+ return s.substring(0, len - 3) + "...";
+ }
+ return s;
+ }
+
+ /*
+ * Return true if object is probably a Node object.
+ */
+ function is_node(object)
+ {
+ // I use duck-typing instead of instanceof, because
+ // instanceof doesn't work if the node is from another window (like an
+ // iframe's contentWindow):
+ // http://www.w3.org/Bugs/Public/show_bug.cgi?id=12295
+ if ("nodeType" in object &&
+ "nodeName" in object &&
+ "nodeValue" in object &&
+ "childNodes" in object) {
+ try {
+ object.nodeType;
+ } catch (e) {
+ // The object is probably Node.prototype or another prototype
+ // object that inherits from it, and not a Node instance.
+ return false;
+ }
+ return true;
+ }
+ return false;
+ }
+
+ /*
+ * Convert a value to a nice, human-readable string
+ */
+ function format_value(val, seen)
+ {
+ if (!seen) {
+ seen = [];
+ }
+ if (typeof val === "object" && val !== null) {
+ if (seen.indexOf(val) >= 0) {
+ return "[...]";
+ }
+ seen.push(val);
+ }
+ if (Array.isArray(val)) {
+ return "[" + val.map(function(x) {return format_value(x, seen);}).join(", ") + "]";
+ }
+
+ switch (typeof val) {
+ case "string":
+ val = val.replace("\\", "\\\\");
+ for (var i = 0; i < 32; i++) {
+ var replace = "\\";
+ switch (i) {
+ case 0: replace += "0"; break;
+ case 1: replace += "x01"; break;
+ case 2: replace += "x02"; break;
+ case 3: replace += "x03"; break;
+ case 4: replace += "x04"; break;
+ case 5: replace += "x05"; break;
+ case 6: replace += "x06"; break;
+ case 7: replace += "x07"; break;
+ case 8: replace += "b"; break;
+ case 9: replace += "t"; break;
+ case 10: replace += "n"; break;
+ case 11: replace += "v"; break;
+ case 12: replace += "f"; break;
+ case 13: replace += "r"; break;
+ case 14: replace += "x0e"; break;
+ case 15: replace += "x0f"; break;
+ case 16: replace += "x10"; break;
+ case 17: replace += "x11"; break;
+ case 18: replace += "x12"; break;
+ case 19: replace += "x13"; break;
+ case 20: replace += "x14"; break;
+ case 21: replace += "x15"; break;
+ case 22: replace += "x16"; break;
+ case 23: replace += "x17"; break;
+ case 24: replace += "x18"; break;
+ case 25: replace += "x19"; break;
+ case 26: replace += "x1a"; break;
+ case 27: replace += "x1b"; break;
+ case 28: replace += "x1c"; break;
+ case 29: replace += "x1d"; break;
+ case 30: replace += "x1e"; break;
+ case 31: replace += "x1f"; break;
+ }
+ val = val.replace(RegExp(String.fromCharCode(i), "g"), replace);
+ }
+ return '"' + val.replace(/"/g, '\\"') + '"';
+ case "boolean":
+ case "undefined":
+ return String(val);
+ case "number":
+ // In JavaScript, -0 === 0 and String(-0) == "0", so we have to
+ // special-case.
+ if (val === -0 && 1/val === -Infinity) {
+ return "-0";
+ }
+ return String(val);
+ case "object":
+ if (val === null) {
+ return "null";
+ }
+
+ // Special-case Node objects, since those come up a lot in my tests. I
+ // ignore namespaces.
+ if (is_node(val)) {
+ switch (val.nodeType) {
+ case Node.ELEMENT_NODE:
+ var ret = "<" + val.localName;
+ for (var i = 0; i < val.attributes.length; i++) {
+ ret += " " + val.attributes[i].name + '="' + val.attributes[i].value + '"';
+ }
+ ret += ">" + val.innerHTML + "</" + val.localName + ">";
+ return "Element node " + truncate(ret, 60);
+ case Node.TEXT_NODE:
+ return 'Text node "' + truncate(val.data, 60) + '"';
+ case Node.PROCESSING_INSTRUCTION_NODE:
+ return "ProcessingInstruction node with target " + format_value(truncate(val.target, 60)) + " and data " + format_value(truncate(val.data, 60));
+ case Node.COMMENT_NODE:
+ return "Comment node <!--" + truncate(val.data, 60) + "-->";
+ case Node.DOCUMENT_NODE:
+ return "Document node with " + val.childNodes.length + (val.childNodes.length == 1 ? " child" : " children");
+ case Node.DOCUMENT_TYPE_NODE:
+ return "DocumentType node";
+ case Node.DOCUMENT_FRAGMENT_NODE:
+ return "DocumentFragment node with " + val.childNodes.length + (val.childNodes.length == 1 ? " child" : " children");
+ default:
+ return "Node object of unknown type";
+ }
+ }
+
+ /* falls through */
+ default:
+ return typeof val + ' "' + truncate(String(val), 60) + '"';
+ }
+ }
+ expose(format_value, "format_value");
+
+ /*
+ * Assertions
+ */
+
+ function assert_true(actual, description)
+ {
+ assert(actual === true, "assert_true", description,
+ "expected true got ${actual}", {actual:actual});
+ }
+ expose(assert_true, "assert_true");
+
+ function assert_false(actual, description)
+ {
+ assert(actual === false, "assert_false", description,
+ "expected false got ${actual}", {actual:actual});
+ }
+ expose(assert_false, "assert_false");
+
+ function same_value(x, y) {
+ if (y !== y) {
+ //NaN case
+ return x !== x;
+ }
+ if (x === 0 && y === 0) {
+ //Distinguish +0 and -0
+ return 1/x === 1/y;
+ }
+ return x === y;
+ }
+
+ function assert_equals(actual, expected, description)
+ {
+ /*
+ * Test if two primitives are equal or two objects
+ * are the same object
+ */
+ if (typeof actual != typeof expected) {
+ assert(false, "assert_equals", description,
+ "expected (" + typeof expected + ") ${expected} but got (" + typeof actual + ") ${actual}",
+ {expected:expected, actual:actual});
+ return;
+ }
+ assert(same_value(actual, expected), "assert_equals", description,
+ "expected ${expected} but got ${actual}",
+ {expected:expected, actual:actual});
+ }
+ expose(assert_equals, "assert_equals");
+
+ function assert_not_equals(actual, expected, description)
+ {
+ /*
+ * Test if two primitives are unequal or two objects
+ * are different objects
+ */
+ assert(!same_value(actual, expected), "assert_not_equals", description,
+ "got disallowed value ${actual}",
+ {actual:actual});
+ }
+ expose(assert_not_equals, "assert_not_equals");
+
+ function assert_in_array(actual, expected, description)
+ {
+ assert(expected.indexOf(actual) != -1, "assert_in_array", description,
+ "value ${actual} not in array ${expected}",
+ {actual:actual, expected:expected});
+ }
+ expose(assert_in_array, "assert_in_array");
+
+ function assert_object_equals(actual, expected, description)
+ {
+ //This needs to be improved a great deal
+ function check_equal(actual, expected, stack)
+ {
+ stack.push(actual);
+
+ var p;
+ for (p in actual) {
+ assert(expected.hasOwnProperty(p), "assert_object_equals", description,
+ "unexpected property ${p}", {p:p});
+
+ if (typeof actual[p] === "object" && actual[p] !== null) {
+ if (stack.indexOf(actual[p]) === -1) {
+ check_equal(actual[p], expected[p], stack);
+ }
+ } else {
+ assert(same_value(actual[p], expected[p]), "assert_object_equals", description,
+ "property ${p} expected ${expected} got ${actual}",
+ {p:p, expected:expected, actual:actual});
+ }
+ }
+ for (p in expected) {
+ assert(actual.hasOwnProperty(p),
+ "assert_object_equals", description,
+ "expected property ${p} missing", {p:p});
+ }
+ stack.pop();
+ }
+ check_equal(actual, expected, []);
+ }
+ expose(assert_object_equals, "assert_object_equals");
+
+ function assert_array_equals(actual, expected, description)
+ {
+ assert(actual.length === expected.length,
+ "assert_array_equals", description,
+ "lengths differ, expected ${expected} got ${actual}",
+ {expected:expected.length, actual:actual.length});
+
+ for (var i = 0; i < actual.length; i++) {
+ assert(actual.hasOwnProperty(i) === expected.hasOwnProperty(i),
+ "assert_array_equals", description,
+ "property ${i}, property expected to be ${expected} but was ${actual}",
+ {i:i, expected:expected.hasOwnProperty(i) ? "present" : "missing",
+ actual:actual.hasOwnProperty(i) ? "present" : "missing"});
+ assert(same_value(expected[i], actual[i]),
+ "assert_array_equals", description,
+ "property ${i}, expected ${expected} but got ${actual}",
+ {i:i, expected:expected[i], actual:actual[i]});
+ }
+ }
+ expose(assert_array_equals, "assert_array_equals");
+
+ function assert_approx_equals(actual, expected, epsilon, description)
+ {
+ /*
+ * Test if two primitive numbers are equal withing +/- epsilon
+ */
+ assert(typeof actual === "number",
+ "assert_approx_equals", description,
+ "expected a number but got a ${type_actual}",
+ {type_actual:typeof actual});
+
+ assert(Math.abs(actual - expected) <= epsilon,
+ "assert_approx_equals", description,
+ "expected ${expected} +/- ${epsilon} but got ${actual}",
+ {expected:expected, actual:actual, epsilon:epsilon});
+ }
+ expose(assert_approx_equals, "assert_approx_equals");
+
+ function assert_less_than(actual, expected, description)
+ {
+ /*
+ * Test if a primitive number is less than another
+ */
+ assert(typeof actual === "number",
+ "assert_less_than", description,
+ "expected a number but got a ${type_actual}",
+ {type_actual:typeof actual});
+
+ assert(actual < expected,
+ "assert_less_than", description,
+ "expected a number less than ${expected} but got ${actual}",
+ {expected:expected, actual:actual});
+ }
+ expose(assert_less_than, "assert_less_than");
+
+ function assert_greater_than(actual, expected, description)
+ {
+ /*
+ * Test if a primitive number is greater than another
+ */
+ assert(typeof actual === "number",
+ "assert_greater_than", description,
+ "expected a number but got a ${type_actual}",
+ {type_actual:typeof actual});
+
+ assert(actual > expected,
+ "assert_greater_than", description,
+ "expected a number greater than ${expected} but got ${actual}",
+ {expected:expected, actual:actual});
+ }
+ expose(assert_greater_than, "assert_greater_than");
+
+ function assert_less_than_equal(actual, expected, description)
+ {
+ /*
+ * Test if a primitive number is less than or equal to another
+ */
+ assert(typeof actual === "number",
+ "assert_less_than_equal", description,
+ "expected a number but got a ${type_actual}",
+ {type_actual:typeof actual});
+
+ assert(actual <= expected,
+ "assert_less_than", description,
+ "expected a number less than or equal to ${expected} but got ${actual}",
+ {expected:expected, actual:actual});
+ }
+ expose(assert_less_than_equal, "assert_less_than_equal");
+
+ function assert_greater_than_equal(actual, expected, description)
+ {
+ /*
+ * Test if a primitive number is greater than or equal to another
+ */
+ assert(typeof actual === "number",
+ "assert_greater_than_equal", description,
+ "expected a number but got a ${type_actual}",
+ {type_actual:typeof actual});
+
+ assert(actual >= expected,
+ "assert_greater_than_equal", description,
+ "expected a number greater than or equal to ${expected} but got ${actual}",
+ {expected:expected, actual:actual});
+ }
+ expose(assert_greater_than_equal, "assert_greater_than_equal");
+
+ function assert_regexp_match(actual, expected, description) {
+ /*
+ * Test if a string (actual) matches a regexp (expected)
+ */
+ assert(expected.test(actual),
+ "assert_regexp_match", description,
+ "expected ${expected} but got ${actual}",
+ {expected:expected, actual:actual});
+ }
+ expose(assert_regexp_match, "assert_regexp_match");
+
+ function assert_class_string(object, class_string, description) {
+ assert_equals({}.toString.call(object), "[object " + class_string + "]",
+ description);
+ }
+ expose(assert_class_string, "assert_class_string");
+
+
+ function _assert_own_property(name) {
+ return function(object, property_name, description)
+ {
+ assert(property_name in object,
+ name, description,
+ "expected property ${p} missing", {p:property_name});
+ };
+ }
+ expose(_assert_own_property("assert_exists"), "assert_exists");
+ expose(_assert_own_property("assert_own_property"), "assert_own_property");
+
+ function assert_not_exists(object, property_name, description)
+ {
+ assert(!object.hasOwnProperty(property_name),
+ "assert_not_exists", description,
+ "unexpected property ${p} found", {p:property_name});
+ }
+ expose(assert_not_exists, "assert_not_exists");
+
+ function _assert_inherits(name) {
+ return function (object, property_name, description)
+ {
+ assert(typeof object === "object",
+ name, description,
+ "provided value is not an object");
+
+ assert("hasOwnProperty" in object,
+ name, description,
+ "provided value is an object but has no hasOwnProperty method");
+
+ assert(!object.hasOwnProperty(property_name),
+ name, description,
+ "property ${p} found on object expected in prototype chain",
+ {p:property_name});
+
+ assert(property_name in object,
+ name, description,
+ "property ${p} not found in prototype chain",
+ {p:property_name});
+ };
+ }
+ expose(_assert_inherits("assert_inherits"), "assert_inherits");
+ expose(_assert_inherits("assert_idl_attribute"), "assert_idl_attribute");
+
+ function assert_readonly(object, property_name, description)
+ {
+ var initial_value = object[property_name];
+ try {
+ //Note that this can have side effects in the case where
+ //the property has PutForwards
+ object[property_name] = initial_value + "a"; //XXX use some other value here?
+ assert(same_value(object[property_name], initial_value),
+ "assert_readonly", description,
+ "changing property ${p} succeeded",
+ {p:property_name});
+ } finally {
+ object[property_name] = initial_value;
+ }
+ }
+ expose(assert_readonly, "assert_readonly");
+
+ function assert_throws(code, func, description)
+ {
+ try {
+ func.call(this);
+ assert(false, "assert_throws", description,
+ "${func} did not throw", {func:func});
+ } catch (e) {
+ if (e instanceof AssertionError) {
+ throw e;
+ }
+ if (code === null) {
+ return;
+ }
+ if (typeof code === "object") {
+ assert(typeof e == "object" && "name" in e && e.name == code.name,
+ "assert_throws", description,
+ "${func} threw ${actual} (${actual_name}) expected ${expected} (${expected_name})",
+ {func:func, actual:e, actual_name:e.name,
+ expected:code,
+ expected_name:code.name});
+ return;
+ }
+
+ var code_name_map = {
+ INDEX_SIZE_ERR: 'IndexSizeError',
+ HIERARCHY_REQUEST_ERR: 'HierarchyRequestError',
+ WRONG_DOCUMENT_ERR: 'WrongDocumentError',
+ INVALID_CHARACTER_ERR: 'InvalidCharacterError',
+ NO_MODIFICATION_ALLOWED_ERR: 'NoModificationAllowedError',
+ NOT_FOUND_ERR: 'NotFoundError',
+ NOT_SUPPORTED_ERR: 'NotSupportedError',
+ INVALID_STATE_ERR: 'InvalidStateError',
+ SYNTAX_ERR: 'SyntaxError',
+ INVALID_MODIFICATION_ERR: 'InvalidModificationError',
+ NAMESPACE_ERR: 'NamespaceError',
+ INVALID_ACCESS_ERR: 'InvalidAccessError',
+ TYPE_MISMATCH_ERR: 'TypeMismatchError',
+ SECURITY_ERR: 'SecurityError',
+ NETWORK_ERR: 'NetworkError',
+ ABORT_ERR: 'AbortError',
+ URL_MISMATCH_ERR: 'URLMismatchError',
+ QUOTA_EXCEEDED_ERR: 'QuotaExceededError',
+ TIMEOUT_ERR: 'TimeoutError',
+ INVALID_NODE_TYPE_ERR: 'InvalidNodeTypeError',
+ DATA_CLONE_ERR: 'DataCloneError'
+ };
+
+ var name = code in code_name_map ? code_name_map[code] : code;
+
+ var name_code_map = {
+ IndexSizeError: 1,
+ HierarchyRequestError: 3,
+ WrongDocumentError: 4,
+ InvalidCharacterError: 5,
+ NoModificationAllowedError: 7,
+ NotFoundError: 8,
+ NotSupportedError: 9,
+ InvalidStateError: 11,
+ SyntaxError: 12,
+ InvalidModificationError: 13,
+ NamespaceError: 14,
+ InvalidAccessError: 15,
+ TypeMismatchError: 17,
+ SecurityError: 18,
+ NetworkError: 19,
+ AbortError: 20,
+ URLMismatchError: 21,
+ QuotaExceededError: 22,
+ TimeoutError: 23,
+ InvalidNodeTypeError: 24,
+ DataCloneError: 25,
+
+ UnknownError: 0,
+ ConstraintError: 0,
+ DataError: 0,
+ TransactionInactiveError: 0,
+ ReadOnlyError: 0,
+ VersionError: 0
+ };
+
+ if (!(name in name_code_map)) {
+ throw new AssertionError('Test bug: unrecognized DOMException code "' + code + '" passed to assert_throws()');
+ }
+
+ var required_props = { code: name_code_map[name] };
+
+ if (required_props.code === 0 ||
+ ("name" in e && e.name !== e.name.toUpperCase() && e.name !== "DOMException")) {
+ // New style exception: also test the name property.
+ required_props.name = name;
+ }
+
+ //We'd like to test that e instanceof the appropriate interface,
+ //but we can't, because we don't know what window it was created
+ //in. It might be an instanceof the appropriate interface on some
+ //unknown other window. TODO: Work around this somehow?
+
+ assert(typeof e == "object",
+ "assert_throws", description,
+ "${func} threw ${e} with type ${type}, not an object",
+ {func:func, e:e, type:typeof e});
+
+ for (var prop in required_props) {
+ assert(typeof e == "object" && prop in e && e[prop] == required_props[prop],
+ "assert_throws", description,
+ "${func} threw ${e} that is not a DOMException " + code + ": property ${prop} is equal to ${actual}, expected ${expected}",
+ {func:func, e:e, prop:prop, actual:e[prop], expected:required_props[prop]});
+ }
+ }
+ }
+ expose(assert_throws, "assert_throws");
+
+ function assert_unreached(description) {
+ assert(false, "assert_unreached", description,
+ "Reached unreachable code");
+ }
+ expose(assert_unreached, "assert_unreached");
+
+ function assert_any(assert_func, actual, expected_array)
+ {
+ var args = [].slice.call(arguments, 3);
+ var errors = [];
+ var passed = false;
+ forEach(expected_array,
+ function(expected)
+ {
+ try {
+ assert_func.apply(this, [actual, expected].concat(args));
+ passed = true;
+ } catch (e) {
+ errors.push(e.message);
+ }
+ });
+ if (!passed) {
+ throw new AssertionError(errors.join("\n\n"));
+ }
+ }
+ expose(assert_any, "assert_any");
+
+ function Test(name, properties)
+ {
+ if (tests.file_is_test && tests.tests.length) {
+ throw new Error("Tried to create a test with file_is_test");
+ }
+ this.name = name;
+
+ this.phase = this.phases.INITIAL;
+
+ this.status = this.NOTRUN;
+ this.timeout_id = null;
+ this.index = null;
+
+ this.properties = properties;
+ var timeout = properties.timeout ? properties.timeout : settings.test_timeout;
+ if (timeout !== null) {
+ this.timeout_length = timeout * tests.timeout_multiplier;
+ } else {
+ this.timeout_length = null;
+ }
+
+ this.message = null;
+
+ this.steps = [];
+
+ this.cleanup_callbacks = [];
+
+ tests.push(this);
+ }
+
+ Test.statuses = {
+ PASS:0,
+ FAIL:1,
+ TIMEOUT:2,
+ NOTRUN:3
+ };
+
+ Test.prototype = merge({}, Test.statuses);
+
+ Test.prototype.phases = {
+ INITIAL:0,
+ STARTED:1,
+ HAS_RESULT:2,
+ COMPLETE:3
+ };
+
+ Test.prototype.structured_clone = function()
+ {
+ if (!this._structured_clone) {
+ var msg = this.message;
+ msg = msg ? String(msg) : msg;
+ this._structured_clone = merge({
+ name:String(this.name),
+ properties:merge({}, this.properties),
+ }, Test.statuses);
+ }
+ this._structured_clone.status = this.status;
+ this._structured_clone.message = this.message;
+ this._structured_clone.index = this.index;
+ return this._structured_clone;
+ };
+
+ Test.prototype.step = function(func, this_obj)
+ {
+ if (this.phase > this.phases.STARTED) {
+ return;
+ }
+ this.phase = this.phases.STARTED;
+ //If we don't get a result before the harness times out that will be a test timout
+ this.set_status(this.TIMEOUT, "Test timed out");
+
+ tests.started = true;
+ tests.notify_test_state(this);
+
+ if (this.timeout_id === null) {
+ this.set_timeout();
+ }
+
+ this.steps.push(func);
+
+ if (arguments.length === 1) {
+ this_obj = this;
+ }
+
+ try {
+ return func.apply(this_obj, Array.prototype.slice.call(arguments, 2));
+ } catch (e) {
+ if (this.phase >= this.phases.HAS_RESULT) {
+ return;
+ }
+ var message = (typeof e === "object" && e !== null) ? e.message : e;
+ if (typeof e.stack != "undefined" && typeof e.message == "string") {
+ //Try to make it more informative for some exceptions, at least
+ //in Gecko and WebKit. This results in a stack dump instead of
+ //just errors like "Cannot read property 'parentNode' of null"
+ //or "root is null". Makes it a lot longer, of course.
+ message += "(stack: " + e.stack + ")";
+ }
+ this.set_status(this.FAIL, message);
+ this.phase = this.phases.HAS_RESULT;
+ this.done();
+ }
+ };
+
+ Test.prototype.step_func = function(func, this_obj)
+ {
+ var test_this = this;
+
+ if (arguments.length === 1) {
+ this_obj = test_this;
+ }
+
+ return function()
+ {
+ return test_this.step.apply(test_this, [func, this_obj].concat(
+ Array.prototype.slice.call(arguments)));
+ };
+ };
+
+ Test.prototype.step_func_done = function(func, this_obj)
+ {
+ var test_this = this;
+
+ if (arguments.length === 1) {
+ this_obj = test_this;
+ }
+
+ return function()
+ {
+ if (func) {
+ test_this.step.apply(test_this, [func, this_obj].concat(
+ Array.prototype.slice.call(arguments)));
+ }
+ test_this.done();
+ };
+ };
+
+ Test.prototype.unreached_func = function(description)
+ {
+ return this.step_func(function() {
+ assert_unreached(description);
+ });
+ };
+
+ Test.prototype.add_cleanup = function(callback) {
+ this.cleanup_callbacks.push(callback);
+ };
+
+ Test.prototype.force_timeout = function() {
+ this.set_status(this.TIMEOUT);
+ this.phase = this.phases.HAS_RESULT;
+ };
+
+ Test.prototype.set_timeout = function()
+ {
+ if (this.timeout_length !== null) {
+ var this_obj = this;
+ this.timeout_id = setTimeout(function()
+ {
+ this_obj.timeout();
+ }, this.timeout_length);
+ }
+ };
+
+ Test.prototype.set_status = function(status, message)
+ {
+ this.status = status;
+ this.message = message;
+ };
+
+ Test.prototype.timeout = function()
+ {
+ this.timeout_id = null;
+ this.set_status(this.TIMEOUT, "Test timed out");
+ this.phase = this.phases.HAS_RESULT;
+ this.done();
+ };
+
+ Test.prototype.done = function()
+ {
+ if (this.phase == this.phases.COMPLETE) {
+ return;
+ }
+
+ if (this.phase <= this.phases.STARTED) {
+ this.set_status(this.PASS, null);
+ }
+
+ this.phase = this.phases.COMPLETE;
+
+ clearTimeout(this.timeout_id);
+ tests.result(this);
+ this.cleanup();
+ };
+
+ Test.prototype.cleanup = function() {
+ forEach(this.cleanup_callbacks,
+ function(cleanup_callback) {
+ cleanup_callback();
+ });
+ };
+
+ /*
+ * A RemoteTest object mirrors a Test object on a remote worker. The
+ * associated RemoteWorker updates the RemoteTest object in response to
+ * received events. In turn, the RemoteTest object replicates these events
+ * on the local document. This allows listeners (test result reporting
+ * etc..) to transparently handle local and remote events.
+ */
+ function RemoteTest(clone) {
+ var this_obj = this;
+ Object.keys(clone).forEach(
+ function(key) {
+ this_obj[key] = clone[key];
+ });
+ this.index = null;
+ this.phase = this.phases.INITIAL;
+ this.update_state_from(clone);
+ tests.push(this);
+ }
+
+ RemoteTest.prototype.structured_clone = function() {
+ var clone = {};
+ Object.keys(this).forEach(
+ function(key) {
+ if (typeof(this[key]) === "object") {
+ clone[key] = merge({}, this[key]);
+ } else {
+ clone[key] = this[key];
+ }
+ });
+ clone.phases = merge({}, this.phases);
+ return clone;
+ };
+
+ RemoteTest.prototype.cleanup = function() {};
+ RemoteTest.prototype.phases = Test.prototype.phases;
+ RemoteTest.prototype.update_state_from = function(clone) {
+ this.status = clone.status;
+ this.message = clone.message;
+ if (this.phase === this.phases.INITIAL) {
+ this.phase = this.phases.STARTED;
+ }
+ };
+ RemoteTest.prototype.done = function() {
+ this.phase = this.phases.COMPLETE;
+ }
+
+ /*
+ * A RemoteWorker listens for test events from a worker. These events are
+ * then used to construct and maintain RemoteTest objects that mirror the
+ * tests running on the remote worker.
+ */
+ function RemoteWorker(worker) {
+ this.running = true;
+ this.tests = new Array();
+
+ var this_obj = this;
+ worker.onerror = function(error) { this_obj.worker_error(error); };
+
+ var message_port;
+
+ if (is_service_worker(worker)) {
+ // The ServiceWorker's implicit MessagePort is currently not
+ // reliably accessible from the ServiceWorkerGlobalScope due to
+ // Blink setting MessageEvent.source to null for messages sent via
+ // ServiceWorker.postMessage(). Until that's resolved, create an
+ // explicit MessageChannel and pass one end to the worker.
+ var message_channel = new MessageChannel();
+ message_port = message_channel.port1;
+ message_port.start();
+ worker.postMessage({type: "connect"}, [message_channel.port2]);
+ } else if (is_shared_worker(worker)) {
+ message_port = worker.port;
+ } else {
+ message_port = worker;
+ }
+
+ // Keeping a reference to the worker until worker_done() is seen
+ // prevents the Worker object and its MessageChannel from going away
+ // before all the messages are dispatched.
+ this.worker = worker;
+
+ message_port.onmessage =
+ function(message) {
+ if (this_obj.running && (message.data.type in this_obj.message_handlers)) {
+ this_obj.message_handlers[message.data.type].call(this_obj, message.data);
+ }
+ };
+ }
+
+ RemoteWorker.prototype.worker_error = function(error) {
+ var message = error.message || String(error);
+ var filename = (error.filename ? " " + error.filename: "");
+ // FIXME: Display worker error states separately from main document
+ // error state.
+ this.worker_done({
+ status: {
+ status: tests.status.ERROR,
+ message: "Error in worker" + filename + ": " + message
+ }
+ });
+ error.preventDefault();
+ };
+
+ RemoteWorker.prototype.test_state = function(data) {
+ var remote_test = this.tests[data.test.index];
+ if (!remote_test) {
+ remote_test = new RemoteTest(data.test);
+ this.tests[data.test.index] = remote_test;
+ }
+ remote_test.update_state_from(data.test);
+ tests.notify_test_state(remote_test);
+ };
+
+ RemoteWorker.prototype.test_done = function(data) {
+ var remote_test = this.tests[data.test.index];
+ remote_test.update_state_from(data.test);
+ remote_test.done();
+ tests.result(remote_test);
+ };
+
+ RemoteWorker.prototype.worker_done = function(data) {
+ if (tests.status.status === null &&
+ data.status.status !== data.status.OK) {
+ tests.status.status = data.status.status;
+ tests.status.message = data.status.message;
+ }
+ this.running = false;
+ this.worker = null;
+ if (tests.all_done()) {
+ tests.complete();
+ }
+ };
+
+ RemoteWorker.prototype.message_handlers = {
+ test_state: RemoteWorker.prototype.test_state,
+ result: RemoteWorker.prototype.test_done,
+ complete: RemoteWorker.prototype.worker_done
+ };
+
+ /*
+ * Harness
+ */
+
+ function TestsStatus()
+ {
+ this.status = null;
+ this.message = null;
+ }
+
+ TestsStatus.statuses = {
+ OK:0,
+ ERROR:1,
+ TIMEOUT:2
+ };
+
+ TestsStatus.prototype = merge({}, TestsStatus.statuses);
+
+ TestsStatus.prototype.structured_clone = function()
+ {
+ if (!this._structured_clone) {
+ var msg = this.message;
+ msg = msg ? String(msg) : msg;
+ this._structured_clone = merge({
+ status:this.status,
+ message:msg
+ }, TestsStatus.statuses);
+ }
+ return this._structured_clone;
+ };
+
+ function Tests()
+ {
+ this.tests = [];
+ this.num_pending = 0;
+
+ this.phases = {
+ INITIAL:0,
+ SETUP:1,
+ HAVE_TESTS:2,
+ HAVE_RESULTS:3,
+ COMPLETE:4
+ };
+ this.phase = this.phases.INITIAL;
+
+ this.properties = {};
+
+ this.wait_for_finish = false;
+ this.processing_callbacks = false;
+
+ this.allow_uncaught_exception = false;
+
+ this.file_is_test = false;
+
+ this.timeout_multiplier = 1;
+ this.timeout_length = test_environment.test_timeout();
+ this.timeout_id = null;
+
+ this.start_callbacks = [];
+ this.test_state_callbacks = [];
+ this.test_done_callbacks = [];
+ this.all_done_callbacks = [];
+
+ this.pending_workers = [];
+
+ this.status = new TestsStatus();
+
+ var this_obj = this;
+
+ test_environment.add_on_loaded_callback(function() {
+ if (this_obj.all_done()) {
+ this_obj.complete();
+ }
+ });
+
+ this.set_timeout();
+ }
+
+ Tests.prototype.setup = function(func, properties)
+ {
+ if (this.phase >= this.phases.HAVE_RESULTS) {
+ return;
+ }
+
+ if (this.phase < this.phases.SETUP) {
+ this.phase = this.phases.SETUP;
+ }
+
+ this.properties = properties;
+
+ for (var p in properties) {
+ if (properties.hasOwnProperty(p)) {
+ var value = properties[p];
+ if (p == "allow_uncaught_exception") {
+ this.allow_uncaught_exception = value;
+ } else if (p == "explicit_done" && value) {
+ this.wait_for_finish = true;
+ } else if (p == "explicit_timeout" && value) {
+ this.timeout_length = null;
+ if (this.timeout_id)
+ {
+ clearTimeout(this.timeout_id);
+ }
+ } else if (p == "timeout_multiplier") {
+ this.timeout_multiplier = value;
+ }
+ }
+ }
+
+ if (func) {
+ try {
+ func();
+ } catch (e) {
+ this.status.status = this.status.ERROR;
+ this.status.message = String(e);
+ }
+ }
+ this.set_timeout();
+ };
+
+ Tests.prototype.set_file_is_test = function() {
+ if (this.tests.length > 0) {
+ throw new Error("Tried to set file as test after creating a test");
+ }
+ this.wait_for_finish = true;
+ this.file_is_test = true;
+ // Create the test, which will add it to the list of tests
+ async_test();
+ };
+
+ Tests.prototype.set_timeout = function() {
+ var this_obj = this;
+ clearTimeout(this.timeout_id);
+ if (this.timeout_length !== null) {
+ this.timeout_id = setTimeout(function() {
+ this_obj.timeout();
+ }, this.timeout_length);
+ }
+ };
+
+ Tests.prototype.timeout = function() {
+ if (this.status.status === null) {
+ this.status.status = this.status.TIMEOUT;
+ }
+ this.complete();
+ };
+
+ Tests.prototype.end_wait = function()
+ {
+ this.wait_for_finish = false;
+ if (this.all_done()) {
+ this.complete();
+ }
+ };
+
+ Tests.prototype.push = function(test)
+ {
+ if (this.phase < this.phases.HAVE_TESTS) {
+ this.start();
+ }
+ this.num_pending++;
+ test.index = this.tests.push(test);
+ this.notify_test_state(test);
+ };
+
+ Tests.prototype.notify_test_state = function(test) {
+ var this_obj = this;
+ forEach(this.test_state_callbacks,
+ function(callback) {
+ callback(test, this_obj);
+ });
+ };
+
+ Tests.prototype.all_done = function() {
+ return (this.tests.length > 0 && test_environment.all_loaded &&
+ this.num_pending === 0 && !this.wait_for_finish &&
+ !this.processing_callbacks &&
+ !this.pending_workers.some(function(w) { return w.running; }));
+ };
+
+ Tests.prototype.start = function() {
+ this.phase = this.phases.HAVE_TESTS;
+ this.notify_start();
+ };
+
+ Tests.prototype.notify_start = function() {
+ var this_obj = this;
+ forEach (this.start_callbacks,
+ function(callback)
+ {
+ callback(this_obj.properties);
+ });
+ };
+
+ Tests.prototype.result = function(test)
+ {
+ if (this.phase > this.phases.HAVE_RESULTS) {
+ return;
+ }
+ this.phase = this.phases.HAVE_RESULTS;
+ this.num_pending--;
+ this.notify_result(test);
+ };
+
+ Tests.prototype.notify_result = function(test) {
+ var this_obj = this;
+ this.processing_callbacks = true;
+ forEach(this.test_done_callbacks,
+ function(callback)
+ {
+ callback(test, this_obj);
+ });
+ this.processing_callbacks = false;
+ if (this_obj.all_done()) {
+ this_obj.complete();
+ }
+ };
+
+ Tests.prototype.complete = function() {
+ if (this.phase === this.phases.COMPLETE) {
+ return;
+ }
+ this.phase = this.phases.COMPLETE;
+ var this_obj = this;
+ this.tests.forEach(
+ function(x)
+ {
+ if (x.phase < x.phases.COMPLETE) {
+ this_obj.notify_result(x);
+ x.cleanup();
+ x.phase = x.phases.COMPLETE;
+ }
+ }
+ );
+ this.notify_complete();
+ };
+
+ Tests.prototype.notify_complete = function() {
+ var this_obj = this;
+ if (this.status.status === null) {
+ this.status.status = this.status.OK;
+ }
+
+ forEach (this.all_done_callbacks,
+ function(callback)
+ {
+ callback(this_obj.tests, this_obj.status);
+ });
+ };
+
+ Tests.prototype.fetch_tests_from_worker = function(worker) {
+ if (this.phase >= this.phases.COMPLETE) {
+ return;
+ }
+
+ this.pending_workers.push(new RemoteWorker(worker));
+ };
+
+ function fetch_tests_from_worker(port) {
+ tests.fetch_tests_from_worker(port);
+ }
+ expose(fetch_tests_from_worker, 'fetch_tests_from_worker');
+
+ function timeout() {
+ if (tests.timeout_length === null) {
+ tests.timeout();
+ }
+ }
+ expose(timeout, 'timeout');
+
+ function add_start_callback(callback) {
+ tests.start_callbacks.push(callback);
+ }
+
+ function add_test_state_callback(callback) {
+ tests.test_state_callbacks.push(callback);
+ }
+
+ function add_result_callback(callback)
+ {
+ tests.test_done_callbacks.push(callback);
+ }
+
+ function add_completion_callback(callback)
+ {
+ tests.all_done_callbacks.push(callback);
+ }
+
+ expose(add_start_callback, 'add_start_callback');
+ expose(add_test_state_callback, 'add_test_state_callback');
+ expose(add_result_callback, 'add_result_callback');
+ expose(add_completion_callback, 'add_completion_callback');
+
+ /*
+ * Output listener
+ */
+
+ function Output() {
+ this.output_document = document;
+ this.output_node = null;
+ this.enabled = settings.output;
+ this.phase = this.INITIAL;
+ }
+
+ Output.prototype.INITIAL = 0;
+ Output.prototype.STARTED = 1;
+ Output.prototype.HAVE_RESULTS = 2;
+ Output.prototype.COMPLETE = 3;
+
+ Output.prototype.setup = function(properties) {
+ if (this.phase > this.INITIAL) {
+ return;
+ }
+
+ //If output is disabled in testharnessreport.js the test shouldn't be
+ //able to override that
+ this.enabled = this.enabled && (properties.hasOwnProperty("output") ?
+ properties.output : settings.output);
+ };
+
+ Output.prototype.init = function(properties) {
+ if (this.phase >= this.STARTED) {
+ return;
+ }
+ if (properties.output_document) {
+ this.output_document = properties.output_document;
+ } else {
+ this.output_document = document;
+ }
+ this.phase = this.STARTED;
+ };
+
+ Output.prototype.resolve_log = function() {
+ var output_document;
+ if (typeof this.output_document === "function") {
+ output_document = this.output_document.apply(undefined);
+ } else {
+ output_document = this.output_document;
+ }
+ if (!output_document) {
+ return;
+ }
+ var node = output_document.getElementById("log");
+ if (!node) {
+ if (!document.body || document.readyState == "loading") {
+ return;
+ }
+ node = output_document.createElement("div");
+ node.id = "log";
+ output_document.body.appendChild(node);
+ }
+ this.output_document = output_document;
+ this.output_node = node;
+ };
+
+ Output.prototype.show_status = function() {
+ if (this.phase < this.STARTED) {
+ this.init();
+ }
+ if (!this.enabled) {
+ return;
+ }
+ if (this.phase < this.HAVE_RESULTS) {
+ this.resolve_log();
+ this.phase = this.HAVE_RESULTS;
+ }
+ var done_count = tests.tests.length - tests.num_pending;
+ if (this.output_node) {
+ if (done_count < 100 ||
+ (done_count < 1000 && done_count % 100 === 0) ||
+ done_count % 1000 === 0) {
+ this.output_node.textContent = "Running, " +
+ done_count + " complete, " +
+ tests.num_pending + " remain";
+ }
+ }
+ };
+
+ Output.prototype.show_results = function (tests, harness_status) {
+ if (this.phase >= this.COMPLETE) {
+ return;
+ }
+ if (!this.enabled) {
+ return;
+ }
+ if (!this.output_node) {
+ this.resolve_log();
+ }
+ this.phase = this.COMPLETE;
+
+ var log = this.output_node;
+ if (!log) {
+ return;
+ }
+ var output_document = this.output_document;
+
+ while (log.lastChild) {
+ log.removeChild(log.lastChild);
+ }
+
+ var script_prefix = null;
+ var scripts = document.getElementsByTagName("script");
+ for (var i = 0; i < scripts.length; i++) {
+ var src;
+ if (scripts[i].src) {
+ src = scripts[i].src;
+ } else if (scripts[i].href) {
+ //SVG case
+ src = scripts[i].href.baseVal;
+ }
+
+ var matches = src && src.match(/^(.*\/|)testharness\.js$/);
+ if (matches) {
+ script_prefix = matches[1];
+ break;
+ }
+ }
+
+ if (script_prefix !== null) {
+ var stylesheet = output_document.createElementNS(xhtml_ns, "link");
+ stylesheet.setAttribute("rel", "stylesheet");
+ stylesheet.setAttribute("href", script_prefix + "testharness.css");
+ var heads = output_document.getElementsByTagName("head");
+ if (heads.length) {
+ heads[0].appendChild(stylesheet);
+ }
+ }
+
+ var status_text_harness = {};
+ status_text_harness[harness_status.OK] = "OK";
+ status_text_harness[harness_status.ERROR] = "Error";
+ status_text_harness[harness_status.TIMEOUT] = "Timeout";
+
+ var status_text = {};
+ status_text[Test.prototype.PASS] = "Pass";
+ status_text[Test.prototype.FAIL] = "Fail";
+ status_text[Test.prototype.TIMEOUT] = "Timeout";
+ status_text[Test.prototype.NOTRUN] = "Not Run";
+
+ var status_number = {};
+ forEach(tests,
+ function(test) {
+ var status = status_text[test.status];
+ if (status_number.hasOwnProperty(status)) {
+ status_number[status] += 1;
+ } else {
+ status_number[status] = 1;
+ }
+ });
+
+ function status_class(status)
+ {
+ return status.replace(/\s/g, '').toLowerCase();
+ }
+
+ var summary_template = ["section", {"id":"summary"},
+ ["h2", {}, "Summary"],
+ function()
+ {
+
+ var status = status_text_harness[harness_status.status];
+ var rv = [["section", {},
+ ["p", {},
+ "Harness status: ",
+ ["span", {"class":status_class(status)},
+ status
+ ],
+ ]
+ ]];
+
+ if (harness_status.status === harness_status.ERROR) {
+ rv[0].push(["pre", {}, harness_status.message]);
+ }
+ return rv;
+ },
+ ["p", {}, "Found ${num_tests} tests"],
+ function() {
+ var rv = [["div", {}]];
+ var i = 0;
+ while (status_text.hasOwnProperty(i)) {
+ if (status_number.hasOwnProperty(status_text[i])) {
+ var status = status_text[i];
+ rv[0].push(["div", {"class":status_class(status)},
+ ["label", {},
+ ["input", {type:"checkbox", checked:"checked"}],
+ status_number[status] + " " + status]]);
+ }
+ i++;
+ }
+ return rv;
+ },
+ ];
+
+ log.appendChild(render(summary_template, {num_tests:tests.length}, output_document));
+
+ forEach(output_document.querySelectorAll("section#summary label"),
+ function(element)
+ {
+ on_event(element, "click",
+ function(e)
+ {
+ if (output_document.getElementById("results") === null) {
+ e.preventDefault();
+ return;
+ }
+ var result_class = element.parentNode.getAttribute("class");
+ var style_element = output_document.querySelector("style#hide-" + result_class);
+ var input_element = element.querySelector("input");
+ if (!style_element && !input_element.checked) {
+ style_element = output_document.createElementNS(xhtml_ns, "style");
+ style_element.id = "hide-" + result_class;
+ style_element.textContent = "table#results > tbody > tr."+result_class+"{display:none}";
+ output_document.body.appendChild(style_element);
+ } else if (style_element && input_element.checked) {
+ style_element.parentNode.removeChild(style_element);
+ }
+ });
+ });
+
+ // This use of innerHTML plus manual escaping is not recommended in
+ // general, but is necessary here for performance. Using textContent
+ // on each individual <td> adds tens of seconds of execution time for
+ // large test suites (tens of thousands of tests).
+ function escape_html(s)
+ {
+ return s.replace(/\&/g, "&")
+ .replace(/</g, "<")
+ .replace(/"/g, """)
+ .replace(/'/g, "'");
+ }
+
+ function has_assertions()
+ {
+ for (var i = 0; i < tests.length; i++) {
+ if (tests[i].properties.hasOwnProperty("assert")) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ function get_assertion(test)
+ {
+ if (test.properties.hasOwnProperty("assert")) {
+ if (Array.isArray(test.properties.assert)) {
+ return test.properties.assert.join(' ');
+ }
+ return test.properties.assert;
+ }
+ return '';
+ }
+
+ log.appendChild(document.createElementNS(xhtml_ns, "section"));
+ var assertions = has_assertions();
+ var html = "<h2>Details</h2><table id='results' " + (assertions ? "class='assertions'" : "" ) + ">" +
+ "<thead><tr><th>Result</th><th>Test Name</th>" +
+ (assertions ? "<th>Assertion</th>" : "") +
+ "<th>Message</th></tr></thead>" +
+ "<tbody>";
+ for (var i = 0; i < tests.length; i++) {
+ html += '<tr class="' +
+ escape_html(status_class(status_text[tests[i].status])) +
+ '"><td>' +
+ escape_html(status_text[tests[i].status]) +
+ "</td><td>" +
+ escape_html(tests[i].name) +
+ "</td><td>" +
+ (assertions ? escape_html(get_assertion(tests[i])) + "</td><td>" : "") +
+ escape_html(tests[i].message ? tests[i].message : " ") +
+ "</td></tr>";
+ }
+ html += "</tbody></table>";
+ try {
+ log.lastChild.innerHTML = html;
+ } catch (e) {
+ log.appendChild(document.createElementNS(xhtml_ns, "p"))
+ .textContent = "Setting innerHTML for the log threw an exception.";
+ log.appendChild(document.createElementNS(xhtml_ns, "pre"))
+ .textContent = html;
+ }
+ };
+
+ /*
+ * Template code
+ *
+ * A template is just a javascript structure. An element is represented as:
+ *
+ * [tag_name, {attr_name:attr_value}, child1, child2]
+ *
+ * the children can either be strings (which act like text nodes), other templates or
+ * functions (see below)
+ *
+ * A text node is represented as
+ *
+ * ["{text}", value]
+ *
+ * String values have a simple substitution syntax; ${foo} represents a variable foo.
+ *
+ * It is possible to embed logic in templates by using a function in a place where a
+ * node would usually go. The function must either return part of a template or null.
+ *
+ * In cases where a set of nodes are required as output rather than a single node
+ * with children it is possible to just use a list
+ * [node1, node2, node3]
+ *
+ * Usage:
+ *
+ * render(template, substitutions) - take a template and an object mapping
+ * variable names to parameters and return either a DOM node or a list of DOM nodes
+ *
+ * substitute(template, substitutions) - take a template and variable mapping object,
+ * make the variable substitutions and return the substituted template
+ *
+ */
+
+ function is_single_node(template)
+ {
+ return typeof template[0] === "string";
+ }
+
+ function substitute(template, substitutions)
+ {
+ if (typeof template === "function") {
+ var replacement = template(substitutions);
+ if (!replacement) {
+ return null;
+ }
+
+ return substitute(replacement, substitutions);
+ }
+
+ if (is_single_node(template)) {
+ return substitute_single(template, substitutions);
+ }
+
+ return filter(map(template, function(x) {
+ return substitute(x, substitutions);
+ }), function(x) {return x !== null;});
+ }
+
+ function substitute_single(template, substitutions)
+ {
+ var substitution_re = /\$\{([^ }]*)\}/g;
+
+ function do_substitution(input) {
+ var components = input.split(substitution_re);
+ var rv = [];
+ for (var i = 0; i < components.length; i += 2) {
+ rv.push(components[i]);
+ if (components[i + 1]) {
+ rv.push(String(substitutions[components[i + 1]]));
+ }
+ }
+ return rv;
+ }
+
+ function substitute_attrs(attrs, rv)
+ {
+ rv[1] = {};
+ for (var name in template[1]) {
+ if (attrs.hasOwnProperty(name)) {
+ var new_name = do_substitution(name).join("");
+ var new_value = do_substitution(attrs[name]).join("");
+ rv[1][new_name] = new_value;
+ }
+ }
+ }
+
+ function substitute_children(children, rv)
+ {
+ for (var i = 0; i < children.length; i++) {
+ if (children[i] instanceof Object) {
+ var replacement = substitute(children[i], substitutions);
+ if (replacement !== null) {
+ if (is_single_node(replacement)) {
+ rv.push(replacement);
+ } else {
+ extend(rv, replacement);
+ }
+ }
+ } else {
+ extend(rv, do_substitution(String(children[i])));
+ }
+ }
+ return rv;
+ }
+
+ var rv = [];
+ rv.push(do_substitution(String(template[0])).join(""));
+
+ if (template[0] === "{text}") {
+ substitute_children(template.slice(1), rv);
+ } else {
+ substitute_attrs(template[1], rv);
+ substitute_children(template.slice(2), rv);
+ }
+
+ return rv;
+ }
+
+ function make_dom_single(template, doc)
+ {
+ var output_document = doc || document;
+ var element;
+ if (template[0] === "{text}") {
+ element = output_document.createTextNode("");
+ for (var i = 1; i < template.length; i++) {
+ element.data += template[i];
+ }
+ } else {
+ element = output_document.createElementNS(xhtml_ns, template[0]);
+ for (var name in template[1]) {
+ if (template[1].hasOwnProperty(name)) {
+ element.setAttribute(name, template[1][name]);
+ }
+ }
+ for (var i = 2; i < template.length; i++) {
+ if (template[i] instanceof Object) {
+ var sub_element = make_dom(template[i]);
+ element.appendChild(sub_element);
+ } else {
+ var text_node = output_document.createTextNode(template[i]);
+ element.appendChild(text_node);
+ }
+ }
+ }
+
+ return element;
+ }
+
+ function make_dom(template, substitutions, output_document)
+ {
+ if (is_single_node(template)) {
+ return make_dom_single(template, output_document);
+ }
+
+ return map(template, function(x) {
+ return make_dom_single(x, output_document);
+ });
+ }
+
+ function render(template, substitutions, output_document)
+ {
+ return make_dom(substitute(template, substitutions), output_document);
+ }
+
+ /*
+ * Utility funcions
+ */
+ function assert(expected_true, function_name, description, error, substitutions)
+ {
+ if (tests.tests.length === 0) {
+ tests.set_file_is_test();
+ }
+ if (expected_true !== true) {
+ var msg = make_message(function_name, description,
+ error, substitutions);
+ throw new AssertionError(msg);
+ }
+ }
+
+ function AssertionError(message)
+ {
+ this.message = message;
+ }
+
+ AssertionError.prototype.toString = function() {
+ return this.message;
+ };
+
+ function make_message(function_name, description, error, substitutions)
+ {
+ for (var p in substitutions) {
+ if (substitutions.hasOwnProperty(p)) {
+ substitutions[p] = format_value(substitutions[p]);
+ }
+ }
+ var node_form = substitute(["{text}", "${function_name}: ${description}" + error],
+ merge({function_name:function_name,
+ description:(description?description + " ":"")},
+ substitutions));
+ return node_form.slice(1).join("");
+ }
+
+ function filter(array, callable, thisObj) {
+ var rv = [];
+ for (var i = 0; i < array.length; i++) {
+ if (array.hasOwnProperty(i)) {
+ var pass = callable.call(thisObj, array[i], i, array);
+ if (pass) {
+ rv.push(array[i]);
+ }
+ }
+ }
+ return rv;
+ }
+
+ function map(array, callable, thisObj)
+ {
+ var rv = [];
+ rv.length = array.length;
+ for (var i = 0; i < array.length; i++) {
+ if (array.hasOwnProperty(i)) {
+ rv[i] = callable.call(thisObj, array[i], i, array);
+ }
+ }
+ return rv;
+ }
+
+ function extend(array, items)
+ {
+ Array.prototype.push.apply(array, items);
+ }
+
+ function forEach (array, callback, thisObj)
+ {
+ for (var i = 0; i < array.length; i++) {
+ if (array.hasOwnProperty(i)) {
+ callback.call(thisObj, array[i], i, array);
+ }
+ }
+ }
+
+ function merge(a,b)
+ {
+ var rv = {};
+ var p;
+ for (p in a) {
+ rv[p] = a[p];
+ }
+ for (p in b) {
+ rv[p] = b[p];
+ }
+ return rv;
+ }
+
+ function expose(object, name)
+ {
+ var components = name.split(".");
+ var target = test_environment.global_scope();
+ for (var i = 0; i < components.length - 1; i++) {
+ if (!(components[i] in target)) {
+ target[components[i]] = {};
+ }
+ target = target[components[i]];
+ }
+ target[components[components.length - 1]] = object;
+ }
+
+ function is_same_origin(w) {
+ try {
+ 'random_prop' in w;
+ return true;
+ } catch (e) {
+ return false;
+ }
+ }
+
+ function supports_post_message(w)
+ {
+ var supports;
+ var type;
+ // Given IE implements postMessage across nested iframes but not across
+ // windows or tabs, you can't infer cross-origin communication from the presence
+ // of postMessage on the current window object only.
+ //
+ // Touching the postMessage prop on a window can throw if the window is
+ // not from the same origin AND post message is not supported in that
+ // browser. So just doing an existence test here won't do, you also need
+ // to wrap it in a try..cacth block.
+ try {
+ type = typeof w.postMessage;
+ if (type === "function") {
+ supports = true;
+ }
+
+ // IE8 supports postMessage, but implements it as a host object which
+ // returns "object" as its `typeof`.
+ else if (type === "object") {
+ supports = true;
+ }
+
+ // This is the case where postMessage isn't supported AND accessing a
+ // window property across origins does NOT throw (e.g. old Safari browser).
+ else {
+ supports = false;
+ }
+ } catch (e) {
+ // This is the case where postMessage isn't supported AND accessing a
+ // window property across origins throws (e.g. old Firefox browser).
+ supports = false;
+ }
+ return supports;
+ }
+
+ /**
+ * Setup globals
+ */
+
+ var tests = new Tests();
+
+ addEventListener("error", function(e) {
+ if (tests.file_is_test) {
+ var test = tests.tests[0];
+ if (test.phase >= test.phases.HAS_RESULT) {
+ return;
+ }
+ var message = e.message;
+ test.set_status(test.FAIL, message);
+ test.phase = test.phases.HAS_RESULT;
+ test.done();
+ done();
+ } else if (!tests.allow_uncaught_exception) {
+ tests.status.status = tests.status.ERROR;
+ tests.status.message = e.message;
+ }
+ });
+
+ test_environment.on_tests_ready();
+
+})();
+// vim: set expandtab shiftwidth=4 tabstop=4:
--- /dev/null
+/*global add_completion_callback, setup */
+/*
+ * This file is intended for vendors to implement
+ * code needed to integrate testharness.js tests with their own test systems.
+ *
+ * The default implementation extracts metadata from the tests and validates
+ * it against the cached version that should be present in the test source
+ * file. If the cache is not found or is out of sync, source code suitable for
+ * caching the metadata is optionally generated.
+ *
+ * The cached metadata is present for extraction by test processing tools that
+ * are unable to execute javascript.
+ *
+ * Metadata is attached to tests via the properties parameter in the test
+ * constructor. See testharness.js for details.
+ *
+ * Typically test system integration will attach callbacks when each test has
+ * run, using add_result_callback(callback(test)), or when the whole test file
+ * has completed, using
+ * add_completion_callback(callback(tests, harness_status)).
+ *
+ * For more documentation about the callback functions and the
+ * parameters they are called with see testharness.js
+ */
+
+
+
+var metadata_generator = {
+
+ currentMetadata: {},
+ cachedMetadata: false,
+ metadataProperties: ['help', 'assert', 'author'],
+
+ error: function(message) {
+ var messageElement = document.createElement('p');
+ messageElement.setAttribute('class', 'error');
+ this.appendText(messageElement, message);
+
+ var summary = document.getElementById('summary');
+ if (summary) {
+ summary.parentNode.insertBefore(messageElement, summary);
+ }
+ else {
+ document.body.appendChild(messageElement);
+ }
+ },
+
+ /**
+ * Ensure property value has contact information
+ */
+ validateContact: function(test, propertyName) {
+ var result = true;
+ var value = test.properties[propertyName];
+ var values = Array.isArray(value) ? value : [value];
+ for (var index = 0; index < values.length; index++) {
+ value = values[index];
+ var re = /(\S+)(\s*)<(.*)>(.*)/;
+ if (! re.test(value)) {
+ re = /(\S+)(\s+)(http[s]?:\/\/)(.*)/;
+ if (! re.test(value)) {
+ this.error('Metadata property "' + propertyName +
+ '" for test: "' + test.name +
+ '" must have name and contact information ' +
+ '("name <email>" or "name http(s)://")');
+ result = false;
+ }
+ }
+ }
+ return result;
+ },
+
+ /**
+ * Extract metadata from test object
+ */
+ extractFromTest: function(test) {
+ var testMetadata = {};
+ // filter out metadata from other properties in test
+ for (var metaIndex = 0; metaIndex < this.metadataProperties.length;
+ metaIndex++) {
+ var meta = this.metadataProperties[metaIndex];
+ if (test.properties.hasOwnProperty(meta)) {
+ if ('author' == meta) {
+ this.validateContact(test, meta);
+ }
+ testMetadata[meta] = test.properties[meta];
+ }
+ }
+ return testMetadata;
+ },
+
+ /**
+ * Compare cached metadata to extracted metadata
+ */
+ validateCache: function() {
+ for (var testName in this.currentMetadata) {
+ if (! this.cachedMetadata.hasOwnProperty(testName)) {
+ return false;
+ }
+ var testMetadata = this.currentMetadata[testName];
+ var cachedTestMetadata = this.cachedMetadata[testName];
+ delete this.cachedMetadata[testName];
+
+ for (var metaIndex = 0; metaIndex < this.metadataProperties.length;
+ metaIndex++) {
+ var meta = this.metadataProperties[metaIndex];
+ if (cachedTestMetadata.hasOwnProperty(meta) &&
+ testMetadata.hasOwnProperty(meta)) {
+ if (Array.isArray(cachedTestMetadata[meta])) {
+ if (! Array.isArray(testMetadata[meta])) {
+ return false;
+ }
+ if (cachedTestMetadata[meta].length ==
+ testMetadata[meta].length) {
+ for (var index = 0;
+ index < cachedTestMetadata[meta].length;
+ index++) {
+ if (cachedTestMetadata[meta][index] !=
+ testMetadata[meta][index]) {
+ return false;
+ }
+ }
+ }
+ else {
+ return false;
+ }
+ }
+ else {
+ if (Array.isArray(testMetadata[meta])) {
+ return false;
+ }
+ if (cachedTestMetadata[meta] != testMetadata[meta]) {
+ return false;
+ }
+ }
+ }
+ else if (cachedTestMetadata.hasOwnProperty(meta) ||
+ testMetadata.hasOwnProperty(meta)) {
+ return false;
+ }
+ }
+ }
+ for (var testName in this.cachedMetadata) {
+ return false;
+ }
+ return true;
+ },
+
+ appendText: function(elemement, text) {
+ elemement.appendChild(document.createTextNode(text));
+ },
+
+ jsonifyArray: function(arrayValue, indent) {
+ var output = '[';
+
+ if (1 == arrayValue.length) {
+ output += JSON.stringify(arrayValue[0]);
+ }
+ else {
+ for (var index = 0; index < arrayValue.length; index++) {
+ if (0 < index) {
+ output += ',\n ' + indent;
+ }
+ output += JSON.stringify(arrayValue[index]);
+ }
+ }
+ output += ']';
+ return output;
+ },
+
+ jsonifyObject: function(objectValue, indent) {
+ var output = '{';
+ var value;
+
+ var count = 0;
+ for (var property in objectValue) {
+ ++count;
+ if (Array.isArray(objectValue[property]) ||
+ ('object' == typeof(value))) {
+ ++count;
+ }
+ }
+ if (1 == count) {
+ for (var property in objectValue) {
+ output += ' "' + property + '": ' +
+ JSON.stringify(objectValue[property]) +
+ ' ';
+ }
+ }
+ else {
+ var first = true;
+ for (var property in objectValue) {
+ if (! first) {
+ output += ',';
+ }
+ first = false;
+ output += '\n ' + indent + '"' + property + '": ';
+ value = objectValue[property];
+ if (Array.isArray(value)) {
+ output += this.jsonifyArray(value, indent +
+ ' '.substr(0, 5 + property.length));
+ }
+ else if ('object' == typeof(value)) {
+ output += this.jsonifyObject(value, indent + ' ');
+ }
+ else {
+ output += JSON.stringify(value);
+ }
+ }
+ if (1 < output.length) {
+ output += '\n' + indent;
+ }
+ }
+ output += '}';
+ return output;
+ },
+
+ /**
+ * Generate javascript source code for captured metadata
+ * Metadata is in pretty-printed JSON format
+ */
+ generateSource: function() {
+ var source =
+ '<script id="metadata_cache">/*\n' +
+ this.jsonifyObject(this.currentMetadata, '') + '\n' +
+ '*/</script>\n';
+ return source;
+ },
+
+ /**
+ * Add element containing metadata source code
+ */
+ addSourceElement: function(event) {
+ var sourceWrapper = document.createElement('div');
+ sourceWrapper.setAttribute('id', 'metadata_source');
+
+ var instructions = document.createElement('p');
+ if (this.cachedMetadata) {
+ this.appendText(instructions,
+ 'Replace the existing <script id="metadata_cache"> element ' +
+ 'in the test\'s <head> with the following:');
+ }
+ else {
+ this.appendText(instructions,
+ 'Copy the following into the <head> element of the test ' +
+ 'or the test\'s metadata sidecar file:');
+ }
+ sourceWrapper.appendChild(instructions);
+
+ var sourceElement = document.createElement('pre');
+ this.appendText(sourceElement, this.generateSource());
+
+ sourceWrapper.appendChild(sourceElement);
+
+ var messageElement = document.getElementById('metadata_issue');
+ messageElement.parentNode.insertBefore(sourceWrapper,
+ messageElement.nextSibling);
+ messageElement.parentNode.removeChild(messageElement);
+
+ (event.preventDefault) ? event.preventDefault() :
+ event.returnValue = false;
+ },
+
+ /**
+ * Extract the metadata cache from the cache element if present
+ */
+ getCachedMetadata: function() {
+ var cacheElement = document.getElementById('metadata_cache');
+
+ if (cacheElement) {
+ var cacheText = cacheElement.firstChild.nodeValue;
+ var openBrace = cacheText.indexOf('{');
+ var closeBrace = cacheText.lastIndexOf('}');
+ if ((-1 < openBrace) && (-1 < closeBrace)) {
+ cacheText = cacheText.slice(openBrace, closeBrace + 1);
+ try {
+ this.cachedMetadata = JSON.parse(cacheText);
+ }
+ catch (exc) {
+ this.cachedMetadata = 'Invalid JSON in Cached metadata. ';
+ }
+ }
+ else {
+ this.cachedMetadata = 'Metadata not found in cache element. ';
+ }
+ }
+ },
+
+ /**
+ * Main entry point, extract metadata from tests, compare to cached version
+ * if present.
+ * If cache not present or differs from extrated metadata, generate an error
+ */
+ process: function(tests) {
+ for (var index = 0; index < tests.length; index++) {
+ var test = tests[index];
+ if (this.currentMetadata.hasOwnProperty(test.name)) {
+ this.error('Duplicate test name: ' + test.name);
+ }
+ else {
+ this.currentMetadata[test.name] = this.extractFromTest(test);
+ }
+ }
+
+ this.getCachedMetadata();
+
+ var message = null;
+ var messageClass = 'warning';
+ var showSource = false;
+
+ if (0 === tests.length) {
+ if (this.cachedMetadata) {
+ message = 'Cached metadata present but no tests. ';
+ }
+ }
+ else if (1 === tests.length) {
+ if (this.cachedMetadata) {
+ message = 'Single test files should not have cached metadata. ';
+ }
+ else {
+ var testMetadata = this.currentMetadata[tests[0].name];
+ for (var meta in testMetadata) {
+ if (testMetadata.hasOwnProperty(meta)) {
+ message = 'Single tests should not have metadata. ' +
+ 'Move metadata to <head>. ';
+ break;
+ }
+ }
+ }
+ }
+ else {
+ if (this.cachedMetadata) {
+ messageClass = 'error';
+ if ('string' == typeof(this.cachedMetadata)) {
+ message = this.cachedMetadata;
+ showSource = true;
+ }
+ else if (! this.validateCache()) {
+ message = 'Cached metadata out of sync. ';
+ showSource = true;
+ }
+ }
+ }
+
+ if (message) {
+ var messageElement = document.createElement('p');
+ messageElement.setAttribute('id', 'metadata_issue');
+ messageElement.setAttribute('class', messageClass);
+ this.appendText(messageElement, message);
+
+ if (showSource) {
+ var link = document.createElement('a');
+ this.appendText(link, 'Click for source code.');
+ link.setAttribute('href', '#');
+ link.setAttribute('onclick',
+ 'metadata_generator.addSourceElement(event)');
+ messageElement.appendChild(link);
+ }
+
+ var summary = document.getElementById('summary');
+ if (summary) {
+ summary.parentNode.insertBefore(messageElement, summary);
+ }
+ else {
+ var log = document.getElementById('log');
+ if (log) {
+ log.appendChild(messageElement);
+ }
+ }
+ }
+ },
+
+ setup: function() {
+ add_completion_callback(
+ function (tests, harness_status) {
+ metadata_generator.process(tests, harness_status);
+ });
+ }
+};
+
+metadata_generator.setup();
+
+/* If the parent window has a testharness_properties object,
+ * we use this to provide the test settings. This is used by the
+ * default in-browser runner to configure the timeout and the
+ * rendering of results
+ */
+try {
+ if (window.opener && "testharness_properties" in window.opener) {
+ /* If we pass the testharness_properties object as-is here without
+ * JSON stringifying and reparsing it, IE fails & emits the message
+ * "Could not complete the operation due to error 80700019".
+ */
+ setup(JSON.parse(JSON.stringify(window.opener.testharness_properties)));
+ }
+} catch (e) {
+}
+// vim: set expandtab shiftwidth=4 tabstop=4:
--- /dev/null
+/*
+
+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('<script language="javascript" src="../resources/testharness.js"></script>\n');
+ }
+ if (head_src.search(/\/testharnessreport.js\W/) === -1) {
+ document.write('<script language="javascript" src="../resources/testharnessreport.js"></script>\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;
+}
--- /dev/null
+{
+ "pkg-blacklist": [
+ "config.xml",
+ "pack.py",
+ "testcase.xsl",
+ "testresult.xsl",
+ "tests.css",
+ "icon.png",
+ "manifest.json",
+ "suite.json",
+ "inst.*"
+ ],
+ "pkg-list": {
+ "apk,cordova": {
+ "blacklist": [
+ "*"
+ ],
+ "copylist": {
+ "inst.apk.py": "inst.py",
+ "tests.full.xml": "tests.full.xml",
+ "tests.xml": "tests.xml"
+ },
+ "pkg-app": {
+ "sign-flag": "true"
+ }
+ },
+ "apk-aio, cordova-aio": {
+ "blacklist": []
+ },
+ "wgt": {
+ "blacklist": [
+ "*"
+ ],
+ "copylist": {
+ "inst.wgt.py": "inst.py",
+ "tests.full.xml": "tests.full.xml",
+ "tests.xml": "tests.xml"
+ },
+ "pkg-app": {
+ "sign-flag": "true"
+ }
+ },
+ "xpk": {
+ "blacklist": [
+ "*"
+ ],
+ "copylist": {
+ "inst.xpk.py": "inst.py",
+ "askpolicy.sh": "askpolicy.sh",
+ "tests.full.xml": "tests.full.xml",
+ "tests.xml": "tests.xml"
+ },
+ "pkg-app": {
+ "blacklist": [],
+ "sign-flag": "true"
+ }
+ }
+ },
+ "pkg-name": "tct-humanactivitymonitor-tizen-tests"
+}
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
+ <xsl:output method="html" version="1.0" encoding="UTF-8" indent="yes"/>
+ <xsl:template match="/">
+ <html>
+ <STYLE type="text/css">
+ @import "tests.css";
+ </STYLE>
+ <head>
+ <script type="text/javascript" src="jquery.min.js"/>
+ </head>
+ <body>
+ <div id="testcasepage">
+ <div id="title">
+ <table>
+ <tr>
+ <td>
+ <h1>Test Cases</h1>
+ </td>
+ </tr>
+ </table>
+ </div>
+ <div id="suites">
+ <a name="contents"/>
+ <table>
+ <tr>
+ <th>Test Suite</th>
+ <th>Total</th>
+ <th>Auto</th>
+ <th>Manual</th>
+ </tr>
+ <tr>
+ <td>
+ Total
+ </td>
+ <td>
+ <xsl:value-of select="count(test_definition/suite/set//testcase)"/>
+ </td>
+ <td>
+ <xsl:value-of select="count(test_definition/suite/set//testcase[@execution_type = 'auto'])"/>
+ </td>
+ <td>
+ <xsl:value-of select="count(test_definition/suite/set//testcase[@execution_type != 'auto'])"/>
+ </td>
+ </tr>
+ <xsl:for-each select="test_definition/suite">
+ <tr>
+ <td>
+ <a>
+ <xsl:attribute name="href">
+ #<xsl:value-of select="@name"/>
+ </xsl:attribute>
+ <xsl:value-of select="@name"/>
+ </a>
+ </td>
+ <td>
+ <xsl:value-of select="count(set//testcase)"/>
+ </td>
+ <td>
+ <xsl:value-of select="count(set/testcase[@execution_type = 'auto'])"/>
+ </td>
+ <td>
+ <xsl:value-of select="count(set/testcase[@execution_type != 'auto'])"/>
+ </td>
+ </tr>
+ </xsl:for-each>
+ </table>
+ </div>
+ <div id="title">
+ <table>
+ <tr>
+ <td class="title">
+ <h1>Detailed Test Cases</h1>
+ </td>
+ </tr>
+ </table>
+ </div>
+ <div id="cases">
+ <xsl:for-each select="test_definition/suite">
+ <xsl:sort select="@name"/>
+ <div id="btc">
+ <a href="#contents">Back to Contents</a>
+ </div>
+ <div id="suite_title">
+ Test Suite:
+ <xsl:value-of select="@name"/>
+ <a><xsl:attribute name="name"><xsl:value-of select="@name"/></xsl:attribute></a>
+ </div>
+ <table>
+ <tr>
+ <th>Case_ID</th>
+ <th>Purpose</th>
+ <th>Type</th>
+ <th>Component</th>
+ <th>Execution Type</th>
+ <th>Description</th>
+ <th>Specification</th>
+ </tr>
+ <xsl:for-each select=".//set">
+ <xsl:sort select="@name"/>
+ <tr>
+ <td colspan="7">
+ Test Set:
+ <xsl:value-of select="@name"/>
+ </td>
+ </tr>
+ <xsl:for-each select=".//testcase">
+ <!-- xsl:sort select="@id" /> -->
+ <tr>
+ <td>
+ <xsl:value-of select="@id"/>
+ </td>
+ <td>
+ <xsl:value-of select="@purpose"/>
+ </td>
+ <td>
+ <xsl:value-of select="@type"/>
+ </td>
+ <td>
+ <xsl:value-of select="@component"/>
+ </td>
+ <td>
+ <xsl:value-of select="@execution_type"/>
+ </td>
+ <td>
+ <p>
+ Pre_condition:
+ <xsl:value-of select=".//description/pre_condition"/>
+ </p>
+ <p>
+ Post_condition:
+ <xsl:value-of select=".//description/post_condition"/>
+ </p>
+ <p>
+ Test Script Entry:
+ <xsl:value-of select=".//description/test_script_entry"/>
+ </p>
+ <p>
+ Steps:
+ <p/>
+ <xsl:for-each select=".//description/steps/step"><xsl:sort select="@order"/>
+ Step
+ <xsl:value-of select="@order"/>
+ :
+ <xsl:value-of select="./step_desc"/>
+ ;
+ <p/>
+ Expected Result:
+ <xsl:value-of select="./expected"/>
+ <p/>
+ </xsl:for-each>
+ </p>
+ </td>
+ <td>
+ <xsl:for-each select=".//specs/spec"><b>[Spec_Assertion]:</b><br/>
+ [Category]:
+ <xsl:value-of select="./spec_assertion/@category"/>
+ <br/>
+ [Section]:
+ <xsl:value-of select="./spec_assertion/@section"/>
+ <br/>
+ [Specification]:
+ <xsl:value-of select="./spec_assertion/@specification"/>
+ <br/>
+ [Interface]:
+ <xsl:value-of select="./spec_assertion/@interface"/>
+ <br/>
+ <xsl:choose><xsl:when test="./spec_assertion/@element_name">
+ [<xsl:value-of select="./spec_assertion/@element_type"/>]:
+ <xsl:value-of select="./spec_assertion/@element_name"/>
+ <br/>
+ </xsl:when></xsl:choose>
+ [URL]:
+ <xsl:value-of select="./spec_url"/>
+ <br/>
+ [Statement]:
+ <xsl:value-of select="./spec_statement"/>
+ <br/>
+ </xsl:for-each>
+ </td>
+ </tr>
+ </xsl:for-each>
+ </xsl:for-each>
+ </table>
+ </xsl:for-each>
+ </div>
+ </div>
+ <div id="goTopBtn">
+ <img border="0" src="./back_top.png"/>
+ </div>
+ <script type="text/javascript" src="application.js"/>
+ <script language="javascript" type="text/javascript">
+ $(document).ready(function(){
+ goTopEx();
+ });
+ </script>
+ </body>
+ </html>
+ </xsl:template>
+</xsl:stylesheet>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
+ <xsl:output method="html" version="1.0" encoding="UTF-8" indent="yes"/>
+ <xsl:template match="/">
+ <html>
+ <STYLE type="text/css">
+ @import "tests.css";
+ </STYLE>
+ <head>
+ <script type="text/javascript" src="jquery.min.js"/>
+ </head>
+ <body>
+ <div id="testcasepage">
+ <div id="title">
+ <table>
+ <tr>
+ <td>
+ <h1>Test Report</h1>
+ </td>
+ </tr>
+ </table>
+ </div>
+ <div id="device">
+ <table>
+ <tr>
+ <th colspan="2">Device Information</th>
+ </tr>
+ <tr>
+ <td>Device Name</td>
+ <td>
+ <xsl:choose>
+ <xsl:when test="test_definition/environment/@device_name">
+ <xsl:if test="test_definition/environment/@device_name = ''">
+ N/A
+ </xsl:if>
+ <xsl:value-of select="test_definition/environment/@device_name"/>
+ </xsl:when>
+ <xsl:otherwise>
+ N/A
+ </xsl:otherwise>
+ </xsl:choose>
+ </td>
+ </tr>
+ <tr>
+ <td>Device Model</td>
+ <td>
+ <xsl:choose>
+ <xsl:when test="test_definition/environment/@device_model">
+ <xsl:if test="test_definition/environment/@device_model = ''">
+ N/A
+ </xsl:if>
+ <xsl:value-of select="test_definition/environment/@device_model"/>
+ </xsl:when>
+ <xsl:otherwise>
+ N/A
+ </xsl:otherwise>
+ </xsl:choose>
+ </td>
+ </tr>
+ <tr>
+ <td>OS Version</td>
+ <td>
+ <xsl:choose>
+ <xsl:when test="test_definition/environment/@os_version">
+ <xsl:if test="test_definition/environment/@os_version = ''">
+ N/A
+ </xsl:if>
+ <xsl:value-of select="test_definition/environment/@os_version"/>
+ </xsl:when>
+ <xsl:otherwise>
+ N/A
+ </xsl:otherwise>
+ </xsl:choose>
+ </td>
+ </tr>
+ <tr>
+ <td>Device ID</td>
+ <td>
+ <xsl:choose>
+ <xsl:when test="test_definition/environment/@device_id">
+ <xsl:if test="test_definition/environment/@device_id = ''">
+ N/A
+ </xsl:if>
+ <xsl:value-of select="test_definition/environment/@device_id"/>
+ </xsl:when>
+ <xsl:otherwise>
+ N/A
+ </xsl:otherwise>
+ </xsl:choose>
+ </td>
+ </tr>
+ <tr>
+ <td>Firmware Version</td>
+ <td>
+ <xsl:choose>
+ <xsl:when test="test_definition/environment/@firmware_version">
+ <xsl:if test="test_definition/environment/@firmware_version = ''">
+ N/A
+ </xsl:if>
+ <xsl:value-of select="test_definition/environment/@firmware_version"/>
+ </xsl:when>
+ <xsl:otherwise>
+ N/A
+ </xsl:otherwise>
+ </xsl:choose>
+ </td>
+ </tr>
+ <tr>
+ <td>Build ID</td>
+ <td>
+ <xsl:choose>
+ <xsl:when test="test_definition/environment/@build_id">
+ <xsl:if test="test_definition/environment/@build_id = ''">
+ N/A
+ </xsl:if>
+ <xsl:value-of select="test_definition/environment/@build_id"/>
+ </xsl:when>
+ <xsl:otherwise>
+ N/A
+ </xsl:otherwise>
+ </xsl:choose>
+ </td>
+ </tr>
+ <tr>
+ <td>Screen Size</td>
+ <td>
+ <xsl:choose>
+ <xsl:when test="test_definition/environment/@screen_size">
+ <xsl:if test="test_definition/environment/@screen_size = ''">
+ N/A
+ </xsl:if>
+ <xsl:value-of select="test_definition/environment/@screen_size"/>
+ </xsl:when>
+ <xsl:otherwise>
+ N/A
+ </xsl:otherwise>
+ </xsl:choose>
+ </td>
+ </tr>
+ <tr>
+ <td>Resolution</td>
+ <td>
+ <xsl:choose>
+ <xsl:when test="test_definition/environment/@resolution">
+ <xsl:if test="test_definition/environment/@resolution = ''">
+ N/A
+ </xsl:if>
+ <xsl:value-of select="test_definition/environment/@resolution"/>
+ </xsl:when>
+ <xsl:otherwise>
+ N/A
+ </xsl:otherwise>
+ </xsl:choose>
+ </td>
+ </tr>
+ <tr>
+ <td>Host Info</td>
+ <td>
+ <xsl:choose>
+ <xsl:when test="test_definition/environment/@host">
+ <xsl:if test="test_definition/environment/@host = ''">
+ N/A
+ </xsl:if>
+ <xsl:value-of select="test_definition/environment/@host"/>
+ </xsl:when>
+ <xsl:otherwise>
+ N/A
+ </xsl:otherwise>
+ </xsl:choose>
+ </td>
+ </tr>
+ <tr>
+ <td>CTS Version</td>
+ <td>
+ <xsl:choose>
+ <xsl:when test="test_definition/environment/@cts_version">
+ <xsl:if test="test_definition/environment/@cts_version = ''">
+ N/A
+ </xsl:if>
+ <xsl:value-of select="test_definition/environment/@cts_version"/>
+ </xsl:when>
+ <xsl:otherwise>
+ N/A
+ </xsl:otherwise>
+ </xsl:choose>
+ </td>
+ </tr>
+ <tr>
+ <td>Others</td>
+ <td>
+ <xsl:if test="test_definition/environment/other = ''">
+ N/A
+ </xsl:if>
+ <xsl:call-template name="br-replace">
+ <xsl:with-param name="word" select="test_definition/environment/other"/>
+ </xsl:call-template>
+ </td>
+ </tr>
+ </table>
+ </div>
+ <div id="summary">
+ <table>
+ <tr>
+ <th colspan="2">Test Summary</th>
+ </tr>
+ <tr>
+ <td>Test Plan Name</td>
+ <td>
+ <xsl:value-of select="test_definition/summary/@test_plan_name"/>
+ </td>
+ </tr>
+ <tr>
+ <td>Tests Total</td>
+ <td>
+ <xsl:value-of select="count(test_definition//suite/set/testcase)"/>
+ </td>
+ </tr>
+ <tr>
+ <td>Test Passed</td>
+ <td>
+ <xsl:value-of select="count(test_definition//suite/set/testcase[@result = 'PASS'])"/>
+ </td>
+ </tr>
+ <tr>
+ <td>Test Failed</td>
+ <td>
+ <xsl:value-of select="count(test_definition//suite/set/testcase[@result = 'FAIL'])"/>
+ </td>
+ </tr>
+ <tr>
+ <td>Test Block</td>
+ <td>
+ <xsl:value-of select="count(test_definition//suite/set/testcase[@result = 'BLOCK'])"/>
+ </td>
+ </tr>
+ <tr>
+ <td>Test Not Run</td>
+ <td>
+ <xsl:value-of select="count(test_definition//suite/set/testcase) - count(test_definition//suite/set/testcase[@result = 'PASS']) - count(test_definition//suite/set/testcase[@result = 'FAIL']) - count(test_definition//suite/set/testcase[@result = 'BLOCK'])"/>
+ </td>
+ </tr>
+ <tr>
+ <td>Start time</td>
+ <td>
+ <xsl:value-of select="test_definition/summary/start_at"/>
+ </td>
+ </tr>
+ <tr>
+ <td>End time</td>
+ <td>
+ <xsl:value-of select="test_definition/summary/end_at"/>
+ </td>
+ </tr>
+ </table>
+ </div>
+ <div id="suite_summary">
+ <div id="title">
+ <a name="contents"/>
+ <table>
+ <tr>
+ <td class="title">
+ <h1>Test Summary by Suite</h1>
+ </td>
+ </tr>
+ </table>
+ </div>
+ <table>
+ <tr>
+ <th>Suite</th>
+ <th>Passed</th>
+ <th>Failed</th>
+ <th>Blocked</th>
+ <th>Not Run</th>
+ <th>Total</th>
+ </tr>
+ <xsl:for-each select="test_definition/suite">
+ <xsl:sort select="@name"/>
+ <tr>
+ <td>
+ <a>
+ <xsl:attribute name="href">
+ #<xsl:value-of select="@name"/>
+ </xsl:attribute>
+ <xsl:value-of select="@name"/>
+ </a>
+ </td>
+ <td>
+ <xsl:value-of select="count(set//testcase[@result = 'PASS'])"/>
+ </td>
+ <td>
+ <xsl:value-of select="count(set//testcase[@result = 'FAIL'])"/>
+ </td>
+ <td>
+ <xsl:value-of select="count(set//testcase[@result = 'BLOCK'])"/>
+ </td>
+ <td>
+ <xsl:value-of select="count(set//testcase) - count(set//testcase[@result = 'PASS']) - count(set//testcase[@result = 'FAIL']) - count(set//testcase[@result = 'BLOCK'])"/>
+ </td>
+ <td>
+ <xsl:value-of select="count(set//testcase)"/>
+ </td>
+ </tr>
+ </xsl:for-each>
+ </table>
+ </div>
+ <div id="fail_cases">
+ <div id="title">
+ <table>
+ <tr>
+ <td class="title">
+ <h1 align="center">
+ Test Failures (
+ <xsl:value-of select="count(test_definition/suite/set//testcase[@result = 'FAIL'])"/>
+ )
+ </h1>
+ </td>
+ </tr>
+ </table>
+ </div>
+ <xsl:for-each select="test_definition/suite">
+ <xsl:sort select="@name"/>
+ <div id="btc">
+ <a href="#contents">Back to Contents</a>
+ </div>
+ <div id="suite_title">
+ Test Suite:
+ <xsl:value-of select="@name"/>
+ <a><xsl:attribute name="name"><xsl:value-of select="@name"/></xsl:attribute></a>
+ </div>
+ <table>
+ <tr>
+ <th>Case_ID</th>
+ <th>Purpose</th>
+ <th>Result</th>
+ <th>Stdout</th>
+ </tr>
+ <xsl:for-each select=".//set">
+ <xsl:sort select="@name"/>
+ <tr>
+ <td colspan="4">
+ Test Set:
+ <xsl:value-of select="@name"/>
+ </td>
+ </tr>
+ <xsl:for-each select=".//testcase">
+ <xsl:sort select="@id"/>
+ <xsl:choose>
+ <xsl:when test="@result">
+ <xsl:if test="@result = 'FAIL'">
+ <tr>
+ <td>
+ <xsl:value-of select="@id"/>
+ </td>
+ <td>
+ <xsl:value-of select="@purpose"/>
+ </td>
+ <td class="red_rate">
+ <xsl:value-of select="@result"/>
+ </td>
+ <td>
+ <xsl:value-of select=".//result_info/stdout"/>
+ <xsl:if test=".//result_info/stdout = ''">
+ N/A
+ </xsl:if>
+ </td>
+ </tr>
+ </xsl:if>
+ </xsl:when>
+ </xsl:choose>
+ </xsl:for-each>
+ </xsl:for-each>
+ </table>
+ </xsl:for-each>
+ </div>
+ <div id="cases">
+ <div id="title">
+ <table>
+ <tr>
+ <td class="title">
+ <h1 align="center">Detailed Test Results</h1>
+ </td>
+ </tr>
+ </table>
+ </div>
+ <xsl:for-each select="test_definition/suite">
+ <xsl:sort select="@name"/>
+ <div id="btc">
+ <a href="#contents">Back to Contents</a>
+ </div>
+ <div id="suite_title">
+ Test Suite:
+ <xsl:value-of select="@name"/>
+ <a><xsl:attribute name="name"><xsl:value-of select="@name"/></xsl:attribute></a>
+ </div>
+ <table>
+ <tr>
+ <th>Case_ID</th>
+ <th>Purpose</th>
+ <th>Result</th>
+ <th>Stdout</th>
+ </tr>
+ <xsl:for-each select=".//set">
+ <xsl:sort select="@name"/>
+ <tr>
+ <td colspan="4">
+ Test Set:
+ <xsl:value-of select="@name"/>
+ </td>
+ </tr>
+ <xsl:for-each select=".//testcase">
+ <xsl:sort select="@id"/>
+ <tr>
+ <td>
+ <xsl:value-of select="@id"/>
+ </td>
+ <td>
+ <xsl:value-of select="@purpose"/>
+ </td>
+ <xsl:choose>
+ <xsl:when test="@result">
+ <xsl:if test="@result = 'FAIL'">
+ <td class="red_rate">
+ <xsl:value-of select="@result"/>
+ </td>
+ </xsl:if>
+ <xsl:if test="@result = 'PASS'">
+ <td class="green_rate">
+ <xsl:value-of select="@result"/>
+ </td>
+ </xsl:if>
+ <xsl:if test="@result = 'BLOCK' ">
+ <td>
+ BLOCK
+ </td>
+ </xsl:if>
+ <xsl:if test="@result != 'BLOCK' and @result != 'FAIL' and @result != 'PASS' ">
+ <td>
+ Not Run
+ </td>
+ </xsl:if>
+ </xsl:when>
+ <xsl:otherwise>
+ <td>
+ </td>
+ </xsl:otherwise>
+ </xsl:choose>
+ <td>
+ <xsl:value-of select=".//result_info/stdout"/>
+ <xsl:if test=".//result_info/stdout = ''">
+ N/A
+ </xsl:if>
+ </td>
+ </tr>
+ </xsl:for-each>
+ </xsl:for-each>
+ </table>
+ </xsl:for-each>
+ </div>
+ </div>
+ <div id="goTopBtn">
+ <img border="0" src="./back_top.png"/>
+ </div>
+ <script type="text/javascript" src="application.js"/>
+ <script language="javascript" type="text/javascript">
+ $(document).ready(function(){
+ goTopEx();
+ });
+ </script>
+ </body>
+ </html>
+ </xsl:template>
+ <xsl:template name="br-replace">
+ <xsl:param name="word"/>
+ <xsl:variable name="cr">
+ <xsl:text>
+ </xsl:text>
+ </xsl:variable>
+ <xsl:choose>
+ <xsl:when test="contains($word,$cr)">
+ <xsl:value-of select="substring-before($word,$cr)"/>
+ <br/>
+ <xsl:call-template name="br-replace">
+ <xsl:with-param name="word" select="substring-after($word,$cr)"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$word"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+</xsl:stylesheet>
--- /dev/null
+@charset "UTF-8";\r
+/* CSS Document */\r
+#testcasepage div,\r
+#testcasepage h1,\r
+#testcasepage p,\r
+#testcasepage table,\r
+#testcasepage tr,\r
+#testcasepage th,\r
+#testcasepage td {\r
+ margin: 0;\r
+ padding: 0;\r
+ border: 0;\r
+ font-weight: inherit;\r
+ font-style: inherit;\r
+ font-size: 0.96em;\r
+ font-family: arial;\r
+ vertical-align: baseline;\r
+}\r
+\r
+#testcasepage p {\r
+ text-align: left;\r
+}\r
+\r
+#suite_title {\r
+ text-align: left;\r
+}\r
+\r
+#btc {\r
+ text-align: right;\r
+}\r
+\r
+#testcasepage table {\r
+ border-collapse: separate;\r
+ border-spacing: 0;\r
+ margin-bottom: 1.4em;\r
+ vertical-align: middle;\r
+}\r
+\r
+#testcasepage th,\r
+#testcasepage td {\r
+ text-align: left;\r
+ font-weight: normal;\r
+ padding: 4px 10px 4px 5px;\r
+ vertical-align: middle;\r
+}\r
+\r
+#cases table {\r
+ width: 101%;\r
+}\r
+\r
+#fail_cases table {\r
+ width: 101%;\r
+}\r
+\r
+#title table {\r
+ width: 101%;\r
+}\r
+\r
+#device table {\r
+ width: 50%;\r
+}\r
+\r
+#summary table {\r
+ width: 50%;\r
+}\r
+\r
+#testcasepage th {\r
+ border-bottom: 1px solid #000;\r
+ background-color: #AAAAAA;\r
+ border-left: 1px solid #000;\r
+ border-top: 1px solid #000;\r
+ color: #000;\r
+ font-weight: bold;\r
+ vertical-align: bottom;\r
+}\r
+\r
+#testcasepage th:last-child,\r
+#testcasepage td:last-child {\r
+ border-right: 1px solid #000;\r
+}\r
+\r
+#testcasepage td {\r
+ border-left: 1px solid;\r
+ font-weight: normal;\r
+ border-bottom: 1px solid;\r
+}\r
+\r
+#testcasepage td.yellow_rate {\r
+ background-color: #ffcc00;\r
+}\r
+\r
+#testcasepage td.green_rate {\r
+ background-color: #33cc33;\r
+}\r
+\r
+#testcasepage td.dgreen_rate {\r
+ background-color: #339933;\r
+}\r
+\r
+#testcasepage td.red_rate {\r
+ background-color: #FF3333;\r
+}\r
+\r
+#title table,\r
+#title tr,\r
+#title td {\r
+ border-left: none;\r
+ border-bottom: none;\r
+ text-align: center;\r
+}\r
+\r
+#title td:last-child {\r
+ border-right: none;\r
+}\r
+\r
+#testcasepage h1 {\r
+ font-size: 2em;\r
+ font-family: Arial, sans-serif;\r
+ font-weight: bold;\r
+ line-height: 1;\r
+ color: #000;\r
+ margin-bottom: 0.75em;\r
+ padding-top: 0.25em;\r
+ font-weight: bold;\r
+}\r
+\r
+#goTopBtn {\r
+ right: 0px;\r
+ bottom: 0px;\r
+ position: fixed; +position: absolute;\r
+ top: expression(parseInt(document.body.scrollTop) + document.body.clientHeight - 40);\r
+}\r
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<?xml-stylesheet type="text/xsl" href="./testcase.xsl"?>
+<test_definition>
+ <suite name="tct-humanactivitymonitor-tizen-tests" extension="crosswalk" category="Tizen Web Device APIs">
+ <set name="HumanActivityMonitor_mobile" type="js">
+ <capabilities>
+ <capability name="http://tizen.org/feature/profile"><value>MOBILE_FULL</value></capability>
+ </capabilities>
+ <testcase purpose="Check if interface HumanActivityData exists, it should not" type="compliance" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P3" id="HumanActivityData_notexist">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityData_notexist.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityData" usage="true" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if interface StepDifference exists, it should not" type="compliance" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P3" id="StepDifference_notexist">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/StepDifference_notexist.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="StepDifference" usage="true" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if interface HumanActivityAccumulativePedometerData exists, it should not" type="compliance" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P3" id="HumanActivityAccumulativePedometerData_notexist">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityAccumulativePedometerData_notexist.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityAccumulativePedometerData" usage="true" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if interface HumanActivityHRMData exists, it should not" type="compliance" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P3" id="HumanActivityHRMData_notexist">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityHRMData_notexist.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityHRMData" usage="true" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if interface HumanActivityGPSInfo exists, it should not" type="compliance" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P3" id="HumanActivityGPSInfo_notexist">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityGPSInfo_notexist.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityGPSInfo" usage="true" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if interface HumanActivityGPSInfoArray exists, it should not" type="compliance" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P3" id="HumanActivityGPSInfoArray_notexist">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityGPSInfoArray_notexist.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityGPSInfoArray" usage="true" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if interface HumanActivityRecognitionData exists, it should not" type="compliance" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P3" id="HumanActivityRecognitionData_notexist">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityRecognitionData_notexist.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityRecognitionData" usage="true" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if interface HumanActivitySleepMonitorData exists, it should not" type="compliance" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P3" id="HumanActivitySleepMonitorData_notexist">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivitySleepMonitorData_notexist.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivitySleepMonitorData" usage="true" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if interface HumanActivityMonitorManagerObject exists, it should not" type="compliance" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P3" id="HumanActivityMonitorManagerObject_notexist">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManagerObject_notexist.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityMonitorManagerObject U" usage="true" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if HumanActivityMonitorManager is extendable" type="compliance" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P3" id="HumanActivityMonitorManager_extend">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_extend.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityMonitorManager" usage="true" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if HumanActivityMonitorManager::getHumanActivityData() method exists" type="compliance" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P0" id="HumanActivityMonitorManager_getHumanActivityData_exist">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_getHumanActivityData_exist.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="getHumanActivityData" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if humanactivitymonitor exists in tizen" type="compliance" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P3" id="HumanActivityMonitorManager_in_tizen">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_in_tizen.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityMonitorManager" usage="true" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if interface HumanActivityMonitorManager exists, it should not" type="compliance" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P3" id="HumanActivityMonitorManager_notexist">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_notexist.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityMonitorManager" usage="true" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if method HumanActivityMonitorManager::start() exists" type="compliance" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P0" id="HumanActivityMonitorManager_start_exist">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_start_exist.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="start" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if HumanActivityMonitorManager::start() throws exception when type and successCallback are missing" type="compliance" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P2" id="HumanActivityMonitorManager_start_misarg">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_start_misarg.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="start" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if HumanActivityMonitorManager::stop() method exists" type="compliance" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P0" id="HumanActivityMonitorManager_stop_exist">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_stop_exist.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="stop" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if HumanActivityMonitorManager::stop() throws exception when type is missing" type="compliance" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P2" id="HumanActivityMonitorManager_stop_misarg">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_stop_misarg.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="stop" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if HumanActivityMonitorSuccessCallback does not exist" type="compliance" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P3" id="HumanActivityMonitorSuccessCallback_notexist">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorSuccessCallback_notexist.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityMonitorSuccessCallback U" usage="true" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if HumanActivityMonitorManager::start() with incorrect option argument throws exception" type="compliance" onload_delay="30" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P2" id="HumanActivityMonitorManager_start_option_TypeMismatch">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_start_option_TypeMismatch.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="start" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if HumanActivityMonitorManager::start() with incorrect successCallback argument throws exception" type="compliance" onload_delay="30" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P2" id="HumanActivityMonitorManager_start_changedCallback_TypeMismatch">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_start_changedCallback_TypeMismatch.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="start" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if HumanActivityMonitorManager::start() method throws exception when HumanActivityMonitorSuccessCallback is invalid" type="compliance" onload_delay="30" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P2" id="HumanActivityMonitorManager_start_changedCallback_invalid_cb">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_start_changedCallback_invalid_cb.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="start" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if readRecorderData throw NotSupportedError called with not supported human activity recorder type" type="compliance" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" priority="P2" id="HumanActivityMonitorManager_readRecorderData_NotSupportedError">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_readRecorderData_NotSupportedError.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="readRecorderData" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if readRecorderData throws exception when errorCallback is incorrect" type="compliance" onload_delay="30" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" priority="P2" id="HumanActivityMonitorManager_readRecorderData_errorCallback_TypeMismatch">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_readRecorderData_errorCallback_TypeMismatch.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="readRecorderData" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if readRecorderData throws exception when error callback is invalid" type="compliance" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" priority="P2" id="HumanActivityMonitorManager_readRecorderData_errorCallback_invalid_cb">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_readRecorderData_errorCallback_invalid_cb.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="readRecorderData" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if readRecorderData exists" type="compliance" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" priority="P0" id="HumanActivityMonitorManager_readRecorderData_exist">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_readRecorderData_exist.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="readRecorderData" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if HumanActivityMonitorManager::readRecorderData() called with missing non-optional argument throws an exception" type="compliance" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" priority="P1" id="HumanActivityMonitorManager_readRecorderData_misarg">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_readRecorderData_misarg.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="readRecorderData" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if readRecorderData throws exception when query is incorrect" type="compliance" onload_delay="30" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" priority="P2" id="HumanActivityMonitorManager_readRecorderData_query_TypeMismatch">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_readRecorderData_query_TypeMismatch.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="readRecorderData" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if readRecorderData throws exception when successCallback is incorrect" type="compliance" onload_delay="30" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" priority="P2" id="HumanActivityMonitorManager_readRecorderData_successCallback_TypeMismatch">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_readRecorderData_successCallback_TypeMismatch.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="readRecorderData" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if readRecorderData throws exception when success callback is invalid" type="compliance" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" priority="P2" id="HumanActivityMonitorManager_readRecorderData_successCallback_invalid_cb">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_readRecorderData_successCallback_invalid_cb.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="readRecorderData" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if readRecorderData without optional arguments works properly for PRESSURE HumanActivity type" type="compliance" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="manual" onload_delay="150" priority="P1" id="HumanActivityMonitorManager_readRecorderData_type_PRESSURE">
+ <description>
+ <steps>
+ <step order="1">
+ <step_desc>Waiting for 1 minutes for the callback.</step_desc>
+ <expected>Pass should be shown in the page after 1 minutes.</expected>
+ </step>
+ </steps>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_readRecorderData_type_PRESSURE.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="readRecorderData" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if HumanActivityMonitorManager::startRecorder() throw NotSupportedError called with not supported human activity recorder type" type="compliance" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" priority="P1" id="HumanActivityMonitorManager_startRecorder_NotSupportedError">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_startRecorder_NotSupportedError.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="startRecorder" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if startRecorder exists" type="compliance" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" priority="P0" id="HumanActivityMonitorManager_startRecorder_exist">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_startRecorder_exist.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="startRecorder" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if HumanActivityMonitorManager::startRecorder() called with missing non-optional argument throws an exception" type="compliance" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" priority="P1" id="HumanActivityMonitorManager_startRecorder_misarg">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_startRecorder_misarg.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="startRecorder" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if method HumanActivityMonitorManager::startRecorder() works properly for PRESSURE HumanActivity type" type="compliance" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" priority="P1" id="HumanActivityMonitorManager_startRecorder_type_PRESSURE">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_startRecorder_type_PRESSURE.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="startRecorder" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if HumanActivityMonitorManager::stopRecorder() throw NotSupportedError called with not supported human activity recorder type" type="compliance" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" priority="P2" id="HumanActivityMonitorManager_stopRecorder_NotSupportedError">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_stopRecorder_NotSupportedError.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="stopRecorder" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if stopRecorder exists" type="compliance" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" priority="P0" id="HumanActivityMonitorManager_stopRecorder_exist">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_stopRecorder_exist.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="stopRecorder" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if HumanActivityMonitorManager::stopRecorder() called with missing non-optional argument throws an exception" type="compliance" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" priority="P1" id="HumanActivityMonitorManager_stopRecorder_misarg">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_stopRecorder_misarg.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="stopRecorder" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if method HumanActivityMonitorManager::stopRecorder() works properly for PRESSURE HumanActivity type" type="compliance" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" priority="P1" id="HumanActivityMonitorManager_stopRecorder_type_PRESSURE">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_stopRecorder_type_PRESSURE.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="stopRecorder" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if HumanActivityReadRecorderSuccessCallback cannot be called in new expression and as a function or in new expression" type="compliance" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" priority="P3" id="HumanActivityReadRecorderSuccessCallback_notexist">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityReadRecorderSuccessCallback_notexist.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityReadRecorderSuccessCallback" usage="true" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if HumanActivityRecorderData cannot be called in new expression and as a function or in new expression" type="compliance" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" priority="P3" id="HumanActivityRecorderData_notexist">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityRecorderData_notexist.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityRecorderData" usage="true" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if HumanActivityRecorderPressureData have average attribute with proper type, readonly" type="compliance" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="manual" onload_delay="90" priority="P1" id="HumanActivityRecorderPressureData_average_attribute">
+ <description>
+ <pre_condition>Before run this tc, run HumanActivityMonitorManager_readRecorderData_type_PRESSURE.html first, because we should wait at least 1 minute to get the recorded data after start recorder. But if you tested that TC already, you can run this TC now.</pre_condition>
+ <steps>
+ <step order="1">
+ <step_desc>Waiting for 1 minutes for the callback.</step_desc>
+ <expected>Pass should be shown in the page after 1 minutes.</expected>
+ </step>
+ </steps>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityRecorderPressureData_average_attribute.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityRecorderPressureData" element_type="attribute" element_name="average" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if HumanActivityRecorderPressureData have endTime attribute with proper type, readonly" type="compliance" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="manual" onload_delay="90" priority="P1" id="HumanActivityRecorderPressureData_endTime_attribute">
+ <description>
+ <pre_condition>Before run this tc, run HumanActivityMonitorManager_readRecorderData_type_PRESSURE.html first, because we should wait at least 1 minute to get the recorded data after start recorder. But if you tested that TC already, you can run this TC now.</pre_condition>
+ <steps>
+ <step order="1">
+ <step_desc>Waiting for 1 minutes for the callback.</step_desc>
+ <expected>Pass should be shown in the page after 1 minutes.</expected>
+ </step>
+ </steps>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityRecorderPressureData_endTime_attribute.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityRecorderPressureData" element_type="attribute" element_name="endTime" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if HumanActivityRecorderPressureData have max attribute with proper type, readonly" type="compliance" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="manual" onload_delay="90" priority="P1" id="HumanActivityRecorderPressureData_max_attribute">
+ <description>
+ <pre_condition>Before run this tc, run HumanActivityMonitorManager_readRecorderData_type_PRESSURE.html first, because we should wait at least 1 minute to get the recorded data after start recorder. But if you tested that TC already, you can run this TC now.</pre_condition>
+ <steps>
+ <step order="1">
+ <step_desc>Waiting for 1 minutes for the callback.</step_desc>
+ <expected>Pass should be shown in the page after 1 minutes.</expected>
+ </step>
+ </steps>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityRecorderPressureData_max_attribute.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityRecorderPressureData" element_type="attribute" element_name="max" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if HumanActivityRecorderPressureData have min attribute with proper type, readonly" type="compliance" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="manual" onload_delay="90" priority="P1" id="HumanActivityRecorderPressureData_min_attribute">
+ <description>
+ <pre_condition>Before run this tc, run HumanActivityMonitorManager_readRecorderData_type_PRESSURE.html first, because we should wait at least 1 minute to get the recorded data after start recorder. But if you tested that TC already, you can run this TC now.</pre_condition>
+ <steps>
+ <step order="1">
+ <step_desc>Waiting for 1 minutes for the callback.</step_desc>
+ <expected>Pass should be shown in the page after 1 minutes.</expected>
+ </step>
+ </steps>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityRecorderPressureData_min_attribute.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityRecorderPressureData" element_type="attribute" element_name="min" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if HumanActivityRecorderPressureData cannot be called in new expression and as a function or in new expression" type="compliance" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" priority="P3" id="HumanActivityRecorderPressureData_notexist">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityRecorderPressureData_notexist.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityRecorderPressureData" usage="true" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if HumanActivityRecorderPressureData have startTime attribute with proper type, readonly" type="compliance" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="manual" onload_delay="90" priority="P1" id="HumanActivityRecorderPressureData_startTime_attribute">
+ <description>
+ <pre_condition>Before run this tc, run HumanActivityMonitorManager_readRecorderData_type_PRESSURE.html first, because we should wait at least 1 minute to get the recorded data after start recorder. But if you tested that TC already, you can run this TC now.</pre_condition>
+ <steps>
+ <step order="1">
+ <step_desc>Waiting for 1 minutes for the callback.</step_desc>
+ <expected>Pass should be shown in the page after 1 minutes.</expected>
+ </step>
+ </steps>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityRecorderPressureData_startTime_attribute.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityRecorderPressureData" element_type="attribute" element_name="startTime" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ </set>
+ <set name="HumanActivityMonitor_with_activity_recognition_mobile">
+ <capabilities>
+ <capability name="http://tizen.org/feature/profile"><value>MOBILE_FULL</value></capability>
+ <capability name="http://tizen.org/feature/sensor.activity_recognition"/>
+ </capabilities>
+ <testcase purpose="Check if the method addActivityRecognitionListener of HumanActivityMonitorManager returns proper value" type="compliance" onload_delay="60" status="approved" component="Tizen Device APIs/HumanActivityMonitor/HumanActivityMonitorManager" execution_type="manual" priority="P1" id="HumanActivityMonitorManager_addActivityRecognitionListener_STATIONARY">
+ <description>
+ <steps>
+ <step order="1">
+ <step_desc>Press run button, then keep the device stationary</step_desc>
+ <expected>Pass</expected>
+ </step>
+ </steps>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_addActivityRecognitionListener_STATIONARY.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="addActivityRecognitionListener M" element_type="method" element_name="addActivityRecognitionListener" specification="HumanActivityMonitorManager" section="HumanActivityMonitor" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitormanager.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if the method addActivityRecognitionListener of HumanActivityMonitorManager returns proper value" type="compliance" onload_delay="60" status="approved" component="Tizen Device APIs/HumanActivityMonitor/HumanActivityMonitorManager" execution_type="manual" priority="P1" id="HumanActivityMonitorManager_addActivityRecognitionListener_WALKING">
+ <description>
+ <steps>
+ <step order="1">
+ <step_desc>Press run button. Pretend walking with the device.</step_desc>
+ <expected>Pass</expected>
+ </step>
+ </steps>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_addActivityRecognitionListener_WALKING.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="addActivityRecognitionListener M" element_type="method" element_name="addActivityRecognitionListener" specification="HumanActivityMonitorManager" section="HumanActivityMonitor" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitormanager.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if the method addActivityRecognitionListener of HumanActivityMonitorManager throws TypeMismatchError when invalid type value is assigned for errorCallback parameter" type="compliance" status="approved" component="Tizen Device APIs/HumanActivityMonitor/HumanActivityMonitorManager" execution_type="auto" priority="P2" id="HumanActivityMonitorManager_addActivityRecognitionListener_errorCallback_TypeMismatch">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_addActivityRecognitionListener_errorCallback_TypeMismatch .html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="addActivityRecognitionListener M" element_type="method" element_name="addActivityRecognitionListener" specification="HumanActivityMonitorManager" section="HumanActivityMonitor" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitormanager.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if the method addActivityRecognitionListener of HumanActivityMonitorManager exist" type="compliance" status="approved" component="Tizen Device APIs/HumanActivityMonitor/HumanActivityMonitorManager" execution_type="auto" priority="P1" id="HumanActivityMonitorManager_addActivityRecognitionListener_exist">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_addActivityRecognitionListener_exist.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="addActivityRecognitionListener M" element_type="method" element_name="addActivityRecognitionListener" specification="HumanActivityMonitorManager" section="HumanActivityMonitor" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitormanager.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if the method addActivityRecognitionListener of HumanActivityMonitorManager throws TypeMismatchError when invalid value is assigned for type parameter" type="compliance" status="approved" component="Tizen Device APIs/HumanActivityMonitor/HumanActivityMonitorManager" execution_type="auto" priority="P2" id="HumanActivityMonitorManager_addActivityRecognitionListener_type_TypeMismatch">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_addActivityRecognitionListener_listener_TypeMismatch.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="addActivityRecognitionListener M" element_type="method" element_name="addActivityRecognitionListener" specification="HumanActivityMonitorManager" section="HumanActivityMonitor" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitormanager.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if the method addActivityRecognitionListener of HumanActivityMonitorManager throws TypeMismatchError when no param assigned" type="compliance" status="approved" component="Tizen Device APIs/HumanActivityMonitor/HumanActivityMonitorManager" execution_type="auto" priority="P2" id="HumanActivityMonitorManager_addActivityRecognitionListener_misarg">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_addActivityRecognitionListener_misarg.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="addActivityRecognitionListener M" element_type="method" element_name="addActivityRecognitionListener" specification="HumanActivityMonitorManager" section="HumanActivityMonitor" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitormanager.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if the method addActivityRecognitionListener of HumanActivityMonitorManager throws TypeMismatchError when invalid type value is assigned for listener parameter" type="compliance" status="approved" component="Tizen Device APIs/HumanActivityMonitor/HumanActivityMonitorManager" execution_type="auto" priority="P2" id="HumanActivityMonitorManager_addActivityRecognitionListener_listener_TypeMismatch">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_addActivityRecognitionListener_type_TypeMismatch.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="addActivityRecognitionListener M" element_type="method" element_name="addActivityRecognitionListener" specification="HumanActivityMonitorManager" section="HumanActivityMonitor" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitormanager.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if the method addActivityRecognitionListener of HumanActivityMonitorManager returns proper value with errorcallback assigned" type="compliance" onload_delay="60" status="approved" component="Tizen Device APIs/HumanActivityMonitor/HumanActivityMonitorManager" execution_type="manual" priority="P1" id="HumanActivityMonitorManager_addActivityRecognitionListener_with_errorCallback">
+ <description>
+ <steps>
+ <step order="1">
+ <step_desc>Press run button, then keep the device stationary</step_desc>
+ <expected>Pass</expected>
+ </step>
+ </steps>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_addActivityRecognitionListener_with_errorCallback.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="addActivityRecognitionListener M" element_type="method" element_name="addActivityRecognitionListener" specification="HumanActivityMonitorManager" section="HumanActivityMonitor" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitormanager.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if the method addActivityRecognitionListener of HumanActivityMonitorManager returns proper value with errorcallback null assigned" type="compliance" onload_delay="60" status="approved" component="Tizen Device APIs/HumanActivityMonitor/HumanActivityMonitorManager" execution_type="manual" priority="P1" id="HumanActivityMonitorManager_addActivityRecognitionListener_with_errorCallback_null">
+ <description>
+ <steps>
+ <step order="1">
+ <step_desc>Press run button, then keep the device stationary</step_desc>
+ <expected>Pass</expected>
+ </step>
+ </steps>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_addActivityRecognitionListener_with_errorCallback_null.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="addActivityRecognitionListener M" element_type="method" element_name="addActivityRecognitionListener" specification="HumanActivityMonitorManager" section="HumanActivityMonitor" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitormanager.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if the method removeActivityRecognitionListener of HumanActivityMonitorManager returns proper value" type="compliance" onload_delay="20" status="approved" component="Tizen Device APIs/TBD/HumanActivityMonitor" execution_type="manual" priority="P1" id="HumanActivityMonitorManager_removeActivityRecognitionListener_STATIONARY">
+ <description>
+ <steps>
+ <step order="1">
+ <step_desc>Press run button, then pretend walking with the device for 15 seconds</step_desc>
+ <expected>Pass</expected>
+ </step>
+ </steps>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_removeActivityRecognitionListener.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="removeActivityRecognitionListener" specification="HumanActivityMonitor" section="TBD" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if the method removeActivityRecognitionListener of HumanActivityMonitorManager exist" type="compliance" status="approved" component="Tizen Device APIs/HumanActivityMonitor/HumanActivityMonitorManager" execution_type="auto" priority="P1" id="HumanActivityMonitorManager_removeActivityRecognitionListener_exist">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_removeActivityRecognitionListener_exist.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="removeActivityRecognitionListener M" element_type="method" element_name="removeActivityRecognitionListener" specification="HumanActivityMonitorManager" section="HumanActivityMonitor" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitormanager.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if the method removeActivityRecognitionListener of HumanActivityMonitorManager ignores invalid id" type="compliance" onload_delay="3" status="approved" component="Tizen Device APIs/HumanActivityMonitor/HumanActivityMonitorManager" execution_type="auto" priority="P2" id="HumanActivityMonitorManager_removeActivityRecognitionListener_invalid_id">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_removeActivityRecognitionListener_invalid_id.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="removeActivityRecognitionListener M" element_type="method" element_name="removeActivityRecognitionListener" specification="HumanActivityMonitorManager" section="HumanActivityMonitor" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitormanager.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if the method removeActivityRecognitionListener of HumanActivityMonitorManager ignores invalid id when no param assigned (undefined converted to 0)" type="compliance" status="approved" component="Tizen Device APIs/HumanActivityMonitor/HumanActivityMonitorManager" execution_type="auto" priority="P2" id="HumanActivityMonitorManager_removeActivityRecognitionListener_misarg">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_removeActivityRecognitionListener_misarg.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="removeActivityRecognitionListener M" element_type="method" element_name="removeActivityRecognitionListener" specification="HumanActivityMonitorManager" section="HumanActivityMonitor" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitormanager.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if the method removeActivityRecognitionListener of HumanActivityMonitorManager returns proper value with errorcallback assigned" type="compliance" onload_delay="20" status="approved" component="Tizen Device APIs/TBD/HumanActivityMonitor" execution_type="manual" priority="P1" id="HumanActivityMonitorManager_removeActivityRecognitionListener_STATIONARY">
+ <description>
+ <steps>
+ <step order="1">
+ <step_desc>Press run button, then pretend walking with the device for 15 seconds</step_desc>
+ <expected>Pass</expected>
+ </step>
+ </steps>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_removeActivityRecognitionListener_with_errorCallback.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="removeActivityRecognitionListener" specification="HumanActivityMonitor" section="TBD" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if the method removeActivityRecognitionListener of HumanActivityMonitorManager returns proper value with errorcallback null assigned" type="compliance" onload_delay="20" status="approved" component="Tizen Device APIs/TBD/HumanActivityMonitor" execution_type="manual" priority="P1" id="HumanActivityMonitorManager_removeActivityRecognitionListener_STATIONARY">
+ <description>
+ <steps>
+ <step order="1">
+ <step_desc>Press run button, then pretend walking with the device for 15 seconds</step_desc>
+ <expected>Pass</expected>
+ </step>
+ </steps>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_removeActivityRecognitionListener_with_errorCallback_null.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="removeActivityRecognitionListener" specification="HumanActivityMonitor" section="TBD" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ </set>
+ <set name="HumanActivityMonitor_with_pedometer_mobile">
+ <capabilities>
+ <capability name="http://tizen.org/feature/profile"><value>MOBILE_FULL</value></capability>
+ <capability name="http://tizen.org/feature/sensor.pedometer"/>
+ </capabilities>
+ <testcase purpose="Check if method getHumanActivityData of HumanActivityMonitorManager returns properly value" type="compliance" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P1" id="HumanActivityMonitorManager_getHumanActivityData">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_getHumanActivityData.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="getHumanActivityData" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if HumanActivityMonitorManager::getHumanActivityData() with incorrect errorCallback argument throws exception" type="compliance" onload_delay="30" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P2" id="HumanActivityMonitorManager_getHumanActivityData_errorCallback_TypeMismatch">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_getHumanActivityData_errorCallback_TypeMismatch.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="getHumanActivityData" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if HumanActivityMonitorManager::getHumanActivityData() method throws exception when errorCallback is invalid" type="compliance" onload_delay="30" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P2" id="HumanActivityMonitorManager_getHumanActivityData_errorCallback_invalid_cb">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_getHumanActivityData_errorCallback_invalid_cb.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="getHumanActivityData" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check exception in error callback of HumanActivityMonitorManager::getHumanActivityData() method" type="compliance" onload_delay="30" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P2" id="HumanActivityMonitorManager_getHumanActivityData_errorCallback_invoked">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_getHumanActivityData_errorCallback_invoked.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="getHumanActivityData" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if HumanActivityMonitorManager::getHumanActivityData() throws exception when successCallback is missing" type="compliance" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P2" id="HumanActivityMonitorManager_getHumanActivityData_misarg">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_getHumanActivityData_misarg.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="getHumanActivityData" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if HumanActivityMonitorManager::getHumanActivityData() with incorrect successCallback argument throws exception" type="compliance" onload_delay="30" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P2" id="HumanActivityMonitorManager_getHumanActivityData_successCallback_TypeMismatch">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_getHumanActivityData_successCallback_TypeMismatch.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="getHumanActivityData" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if HumanActivityMonitorManager::getHumanActivityData() method throws exception when successCallback is invalid" type="compliance" onload_delay="30" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P2" id="HumanActivityMonitorManager_getHumanActivityData_successCallback_invalid_cb">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_getHumanActivityData_successCallback_invalid_cb.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="getHumanActivityData" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if HumanActivityMonitorManager::getHumanActivityData() method works properly" type="compliance" onload_delay="30" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P1" id="HumanActivityMonitorManager_getHumanActivityData_type_PEDOMETER">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_getHumanActivityData_type_PEDOMETER.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="getHumanActivityData" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if HumanActivityMonitorManager::getHumanActivityData() method works properly with optional argument" type="compliance" onload_delay="30" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P1" id="HumanActivityMonitorManager_getHumanActivityData_with_errorCallback">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_getHumanActivityData_with_errorCallback.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="getHumanActivityData" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if HumanActivityMonitorManager::start() with incorrect successCallback argument throws exception" type="compliance" onload_delay="30" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P2" id="HumanActivityMonitorManager_start_changedCallback_TypeMismatch">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_start_changedCallback_TypeMismatch.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="start" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if HumanActivityMonitorManager::start() with incorrect errorCallback argument throws exception" type="compliance" onload_delay="30" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P2" id="HumanActivityMonitorManager_start_errorCallback_TypeMismatch">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_start_errorCallback_TypeMismatch.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="start" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if HumanActivityMonitorManager::start() method throws exception when HumanActivityMonitorSuccessCallback is invalid" type="compliance" onload_delay="30" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P2" id="HumanActivityMonitorManager_start_changedCallback_invalid_cb">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_start_changedCallback_invalid_cb.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="start" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if HumanActivityMonitorManager::start() method throws exception when ErrorCallback is invalid" type="compliance" onload_delay="30" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P2" id="HumanActivityMonitorManager_start_errorCallback_invalid_cb">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_start_errorCallback_invalid_cb.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="start" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if method HumanActivityMonitorManager::start() works properly for PEDOMETER" type="compliance" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P1" id="HumanActivityMonitorManager_start_type_PEDOMETER">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_start_type_PEDOMETER.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="start" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if HumanActivityMonitorManager::stop() method works properly" type="compliance" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P1" id="HumanActivityMonitorManager_stop_type_PEDOMETER">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_stop_type_PEDOMETER.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="stop" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Test whether HumanActivityMonitorSuccessCallback::onsuccess() is called with argument of proper type" type="compliance" onload_delay="90" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P1" id="HumanActivityMonitorSuccessCallback_onsuccess">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorSuccessCallback_onsuccess.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityMonitorSuccessCallback" element_type="method" element_name="onsuccess" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if HumanActivityPedometerData::cumulativeCalorie exists, has type double, and is readonly" type="compliance" onload_delay="9" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P1" id="HumanActivityPedometerData_cumulativeCalorie_attribute">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityPedometerData_cumulativeCalorie_attribute.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityPedometerData" element_type="attribute" element_name="cumulativeCalorie" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if HumanActivityPedometerData::cumulativeDistance exists, has type double, and is readonly" type="compliance" onload_delay="9" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P1" id="HumanActivityPedometerData_cumulativeDistance_attribute">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityPedometerData_cumulativeDistance_attribute.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityPedometerData" element_type="attribute" element_name="cumulativeDistance" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if HumanActivityPedometerData::cumulativeRunStepCount exists, has type double, and is readonly" type="compliance" onload_delay="9" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P1" id="HumanActivityPedometerData_cumulativeRunStepCount_attribute">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityPedometerData_cumulativeRunStepCount_attribute.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityPedometerData" element_type="attribute" element_name="cumulativeRunStepCount" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if HumanActivityPedometerData::cumulativeTotalStepCount exists, has type double, and is readonly" type="compliance" onload_delay="9" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P1" id="HumanActivityPedometerData_cumulativeTotalStepCount_attribute">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityPedometerData_cumulativeTotalStepCount_attribute.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityPedometerData" element_type="attribute" element_name="cumulativeTotalStepCount" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if HumanActivityPedometerData::cumulativeWalkStepCount exists, has type double, and is readonly" type="compliance" onload_delay="9" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P1" id="HumanActivityPedometerData_cumulativeWalkStepCount_attribute">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityPedometerData_cumulativeWalkStepCount_attribute.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityPedometerData" element_type="attribute" element_name="cumulativeWalkStepCount" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if HumanActivityPedometerData::stepCountDifferences exists, has type double, and is readonly" type="compliance" onload_delay="9" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P1" id="HumanActivityPedometerData_stepCountDifferences_attribute">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityPedometerData_stepCountDifferences_attribute.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityPedometerData" element_type="attribute" element_name="stepCountDifferences" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if HumanActivityPedometerData object is extendable" type="compliance" onload_delay="90" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P3" id="HumanActivityPedometerData_extend">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityPedometerData_extend.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityPedometerData" usage="true" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if HumanActivityPedometerData::speed exists, has type double, and is readonly" type="compliance" onload_delay="9" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P1" id="HumanActivityPedometerData_speed_attribute">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityPedometerData_speed_attribute.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityPedometerData" element_type="attribute" element_name="speed" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if HumanActivityPedometerData::stepStatus exists, has type string, and is readonly" type="compliance" onload_delay="9" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P1" id="HumanActivityPedometerData_stepStatus_attribute">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityPedometerData_stepStatus_attribute.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityPedometerData" element_type="attribute" element_name="stepStatus" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if HumanActivityPedometerData::walkingFrequency exists, has type double, and is readonly" type="compliance" onload_delay="9" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P1" id="HumanActivityPedometerData_walkingFrequency_attribute">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityPedometerData_walkingFrequency_attribute.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityPedometerData" element_type="attribute" element_name="walkingFrequency" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if interface HumanActivityPedometerData exists, it should not" type="compliance" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P3" id="HumanActivityPedometerData_notexist">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityPedometerData_notexist.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityPedometerData" usage="true" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if interface HumanActivityAccumulativePedometerInfo exists, it should not" type="compliance" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P3" id="HumanActivityAccumulativePedometerInfo_notexist">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityAccumulativePedometerInfo_notexist.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityAccumulativePedometerInfo" usage="true" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if HumanActivityMonitorManager::setAccumulativePedometerListener() with incorrect changeCallback argument throws exception" type="compliance" onload_delay="30" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P2" id="HumanActivityMonitorManager_setAccumulativePedometerListener_changeCallback_TypeMismatch">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_setAccumulativePedometerListener_changeCallback_TypeMismatch.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="setAccumulativePedometerListener" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if HumanActivityMonitorManager::setAccumulativePedometerListener() with incorrect changeCallback argument throws exception" type="compliance" onload_delay="30" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P2" id="HumanActivityMonitorManager_setAccumulativePedometerListener_changeCallback_TypeMismatch">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_setAccumulativePedometerListener_changeCallback_TypeMismatch.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="setAccumulativePedometerListener" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if HumanActivityMonitorManager::setAccumulativePedometerListener() method throws exception when changeCallback is invalid" type="compliance" onload_delay="30" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P2" id="HumanActivityMonitorManager_setAccumulativePedometerListener_changeCallback_invalid_cb">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_setAccumulativePedometerListener_changeCallback_invalid_cb.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="setAccumulativePedometerListener" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if method HumanActivityMonitorManager::setAccumulativePedometerListener() exists" type="compliance" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P0" id="HumanActivityMonitorManager_setAccumulativePedometerListener_exist">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_setAccumulativePedometerListener_exist.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="setAccumulativePedometerListener" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if HumanActivityMonitorManager::setAccumulativePedometerListener() throws exception when changeCallback is missing" type="compliance" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P2" id="HumanActivityMonitorManager_setAccumulativePedometerListener_misarg">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_setAccumulativePedometerListener_misarg.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="setAccumulativePedometerListener" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if HumanActivityMonitorManager::unsetAccumulativePedometerListener() method works properly" type="compliance" onload_delay="30" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P1" id="HumanActivityMonitorManager_unsetAccumulativePedometerListener">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_unsetAccumulativePedometerListener.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="humanactivitymonitor" element_type="method" element_name="unsetAccumulativePedometerListener" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if HumanActivityMonitorManager::unsetAccumulativePedometerListener() method exists" type="compliance" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P0" id="HumanActivityMonitorManager_unsetAccumulativePedometerListener_exist">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_unsetAccumulativePedometerListener_exist.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="unsetAccumulativePedometerListener" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if HumanActivityMonitorManager::unsetAccumulativePedometerListener() method with extra argument" type="compliance" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P1" id="HumanActivityMonitorManager_unsetAccumulativePedometerListener_extra_argument">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_unsetAccumulativePedometerListener_extra_argument.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="unsetAccumulativePedometerListener" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if the specifies the pedometer user's current movement type is NOT_MOVING" type="compliance" onload_delay="60" status="approved" component="Tizen Device APIs/HumanActivityMonitor/HumanActivityMonitorManager" execution_type="manual" priority="P1" id="HumanActivityMonitorManager_getHumanActivityData_stepStatus_NOT_MOVING">
+ <description>
+ <steps>
+ <step order="1">
+ <step_desc>Press run button, then keep the device stationary.</step_desc>
+ <expected>Pass</expected>
+ </step>
+ </steps>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_getHumanActivityData_stepStatus_NOT_MOVING.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="addActivityRecognitionListener M" element_type="method" element_name="addActivityRecognitionListener" specification="HumanActivityMonitorManager" section="HumanActivityMonitor" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitormanager.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if the specifies the pedometer user's current movement type is WALKING" type="compliance" onload_delay="60" status="approved" component="Tizen Device APIs/HumanActivityMonitor/HumanActivityMonitorManager" execution_type="manual" priority="P1" id="HumanActivityMonitorManager_getHumanActivityData_stepStatus_WALKING">
+ <description>
+ <steps>
+ <step order="1">
+ <step_desc>Press run button. Pretend walking with the device.</step_desc>
+ <expected>Pass</expected>
+ </step>
+ </steps>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_getHumanActivityData_stepStatus_WALKING.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="getHumanActivityData M" element_type="method" element_name="getHumanActivityData" specification="HumanActivityMonitorManager" section="HumanActivityMonitor" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitormanager.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if the specifies the pedometer user's current movement type is RUNNING" type="compliance" onload_delay="60" status="approved" component="Tizen Device APIs/HumanActivityMonitor/HumanActivityMonitorManager" execution_type="manual" priority="P1" id="HumanActivityMonitorManager_getHumanActivityData_stepStatus_RUNNING">
+ <description>
+ <steps>
+ <step order="1">
+ <step_desc>Press run button. Pretend running with the device.</step_desc>
+ <expected>Pass</expected>
+ </step>
+ </steps>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_getHumanActivityData_stepStatus_RUNNING.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="addActivityRecognitionListener M" element_type="method" element_name="addActivityRecognitionListener" specification="HumanActivityMonitorManager" section="HumanActivityMonitor" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitormanager.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if the specifies the pedometer user's current movement type is UNKNOWN" type="compliance" onload_delay="60" status="approved" component="Tizen Device APIs/HumanActivityMonitor/HumanActivityMonitorManager" execution_type="manual" priority="P1" id="HumanActivityMonitorManager_getHumanActivityData_stepStatus_UNKNOWN">
+ <description>
+ <steps>
+ <step order="1">
+ <step_desc>Press run button, press Power key to keep the device LCS off, then Pretend walking with the device.</step_desc>
+ <expected>Pass</expected>
+ </step>
+ </steps>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_getHumanActivityData_stepStatus_UNKNOWN.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="addActivityRecognitionListener M" element_type="method" element_name="addActivityRecognitionListener" specification="HumanActivityMonitorManager" section="HumanActivityMonitor" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitormanager.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if readRecorderData can be called with empty object as query argument" type="compliance" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="manual" onload_delay="60" priority="P1" id="HumanActivityMonitorManager_readRecorderData_query_empty">
+ <description>
+ <steps>
+ <step order="1">
+ <step_desc>Press run button. Pretend walking with the device.</step_desc>
+ <expected>Pass</expected>
+ </step>
+ </steps>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_readRecorderData_query_empty.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="readRecorderData" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if readRecorderData without optional arguments works properly for PEDOMETER HumanActivity type" type="compliance" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="manual" onload_delay="60" priority="P1" id="HumanActivityMonitorManager_readRecorderData_type_PEDOMETER">
+ <description>
+ <steps>
+ <step order="1">
+ <step_desc>Press run button. Pretend walking with the device.</step_desc>
+ <expected>Pass</expected>
+ </step>
+ </steps>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_readRecorderData_type_PEDOMETER.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="readRecorderData" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if readRecorderData with optional arguments works properly" type="compliance" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="manual" onload_delay="60" priority="P1" id="HumanActivityMonitorManager_readRecorderData_with_errorCallback">
+ <description>
+ <steps>
+ <step order="1">
+ <step_desc>Press run button. Pretend walking with the device.</step_desc>
+ <expected>Pass</expected>
+ </step>
+ </steps>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_readRecorderData_with_errorCallback.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="readRecorderData" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if HumanActivityMonitorManager::startRecorder() can be called with empty object as option argument" type="compliance" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" priority="P1" id="HumanActivityMonitorManager_startRecorder_option_empty">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_startRecorder_option_empty.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="startRecorder" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if method HumanActivityMonitorManager::startRecorder() works properly for PEDOMETER HumanActivity type" type="compliance" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" priority="P1" id="HumanActivityMonitorManager_startRecorder_type_PEDOMETER">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_startRecorder_type_PEDOMETER.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="startRecorder" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if method HumanActivityMonitorManager::stopRecorder() works properly for PEDOMETER HumanActivity type" type="compliance" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" priority="P1" id="HumanActivityMonitorManager_stopRecorder_type_PEDOMETER">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_stopRecorder_type_PEDOMETER.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="stopRecorder" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if HumanActivityRecorderPedometerData have calorie attribute with proper type, readonly" type="compliance" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="manual" onload_delay="60" priority="P1" id="HumanActivityRecorderPedometerData_calorie_attribute">
+ <description>
+ <steps>
+ <step order="1">
+ <step_desc>Press run button. Pretend walking with the device.</step_desc>
+ <expected>Pass</expected>
+ </step>
+ </steps>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityRecorderPedometerData_calorie_attribute.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityRecorderPedometerData" element_type="attribute" element_name="calorie" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if HumanActivityRecorderPedometerData have distance attribute with proper type, readonly" type="compliance" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="manual" onload_delay="60" priority="P1" id="HumanActivityRecorderPedometerData_distance_attribute">
+ <description>
+ <steps>
+ <step order="1">
+ <step_desc>Press run button. Pretend walking with the device.</step_desc>
+ <expected>Pass</expected>
+ </step>
+ </steps>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityRecorderPedometerData_distance_attribute.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityRecorderPedometerData" element_type="attribute" element_name="distance" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if HumanActivityRecorderPedometerData have endTime attribute with proper type, readonly" type="compliance" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="manual" onload_delay="60" priority="P1" id="HumanActivityRecorderPedometerData_endTime_attribute">
+ <description>
+ <steps>
+ <step order="1">
+ <step_desc>Press run button. Pretend walking with the device.</step_desc>
+ <expected>Pass</expected>
+ </step>
+ </steps>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityRecorderPedometerData_endTime_attribute.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityRecorderPedometerData" element_type="attribute" element_name="endTime" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if HumanActivityRecorderPedometerData cannot be called in new expression and as a function or in new expression" type="compliance" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" priority="P3" id="HumanActivityRecorderPedometerData_notexist">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityRecorderPedometerData_notexist.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityRecorderPedometerData" usage="true" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if HumanActivityRecorderPedometerData have runStepCount attribute with proper type, readonly" type="compliance" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="manual" onload_delay="60" priority="P1" id="HumanActivityRecorderPedometerData_runStepCount_attribute">
+ <description>
+ <steps>
+ <step order="1">
+ <step_desc>Press run button. Pretend walking with the device.</step_desc>
+ <expected>Pass</expected>
+ </step>
+ </steps>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityRecorderPedometerData_runStepCount_attribute.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityRecorderPedometerData" element_type="attribute" element_name="runStepCount" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if HumanActivityRecorderPedometerData have startTime attribute with proper type, readonly" type="compliance" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="manual" onload_delay="60" priority="P1" id="HumanActivityRecorderPedometerData_startTime_attribute">
+ <description>
+ <steps>
+ <step order="1">
+ <step_desc>Press run button. Pretend walking with the device.</step_desc>
+ <expected>Pass</expected>
+ </step>
+ </steps>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityRecorderPedometerData_startTime_attribute.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityRecorderPedometerData" element_type="attribute" element_name="startTime" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if HumanActivityRecorderPedometerData have totalStepCount attribute with proper type, readonly" type="compliance" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="manual" onload_delay="60" priority="P1" id="HumanActivityRecorderPedometerData_totalStepCount_attribute">
+ <description>
+ <steps>
+ <step order="1">
+ <step_desc>Press run button. Pretend walking with the device.</step_desc>
+ <expected>Pass</expected>
+ </step>
+ </steps>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityRecorderPedometerData_totalStepCount_attribute.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityRecorderPedometerData" element_type="attribute" element_name="totalStepCount" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if HumanActivityRecorderPedometerData have walkStepCount attribute with proper type, readonly" type="compliance" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="manual" onload_delay="60" priority="P1" id="HumanActivityRecorderPedometerData_walkStepCount_attribute">
+ <description>
+ <steps>
+ <step order="1">
+ <step_desc>Press run button. Pretend walking with the device.</step_desc>
+ <expected>Pass</expected>
+ </step>
+ </steps>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityRecorderPedometerData_walkStepCount_attribute.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityRecorderPedometerData" element_type="attribute" element_name="walkStepCount" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ </set>
+ <set name="HumanActivityMonitor_with_wrist_up_mobile">
+ <capabilities>
+ <capability name="http://tizen.org/feature/profile"><value>MOBILE_FULL</value></capability>
+ <capability name="http://tizen.org/feature/sensor.wrist_up"/>
+ </capabilities>
+ <testcase purpose="Check if method HumanActivityMonitorManager::start() works properly for WRIST_UP" type="compliance" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P1" id="HumanActivityMonitorManager_start_type_WRIST_UP">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_start_type_WRIST_UP.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="start" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if HumanActivityMonitorManager::stop() method with WRIST_UP works properly" type="compliance" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P1" id="HumanActivityMonitorManager_stop_type_WRIST_UP">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_stop_type_WRIST_UP.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="stop" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ </set>
+ <set name="HumanActivityMonitor_heart_rate_monitor_mobile">
+ <capabilities>
+ <capability name="http://tizen.org/feature/profile"><value>MOBILE_FULL</value></capability>
+ <capability name="http://tizen.org/feature/sensor.heart_rate_monitor"/>
+ </capabilities>
+ <testcase purpose="Check if HumanActivityMonitorManager::getHumanActivityData() method works properly for HumanActivityType HRM" type="compliance" onload_delay="30" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P1" id="HumanActivityMonitorManager_getHumanActivityData_type_HRM">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_getHumanActivityData_type_HRM.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="getHumanActivityData" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if method HumanActivityMonitorManager::start() works properly for HRM HumanActivity type" type="compliance" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P1" id="HumanActivityMonitorManager_start_type_HRM">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_start_type_HRM.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="start" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if HumanActivityMonitorManager::stop() method works properly for HumanActivity type HRM" type="compliance" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P1" id="HumanActivityMonitorManager_stop_type_HRM">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_stop_type_HRM.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="stop" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if HumanActivityHRMData::heartRate exists, has type long, and is readonly " type="compliance" onload_delay="9 " status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P1 " id="HumanActivityHRMData_heartRate_attribute">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityHRMData_heartRate_attribute.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityGPSInfo" element_type="attribute" element_name="heartRate" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if HumanActivityHRMData::rRInterval exists, has type long, and is readonly " type="compliance" onload_delay="9 " status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P1 " id="HumanActivityHRMData_rRInterval_attribute">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityHRMData_rRInterval_attribute.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityGPSInfo" element_type="attribute" element_name="rRInterval" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if method HumanActivityMonitorOption::callbackInterval works properly for HRM HumanActivity type" type="compliance" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P1" id="HumanActivityMonitorOption_callbackInterval_type_HRM">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorOption_callbackInterval_type_HRM.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityMonitorOption" element_type="attribute" element_name="callbackInterval" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if method HumanActivityMonitorOption::callbackInterval() works properly when set to null" type="compliance" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P1" id="HumanActivityMonitorOption_callbackInterval_type_HRM_default">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorOption_callbackInterval_type_HRM_default.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityMonitorOption" element_type="attribute" element_name="callbackInterval" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if readRecorderData without optional arguments works properly for HRM HumanActivity type" type="compliance" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type=""manual" onload_delay="1500" priority="P1" id="HumanActivityMonitorManager_readRecorderData_type_HRM">
+ <description>
+ <steps>
+ <step order="1">
+ <step_desc>Waiting for 10 minutes for the callback.</step_desc>
+ <expected>Pass should be shown in the page after 10 minutes.</expected>
+ </step>
+ </steps>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_readRecorderData_type_HRM.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="readRecorderData" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if method HumanActivityMonitorManager::startRecorder() works properly for HRM HumanActivity type" type="compliance" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" priority="P1" id="HumanActivityMonitorManager_startRecorder_type_HRM">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_startRecorder_type_HRM.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="startRecorder" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if method HumanActivityMonitorManager::startRecorder() works properly with optional argument" type="compliance" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" priority="P1" id="HumanActivityMonitorManager_startRecorder_with_option">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_startRecorder_with_option.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="startRecorder" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if method HumanActivityMonitorManager::stopRecorder() works properly for HRM HumanActivity type" type="compliance" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" priority="P1" id="HumanActivityMonitorManager_stopRecorder_type_HRM">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_stopRecorder_type_HRM.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="stopRecorder" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if HumanActivityReadRecorderSuccessCallback onsuccess is called and if its arguments have proper type" type="compliance" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="manual" onload_delay="60" priority="P1" id="HumanActivityReadRecorderSuccessCallback_onsuccess">
+ <description>
+ <pre_condition>Before run this tc, run HumanActivityMonitorManager_readRecorderData_type_HRM.html first, because we should wait at least 10 minutes to get the recorded data after start recorder. But if you tested that TC already, you can run this TC now.</pre_condition>
+ <steps>
+ <step order="1">
+ <step_desc>Waiting for 10 minutes for the callback.</step_desc>
+ <expected>Pass should be shown in the page after 10 minutes.</expected>
+ </step>
+ </steps>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityReadRecorderSuccessCallback_onsuccess.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityReadRecorderSuccessCallback" usage="true" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if HumanActivityRecorderHRMData have endTime attribute with proper type, readonly" type="compliance" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="manual" onload_delay="60" priority="P1" id="HumanActivityRecorderHRMData_endTime_attribute">
+ <description>
+ <pre_condition>Before run this tc, run HumanActivityMonitorManager_readRecorderData_type_HRM.html first, because we should wait at least 10 minutes to get the recorded data after start recorder. But if you tested that TC already, you can run this TC now.</pre_condition>
+ <steps>
+ <step order="1">
+ <step_desc>Waiting for 10 minutes for the callback.</step_desc>
+ <expected>Pass should be shown in the page after 10 minutes.</expected>
+ </step>
+ </steps>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityRecorderHRMData_endTime_attribute.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityRecorderHRMData" element_type="attribute" element_name="endTime" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if HumanActivityRecorderHRMData have heartRate attribute with proper type, readonly" type="compliance" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="manual" onload_delay="60" priority="P1" id="HumanActivityRecorderHRMData_heartRate_attribute">
+ <description>
+ <pre_condition>Before run this tc, run HumanActivityMonitorManager_readRecorderData_type_HRM.html first, because we should wait at least 10 minutes to get the recorded data after start recorder. But if you tested that TC already, you can run this TC now.</pre_condition>
+ <steps>
+ <step order="1">
+ <step_desc>Waiting for 10 minutes for the callback.</step_desc>
+ <expected>Pass should be shown in the page after 10 minutes.</expected>
+ </step>
+ </steps>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityRecorderHRMData_heartRate_attribute.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityRecorderHRMData" element_type="attribute" element_name="heartRate" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if HumanActivityRecorderHRMData cannot be called in new expression and as a function or in new expression" type="compliance" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" priority="P3" id="HumanActivityRecorderHRMData_notexist">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityRecorderHRMData_notexist.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityRecorderHRMData" usage="true" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if HumanActivityRecorderHRMData have startTime attribute with proper type, readonly" type="compliance" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="manual" onload_delay="60" priority="P1" id="HumanActivityRecorderHRMData_startTime_attribute">
+ <description>
+ <pre_condition>Before run this tc, run HumanActivityMonitorManager_readRecorderData_type_HRM.html first, because we should wait at least 10 minutes to get the recorded data after start recorder. But if you tested that TC already, you can run this TC now.</pre_condition>
+ <steps>
+ <step order="1">
+ <step_desc>Waiting for 10 minutes for the callback.</step_desc>
+ <expected>Pass should be shown in the page after 10 minutes.</expected>
+ </step>
+ </steps>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityRecorderHRMData_startTime_attribute.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityRecorderHRMData" element_type="attribute" element_name="startTime" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ </set>
+ <set name="HumanActivityMonitor_location_batch_mobile">
+ <capabilities>
+ <capability name="http://tizen.org/feature/profile"><value>MOBILE_FULL</value></capability>
+ <capability name="http://tizen.org/feature/location.batch"/>
+ </capabilities>
+ <testcase purpose="Check if method HumanActivityMonitorManager::start() works properly for GPS HumanActivity type with optional argument" type="compliance" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P1" id="HumanActivityMonitorManager_start_with_option">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_start_with_option.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="start" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if method HumanActivityMonitorManager::start() works properly for GPS HumanActivity type" type="compliance" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P1" id="HumanActivityMonitorManager_start_type_GPS">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_start_type_GPS.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="start" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if HumanActivityMonitorManager::start() can be called with empty object as option argument" type="compliance" onload_delay="30" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P1" id="HumanActivityMonitorManager_start_option_empty">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_start_option_empty.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="start" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if HumanActivityMonitorManager::stop() method works properly for HumanActivity type GPS" type="compliance" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P1" id="HumanActivityMonitorManager_stop_type_GPS">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_stop_type_GPS.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="stop" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if HumanActivityGPSInfo::altitude exists, has type double, and is readonly " type="compliance" onload_delay="9 " status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P1 " id="HumanActivityGPSInfo_altitude_attribute">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityGPSInfo_altitude_attribute.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityGPSInfo" element_type="attribute" element_name="altitude" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if HumanActivityGPSInfo::errorRange exists, has type long, and is readonly " type="compliance" onload_delay="9 " status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P1 " id="HumanActivityGPSInfo_errorRange_attribute">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityGPSInfo_errorRange_attribute.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityGPSInfo" element_type="attribute" element_name="errorRange" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if HumanActivityGPSInfo::latitude exists, has type double, and is readonly " type="compliance" onload_delay="9 " status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P1 " id="HumanActivityGPSInfo_latitude_attribute">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityGPSInfo_latitude_attribute.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityGPSInfo" element_type="attribute" element_name="latitude" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if HumanActivityGPSInfo::longitude exists, has type double, and is readonly " type="compliance" onload_delay="9 " status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P1 " id="HumanActivityGPSInfo_longitude_attribute">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityGPSInfo_longitude_attribute.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityGPSInfo" element_type="attribute" element_name="longitude" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if HumanActivityGPSInfo::speed exists, has type double, and is readonly " type="compliance" onload_delay="9 " status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P1 " id="HumanActivityGPSInfo_speed_attribute">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityGPSInfo_speed_attribute.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityGPSInfo" element_type="attribute" element_name="speed" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if HumanActivityGPSInfo::speed exists, has type long, and is readonly " type="compliance" onload_delay="9 " status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P1 " id="HumanActivityGPSInfo_timestamp_attribute">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityGPSInfo_timestamp_attribute.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityGPSInfo" element_type="attribute" element_name="speed" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if method HumanActivityMonitorOption::callbackInterval works properly for GPS HumanActivity type" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="manual" priority="P1" id="HumanActivityMonitorOption_callbackInterval_type_GPS" onload_delay="300">
+ <description>
+ <steps>
+ <step order="1">
+ <step_desc>Wait 155 seconds for the callback</step_desc>
+ <expected>Pass should be shown in the page after 155 seconds</expected>
+ </step>
+ </steps>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorOption_callbackInterval_type_GPS.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityMonitorOption" element_type="attribute" element_name="callbackInterval" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if method HumanActivityMonitorOption::callbackInterval works properly when set to null" type="compliance" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="manual" priority="P1" id="HumanActivityMonitorOption_callbackInterval_type_GPS_default">
+ <description>
+ <steps>
+ <step order="1">
+ <step_desc>Wait 150 seconds for the callback</step_desc>
+ <expected>Pass should be shown in the page after 150 seconds</expected>
+ </step>
+ </steps>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorOption_callbackInterval_type_GPS_default.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityMonitorOption" element_type="attribute" element_name="callbackInterval" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if method HumanActivityMonitorOption::sampleInterval works properly for GPS HumanActivity type" type="compliance" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="manual" priority="P1" id="HumanActivityMonitorOption_sampleInterval_type_GPS">
+ <description>
+ <steps>
+ <step order="1">
+ <step_desc>Wait 120 seconds for the callback</step_desc>
+ <expected>Pass should be shown in the page after 120 seconds</expected>
+ </step>
+ </steps>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorOption_sampleInterval_type_GPS.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityMonitorOption" element_type="attribute" element_name="sampleInterval" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if method HumanActivityMonitorOption::sampleInterval works properly when set to null" type="compliance" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="manual" priority="P1" id="HumanActivityMonitorOption_sampleInterval_type_GPS_default">
+ <description>
+ <steps>
+ <step order="1">
+ <step_desc>Wait 120 seconds for the callback</step_desc>
+ <expected>Pass should be shown in the page after 120 seconds</expected>
+ </step>
+ </steps>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorOption_sampleInterval_type_GPS_default.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityMonitorOption" element_type="attribute" element_name="sampleInterval" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check exception in error callback of HumanActivityMonitorManager::start() method" type="compliance" onload_delay="30" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="manual" priority="P2" id="HumanActivityMonitorManager_start_errorCallback_invoked">
+ <description>
+ <steps>
+ <step order="1">
+ <step_desc>Please set the GPS function to disabled in the location settings</step_desc>
+ <expected>Pass should be shown in the page after GPS off</expected>
+ </step>
+ </steps>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_start_errorCallback_invoked.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="start" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ </set>
+ <set name="HumanActivityMonitor_sleep_monitor_mobile">
+ <capabilities>
+ <capability name="http://tizen.org/feature/profile"><value>MOBILE_FULL</value></capability>
+ <capability name="http://tizen.org/feature/sensor.sleep_monitor"/>
+ </capabilities>
+ <testcase purpose="Check if method HumanActivityMonitorManager::start() works properly for SLEEP_MONITOR" type="compliance" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P1" id="HumanActivityMonitorManager_start_type_SLEEP_MONITOR">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_start_type_SLEEP_MONITOR.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="start" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if HumanActivityMonitorManager::stop() method with SLEEP_MONITOR works properly" type="compliance" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P1" id="HumanActivityMonitorManager_stop_type_SLEEP_MONITOR">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_stop_type_SLEEP_MONITOR.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="stop" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if HumanActivitySleepMonitorData::status exists and is readonly " type="compliance" onload_delay="9 " status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P1 " id="HumanActivitySleepMonitorData_status_attribute">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivitySleepMonitorData_status_attribute.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivitySleepMonitorData" element_type="attribute" element_name="status" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if HumanActivitySleepMonitorData::timestamp exists, has type long, and is readonly" type="compliance" onload_delay="9 " status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P1 " id="HumanActivitySleepMonitorData_timestamp_attribute">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivitySleepMonitorData_timestamp_attribute.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivitySleepMonitorData" element_type="attribute" element_name="timestamp" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if readRecorderData without optional arguments works properly for SLEEP_MONITOR HumanActivity type" type="compliance" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" priority="P1" id="HumanActivityMonitorManager_readRecorderData_type_SLEEP_MONITOR">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_readRecorderData_type_SLEEP_MONITOR.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="readRecorderData" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if method HumanActivityMonitorManager::startRecorder() works properly for SLEEP_MONITOR HumanActivity type" type="compliance" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" priority="P1" id="HumanActivityMonitorManager_startRecorder_type_SLEEP_MONITOR">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_startRecorder_type_SLEEP_MONITOR.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="startRecorder" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if method HumanActivityMonitorManager::stopRecorder () works properly for SLEEP_MONITOR HumanActivity type" type="compliance" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" priority="P1" id="HumanActivityMonitorManager_stopRecorder_type_SLEEP_MONITOR">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_stopRecorder_type_SLEEP_MONITOR.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="stopRecorder" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if HumanActivityRecorderSleepMonitorData have endTime attribute with proper type, readonly" type="compliance" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" priority="P1" id="HumanActivityRecorderSleepMonitorData_endTime_attribute">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityRecorderSleepMonitorData_endTime_attribute.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityRecorderSleepMonitorData" element_type="attribute" element_name="endTime" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if HumanActivityRecorderSleepMonitorData cannot be called in new expression and as a function or in new expression" type="compliance" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" priority="P3" id="HumanActivityRecorderSleepMonitorData_notexist">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityRecorderSleepMonitorData_notexist.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityRecorderSleepMonitorData" usage="true" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if HumanActivityRecorderSleepMonitorData have startTime attribute with proper type, readonly" type="compliance" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" priority="P1" id="HumanActivityRecorderSleepMonitorData_startTime_attribute">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityRecorderSleepMonitorData_startTime_attribute.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityRecorderSleepMonitorData" element_type="attribute" element_name="startTime" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if HumanActivityRecorderSleepMonitorData have status attribute with proper type, readonly" type="compliance" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" priority="P1" id="HumanActivityRecorderSleepMonitorData_status_attribute">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityRecorderSleepMonitorData_status_attribute.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityRecorderSleepMonitorData" element_type="attribute" element_name="status" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ </set>
+ <set name="HumanActivityMonitor_wearable" type="js">
+ <capabilities>
+ <capability name="http://tizen.org/feature/profile"><value>WEARABLE</value></capability>
+ <capability name="http://tizen.org/feature/humanactivitymonitor"/>
+ </capabilities>
+ <testcase purpose="Check if interface HumanActivityData exists, it should not" type="compliance" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P3" id="HumanActivityData_notexist">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityData_notexist.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityData" usage="true" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if interface StepDifference exists, it should not" type="compliance" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P3" id="StepDifference_notexist">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/StepDifference_notexist.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="StepDifference" usage="true" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if interface HumanActivityAccumulativePedometerData exists, it should not" type="compliance" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P3" id="HumanActivityAccumulativePedometerData_notexist">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityAccumulativePedometerData_notexist.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityAccumulativePedometerData" usage="true" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if interface HumanActivityHRMData exists, it should not" type="compliance" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P3" id="HumanActivityHRMData_notexist">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityHRMData_notexist.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityHRMData" usage="true" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if interface HumanActivityGPSInfo exists, it should not" type="compliance" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P3" id="HumanActivityGPSInfo_notexist">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityGPSInfo_notexist.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityGPSInfo" usage="true" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if interface HumanActivityGPSInfoArray exists, it should not" type="compliance" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P3" id="HumanActivityGPSInfoArray_notexist">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityGPSInfoArray_notexist.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityGPSInfoArray" usage="true" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if interface HumanActivityRecognitionData exists, it should not" type="compliance" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P3" id="HumanActivityRecognitionData_notexist">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityRecognitionData_notexist.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityRecognitionData" usage="true" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if interface HumanActivitySleepMonitorData exists, it should not" type="compliance" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P3" id="HumanActivitySleepMonitorData_notexist">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivitySleepMonitorData_notexist.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivitySleepMonitorData" usage="true" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if interface HumanActivityMonitorManagerObject exists, it should not" type="compliance" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P3" id="HumanActivityMonitorManagerObject_notexist">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManagerObject_notexist.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityMonitorManagerObject U" usage="true" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if HumanActivityMonitorManager is extendable" type="compliance" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P3" id="HumanActivityMonitorManager_extend">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_extend.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityMonitorManager" usage="true" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if HumanActivityMonitorManager::getHumanActivityData() method exists" type="compliance" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P0" id="HumanActivityMonitorManager_getHumanActivityData_exist">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_getHumanActivityData_exist.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="getHumanActivityData" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if humanactivitymonitor exists in tizen" type="compliance" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P3" id="HumanActivityMonitorManager_in_tizen">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_in_tizen.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityMonitorManager" usage="true" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if interface HumanActivityMonitorManager exists, it should not" type="compliance" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P3" id="HumanActivityMonitorManager_notexist">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_notexist.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityMonitorManager" usage="true" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if method HumanActivityMonitorManager::start() exists" type="compliance" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P0" id="HumanActivityMonitorManager_start_exist">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_start_exist.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="start" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if HumanActivityMonitorManager::start() throws exception when type and successCallback are missing" type="compliance" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P2" id="HumanActivityMonitorManager_start_misarg">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_start_misarg.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="start" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if HumanActivityMonitorManager::stop() method exists" type="compliance" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P0" id="HumanActivityMonitorManager_stop_exist">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_stop_exist.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="stop" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if HumanActivityMonitorManager::stop() throws exception when type is missing" type="compliance" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P2" id="HumanActivityMonitorManager_stop_misarg">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_stop_misarg.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="stop" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if HumanActivityMonitorSuccessCallback does not exist" type="compliance" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P3" id="HumanActivityMonitorSuccessCallback_notexist">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorSuccessCallback_notexist.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityMonitorSuccessCallback U" usage="true" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if HumanActivityMonitorManager::start() with incorrect option argument throws exception" type="compliance" onload_delay="30" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P2" id="HumanActivityMonitorManager_start_option_TypeMismatch">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_start_option_TypeMismatch.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="start" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if HumanActivityMonitorManager::start() with incorrect successCallback argument throws exception" type="compliance" onload_delay="30" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P2" id="HumanActivityMonitorManager_start_changedCallback_TypeMismatch">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_start_changedCallback_TypeMismatch.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="start" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if HumanActivityMonitorManager::start() method throws exception when HumanActivityMonitorSuccessCallback is invalid" type="compliance" onload_delay="30" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P2" id="HumanActivityMonitorManager_start_changedCallback_invalid_cb">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_start_changedCallback_invalid_cb.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="start" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if readRecorderData throw NotSupportedError called with not supported human activity recorder type" type="compliance" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" priority="P2" id="HumanActivityMonitorManager_readRecorderData_NotSupportedError">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_readRecorderData_NotSupportedError.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="readRecorderData" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if readRecorderData throws exception when errorCallback is incorrect" type="compliance" onload_delay="30" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" priority="P2" id="HumanActivityMonitorManager_readRecorderData_errorCallback_TypeMismatch">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_readRecorderData_errorCallback_TypeMismatch.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="readRecorderData" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if readRecorderData throws exception when error callback is invalid" type="compliance" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" priority="P2" id="HumanActivityMonitorManager_readRecorderData_errorCallback_invalid_cb">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_readRecorderData_errorCallback_invalid_cb.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="readRecorderData" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if readRecorderData exists" type="compliance" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" priority="P0" id="HumanActivityMonitorManager_readRecorderData_exist">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_readRecorderData_exist.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="readRecorderData" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if HumanActivityMonitorManager::readRecorderData() called with missing non-optional argument throws an exception" type="compliance" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" priority="P1" id="HumanActivityMonitorManager_readRecorderData_misarg">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_readRecorderData_misarg.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="readRecorderData" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if readRecorderData throws exception when query is incorrect" type="compliance" onload_delay="30" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" priority="P2" id="HumanActivityMonitorManager_readRecorderData_query_TypeMismatch">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_readRecorderData_query_TypeMismatch.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="readRecorderData" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if readRecorderData throws exception when successCallback is incorrect" type="compliance" onload_delay="30" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" priority="P2" id="HumanActivityMonitorManager_readRecorderData_successCallback_TypeMismatch">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_readRecorderData_successCallback_TypeMismatch.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="readRecorderData" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if readRecorderData throws exception when success callback is invalid" type="compliance" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" priority="P2" id="HumanActivityMonitorManager_readRecorderData_successCallback_invalid_cb">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_readRecorderData_successCallback_invalid_cb.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="readRecorderData" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if readRecorderData without optional arguments works properly for PRESSURE HumanActivity type" type="compliance" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="manual" onload_delay="150" priority="P1" id="HumanActivityMonitorManager_readRecorderData_type_PRESSURE">
+ <description>
+ <steps>
+ <step order="1">
+ <step_desc>Waiting for 1 minutes for the callback.</step_desc>
+ <expected>Pass should be shown in the page after 1 minutes.</expected>
+ </step>
+ </steps>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_readRecorderData_type_PRESSURE.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="readRecorderData" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if HumanActivityMonitorManager::startRecorder() throw NotSupportedError called with not supported human activity recorder type" type="compliance" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" priority="P1" id="HumanActivityMonitorManager_startRecorder_NotSupportedError">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_startRecorder_NotSupportedError.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="startRecorder" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if startRecorder exists" type="compliance" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" priority="P0" id="HumanActivityMonitorManager_startRecorder_exist">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_startRecorder_exist.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="startRecorder" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if HumanActivityMonitorManager::startRecorder() called with missing non-optional argument throws an exception" type="compliance" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" priority="P1" id="HumanActivityMonitorManager_startRecorder_misarg">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_startRecorder_misarg.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="startRecorder" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if method HumanActivityMonitorManager::startRecorder() works properly for PRESSURE HumanActivity type" type="compliance" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" priority="P1" id="HumanActivityMonitorManager_startRecorder_type_PRESSURE">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_startRecorder_type_PRESSURE.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="startRecorder" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if HumanActivityMonitorManager::stopRecorder() throw NotSupportedError called with not supported human activity recorder type" type="compliance" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" priority="P2" id="HumanActivityMonitorManager_stopRecorder_NotSupportedError">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_stopRecorder_NotSupportedError.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="stopRecorder" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if stopRecorder exists" type="compliance" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" priority="P0" id="HumanActivityMonitorManager_stopRecorder_exist">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_stopRecorder_exist.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="stopRecorder" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if HumanActivityMonitorManager::stopRecorder() called with missing non-optional argument throws an exception" type="compliance" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" priority="P1" id="HumanActivityMonitorManager_stopRecorder_misarg">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_stopRecorder_misarg.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="stopRecorder" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if method HumanActivityMonitorManager::stopRecorder() works properly for PRESSURE HumanActivity type" type="compliance" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" priority="P1" id="HumanActivityMonitorManager_stopRecorder_type_PRESSURE">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_stopRecorder_type_PRESSURE.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="stopRecorder" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if HumanActivityReadRecorderSuccessCallback cannot be called in new expression and as a function or in new expression" type="compliance" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" priority="P3" id="HumanActivityReadRecorderSuccessCallback_notexist">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityReadRecorderSuccessCallback_notexist.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityReadRecorderSuccessCallback" usage="true" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if HumanActivityRecorderData cannot be called in new expression and as a function or in new expression" type="compliance" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" priority="P3" id="HumanActivityRecorderData_notexist">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityRecorderData_notexist.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityRecorderData" usage="true" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if HumanActivityRecorderPressureData have average attribute with proper type, readonly" type="compliance" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="manual" onload_delay="90" priority="P1" id="HumanActivityRecorderPressureData_average_attribute">
+ <description>
+ <pre_condition>Before run this tc, run HumanActivityMonitorManager_readRecorderData_type_PRESSURE.html first, because we should wait at least 1 minute to get the recorded data after start recorder. But if you tested that TC already, you can run this TC now.</pre_condition>
+ <steps>
+ <step order="1">
+ <step_desc>Waiting for 1 minutes for the callback.</step_desc>
+ <expected>Pass should be shown in the page after 1 minutes.</expected>
+ </step>
+ </steps>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityRecorderPressureData_average_attribute.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityRecorderPressureData" element_type="attribute" element_name="average" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if HumanActivityRecorderPressureData have endTime attribute with proper type, readonly" type="compliance" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="manual" onload_delay="90" priority="P1" id="HumanActivityRecorderPressureData_endTime_attribute">
+ <description>
+ <pre_condition>Before run this tc, run HumanActivityMonitorManager_readRecorderData_type_PRESSURE.html first, because we should wait at least 1 minute to get the recorded data after start recorder. But if you tested that TC already, you can run this TC now.</pre_condition>
+ <steps>
+ <step order="1">
+ <step_desc>Waiting for 1 minutes for the callback.</step_desc>
+ <expected>Pass should be shown in the page after 1 minutes.</expected>
+ </step>
+ </steps>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityRecorderPressureData_endTime_attribute.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityRecorderPressureData" element_type="attribute" element_name="endTime" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if HumanActivityRecorderPressureData have max attribute with proper type, readonly" type="compliance" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="manual" onload_delay="90" priority="P1" id="HumanActivityRecorderPressureData_max_attribute">
+ <description>
+ <pre_condition>Before run this tc, run HumanActivityMonitorManager_readRecorderData_type_PRESSURE.html first, because we should wait at least 1 minute to get the recorded data after start recorder. But if you tested that TC already, you can run this TC now.</pre_condition>
+ <steps>
+ <step order="1">
+ <step_desc>Waiting for 1 minutes for the callback.</step_desc>
+ <expected>Pass should be shown in the page after 1 minutes.</expected>
+ </step>
+ </steps>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityRecorderPressureData_max_attribute.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityRecorderPressureData" element_type="attribute" element_name="max" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if HumanActivityRecorderPressureData have min attribute with proper type, readonly" type="compliance" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="manual" onload_delay="90" priority="P1" id="HumanActivityRecorderPressureData_min_attribute">
+ <description>
+ <pre_condition>Before run this tc, run HumanActivityMonitorManager_readRecorderData_type_PRESSURE.html first, because we should wait at least 1 minute to get the recorded data after start recorder. But if you tested that TC already, you can run this TC now.</pre_condition>
+ <steps>
+ <step order="1">
+ <step_desc>Waiting for 1 minutes for the callback.</step_desc>
+ <expected>Pass should be shown in the page after 1 minutes.</expected>
+ </step>
+ </steps>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityRecorderPressureData_min_attribute.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityRecorderPressureData" element_type="attribute" element_name="min" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if HumanActivityRecorderPressureData cannot be called in new expression and as a function or in new expression" type="compliance" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" priority="P3" id="HumanActivityRecorderPressureData_notexist">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityRecorderPressureData_notexist.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityRecorderPressureData" usage="true" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if HumanActivityRecorderPressureData have startTime attribute with proper type, readonly" type="compliance" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="manual" onload_delay="90" priority="P1" id="HumanActivityRecorderPressureData_startTime_attribute">
+ <description>
+ <pre_condition>Before run this tc, run HumanActivityMonitorManager_readRecorderData_type_PRESSURE.html first, because we should wait at least 1 minute to get the recorded data after start recorder. But if you tested that TC already, you can run this TC now.</pre_condition>
+ <steps>
+ <step order="1">
+ <step_desc>Waiting for 1 minutes for the callback.</step_desc>
+ <expected>Pass should be shown in the page after 1 minutes.</expected>
+ </step>
+ </steps>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityRecorderPressureData_startTime_attribute.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityRecorderPressureData" element_type="attribute" element_name="startTime" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ </set>
+ <set name="HumanActivityMonitor_with_activity_recognition_wearable">
+ <capabilities>
+ <capability name="http://tizen.org/feature/profile"><value>WEARABLE</value></capability>
+ <capability name="http://tizen.org/feature/sensor.activity_recognition"/>
+ </capabilities>
+ <testcase purpose="Check if the method addActivityRecognitionListener of HumanActivityMonitorManager returns proper value" type="compliance" onload_delay="60" status="approved" component="Tizen Device APIs/HumanActivityMonitor/HumanActivityMonitorManager" execution_type="manual" priority="P1" id="HumanActivityMonitorManager_addActivityRecognitionListener_STATIONARY">
+ <description>
+ <steps>
+ <step order="1">
+ <step_desc>Press run button, then keep the device stationary</step_desc>
+ <expected>Pass</expected>
+ </step>
+ </steps>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_addActivityRecognitionListener_STATIONARY.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="addActivityRecognitionListener M" element_type="method" element_name="addActivityRecognitionListener" specification="HumanActivityMonitorManager" section="HumanActivityMonitor" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitormanager.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if the method addActivityRecognitionListener of HumanActivityMonitorManager returns proper value" type="compliance" onload_delay="60" status="approved" component="Tizen Device APIs/HumanActivityMonitor/HumanActivityMonitorManager" execution_type="manual" priority="P1" id="HumanActivityMonitorManager_addActivityRecognitionListener_WALKING">
+ <description>
+ <steps>
+ <step order="1">
+ <step_desc>Press run button. Pretend walking with the device.</step_desc>
+ <expected>Pass</expected>
+ </step>
+ </steps>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_addActivityRecognitionListener_WALKING.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="addActivityRecognitionListener M" element_type="method" element_name="addActivityRecognitionListener" specification="HumanActivityMonitorManager" section="HumanActivityMonitor" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitormanager.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if the method addActivityRecognitionListener of HumanActivityMonitorManager throws TypeMismatchError when invalid type value is assigned for errorCallback parameter" type="compliance" status="approved" component="Tizen Device APIs/HumanActivityMonitor/HumanActivityMonitorManager" execution_type="auto" priority="P2" id="HumanActivityMonitorManager_addActivityRecognitionListener_errorCallback_TypeMismatch">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_addActivityRecognitionListener_errorCallback_TypeMismatch .html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="addActivityRecognitionListener M" element_type="method" element_name="addActivityRecognitionListener" specification="HumanActivityMonitorManager" section="HumanActivityMonitor" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitormanager.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if the method addActivityRecognitionListener of HumanActivityMonitorManager exist" type="compliance" status="approved" component="Tizen Device APIs/HumanActivityMonitor/HumanActivityMonitorManager" execution_type="auto" priority="P1" id="HumanActivityMonitorManager_addActivityRecognitionListener_exist">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_addActivityRecognitionListener_exist.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="addActivityRecognitionListener M" element_type="method" element_name="addActivityRecognitionListener" specification="HumanActivityMonitorManager" section="HumanActivityMonitor" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitormanager.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if the method addActivityRecognitionListener of HumanActivityMonitorManager throws TypeMismatchError when invalid value is assigned for type parameter" type="compliance" status="approved" component="Tizen Device APIs/HumanActivityMonitor/HumanActivityMonitorManager" execution_type="auto" priority="P2" id="HumanActivityMonitorManager_addActivityRecognitionListener_type_TypeMismatch">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_addActivityRecognitionListener_listener_TypeMismatch.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="addActivityRecognitionListener M" element_type="method" element_name="addActivityRecognitionListener" specification="HumanActivityMonitorManager" section="HumanActivityMonitor" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitormanager.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if the method addActivityRecognitionListener of HumanActivityMonitorManager throws TypeMismatchError when no param assigned" type="compliance" status="approved" component="Tizen Device APIs/HumanActivityMonitor/HumanActivityMonitorManager" execution_type="auto" priority="P2" id="HumanActivityMonitorManager_addActivityRecognitionListener_misarg">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_addActivityRecognitionListener_misarg.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="addActivityRecognitionListener M" element_type="method" element_name="addActivityRecognitionListener" specification="HumanActivityMonitorManager" section="HumanActivityMonitor" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitormanager.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if the method addActivityRecognitionListener of HumanActivityMonitorManager throws TypeMismatchError when invalid type value is assigned for listener parameter" type="compliance" status="approved" component="Tizen Device APIs/HumanActivityMonitor/HumanActivityMonitorManager" execution_type="auto" priority="P2" id="HumanActivityMonitorManager_addActivityRecognitionListener_listener_TypeMismatch">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_addActivityRecognitionListener_type_TypeMismatch.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="addActivityRecognitionListener M" element_type="method" element_name="addActivityRecognitionListener" specification="HumanActivityMonitorManager" section="HumanActivityMonitor" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitormanager.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if the method addActivityRecognitionListener of HumanActivityMonitorManager returns proper value with errorcallback assigned" type="compliance" onload_delay="60" status="approved" component="Tizen Device APIs/HumanActivityMonitor/HumanActivityMonitorManager" execution_type="manual" priority="P1" id="HumanActivityMonitorManager_addActivityRecognitionListener_with_errorCallback">
+ <description>
+ <steps>
+ <step order="1">
+ <step_desc>Press run button, then keep the device stationary</step_desc>
+ <expected>Pass</expected>
+ </step>
+ </steps>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_addActivityRecognitionListener_with_errorCallback.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="addActivityRecognitionListener M" element_type="method" element_name="addActivityRecognitionListener" specification="HumanActivityMonitorManager" section="HumanActivityMonitor" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitormanager.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if the method addActivityRecognitionListener of HumanActivityMonitorManager returns proper value with errorcallback null assigned" type="compliance" onload_delay="60" status="approved" component="Tizen Device APIs/HumanActivityMonitor/HumanActivityMonitorManager" execution_type="manual" priority="P1" id="HumanActivityMonitorManager_addActivityRecognitionListener_with_errorCallback_null">
+ <description>
+ <steps>
+ <step order="1">
+ <step_desc>Press run button, then keep the device stationary</step_desc>
+ <expected>Pass</expected>
+ </step>
+ </steps>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_addActivityRecognitionListener_with_errorCallback_null.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="addActivityRecognitionListener M" element_type="method" element_name="addActivityRecognitionListener" specification="HumanActivityMonitorManager" section="HumanActivityMonitor" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitormanager.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if the method removeActivityRecognitionListener of HumanActivityMonitorManager returns proper value" type="compliance" onload_delay="20" status="approved" component="Tizen Device APIs/TBD/HumanActivityMonitor" execution_type="manual" priority="P1" id="HumanActivityMonitorManager_removeActivityRecognitionListener_STATIONARY">
+ <description>
+ <steps>
+ <step order="1">
+ <step_desc>Press run button, then pretend walking with the device for 15 seconds</step_desc>
+ <expected>Pass</expected>
+ </step>
+ </steps>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_removeActivityRecognitionListener.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="removeActivityRecognitionListener" specification="HumanActivityMonitor" section="TBD" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if the method removeActivityRecognitionListener of HumanActivityMonitorManager exist" type="compliance" status="approved" component="Tizen Device APIs/HumanActivityMonitor/HumanActivityMonitorManager" execution_type="auto" priority="P1" id="HumanActivityMonitorManager_removeActivityRecognitionListener_exist">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_removeActivityRecognitionListener_exist.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="removeActivityRecognitionListener M" element_type="method" element_name="removeActivityRecognitionListener" specification="HumanActivityMonitorManager" section="HumanActivityMonitor" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitormanager.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if the method removeActivityRecognitionListener of HumanActivityMonitorManager ignores invalid id" type="compliance" onload_delay="3" status="approved" component="Tizen Device APIs/HumanActivityMonitor/HumanActivityMonitorManager" execution_type="auto" priority="P2" id="HumanActivityMonitorManager_removeActivityRecognitionListener_invalid_id">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_removeActivityRecognitionListener_invalid_id.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="removeActivityRecognitionListener M" element_type="method" element_name="removeActivityRecognitionListener" specification="HumanActivityMonitorManager" section="HumanActivityMonitor" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitormanager.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if the method removeActivityRecognitionListener of HumanActivityMonitorManager ignores invalid id when no param assigned (undefined converted to 0)" type="compliance" status="approved" component="Tizen Device APIs/HumanActivityMonitor/HumanActivityMonitorManager" execution_type="auto" priority="P2" id="HumanActivityMonitorManager_removeActivityRecognitionListener_misarg">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_removeActivityRecognitionListener_misarg.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="removeActivityRecognitionListener M" element_type="method" element_name="removeActivityRecognitionListener" specification="HumanActivityMonitorManager" section="HumanActivityMonitor" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitormanager.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if the method removeActivityRecognitionListener of HumanActivityMonitorManager returns proper value with errorcallback assigned" type="compliance" onload_delay="20" status="approved" component="Tizen Device APIs/TBD/HumanActivityMonitor" execution_type="manual" priority="P1" id="HumanActivityMonitorManager_removeActivityRecognitionListener_STATIONARY">
+ <description>
+ <steps>
+ <step order="1">
+ <step_desc>Press run button, then pretend walking with the device for 15 seconds</step_desc>
+ <expected>Pass</expected>
+ </step>
+ </steps>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_removeActivityRecognitionListener_with_errorCallback.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="removeActivityRecognitionListener" specification="HumanActivityMonitor" section="TBD" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if the method removeActivityRecognitionListener of HumanActivityMonitorManager returns proper value with errorcallback null assigned" type="compliance" onload_delay="20" status="approved" component="Tizen Device APIs/TBD/HumanActivityMonitor" execution_type="manual" priority="P1" id="HumanActivityMonitorManager_removeActivityRecognitionListener_STATIONARY">
+ <description>
+ <steps>
+ <step order="1">
+ <step_desc>Press run button, then pretend walking with the device for 15 seconds</step_desc>
+ <expected>Pass</expected>
+ </step>
+ </steps>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_removeActivityRecognitionListener_with_errorCallback_null.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="removeActivityRecognitionListener" specification="HumanActivityMonitor" section="TBD" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ </set>
+ <set name="HumanActivityMonitor_with_pedometer_wearable">
+ <capabilities>
+ <capability name="http://tizen.org/feature/profile"><value>WEARABLE</value></capability>
+ <capability name="http://tizen.org/feature/sensor.pedometer"/>
+ </capabilities>
+ <testcase purpose="Check if method getHumanActivityData of HumanActivityMonitorManager returns properly value" type="compliance" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P1" id="HumanActivityMonitorManager_getHumanActivityData">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_getHumanActivityData.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="getHumanActivityData" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if HumanActivityMonitorManager::getHumanActivityData() with incorrect errorCallback argument throws exception" type="compliance" onload_delay="30" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P2" id="HumanActivityMonitorManager_getHumanActivityData_errorCallback_TypeMismatch">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_getHumanActivityData_errorCallback_TypeMismatch.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="getHumanActivityData" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if HumanActivityMonitorManager::getHumanActivityData() method throws exception when errorCallback is invalid" type="compliance" onload_delay="30" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P2" id="HumanActivityMonitorManager_getHumanActivityData_errorCallback_invalid_cb">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_getHumanActivityData_errorCallback_invalid_cb.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="getHumanActivityData" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check exception in error callback of HumanActivityMonitorManager::getHumanActivityData() method" type="compliance" onload_delay="30" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P2" id="HumanActivityMonitorManager_getHumanActivityData_errorCallback_invoked">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_getHumanActivityData_errorCallback_invoked.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="getHumanActivityData" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if HumanActivityMonitorManager::getHumanActivityData() throws exception when successCallback is missing" type="compliance" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P2" id="HumanActivityMonitorManager_getHumanActivityData_misarg">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_getHumanActivityData_misarg.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="getHumanActivityData" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if HumanActivityMonitorManager::getHumanActivityData() with incorrect successCallback argument throws exception" type="compliance" onload_delay="30" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P2" id="HumanActivityMonitorManager_getHumanActivityData_successCallback_TypeMismatch">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_getHumanActivityData_successCallback_TypeMismatch.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="getHumanActivityData" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if HumanActivityMonitorManager::getHumanActivityData() method throws exception when successCallback is invalid" type="compliance" onload_delay="30" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P2" id="HumanActivityMonitorManager_getHumanActivityData_successCallback_invalid_cb">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_getHumanActivityData_successCallback_invalid_cb.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="getHumanActivityData" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if HumanActivityMonitorManager::getHumanActivityData() method works properly" type="compliance" onload_delay="30" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P1" id="HumanActivityMonitorManager_getHumanActivityData_type_PEDOMETER">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_getHumanActivityData_type_PEDOMETER.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="getHumanActivityData" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if HumanActivityMonitorManager::getHumanActivityData() method works properly with optional argument" type="compliance" onload_delay="30" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P1" id="HumanActivityMonitorManager_getHumanActivityData_with_errorCallback">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_getHumanActivityData_with_errorCallback.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="getHumanActivityData" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if HumanActivityMonitorManager::start() with incorrect successCallback argument throws exception" type="compliance" onload_delay="30" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P2" id="HumanActivityMonitorManager_start_changedCallback_TypeMismatch">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_start_changedCallback_TypeMismatch.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="start" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if HumanActivityMonitorManager::start() with incorrect errorCallback argument throws exception" type="compliance" onload_delay="30" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P2" id="HumanActivityMonitorManager_start_errorCallback_TypeMismatch">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_start_errorCallback_TypeMismatch.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="start" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if HumanActivityMonitorManager::start() method throws exception when HumanActivityMonitorSuccessCallback is invalid" type="compliance" onload_delay="30" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P2" id="HumanActivityMonitorManager_start_changedCallback_invalid_cb">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_start_changedCallback_invalid_cb.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="start" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if HumanActivityMonitorManager::start() method throws exception when ErrorCallback is invalid" type="compliance" onload_delay="30" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P2" id="HumanActivityMonitorManager_start_errorCallback_invalid_cb">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_start_errorCallback_invalid_cb.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="start" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if method HumanActivityMonitorManager::start() works properly for PEDOMETER" type="compliance" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P1" id="HumanActivityMonitorManager_start_type_PEDOMETER">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_start_type_PEDOMETER.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="start" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if HumanActivityMonitorManager::stop() method works properly" type="compliance" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P1" id="HumanActivityMonitorManager_stop_type_PEDOMETER">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_stop_type_PEDOMETER.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="stop" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Test whether HumanActivityMonitorSuccessCallback::onsuccess() is called with argument of proper type" type="compliance" onload_delay="90" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P1" id="HumanActivityMonitorSuccessCallback_onsuccess">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorSuccessCallback_onsuccess.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityMonitorSuccessCallback" element_type="method" element_name="onsuccess" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if HumanActivityPedometerData::cumulativeCalorie exists, has type double, and is readonly" type="compliance" onload_delay="9" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P1" id="HumanActivityPedometerData_cumulativeCalorie_attribute">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityPedometerData_cumulativeCalorie_attribute.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityPedometerData" element_type="attribute" element_name="cumulativeCalorie" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if HumanActivityPedometerData::cumulativeDistance exists, has type double, and is readonly" type="compliance" onload_delay="9" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P1" id="HumanActivityPedometerData_cumulativeDistance_attribute">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityPedometerData_cumulativeDistance_attribute.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityPedometerData" element_type="attribute" element_name="cumulativeDistance" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if HumanActivityPedometerData::cumulativeRunStepCount exists, has type double, and is readonly" type="compliance" onload_delay="9" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P1" id="HumanActivityPedometerData_cumulativeRunStepCount_attribute">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityPedometerData_cumulativeRunStepCount_attribute.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityPedometerData" element_type="attribute" element_name="cumulativeRunStepCount" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if HumanActivityPedometerData::cumulativeTotalStepCount exists, has type double, and is readonly" type="compliance" onload_delay="9" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P1" id="HumanActivityPedometerData_cumulativeTotalStepCount_attribute">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityPedometerData_cumulativeTotalStepCount_attribute.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityPedometerData" element_type="attribute" element_name="cumulativeTotalStepCount" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if HumanActivityPedometerData::cumulativeWalkStepCount exists, has type double, and is readonly" type="compliance" onload_delay="9" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P1" id="HumanActivityPedometerData_cumulativeWalkStepCount_attribute">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityPedometerData_cumulativeWalkStepCount_attribute.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityPedometerData" element_type="attribute" element_name="cumulativeWalkStepCount" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if HumanActivityPedometerData::stepCountDifferences exists, has type double, and is readonly" type="compliance" onload_delay="9" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P1" id="HumanActivityPedometerData_stepCountDifferences_attribute">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityPedometerData_stepCountDifferences_attribute.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityPedometerData" element_type="attribute" element_name="stepCountDifferences" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if HumanActivityPedometerData object is extendable" type="compliance" onload_delay="90" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P3" id="HumanActivityPedometerData_extend">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityPedometerData_extend.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityPedometerData" usage="true" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if HumanActivityPedometerData::speed exists, has type double, and is readonly" type="compliance" onload_delay="9" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P1" id="HumanActivityPedometerData_speed_attribute">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityPedometerData_speed_attribute.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityPedometerData" element_type="attribute" element_name="speed" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if HumanActivityPedometerData::stepStatus exists, has type string, and is readonly" type="compliance" onload_delay="9" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P1" id="HumanActivityPedometerData_stepStatus_attribute">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityPedometerData_stepStatus_attribute.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityPedometerData" element_type="attribute" element_name="stepStatus" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if HumanActivityPedometerData::walkingFrequency exists, has type double, and is readonly" type="compliance" onload_delay="9" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P1" id="HumanActivityPedometerData_walkingFrequency_attribute">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityPedometerData_walkingFrequency_attribute.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityPedometerData" element_type="attribute" element_name="walkingFrequency" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if interface HumanActivityPedometerData exists, it should not" type="compliance" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P3" id="HumanActivityPedometerData_notexist">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityPedometerData_notexist.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityPedometerData" usage="true" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if interface HumanActivityAccumulativePedometerInfo exists, it should not" type="compliance" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P3" id="HumanActivityAccumulativePedometerInfo_notexist">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityAccumulativePedometerInfo_notexist.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityAccumulativePedometerInfo" usage="true" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if HumanActivityMonitorManager::setAccumulativePedometerListener() with incorrect changeCallback argument throws exception" type="compliance" onload_delay="30" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P2" id="HumanActivityMonitorManager_setAccumulativePedometerListener_changeCallback_TypeMismatch">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_setAccumulativePedometerListener_changeCallback_TypeMismatch.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="setAccumulativePedometerListener" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if HumanActivityMonitorManager::setAccumulativePedometerListener() with incorrect changeCallback argument throws exception" type="compliance" onload_delay="30" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P2" id="HumanActivityMonitorManager_setAccumulativePedometerListener_changeCallback_TypeMismatch">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_setAccumulativePedometerListener_changeCallback_TypeMismatch.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="setAccumulativePedometerListener" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if HumanActivityMonitorManager::setAccumulativePedometerListener() method throws exception when changeCallback is invalid" type="compliance" onload_delay="30" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P2" id="HumanActivityMonitorManager_setAccumulativePedometerListener_changeCallback_invalid_cb">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_setAccumulativePedometerListener_changeCallback_invalid_cb.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="setAccumulativePedometerListener" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if method HumanActivityMonitorManager::setAccumulativePedometerListener() exists" type="compliance" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P0" id="HumanActivityMonitorManager_setAccumulativePedometerListener_exist">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_setAccumulativePedometerListener_exist.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="setAccumulativePedometerListener" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if HumanActivityMonitorManager::setAccumulativePedometerListener() throws exception when changeCallback is missing" type="compliance" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P2" id="HumanActivityMonitorManager_setAccumulativePedometerListener_misarg">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_setAccumulativePedometerListener_misarg.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="setAccumulativePedometerListener" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if HumanActivityMonitorManager::unsetAccumulativePedometerListener() method works properly" type="compliance" onload_delay="30" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P1" id="HumanActivityMonitorManager_unsetAccumulativePedometerListener">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_unsetAccumulativePedometerListener.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="humanactivitymonitor" element_type="method" element_name="unsetAccumulativePedometerListener" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if HumanActivityMonitorManager::unsetAccumulativePedometerListener() method exists" type="compliance" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P0" id="HumanActivityMonitorManager_unsetAccumulativePedometerListener_exist">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_unsetAccumulativePedometerListener_exist.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="unsetAccumulativePedometerListener" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if HumanActivityMonitorManager::unsetAccumulativePedometerListener() method with extra argument" type="compliance" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P1" id="HumanActivityMonitorManager_unsetAccumulativePedometerListener_extra_argument">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_unsetAccumulativePedometerListener_extra_argument.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="unsetAccumulativePedometerListener" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if the specifies the pedometer user's current movement type is NOT_MOVING" type="compliance" onload_delay="60" status="approved" component="Tizen Device APIs/HumanActivityMonitor/HumanActivityMonitorManager" execution_type="manual" priority="P1" id="HumanActivityMonitorManager_getHumanActivityData_stepStatus_NOT_MOVING">
+ <description>
+ <steps>
+ <step order="1">
+ <step_desc>Press run button, then keep the device stationary.</step_desc>
+ <expected>Pass</expected>
+ </step>
+ </steps>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_getHumanActivityData_stepStatus_NOT_MOVING.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="addActivityRecognitionListener M" element_type="method" element_name="addActivityRecognitionListener" specification="HumanActivityMonitorManager" section="HumanActivityMonitor" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitormanager.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if the specifies the pedometer user's current movement type is WALKING" type="compliance" onload_delay="60" status="approved" component="Tizen Device APIs/HumanActivityMonitor/HumanActivityMonitorManager" execution_type="manual" priority="P1" id="HumanActivityMonitorManager_getHumanActivityData_stepStatus_WALKING">
+ <description>
+ <steps>
+ <step order="1">
+ <step_desc>Press run button. Pretend walking with the device.</step_desc>
+ <expected>Pass</expected>
+ </step>
+ </steps>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_getHumanActivityData_stepStatus_WALKING.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="getHumanActivityData M" element_type="method" element_name="getHumanActivityData" specification="HumanActivityMonitorManager" section="HumanActivityMonitor" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitormanager.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if the specifies the pedometer user's current movement type is RUNNING" type="compliance" onload_delay="60" status="approved" component="Tizen Device APIs/HumanActivityMonitor/HumanActivityMonitorManager" execution_type="manual" priority="P1" id="HumanActivityMonitorManager_getHumanActivityData_stepStatus_RUNNING">
+ <description>
+ <steps>
+ <step order="1">
+ <step_desc>Press run button. Pretend running with the device.</step_desc>
+ <expected>Pass</expected>
+ </step>
+ </steps>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_getHumanActivityData_stepStatus_RUNNING.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="addActivityRecognitionListener M" element_type="method" element_name="addActivityRecognitionListener" specification="HumanActivityMonitorManager" section="HumanActivityMonitor" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitormanager.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if the specifies the pedometer user's current movement type is UNKNOWN" type="compliance" onload_delay="60" status="approved" component="Tizen Device APIs/HumanActivityMonitor/HumanActivityMonitorManager" execution_type="manual" priority="P1" id="HumanActivityMonitorManager_getHumanActivityData_stepStatus_UNKNOWN">
+ <description>
+ <steps>
+ <step order="1">
+ <step_desc>Press run button, press Power key to keep the device LCS off, then Pretend walking with the device.</step_desc>
+ <expected>Pass</expected>
+ </step>
+ </steps>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_getHumanActivityData_stepStatus_UNKNOWN.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="addActivityRecognitionListener M" element_type="method" element_name="addActivityRecognitionListener" specification="HumanActivityMonitorManager" section="HumanActivityMonitor" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitormanager.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if readRecorderData can be called with empty object as query argument" type="compliance" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="manual" onload_delay="60" priority="P1" id="HumanActivityMonitorManager_readRecorderData_query_empty">
+ <description>
+ <steps>
+ <step order="1">
+ <step_desc>Press run button. Pretend walking with the device.</step_desc>
+ <expected>Pass</expected>
+ </step>
+ </steps>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_readRecorderData_query_empty.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="readRecorderData" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if readRecorderData without optional arguments works properly for PEDOMETER HumanActivity type" type="compliance" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="manual" onload_delay="60" priority="P1" id="HumanActivityMonitorManager_readRecorderData_type_PEDOMETER">
+ <description>
+ <steps>
+ <step order="1">
+ <step_desc>Press run button. Pretend walking with the device.</step_desc>
+ <expected>Pass</expected>
+ </step>
+ </steps>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_readRecorderData_type_PEDOMETER.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="readRecorderData" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if readRecorderData with optional arguments works properly" type="compliance" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="manual" onload_delay="60" priority="P1" id="HumanActivityMonitorManager_readRecorderData_with_errorCallback">
+ <description>
+ <steps>
+ <step order="1">
+ <step_desc>Press run button. Pretend walking with the device.</step_desc>
+ <expected>Pass</expected>
+ </step>
+ </steps>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_readRecorderData_with_errorCallback.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="readRecorderData" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if HumanActivityMonitorManager::startRecorder() can be called with empty object as option argument" type="compliance" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" priority="P1" id="HumanActivityMonitorManager_startRecorder_option_empty">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_startRecorder_option_empty.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="startRecorder" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if method HumanActivityMonitorManager::startRecorder() works properly for PEDOMETER HumanActivity type" type="compliance" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" priority="P1" id="HumanActivityMonitorManager_startRecorder_type_PEDOMETER">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_startRecorder_type_PEDOMETER.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="startRecorder" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if method HumanActivityMonitorManager::stopRecorder() works properly for PEDOMETER HumanActivity type" type="compliance" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" priority="P1" id="HumanActivityMonitorManager_stopRecorder_type_PEDOMETER">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_stopRecorder_type_PEDOMETER.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="stopRecorder" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if HumanActivityRecorderPedometerData have calorie attribute with proper type, readonly" type="compliance" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="manual" onload_delay="60" priority="P1" id="HumanActivityRecorderPedometerData_calorie_attribute">
+ <description>
+ <steps>
+ <step order="1">
+ <step_desc>Press run button. Pretend walking with the device.</step_desc>
+ <expected>Pass</expected>
+ </step>
+ </steps>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityRecorderPedometerData_calorie_attribute.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityRecorderPedometerData" element_type="attribute" element_name="calorie" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if HumanActivityRecorderPedometerData have distance attribute with proper type, readonly" type="compliance" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="manual" onload_delay="60" priority="P1" id="HumanActivityRecorderPedometerData_distance_attribute">
+ <description>
+ <steps>
+ <step order="1">
+ <step_desc>Press run button. Pretend walking with the device.</step_desc>
+ <expected>Pass</expected>
+ </step>
+ </steps>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityRecorderPedometerData_distance_attribute.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityRecorderPedometerData" element_type="attribute" element_name="distance" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if HumanActivityRecorderPedometerData have endTime attribute with proper type, readonly" type="compliance" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="manual" onload_delay="60" priority="P1" id="HumanActivityRecorderPedometerData_endTime_attribute">
+ <description>
+ <steps>
+ <step order="1">
+ <step_desc>Press run button. Pretend walking with the device.</step_desc>
+ <expected>Pass</expected>
+ </step>
+ </steps>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityRecorderPedometerData_endTime_attribute.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityRecorderPedometerData" element_type="attribute" element_name="endTime" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if HumanActivityRecorderPedometerData cannot be called in new expression and as a function or in new expression" type="compliance" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" priority="P3" id="HumanActivityRecorderPedometerData_notexist">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityRecorderPedometerData_notexist.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityRecorderPedometerData" usage="true" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if HumanActivityRecorderPedometerData have runStepCount attribute with proper type, readonly" type="compliance" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="manual" onload_delay="60" priority="P1" id="HumanActivityRecorderPedometerData_runStepCount_attribute">
+ <description>
+ <steps>
+ <step order="1">
+ <step_desc>Press run button. Pretend walking with the device.</step_desc>
+ <expected>Pass</expected>
+ </step>
+ </steps>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityRecorderPedometerData_runStepCount_attribute.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityRecorderPedometerData" element_type="attribute" element_name="runStepCount" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if HumanActivityRecorderPedometerData have startTime attribute with proper type, readonly" type="compliance" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="manual" onload_delay="60" priority="P1" id="HumanActivityRecorderPedometerData_startTime_attribute">
+ <description>
+ <steps>
+ <step order="1">
+ <step_desc>Press run button. Pretend walking with the device.</step_desc>
+ <expected>Pass</expected>
+ </step>
+ </steps>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityRecorderPedometerData_startTime_attribute.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityRecorderPedometerData" element_type="attribute" element_name="startTime" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if HumanActivityRecorderPedometerData have totalStepCount attribute with proper type, readonly" type="compliance" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="manual" onload_delay="60" priority="P1" id="HumanActivityRecorderPedometerData_totalStepCount_attribute">
+ <description>
+ <steps>
+ <step order="1">
+ <step_desc>Press run button. Pretend walking with the device.</step_desc>
+ <expected>Pass</expected>
+ </step>
+ </steps>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityRecorderPedometerData_totalStepCount_attribute.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityRecorderPedometerData" element_type="attribute" element_name="totalStepCount" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if HumanActivityRecorderPedometerData have walkStepCount attribute with proper type, readonly" type="compliance" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="manual" onload_delay="60" priority="P1" id="HumanActivityRecorderPedometerData_walkStepCount_attribute">
+ <description>
+ <steps>
+ <step order="1">
+ <step_desc>Press run button. Pretend walking with the device.</step_desc>
+ <expected>Pass</expected>
+ </step>
+ </steps>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityRecorderPedometerData_walkStepCount_attribute.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityRecorderPedometerData" element_type="attribute" element_name="walkStepCount" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ </set>
+ <set name="HumanActivityMonitor_with_wrist_up_wearable">
+ <capabilities>
+ <capability name="http://tizen.org/feature/profile"><value>WEARABLE</value></capability>
+ <capability name="http://tizen.org/feature/sensor.wrist_up"/>
+ </capabilities>
+ <testcase purpose="Check if method HumanActivityMonitorManager::start() works properly for WRIST_UP" type="compliance" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P1" id="HumanActivityMonitorManager_start_type_WRIST_UP">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_start_type_WRIST_UP.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="start" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if HumanActivityMonitorManager::stop() method with WRIST_UP works properly" type="compliance" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P1" id="HumanActivityMonitorManager_stop_type_WRIST_UP">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_stop_type_WRIST_UP.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="stop" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ </set>
+ <set name="HumanActivityMonitor_heart_rate_monitor_wearable">
+ <capabilities>
+ <capability name="http://tizen.org/feature/profile"><value>WEARABLE</value></capability>
+ <capability name="http://tizen.org/feature/sensor.heart_rate_monitor"/>
+ </capabilities>
+ <testcase purpose="Check if HumanActivityMonitorManager::getHumanActivityData() method works properly for HumanActivityType HRM" type="compliance" onload_delay="30" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P1" id="HumanActivityMonitorManager_getHumanActivityData_type_HRM">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_getHumanActivityData_type_HRM.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="getHumanActivityData" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if method HumanActivityMonitorManager::start() works properly for HRM HumanActivity type" type="compliance" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P1" id="HumanActivityMonitorManager_start_type_HRM">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_start_type_HRM.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="start" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if HumanActivityMonitorManager::stop() method works properly for HumanActivity type HRM" type="compliance" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P1" id="HumanActivityMonitorManager_stop_type_HRM">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_stop_type_HRM.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="stop" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if HumanActivityHRMData::heartRate exists, has type long, and is readonly " type="compliance" onload_delay="9 " status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P1 " id="HumanActivityHRMData_heartRate_attribute">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityHRMData_heartRate_attribute.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityGPSInfo" element_type="attribute" element_name="heartRate" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if HumanActivityHRMData::rRInterval exists, has type long, and is readonly " type="compliance" onload_delay="9 " status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P1 " id="HumanActivityHRMData_rRInterval_attribute">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityHRMData_rRInterval_attribute.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityGPSInfo" element_type="attribute" element_name="rRInterval" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if method HumanActivityMonitorOption::callbackInterval works properly for HRM HumanActivity type" type="compliance" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P1" id="HumanActivityMonitorOption_callbackInterval_type_HRM">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorOption_callbackInterval_type_HRM.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityMonitorOption" element_type="attribute" element_name="callbackInterval" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if method HumanActivityMonitorOption::callbackInterval() works properly when set to null" type="compliance" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P1" id="HumanActivityMonitorOption_callbackInterval_type_HRM_default">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorOption_callbackInterval_type_HRM_default.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityMonitorOption" element_type="attribute" element_name="callbackInterval" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if readRecorderData without optional arguments works properly for HRM HumanActivity type" type="compliance" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type=""manual" onload_delay="1500" priority="P1" id="HumanActivityMonitorManager_readRecorderData_type_HRM">
+ <description>
+ <steps>
+ <step order="1">
+ <step_desc>Waiting for 10 minutes for the callback.</step_desc>
+ <expected>Pass should be shown in the page after 10 minutes.</expected>
+ </step>
+ </steps>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_readRecorderData_type_HRM.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="readRecorderData" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if method HumanActivityMonitorManager::startRecorder() works properly for HRM HumanActivity type" type="compliance" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" priority="P1" id="HumanActivityMonitorManager_startRecorder_type_HRM">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_startRecorder_type_HRM.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="startRecorder" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if method HumanActivityMonitorManager::startRecorder() works properly with optional argument" type="compliance" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" priority="P1" id="HumanActivityMonitorManager_startRecorder_with_option">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_startRecorder_with_option.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="startRecorder" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if method HumanActivityMonitorManager::stopRecorder() works properly for HRM HumanActivity type" type="compliance" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" priority="P1" id="HumanActivityMonitorManager_stopRecorder_type_HRM">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_stopRecorder_type_HRM.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="stopRecorder" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if HumanActivityReadRecorderSuccessCallback onsuccess is called and if its arguments have proper type" type="compliance" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="manual" onload_delay="60" priority="P1" id="HumanActivityReadRecorderSuccessCallback_onsuccess">
+ <description>
+ <pre_condition>Before run this tc, run HumanActivityMonitorManager_readRecorderData_type_HRM.html first, because we should wait at least 10 minutes to get the recorded data after start recorder. But if you tested that TC already, you can run this TC now.</pre_condition>
+ <steps>
+ <step order="1">
+ <step_desc>Waiting for 10 minutes for the callback.</step_desc>
+ <expected>Pass should be shown in the page after 10 minutes.</expected>
+ </step>
+ </steps>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityReadRecorderSuccessCallback_onsuccess.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityReadRecorderSuccessCallback" usage="true" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if HumanActivityRecorderHRMData have endTime attribute with proper type, readonly" type="compliance" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="manual" onload_delay="60" priority="P1" id="HumanActivityRecorderHRMData_endTime_attribute">
+ <description>
+ <pre_condition>Before run this tc, run HumanActivityMonitorManager_readRecorderData_type_HRM.html first, because we should wait at least 10 minutes to get the recorded data after start recorder. But if you tested that TC already, you can run this TC now.</pre_condition>
+ <steps>
+ <step order="1">
+ <step_desc>Waiting for 10 minutes for the callback.</step_desc>
+ <expected>Pass should be shown in the page after 10 minutes.</expected>
+ </step>
+ </steps>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityRecorderHRMData_endTime_attribute.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityRecorderHRMData" element_type="attribute" element_name="endTime" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if HumanActivityRecorderHRMData have heartRate attribute with proper type, readonly" type="compliance" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="manual" onload_delay="60" priority="P1" id="HumanActivityRecorderHRMData_heartRate_attribute">
+ <description>
+ <pre_condition>Before run this tc, run HumanActivityMonitorManager_readRecorderData_type_HRM.html first, because we should wait at least 10 minutes to get the recorded data after start recorder. But if you tested that TC already, you can run this TC now.</pre_condition>
+ <steps>
+ <step order="1">
+ <step_desc>Waiting for 10 minutes for the callback.</step_desc>
+ <expected>Pass should be shown in the page after 10 minutes.</expected>
+ </step>
+ </steps>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityRecorderHRMData_heartRate_attribute.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityRecorderHRMData" element_type="attribute" element_name="heartRate" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if HumanActivityRecorderHRMData cannot be called in new expression and as a function or in new expression" type="compliance" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" priority="P3" id="HumanActivityRecorderHRMData_notexist">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityRecorderHRMData_notexist.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityRecorderHRMData" usage="true" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if HumanActivityRecorderHRMData have startTime attribute with proper type, readonly" type="compliance" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="manual" onload_delay="60" priority="P1" id="HumanActivityRecorderHRMData_startTime_attribute">
+ <description>
+ <pre_condition>Before run this tc, run HumanActivityMonitorManager_readRecorderData_type_HRM.html first, because we should wait at least 10 minutes to get the recorded data after start recorder. But if you tested that TC already, you can run this TC now.</pre_condition>
+ <steps>
+ <step order="1">
+ <step_desc>Waiting for 10 minutes for the callback.</step_desc>
+ <expected>Pass should be shown in the page after 10 minutes.</expected>
+ </step>
+ </steps>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityRecorderHRMData_startTime_attribute.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityRecorderHRMData" element_type="attribute" element_name="startTime" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ </set>
+ <set name="HumanActivityMonitor_location_batch_wearable">
+ <capabilities>
+ <capability name="http://tizen.org/feature/profile"><value>WEARABLE</value></capability>
+ <capability name="http://tizen.org/feature/location.batch"/>
+ </capabilities>
+ <testcase purpose="Check if method HumanActivityMonitorManager::start() works properly for GPS HumanActivity type with optional argument" type="compliance" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P1" id="HumanActivityMonitorManager_start_with_option">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_start_with_option.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="start" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if method HumanActivityMonitorManager::start() works properly for GPS HumanActivity type" type="compliance" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P1" id="HumanActivityMonitorManager_start_type_GPS">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_start_type_GPS.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="start" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if HumanActivityMonitorManager::start() can be called with empty object as option argument" type="compliance" onload_delay="30" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P1" id="HumanActivityMonitorManager_start_option_empty">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_start_option_empty.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="start" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if HumanActivityMonitorManager::stop() method works properly for HumanActivity type GPS" type="compliance" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P1" id="HumanActivityMonitorManager_stop_type_GPS">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_stop_type_GPS.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="stop" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if HumanActivityGPSInfo::altitude exists, has type double, and is readonly " type="compliance" onload_delay="9 " status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P1 " id="HumanActivityGPSInfo_altitude_attribute">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityGPSInfo_altitude_attribute.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityGPSInfo" element_type="attribute" element_name="altitude" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if HumanActivityGPSInfo::errorRange exists, has type long, and is readonly " type="compliance" onload_delay="9 " status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P1 " id="HumanActivityGPSInfo_errorRange_attribute">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityGPSInfo_errorRange_attribute.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityGPSInfo" element_type="attribute" element_name="errorRange" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if HumanActivityGPSInfo::latitude exists, has type double, and is readonly " type="compliance" onload_delay="9 " status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P1 " id="HumanActivityGPSInfo_latitude_attribute">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityGPSInfo_latitude_attribute.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityGPSInfo" element_type="attribute" element_name="latitude" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if HumanActivityGPSInfo::longitude exists, has type double, and is readonly " type="compliance" onload_delay="9 " status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P1 " id="HumanActivityGPSInfo_longitude_attribute">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityGPSInfo_longitude_attribute.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityGPSInfo" element_type="attribute" element_name="longitude" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if HumanActivityGPSInfo::speed exists, has type double, and is readonly " type="compliance" onload_delay="9 " status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P1 " id="HumanActivityGPSInfo_speed_attribute">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityGPSInfo_speed_attribute.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityGPSInfo" element_type="attribute" element_name="speed" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if HumanActivityGPSInfo::speed exists, has type long, and is readonly " type="compliance" onload_delay="9 " status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P1 " id="HumanActivityGPSInfo_timestamp_attribute">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityGPSInfo_timestamp_attribute.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityGPSInfo" element_type="attribute" element_name="speed" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if method HumanActivityMonitorOption::callbackInterval works properly for GPS HumanActivity type" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="manual" priority="P1" id="HumanActivityMonitorOption_callbackInterval_type_GPS" onload_delay="300">
+ <description>
+ <steps>
+ <step order="1">
+ <step_desc>Wait 155 seconds for the callback</step_desc>
+ <expected>Pass should be shown in the page after 155 seconds</expected>
+ </step>
+ </steps>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorOption_callbackInterval_type_GPS.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityMonitorOption" element_type="attribute" element_name="callbackInterval" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if method HumanActivityMonitorOption::callbackInterval works properly when set to null" type="compliance" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="manual" priority="P1" id="HumanActivityMonitorOption_callbackInterval_type_GPS_default">
+ <description>
+ <steps>
+ <step order="1">
+ <step_desc>Wait 150 seconds for the callback</step_desc>
+ <expected>Pass should be shown in the page after 150 seconds</expected>
+ </step>
+ </steps>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorOption_callbackInterval_type_GPS_default.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityMonitorOption" element_type="attribute" element_name="callbackInterval" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if method HumanActivityMonitorOption::sampleInterval works properly for GPS HumanActivity type" type="compliance" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="manual" priority="P1" id="HumanActivityMonitorOption_sampleInterval_type_GPS">
+ <description>
+ <steps>
+ <step order="1">
+ <step_desc>Wait 120 seconds for the callback</step_desc>
+ <expected>Pass should be shown in the page after 120 seconds</expected>
+ </step>
+ </steps>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorOption_sampleInterval_type_GPS.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityMonitorOption" element_type="attribute" element_name="sampleInterval" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if method HumanActivityMonitorOption::sampleInterval works properly when set to null" type="compliance" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="manual" priority="P1" id="HumanActivityMonitorOption_sampleInterval_type_GPS_default">
+ <description>
+ <steps>
+ <step order="1">
+ <step_desc>Wait 120 seconds for the callback</step_desc>
+ <expected>Pass should be shown in the page after 120 seconds</expected>
+ </step>
+ </steps>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorOption_sampleInterval_type_GPS_default.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityMonitorOption" element_type="attribute" element_name="sampleInterval" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check exception in error callback of HumanActivityMonitorManager::start() method" type="compliance" onload_delay="30" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="manual" priority="P2" id="HumanActivityMonitorManager_start_errorCallback_invoked">
+ <description>
+ <steps>
+ <step order="1">
+ <step_desc>Please set the GPS function to disabled in the location settings</step_desc>
+ <expected>Pass should be shown in the page after GPS off</expected>
+ </step>
+ </steps>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_start_errorCallback_invoked.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="start" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ </set>
+ <set name="HumanActivityMonitor_sleep_monitor_wearable">
+ <capabilities>
+ <capability name="http://tizen.org/feature/profile"><value>WEARABLE</value></capability>
+ <capability name="http://tizen.org/feature/sensor.sleep_monitor"/>
+ </capabilities>
+ <testcase purpose="Check if method HumanActivityMonitorManager::start() works properly for SLEEP_MONITOR" type="compliance" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P1" id="HumanActivityMonitorManager_start_type_SLEEP_MONITOR">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_start_type_SLEEP_MONITOR.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="start" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if HumanActivityMonitorManager::stop() method with SLEEP_MONITOR works properly" type="compliance" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P1" id="HumanActivityMonitorManager_stop_type_SLEEP_MONITOR">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_stop_type_SLEEP_MONITOR.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="stop" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if HumanActivitySleepMonitorData::status exists and is readonly " type="compliance" onload_delay="9 " status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P1 " id="HumanActivitySleepMonitorData_status_attribute">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivitySleepMonitorData_status_attribute.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivitySleepMonitorData" element_type="attribute" element_name="status" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if HumanActivitySleepMonitorData::timestamp exists, has type long, and is readonly" type="compliance" onload_delay="9 " status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P1 " id="HumanActivitySleepMonitorData_timestamp_attribute">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivitySleepMonitorData_timestamp_attribute.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivitySleepMonitorData" element_type="attribute" element_name="timestamp" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if readRecorderData without optional arguments works properly for SLEEP_MONITOR HumanActivity type" type="compliance" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" priority="P1" id="HumanActivityMonitorManager_readRecorderData_type_SLEEP_MONITOR">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_readRecorderData_type_SLEEP_MONITOR.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="readRecorderData" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if method HumanActivityMonitorManager::startRecorder() works properly for SLEEP_MONITOR HumanActivity type" type="compliance" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" priority="P1" id="HumanActivityMonitorManager_startRecorder_type_SLEEP_MONITOR">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_startRecorder_type_SLEEP_MONITOR.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="startRecorder" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if method HumanActivityMonitorManager::stopRecorder () works properly for SLEEP_MONITOR HumanActivity type" type="compliance" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" priority="P1" id="HumanActivityMonitorManager_stopRecorder_type_SLEEP_MONITOR">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_stopRecorder_type_SLEEP_MONITOR.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="stopRecorder" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if HumanActivityRecorderSleepMonitorData have endTime attribute with proper type, readonly" type="compliance" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" priority="P1" id="HumanActivityRecorderSleepMonitorData_endTime_attribute">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityRecorderSleepMonitorData_endTime_attribute.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityRecorderSleepMonitorData" element_type="attribute" element_name="endTime" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if HumanActivityRecorderSleepMonitorData cannot be called in new expression and as a function or in new expression" type="compliance" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" priority="P3" id="HumanActivityRecorderSleepMonitorData_notexist">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityRecorderSleepMonitorData_notexist.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityRecorderSleepMonitorData" usage="true" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if HumanActivityRecorderSleepMonitorData have startTime attribute with proper type, readonly" type="compliance" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" priority="P1" id="HumanActivityRecorderSleepMonitorData_startTime_attribute">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityRecorderSleepMonitorData_startTime_attribute.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityRecorderSleepMonitorData" element_type="attribute" element_name="startTime" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if HumanActivityRecorderSleepMonitorData have status attribute with proper type, readonly" type="compliance" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" priority="P1" id="HumanActivityRecorderSleepMonitorData_status_attribute">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityRecorderSleepMonitorData_status_attribute.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion interface="HumanActivityRecorderSleepMonitorData" element_type="attribute" element_name="status" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ </set>
+ </suite>
+</test_definition>
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<?xml-stylesheet type="text/xsl" href="./testcase.xsl"?>
+<test_definition>
+ <suite category="Tizen Web Device APIs" extension="crosswalk" name="tct-humanactivitymonitor-tizen-tests">
+ <set name="HumanActivityMonitor_mobile" type="js">
+ <capabilities>
+ <capability name="http://tizen.org/feature/profile"><value>MOBILE_FULL</value></capability>
+ <capability name="http://tizen.org/feature/humanactivitymonitor"/>
+ </capabilities>
+ <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityData_notexist" priority="P3" purpose="Check if interface HumanActivityData exists, it should not">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityData_notexist.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="StepDifference_notexist" priority="P3" purpose="Check if interface StepDifference exists, it should not">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/StepDifference_notexist.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityAccumulativePedometerData_notexist" priority="P3" purpose="Check if interface HumanActivityAccumulativePedometerData exists, it should not">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityAccumulativePedometerData_notexist.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityHRMData_notexist" priority="P3" purpose="Check if interface HumanActivityHRMData exists, it should not">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityHRMData_notexist.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityGPSInfo_notexist" priority="P3" purpose="Check if interface HumanActivityGPSInfo exists, it should not">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityGPSInfo_notexist.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityGPSInfoArray_notexist" priority="P3" purpose="Check if interface HumanActivityGPSInfoArray exists, it should not">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityGPSInfoArray_notexist.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityRecognitionData_notexist" priority="P3" purpose="Check if interface HumanActivityRecognitionData exists, it should not">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityRecognitionData_notexist.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivitySleepMonitorData_notexist" priority="P3" purpose="Check if interface HumanActivitySleepMonitorData exists, it should not">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivitySleepMonitorData_notexist.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManagerObject_notexist" priority="P3" purpose="Check if interface HumanActivityMonitorManagerObject exists, it should not">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManagerObject_notexist.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_extend" priority="P3" purpose="Check if HumanActivityMonitorManager is extendable">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_extend.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_getHumanActivityData_exist" priority="P0" purpose="Check if HumanActivityMonitorManager::getHumanActivityData() method exists">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_getHumanActivityData_exist.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_in_tizen" priority="P3" purpose="Check if humanactivitymonitor exists in tizen">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_in_tizen.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_notexist" priority="P3" purpose="Check if interface HumanActivityMonitorManager exists, it should not">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_notexist.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_start_exist" priority="P0" purpose="Check if method HumanActivityMonitorManager::start() exists">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_start_exist.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_start_misarg" priority="P2" purpose="Check if HumanActivityMonitorManager::start() throws exception when type and successCallback are missing">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_start_misarg.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_stop_exist" priority="P0" purpose="Check if HumanActivityMonitorManager::stop() method exists">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_stop_exist.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_stop_misarg" priority="P2" purpose="Check if HumanActivityMonitorManager::stop() throws exception when type is missing">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_stop_misarg.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorSuccessCallback_notexist" priority="P3" purpose="Check if HumanActivityMonitorSuccessCallback does not exist">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorSuccessCallback_notexist.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_start_option_TypeMismatch" onload_delay="30" purpose="Check if HumanActivityMonitorManager::start() with incorrect option argument throws exception">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_start_option_TypeMismatch.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_start_changedCallback_TypeMismatch" onload_delay="30" purpose="Check if HumanActivityMonitorManager::start() with incorrect successCallback argument throws exception">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_start_changedCallback_TypeMismatch.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_start_changedCallback_invalid_cb" onload_delay="30" purpose="Check if HumanActivityMonitorManager::start() method throws exception when HumanActivityMonitorSuccessCallback is invalid">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_start_changedCallback_invalid_cb.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase purpose="Check if readRecorderData throw NotSupportedError called with not supported human activity recorder type" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_readRecorderData_NotSupportedError">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_readRecorderData_NotSupportedError.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase purpose="Check if readRecorderData throws exception when errorCallback is incorrect" onload_delay="30" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_readRecorderData_errorCallback_TypeMismatch">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_readRecorderData_errorCallback_TypeMismatch.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase purpose="Check if readRecorderData throws exception when error callback is invalid" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_readRecorderData_errorCallback_invalid_cb">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_readRecorderData_errorCallback_invalid_cb.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase purpose="Check if readRecorderData exists" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_readRecorderData_exist">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_readRecorderData_exist.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase purpose="Check if HumanActivityMonitorManager::readRecorderData() called with missing non-optional argument throws an exception" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_readRecorderData_misarg">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_readRecorderData_misarg.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase purpose="Check if readRecorderData throws exception when query is incorrect" onload_delay="30" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_readRecorderData_query_TypeMismatch">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_readRecorderData_query_TypeMismatch.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase purpose="Check if readRecorderData throws exception when successCallback is incorrect" onload_delay="30" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_readRecorderData_successCallback_TypeMismatch">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_readRecorderData_successCallback_TypeMismatch.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase purpose="Check if readRecorderData throws exception when success callback is invalid" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_readRecorderData_successCallback_invalid_cb">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_readRecorderData_successCallback_invalid_cb.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase purpose="Check if readRecorderData without optional arguments works properly for PRESSURE HumanActivity type" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="manual" onload_delay="150" id="HumanActivityMonitorManager_readRecorderData_type_PRESSURE">
+ <description>
+ <steps>
+ <step order="1">
+ <step_desc>Waiting for 1 minutes for the callback.</step_desc>
+ <expected>Pass should be shown in the page after 1 minutes.</expected>
+ </step>
+ </steps>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_readRecorderData_type_PRESSURE.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase purpose="Check if HumanActivityMonitorManager::startRecorder() throw NotSupportedError called with not supported human activity recorder type" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_startRecorder_NotSupportedError">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_startRecorder_NotSupportedError.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase purpose="Check if startRecorder exists" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_startRecorder_exist">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_startRecorder_exist.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase purpose="Check if HumanActivityMonitorManager::startRecorder() called with missing non-optional argument throws an exception" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_startRecorder_misarg">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_startRecorder_misarg.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase purpose="Check if method HumanActivityMonitorManager::startRecorder() works properly for PRESSURE HumanActivity type" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_startRecorder_type_PRESSURE">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_startRecorder_type_PRESSURE.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase purpose="Check if HumanActivityMonitorManager::stopRecorder() throw NotSupportedError called with not supported human activity recorder type" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_stopRecorder_NotSupportedError">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_stopRecorder_NotSupportedError.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase purpose="Check if stopRecorder exists" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_stopRecorder_exist">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_stopRecorder_exist.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase purpose="Check if HumanActivityMonitorManager::stopRecorder() called with missing non-optional argument throws an exception" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_stopRecorder_misarg">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_stopRecorder_misarg.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase purpose="Check if method HumanActivityMonitorManager::stopRecorder() works properly for PRESSURE HumanActivity type" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_stopRecorder_type_PRESSURE">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_stopRecorder_type_PRESSURE.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase purpose="Check if HumanActivityReadRecorderSuccessCallback cannot be called in new expression and as a function or in new expression" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" id="HumanActivityReadRecorderSuccessCallback_notexist">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityReadRecorderSuccessCallback_notexist.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase purpose="Check if HumanActivityRecorderData cannot be called in new expression and as a function or in new expression" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" id="HumanActivityRecorderData_notexist">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityRecorderData_notexist.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase purpose="Check if HumanActivityRecorderPressureData have average attribute with proper type, readonly" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="manual" onload_delay="90" id="HumanActivityRecorderPressureData_average_attribute">
+ <description>
+ <pre_condition>Before run this tc, run HumanActivityMonitorManager_readRecorderData_type_PRESSURE.html first, because we should wait at least 1 minute to get the recorded data after start recorder. But if you tested that TC already, you can run this TC now.</pre_condition>
+ <steps>
+ <step order="1">
+ <step_desc>Waiting for 1 minutes for the callback.</step_desc>
+ <expected>Pass should be shown in the page after 1 minutes.</expected>
+ </step>
+ </steps>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityRecorderPressureData_average_attribute.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase purpose="Check if HumanActivityRecorderPressureData have endTime attribute with proper type, readonly" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="manual" onload_delay="90" id="HumanActivityRecorderPressureData_endTime_attribute">
+ <description>
+ <pre_condition>Before run this tc, run HumanActivityMonitorManager_readRecorderData_type_PRESSURE.html first, because we should wait at least 1 minute to get the recorded data after start recorder. But if you tested that TC already, you can run this TC now.</pre_condition>
+ <steps>
+ <step order="1">
+ <step_desc>Waiting for 1 minutes for the callback.</step_desc>
+ <expected>Pass should be shown in the page after 1 minutes.</expected>
+ </step>
+ </steps>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityRecorderPressureData_endTime_attribute.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase purpose="Check if HumanActivityRecorderPressureData have max attribute with proper type, readonly" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="manual" onload_delay="90" id="HumanActivityRecorderPressureData_max_attribute">
+ <description>
+ <pre_condition>Before run this tc, run HumanActivityMonitorManager_readRecorderData_type_PRESSURE.html first, because we should wait at least 1 minute to get the recorded data after start recorder. But if you tested that TC already, you can run this TC now.</pre_condition>
+ <steps>
+ <step order="1">
+ <step_desc>Waiting for 1 minutes for the callback.</step_desc>
+ <expected>Pass should be shown in the page after 1 minutes.</expected>
+ </step>
+ </steps>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityRecorderPressureData_max_attribute.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase purpose="Check if HumanActivityRecorderPressureData have min attribute with proper type, readonly" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="manual" onload_delay="90" id="HumanActivityRecorderPressureData_min_attribute">
+ <description>
+ <pre_condition>Before run this tc, run HumanActivityMonitorManager_readRecorderData_type_PRESSURE.html first, because we should wait at least 1 minute to get the recorded data after start recorder. But if you tested that TC already, you can run this TC now.</pre_condition>
+ <steps>
+ <step order="1">
+ <step_desc>Waiting for 1 minutes for the callback.</step_desc>
+ <expected>Pass should be shown in the page after 1 minutes.</expected>
+ </step>
+ </steps>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityRecorderPressureData_min_attribute.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase purpose="Check if HumanActivityRecorderPressureData cannot be called in new expression and as a function or in new expression" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" id="HumanActivityRecorderPressureData_notexist">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityRecorderPressureData_notexist.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase purpose="Check if HumanActivityRecorderPressureData have startTime attribute with proper type, readonly" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="manual" onload_delay="90" id="HumanActivityRecorderPressureData_startTime_attribute">
+ <description>
+ <pre_condition>Before run this tc, run HumanActivityMonitorManager_readRecorderData_type_PRESSURE.html first, because we should wait at least 1 minute to get the recorded data after start recorder. But if you tested that TC already, you can run this TC now.</pre_condition>
+ <steps>
+ <step order="1">
+ <step_desc>Waiting for 1 minutes for the callback.</step_desc>
+ <expected>Pass should be shown in the page after 1 minutes.</expected>
+ </step>
+ </steps>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityRecorderPressureData_startTime_attribute.html</test_script_entry>
+ </description>
+ </testcase>
+ </set>
+ <set name="HumanActivityMonitor_with_activity_recognition_mobile">
+ <capabilities>
+ <capability name="http://tizen.org/feature/profile"><value>MOBILE_FULL</value></capability>
+ <capability name="http://tizen.org/feature/sensor.activity_recognition"/>
+ </capabilities>
+ <testcase purpose="Check if the method addActivityRecognitionListener of HumanActivityMonitorManager returns proper value" onload_delay="60" component="Tizen Device APIs/HumanActivityMonitor/HumanActivityMonitorManager" execution_type="manual" priority="P1" id="HumanActivityMonitorManager_addActivityRecognitionListener_STATIONARY">
+ <description>
+ <steps>
+ <step order="1">
+ <step_desc>Press run button, then keep the device stationary</step_desc>
+ <expected>Pass</expected>
+ </step>
+ </steps>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_addActivityRecognitionListener_STATIONARY.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase purpose="Check if the method addActivityRecognitionListener of HumanActivityMonitorManager returns proper value" onload_delay="60" component="Tizen Device APIs/HumanActivityMonitor/HumanActivityMonitorManager" execution_type="manual" priority="P1" id="HumanActivityMonitorManager_addActivityRecognitionListener_WALKING">
+ <description>
+ <steps>
+ <step order="1">
+ <step_desc>Press run button. Pretend walking with the device.</step_desc>
+ <expected>Pass</expected>
+ </step>
+ </steps>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_addActivityRecognitionListener_WALKING.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase purpose="Check if the method addActivityRecognitionListener of HumanActivityMonitorManager throws TypeMismatchError when invalid type value is assigned for errorCallback parameter" component="Tizen Device APIs/HumanActivityMonitor/HumanActivityMonitorManager" execution_type="auto" priority="P2" id="HumanActivityMonitorManager_addActivityRecognitionListener_errorCallback_TypeMismatch">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_addActivityRecognitionListener_errorCallback_TypeMismatch.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase purpose="Check if the method addActivityRecognitionListener of HumanActivityMonitorManager exist" component="Tizen Device APIs/HumanActivityMonitor/HumanActivityMonitorManager" execution_type="auto" priority="P1" id="HumanActivityMonitorManager_addActivityRecognitionListener_exist">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_addActivityRecognitionListener_exist.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase purpose="Check if the method addActivityRecognitionListener of HumanActivityMonitorManager throws TypeMismatchError when invalid value is assigned for type parameter" component="Tizen Device APIs/HumanActivityMonitor/HumanActivityMonitorManager" execution_type="auto" priority="P2" id="HumanActivityMonitorManager_addActivityRecognitionListener_type_TypeMismatch">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_addActivityRecognitionListener_listener_TypeMismatch.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase purpose="Check if the method addActivityRecognitionListener of HumanActivityMonitorManager throws TypeMismatchError when no param assigned" component="Tizen Device APIs/HumanActivityMonitor/HumanActivityMonitorManager" execution_type="auto" priority="P2" id="HumanActivityMonitorManager_addActivityRecognitionListener_misarg">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_addActivityRecognitionListener_misarg.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase purpose="Check if the method addActivityRecognitionListener of HumanActivityMonitorManager throws TypeMismatchError when invalid type value is assigned for listener parameter" component="Tizen Device APIs/HumanActivityMonitor/HumanActivityMonitorManager" execution_type="auto" priority="P2" id="HumanActivityMonitorManager_addActivityRecognitionListener_listener_TypeMismatch">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_addActivityRecognitionListener_type_TypeMismatch.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase purpose="Check if the method addActivityRecognitionListener of HumanActivityMonitorManager returns proper value with errorcallback assigned" onload_delay="60" component="Tizen Device APIs/HumanActivityMonitor/HumanActivityMonitorManager" execution_type="manual" priority="P1" id="HumanActivityMonitorManager_addActivityRecognitionListener_with_errorCallback">
+ <description>
+ <steps>
+ <step order="1">
+ <step_desc>Press run button, then keep the device stationary</step_desc>
+ <expected>Pass</expected>
+ </step>
+ </steps>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_addActivityRecognitionListener_with_errorCallback.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase purpose="Check if the method addActivityRecognitionListener of HumanActivityMonitorManager returns proper value with errorcallback null assigned" onload_delay="60" component="Tizen Device APIs/HumanActivityMonitor/HumanActivityMonitorManager" execution_type="manual" priority="P1" id="HumanActivityMonitorManager_addActivityRecognitionListener_with_errorCallback_null">
+ <description>
+ <steps>
+ <step order="1">
+ <step_desc>Press run button, then keep the device stationary</step_desc>
+ <expected>Pass</expected>
+ </step>
+ </steps>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_addActivityRecognitionListener_with_errorCallback_null.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase purpose="Check if the method removeActivityRecognitionListener of HumanActivityMonitorManager returns proper value" onload_delay="20" component="Tizen Device APIs/TBD/HumanActivityMonitor" execution_type="manual" priority="P1" id="HumanActivityMonitorManager_removeActivityRecognitionListener_STATIONARY">
+ <description>
+ <steps>
+ <step order="1">
+ <step_desc>Press run button, then pretend walking with the device for 15 seconds</step_desc>
+ <expected>Pass</expected>
+ </step>
+ </steps>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_removeActivityRecognitionListener.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase purpose="Check if the method removeActivityRecognitionListener of HumanActivityMonitorManager exist" component="Tizen Device APIs/HumanActivityMonitor/HumanActivityMonitorManager" execution_type="auto" priority="P1" id="HumanActivityMonitorManager_removeActivityRecognitionListener_exist">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_removeActivityRecognitionListener_exist.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase purpose="Check if the method removeActivityRecognitionListener of HumanActivityMonitorManager ignores invalid id" onload_delay="3" component="Tizen Device APIs/HumanActivityMonitor/HumanActivityMonitorManager" execution_type="auto" priority="P2" id="HumanActivityMonitorManager_removeActivityRecognitionListener_invalid_id">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_removeActivityRecognitionListener_invalid_id.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase purpose="Check if the method removeActivityRecognitionListener of HumanActivityMonitorManager ignores invalid id when no param assigned (undefined converted to 0)" component="Tizen Device APIs/HumanActivityMonitor/HumanActivityMonitorManager" execution_type="auto" priority="P2" id="HumanActivityMonitorManager_removeActivityRecognitionListener_misarg">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_removeActivityRecognitionListener_misarg.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase purpose="Check if the method removeActivityRecognitionListener of HumanActivityMonitorManager returns proper value with errorcallback assigned" onload_delay="20" component="Tizen Device APIs/TBD/HumanActivityMonitor" execution_type="manual" priority="P1" id="HumanActivityMonitorManager_removeActivityRecognitionListener_STATIONARY">
+ <description>
+ <steps>
+ <step order="1">
+ <step_desc>Press run button, then pretend walking with the device for 15 seconds</step_desc>
+ <expected>Pass</expected>
+ </step>
+ </steps>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_removeActivityRecognitionListener_with_errorCallback.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase purpose="Check if the method removeActivityRecognitionListener of HumanActivityMonitorManager returns proper value with errorcallback null assigned" onload_delay="20" component="Tizen Device APIs/TBD/HumanActivityMonitor" execution_type="manual" priority="P1" id="HumanActivityMonitorManager_removeActivityRecognitionListener_STATIONARY">
+ <description>
+ <steps>
+ <step order="1">
+ <step_desc>Press run button, then pretend walking with the device for 15 seconds</step_desc>
+ <expected>Pass</expected>
+ </step>
+ </steps>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_removeActivityRecognitionListener_with_errorCallback_null.html</test_script_entry>
+ </description>
+ </testcase>
+ </set>
+ <set name="HumanActivityMonitor_with_pedometer_mobile">
+ <capabilities>
+ <capability name="http://tizen.org/feature/profile"><value>MOBILE_FULL</value></capability>
+ <capability name="http://tizen.org/feature/sensor.pedometer"/>
+ </capabilities>
+ <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_getHumanActivityData" priority="P1" purpose="Check if method getHumanActivityData of HumanActivityMonitorManager returns properly value">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_getHumanActivityData.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_getHumanActivityData_errorCallback_TypeMismatch" onload_delay="30" priority="P2" purpose="Check if HumanActivityMonitorManager::getHumanActivityData() with incorrect errorCallback argument throws exception">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_getHumanActivityData_errorCallback_TypeMismatch.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_getHumanActivityData_errorCallback_invalid_cb" onload_delay="30" priority="P2" purpose="Check if HumanActivityMonitorManager::getHumanActivityData() method throws exception when errorCallback is invalid">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_getHumanActivityData_errorCallback_invalid_cb.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_getHumanActivityData_errorCallback_invoked" onload_delay="30" priority="P2" purpose="Check exception in error callback of HumanActivityMonitorManager::getHumanActivityData() method">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_getHumanActivityData_errorCallback_invoked.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_getHumanActivityData_misarg" priority="P2" purpose="Check if HumanActivityMonitorManager::getHumanActivityData() throws exception when successCallback is missing">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_getHumanActivityData_misarg.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_getHumanActivityData_successCallback_TypeMismatch" onload_delay="30" priority="P2" purpose="Check if HumanActivityMonitorManager::getHumanActivityData() with incorrect successCallback argument throws exception">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_getHumanActivityData_successCallback_TypeMismatch.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_getHumanActivityData_successCallback_invalid_cb" onload_delay="30" priority="P2" purpose="Check if HumanActivityMonitorManager::getHumanActivityData() method throws exception when successCallback is invalid">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_getHumanActivityData_successCallback_invalid_cb.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_getHumanActivityData_type_PEDOMETER" onload_delay="30" priority="P1" purpose="Check if HumanActivityMonitorManager::getHumanActivityData() method works properly">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_getHumanActivityData_type_PEDOMETER.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_getHumanActivityData_with_errorCallback" onload_delay="30" priority="P1" purpose="Check if HumanActivityMonitorManager::getHumanActivityData() method works properly with optional argument">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_getHumanActivityData_with_errorCallback.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_start_changedCallback_TypeMismatch" onload_delay="30" priority="P2" purpose="Check if HumanActivityMonitorManager::start() with incorrect successCallback argument throws exception">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_start_changedCallback_TypeMismatch.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_start_errorCallback_TypeMismatch" onload_delay="30" priority="P2" purpose="Check if HumanActivityMonitorManager::start() with incorrect errorCallback argument throws exception">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_start_errorCallback_TypeMismatch.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_start_type_PEDOMETER" priority="P1" purpose="Check if method HumanActivityMonitorManager::start() works properly for PEDOMETER">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_start_type_PEDOMETER.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_start_changedCallback_invalid_cb" onload_delay="30" purpose="Check if HumanActivityMonitorManager::start() method throws exception when HumanActivityMonitorSuccessCallback is invalid">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_start_changedCallback_invalid_cb.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_start_errorCallback_invalid_cb" onload_delay="30" purpose="Check if HumanActivityMonitorManager::start() method throws exception when ErrorCallback is invalid">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_start_errorCallback_invalid_cb.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_stop_type_PEDOMETER" priority="P1" purpose="Check if HumanActivityMonitorManager::stop() method works properly">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_stop_type_PEDOMETER.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityPedometerData_cumulativeCalorie_attribute" onload_delay="9" priority="P1" purpose="Check if HumanActivityPedometerData::cumulativeCalorie exists, has type double, and is readonly">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityPedometerData_cumulativeCalorie_attribute.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityPedometerData_cumulativeDistance_attribute" onload_delay="9" priority="P1" purpose="Check if HumanActivityPedometerData::cumulativeDistance exists, has type double, and is readonly">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityPedometerData_cumulativeDistance_attribute.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityPedometerData_cumulativeRunStepCount_attribute" onload_delay="9" priority="P1" purpose="Check if HumanActivityPedometerData::cumulativeRunStepCount exists, has type double, and is readonly">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityPedometerData_cumulativeRunStepCount_attribute.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityPedometerData_cumulativeTotalStepCount_attribute" onload_delay="9" priority="P1" purpose="Check if HumanActivityPedometerData::cumulativeTotalStepCount exists, has type double, and is readonly">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityPedometerData_cumulativeTotalStepCount_attribute.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityPedometerData_cumulativeWalkStepCount_attribute" onload_delay="9" priority="P1" purpose="Check if HumanActivityPedometerData::cumulativeWalkStepCount exists, has type double, and is readonly">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityPedometerData_cumulativeWalkStepCount_attribute.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityPedometerData_stepCountDifferences_attribute" onload_delay="9" priority="P1" purpose="Check if HumanActivityPedometerData::stepCountDifferences exists, has type double, and is readonly">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityPedometerData_stepCountDifferences_attribute.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityPedometerData_extend" onload_delay="90" priority="P3" purpose="Check if HumanActivityPedometerData object is extendable">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityPedometerData_extend.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityPedometerData_speed_attribute" onload_delay="9" priority="P1" purpose="Check if HumanActivityPedometerData::speed exists, has type double, and is readonly">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityPedometerData_speed_attribute.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityPedometerData_stepStatus_attribute" onload_delay="9" priority="P1" purpose="Check if HumanActivityPedometerData::stepStatus exists, has type string, and is readonly">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityPedometerData_stepStatus_attribute.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityPedometerData_walkingFrequency_attribute" onload_delay="9" priority="P1" purpose="Check if HumanActivityPedometerData::walkingFrequency exists, has type double, and is readonly">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityPedometerData_walkingFrequency_attribute.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityPedometerData_notexist" priority="P3" purpose="Check if interface HumanActivityPedometerData exists, it should not">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityPedometerData_notexist.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityAccumulativePedometerInfo_notexist" priority="P3" purpose="Check if interface HumanActivityAccumulativePedometerInfo exists, it should not">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityAccumulativePedometerInfo_notexist.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_setAccumulativePedometerListener_changeCallback_TypeMismatch" onload_delay="30" priority="P2" purpose="Check if HumanActivityMonitorManager::setAccumulativePedometerListener() with incorrect changeCallback argument throws exception">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_setAccumulativePedometerListener_changeCallback_TypeMismatch.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_setAccumulativePedometerListener_changeCallback_TypeMismatch" onload_delay="30" priority="P2" purpose="Check if HumanActivityMonitorManager::setAccumulativePedometerListener() with incorrect changeCallback argument throws exception">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_setAccumulativePedometerListener_changeCallback_TypeMismatch.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_setAccumulativePedometerListener_changeCallback_invalid_cb" onload_delay="30" priority="P2" purpose="Check if HumanActivityMonitorManager::setAccumulativePedometerListener() method throws exception when changeCallback is invalid">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_setAccumulativePedometerListener_changeCallback_invalid_cb.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_setAccumulativePedometerListener_exist" priority="P0" purpose="Check if method HumanActivityMonitorManager::setAccumulativePedometerListener() exists">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_setAccumulativePedometerListener_exist.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_setAccumulativePedometerListener_misarg" priority="P2" purpose="Check if HumanActivityMonitorManager::setAccumulativePedometerListener() throws exception when changeCallback is missing">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_setAccumulativePedometerListener_misarg.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_unsetAccumulativePedometerListener" onload_delay="30" priority="P1" purpose="Check if HumanActivityMonitorManager::unsetAccumulativePedometerListener() method works properly">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_unsetAccumulativePedometerListener.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion category="Tizen Device API Specifications" element_name="unsetAccumulativePedometerListener" element_type="method" interface="humanactivitymonitor" section="Sensor" specification="HumanActivityMonitor"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_unsetAccumulativePedometerListener_exist" priority="P0" purpose="Check if HumanActivityMonitorManager::unsetAccumulativePedometerListener() method exists">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_unsetAccumulativePedometerListener_exist.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion category="Tizen Device API Specifications" element_name="unsetAccumulativePedometerListener" element_type="method" interface="HumanActivityMonitorManager" section="Sensor" specification="HumanActivityMonitor"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_unsetAccumulativePedometerListener_extra_argument" priority="P1" purpose="Check if HumanActivityMonitorManager::unsetAccumulativePedometerListener() method with extra argument">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_unsetAccumulativePedometerListener_extra_argument.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion category="Tizen Device API Specifications" element_name="unsetAccumulativePedometerListener" element_type="method" interface="HumanActivityMonitorManager" section="Sensor" specification="HumanActivityMonitor"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if the specifies the pedometer user's current movement type is NOT_MOVING" onload_delay="60" component="Tizen Device APIs/HumanActivityMonitor/HumanActivityMonitorManager" execution_type="manual" priority="P1" id="HumanActivityMonitorManager_getHumanActivityData_stepStatus_NOT_MOVING">
+ <description>
+ <steps>
+ <step order="1">
+ <step_desc>Press run button, then keep the device stationary.</step_desc>
+ <expected>Pass</expected>
+ </step>
+ </steps>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_getHumanActivityData_stepStatus_NOT_MOVING.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase purpose="Check if the specifies the pedometer user's current movement type is WALKING" onload_delay="60" component="Tizen Device APIs/HumanActivityMonitor/HumanActivityMonitorManager" execution_type="manual" priority="P1" id="HumanActivityMonitorManager_getHumanActivityData_stepStatus_WALKING">
+ <description>
+ <steps>
+ <step order="1">
+ <step_desc>Press run button. Pretend walking with the device.</step_desc>
+ <expected>Pass</expected>
+ </step>
+ </steps>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_getHumanActivityData_stepStatus_WALKING.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase purpose="Check if the specifies the pedometer user's current movement type is RUNNING" onload_delay="60" component="Tizen Device APIs/HumanActivityMonitor/HumanActivityMonitorManager" execution_type="manual" priority="P1" id="HumanActivityMonitorManager_getHumanActivityData_stepStatus_RUNNING">
+ <description>
+ <steps>
+ <step order="1">
+ <step_desc>Press run button. Pretend running with the device.</step_desc>
+ <expected>Pass</expected>
+ </step>
+ </steps>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_getHumanActivityData_stepStatus_RUNNING.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase purpose="Check if readRecorderData can be called with empty object as query argument" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="manual" onload_delay="60" id="HumanActivityMonitorManager_readRecorderData_query_empty">
+ <description>
+ <steps>
+ <step order="1">
+ <step_desc>Press run button. Pretend walking with the device.</step_desc>
+ <expected>Pass</expected>
+ </step>
+ </steps>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_readRecorderData_query_empty.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase purpose="Check if readRecorderData without optional arguments works properly for PEDOMETER HumanActivity type" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="manual" onload_delay="60" id="HumanActivityMonitorManager_readRecorderData_type_PEDOMETER">
+ <description>
+ <steps>
+ <step order="1">
+ <step_desc>Press run button. Pretend walking with the device.</step_desc>
+ <expected>Pass</expected>
+ </step>
+ </steps>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_readRecorderData_type_PEDOMETER.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase purpose="Check if readRecorderData with optional arguments works properly" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="manual" onload_delay="60" id="HumanActivityMonitorManager_readRecorderData_with_errorCallback">
+ <description>
+ <steps>
+ <step order="1">
+ <step_desc>Press run button. Pretend walking with the device.</step_desc>
+ <expected>Pass</expected>
+ </step>
+ </steps>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_readRecorderData_with_errorCallback.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase purpose="Check if HumanActivityMonitorManager::startRecorder() can be called with empty object as option argument" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_startRecorder_option_empty">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_startRecorder_option_empty.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase purpose="Check if method HumanActivityMonitorManager::startRecorder() works properly for PEDOMETER HumanActivity type" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_startRecorder_type_PEDOMETER">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_startRecorder_type_PEDOMETER.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase purpose="Check if method HumanActivityMonitorManager::stopRecorder() works properly for PEDOMETER HumanActivity type" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_stopRecorder_type_PEDOMETER">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_stopRecorder_type_PEDOMETER.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase purpose="Check if HumanActivityRecorderPedometerData have calorie attribute with proper type, readonly" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="manual" onload_delay="60" id="HumanActivityRecorderPedometerData_calorie_attribute">
+ <description>
+ <steps>
+ <step order="1">
+ <step_desc>Press run button. Pretend walking with the device.</step_desc>
+ <expected>Pass</expected>
+ </step>
+ </steps>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityRecorderPedometerData_calorie_attribute.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase purpose="Check if HumanActivityRecorderPedometerData have distance attribute with proper type, readonly" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="manual" onload_delay="60" id="HumanActivityRecorderPedometerData_distance_attribute">
+ <description>
+ <steps>
+ <step order="1">
+ <step_desc>Press run button. Pretend walking with the device.</step_desc>
+ <expected>Pass</expected>
+ </step>
+ </steps>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityRecorderPedometerData_distance_attribute.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase purpose="Check if HumanActivityRecorderPedometerData have endTime attribute with proper type, readonly" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="manual" onload_delay="60" id="HumanActivityRecorderPedometerData_endTime_attribute">
+ <description>
+ <steps>
+ <step order="1">
+ <step_desc>Press run button. Pretend walking with the device.</step_desc>
+ <expected>Pass</expected>
+ </step>
+ </steps>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityRecorderPedometerData_endTime_attribute.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase purpose="Check if HumanActivityRecorderPedometerData cannot be called in new expression and as a function or in new expression" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" id="HumanActivityRecorderPedometerData_notexist">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityRecorderPedometerData_notexist.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase purpose="Check if HumanActivityRecorderPedometerData have runStepCount attribute with proper type, readonly" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="manual" onload_delay="60" id="HumanActivityRecorderPedometerData_runStepCount_attribute">
+ <description>
+ <steps>
+ <step order="1">
+ <step_desc>Press run button. Pretend walking with the device.</step_desc>
+ <expected>Pass</expected>
+ </step>
+ </steps>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityRecorderPedometerData_runStepCount_attribute.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase purpose="Check if HumanActivityRecorderPedometerData have startTime attribute with proper type, readonly" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="manual" onload_delay="60" id="HumanActivityRecorderPedometerData_startTime_attribute">
+ <description>
+ <steps>
+ <step order="1">
+ <step_desc>Press run button. Pretend walking with the device.</step_desc>
+ <expected>Pass</expected>
+ </step>
+ </steps>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityRecorderPedometerData_startTime_attribute.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase purpose="Check if HumanActivityRecorderPedometerData have totalStepCount attribute with proper type, readonly" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="manual" onload_delay="60" id="HumanActivityRecorderPedometerData_totalStepCount_attribute">
+ <description>
+ <steps>
+ <step order="1">
+ <step_desc>Press run button. Pretend walking with the device.</step_desc>
+ <expected>Pass</expected>
+ </step>
+ </steps>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityRecorderPedometerData_totalStepCount_attribute.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase purpose="Check if HumanActivityRecorderPedometerData have walkStepCount attribute with proper type, readonly" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="manual" onload_delay="60" id="HumanActivityRecorderPedometerData_walkStepCount_attribute">
+ <description>
+ <steps>
+ <step order="1">
+ <step_desc>Press run button. Pretend walking with the device.</step_desc>
+ <expected>Pass</expected>
+ </step>
+ </steps>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityRecorderPedometerData_walkStepCount_attribute.html</test_script_entry>
+ </description>
+ </testcase>
+ </set>
+ <set name="HumanActivityMonitor_with_wrist_up_mobile">
+ <capabilities>
+ <capability name="http://tizen.org/feature/profile"><value>MOBILE_FULL</value></capability>
+ <capability name="http://tizen.org/feature/sensor.wrist_up"/>
+ </capabilities>
+ <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_start_type_WRIST_UP" priority="P1" purpose="Check if method HumanActivityMonitorManager::start() works properly for WRIST_UP">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_start_type_WRIST_UP.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_stop_type_WRIST_UP" priority="P1" purpose="Check if HumanActivityMonitorManager::stop() method with WRIST_UP works properly">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_stop_type_WRIST_UP.html</test_script_entry>
+ </description>
+ </testcase>
+ </set>
+ <set name="HumanActivityMonitor_heart_rate_monitor_mobile">
+ <capabilities>
+ <capability name="http://tizen.org/feature/profile"><value>MOBILE_FULL</value></capability>
+ <capability name="http://tizen.org/feature/sensor.heart_rate_monitor"/>
+ </capabilities>
+ <testcase purpose="Check if HumanActivityMonitorManager::getHumanActivityData() method works properly for HumanActivityType HRM" onload_delay="30" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_getHumanActivityData_type_HRM">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_getHumanActivityData_type_HRM.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase purpose="Check if method HumanActivityMonitorManager::start() works properly for HRM HumanActivity type" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_start_type_HRM">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_start_type_HRM.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase purpose="Check if HumanActivityMonitorManager::stop() method works properly for HumanActivity type HRM" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_stop_type_HRM">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_stop_type_HRM.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityHRMData_heartRate_attribute" ondelay="9" purpose="Check if HumanActivityHRMData heartRate attribute">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityHRMData_heartRate_attribute.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityHRMData_rRInterval_attribute" ondelay="9" purpose="Check if HumanActivityHRMData rRInterval attribute">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityHRMData_rRInterval_attribute.html</test_script_entry>
+ </description>
+ </testcase>
+ <!-- <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorOption_callbackInterval_type_HRM" purpose="Check if method HumanActivityMonitorOption::callbackInterval works properly for HRM HumanActivity type">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorOption_callbackInterval_type_HRM.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorOption_callbackInterval_type_HRM_default" purpose="Check if method HumanActivityMonitorOption::callbackInterval works properly when set to null">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorOption_callbackInterval_type_HRM_default.html</test_script_entry>
+ </description>
+ </testcase> -->
+ <testcase purpose="Check if readRecorderData without optional arguments works properly for HRM HumanActivity type" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="manual" onload_delay="1500" id="HumanActivityMonitorManager_readRecorderData_type_HRM">
+ <description>
+ <steps>
+ <step order="1">
+ <step_desc>Waiting for 10 minutes for the callback.</step_desc>
+ <expected>Pass should be shown in the page after 10 minutes.</expected>
+ </step>
+ </steps>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_readRecorderData_type_HRM.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase purpose="Check if method HumanActivityMonitorManager::startRecorder() works properly for HRM HumanActivity type" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_startRecorder_type_HRM">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_startRecorder_type_HRM.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase purpose="Check if method HumanActivityMonitorManager::startRecorder() works properly with optional argument" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_startRecorder_with_option">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_startRecorder_with_option.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase purpose="Check if method HumanActivityMonitorManager::stopRecorder() works properly for HRM HumanActivity type" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_stopRecorder_type_HRM">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_stopRecorder_type_HRM.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase purpose="Check if HumanActivityReadRecorderSuccessCallback onsuccess is called and if its arguments have proper type" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="manual" onload_delay="60" id="HumanActivityReadRecorderSuccessCallback_onsuccess">
+ <description>
+ <pre_condition>Before run this tc, run HumanActivityMonitorManager_readRecorderData_type_HRM.html first, because we should wait at least 10 minutes to get the recorded data after start recorder. But if you tested that TC already, you can run this TC now.</pre_condition>
+ <steps>
+ <step order="1">
+ <step_desc>Waiting for 10 minutes for the callback.</step_desc>
+ <expected>Pass should be shown in the page after 10 minutes.</expected>
+ </step>
+ </steps>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityReadRecorderSuccessCallback_onsuccess.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase purpose="Check if HumanActivityRecorderHRMData have endTime attribute with proper type, readonly" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="manual" onload_delay="60" id="HumanActivityRecorderHRMData_endTime_attribute">
+ <description>
+ <pre_condition>Before run this tc, run HumanActivityMonitorManager_readRecorderData_type_HRM.html first, because we should wait at least 10 minutes to get the recorded data after start recorder. But if you tested that TC already, you can run this TC now.</pre_condition>
+ <steps>
+ <step order="1">
+ <step_desc>Waiting for 10 minutes for the callback.</step_desc>
+ <expected>Pass should be shown in the page after 10 minutes.</expected>
+ </step>
+ </steps>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityRecorderHRMData_endTime_attribute.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase purpose="Check if HumanActivityRecorderHRMData have heartRate attribute with proper type, readonly" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="manual" onload_delay="60" id="HumanActivityRecorderHRMData_heartRate_attribute">
+ <description>
+ <pre_condition>Before run this tc, run HumanActivityMonitorManager_readRecorderData_type_HRM.html first, because we should wait at least 10 minutes to get the recorded data after start recorder. But if you tested that TC already, you can run this TC now.</pre_condition>
+ <steps>
+ <step order="1">
+ <step_desc>Waiting for 10 minutes for the callback.</step_desc>
+ <expected>Pass should be shown in the page after 10 minutes.</expected>
+ </step>
+ </steps>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityRecorderHRMData_heartRate_attribute.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase purpose="Check if HumanActivityRecorderHRMData cannot be called in new expression and as a function or in new expression" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" id="HumanActivityRecorderHRMData_notexist">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityRecorderHRMData_notexist.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase purpose="Check if HumanActivityRecorderHRMData have startTime attribute with proper type, readonly" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="manual" onload_delay="60" id="HumanActivityRecorderHRMData_startTime_attribute">
+ <description>
+ <pre_condition>Before run this tc, run HumanActivityMonitorManager_readRecorderData_type_HRM.html first, because we should wait at least 10 minutes to get the recorded data after start recorder. But if you tested that TC already, you can run this TC now.</pre_condition>
+ <steps>
+ <step order="1">
+ <step_desc>Waiting for 10 minutes for the callback.</step_desc>
+ <expected>Pass should be shown in the page after 10 minutes.</expected>
+ </step>
+ </steps>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityRecorderHRMData_startTime_attribute.html</test_script_entry>
+ </description>
+ </testcase>
+ </set>
+ <set name="HumanActivityMonitor_location_batch_mobile">
+ <capabilities>
+ <capability name="http://tizen.org/feature/profile"><value>MOBILE_FULL</value></capability>
+ <capability name="http://tizen.org/feature/location.batch"/>
+ </capabilities>
+ <testcase purpose="Check if method HumanActivityMonitorManager::start() works properly for GPS HumanActivity type with optional argument" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_start_with_option">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_start_with_option.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase purpose="Check if method HumanActivityMonitorManager::start() works properly for GPS HumanActivity type" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_start_type_GPS">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_start_type_GPS.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_start_option_empty" onload_delay="30" purpose="Check if HumanActivityMonitorManager::start() can be called with empty object as option argument">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_start_option_empty.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase purpose="Check if HumanActivityMonitorManager::stop() method works properly for HumanActivity type GPS" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_stop_type_GPS">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_stop_type_GPS.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityGPSInfo_altitude_attribute" purpose="Check if HumanActivityGPSInfo altitude attribute">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityGPSInfo_altitude_attribute.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityGPSInfo_errorRange_attribute" purpose="Check if HumanActivityGPSInfo errorRange attribute">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityGPSInfo_errorRange_attribute.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityGPSInfo_latitude_attribute" purpose="Check if HumanActivityGPSInfo latitude attribute">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityGPSInfo_latitude_attribute.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityGPSInfo_longitude_attribute" purpose="Check if HumanActivityGPSInfo longitude attribute">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityGPSInfo_longitude_attribute.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityGPSInfo_speed_attribute" purpose="Check if HumanActivityGPSInfo speed attribute">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityGPSInfo_speed_attribute.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityGPSInfo_timestamp_attribute" purpose="Check if HumanActivityGPSInfo timestamp attribute">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityGPSInfo_timestamp_attribute.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase purpose="Check if method HumanActivityMonitorOption::callbackInterval works properly for GPS HumanActivity type" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="manual" priority="P1" id="HumanActivityMonitorOption_callbackInterval_type_GPS" onload_delay="300">
+ <description>
+ <steps>
+ <step order="1">
+ <step_desc>Wait 155 seconds for the callback</step_desc>
+ <expected>Pass should be shown in the page after 155 seconds</expected>
+ </step>
+ </steps>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorOption_callbackInterval_type_GPS.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase purpose="Check if method HumanActivityMonitorOption::callbackInterval works properly when set to null" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="manual" priority="P1" id="HumanActivityMonitorOption_callbackInterval_type_GPS_default" onload_delay="300">
+ <description>
+ <steps>
+ <step order="1">
+ <step_desc>Wait 150 seconds for the callback</step_desc>
+ <expected>Pass should be shown in the page after 150 seconds</expected>
+ </step>
+ </steps>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorOption_callbackInterval_type_GPS_default.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase purpose="Check if method HumanActivityMonitorOption::sampleInterval works properly for GPS HumanActivity type" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="manual" priority="P1" id="HumanActivityMonitorOption_sampleInterval_type_GPS" onload_delay="300">
+ <description>
+ <steps>
+ <step order="1">
+ <step_desc>Wait 120 seconds for the callback</step_desc>
+ <expected>Pass should be shown in the page after 120 seconds</expected>
+ </step>
+ </steps>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorOption_sampleInterval_type_GPS.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase purpose="Check if method HumanActivityMonitorOption::sampleInterval works properly when set to null" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="manual" priority="P1" id="HumanActivityMonitorOption_sampleInterval_type_GPS_default" onload_delay="300" >
+ <description>
+ <steps>
+ <step order="1">
+ <step_desc>Wait 120 seconds for the callback</step_desc>
+ <expected>Pass should be shown in the page after 120 seconds</expected>
+ </step>
+ </steps>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorOption_sampleInterval_type_GPS_default.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="manual" id="HumanActivityMonitorManager_start_errorCallback_invoked" onload_delay="30" priority="P2" purpose="Check exception in error callback of HumanActivityMonitorManager::start() method">
+ <description>
+ <steps>
+ <step order="1">
+ <step_desc>Please set the GPS function to disabled in the location settings</step_desc>
+ <expected>Pass should be shown in the page after GPS off</expected>
+ </step>
+ </steps>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_start_errorCallback_invoked.html</test_script_entry>
+ </description>
+ </testcase>
+ </set>
+ <set name="HumanActivityMonitor_sleep_monitor_mobile">
+ <capabilities>
+ <capability name="http://tizen.org/feature/profile"><value>MOBILE_FULL</value></capability>
+ <capability name="http://tizen.org/feature/sensor.sleep_monitor"/>
+ </capabilities>
+ <testcase purpose="Check if method HumanActivityMonitorManager::start() works properly for SLEEP_MONITOR HumanActivity type" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_start_type_SLEEP_MONITOR">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_start_type_SLEEP_MONITOR.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase purpose="Check if HumanActivityMonitorManager::stop() method works properly for HumanActivity type SLEEP_MONITOR" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_stop_type_SLEEP_MONITOR">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_stop_type_HRM.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivitySleepMonitorData_status_attribute" purpose="Check if HumanActivitySleepMonitorData::status exists and is readonly">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivitySleepMonitorData_status_attribute.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivitySleepMonitorData_timestamp_attribute" purpose="Check if HumanActivitySleepMonitorData::timestamp exists, has type long, and is readonly">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivitySleepMonitorData_timestamp_attribute.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase purpose="Check if readRecorderData without optional arguments works properly for SLEEP_MONITOR HumanActivity type" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_readRecorderData_type_SLEEP_MONITOR">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_readRecorderData_type_SLEEP_MONITOR.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase purpose="Check if method HumanActivityMonitorManager::startRecorder() works properly for SLEEP_MONITOR HumanActivity type" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_startRecorder_type_SLEEP_MONITOR">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_startRecorder_type_SLEEP_MONITOR.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase purpose="Check if method HumanActivityMonitorManager::stopRecorder () works properly for SLEEP_MONITOR HumanActivity type" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_stopRecorder_type_SLEEP_MONITOR">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_stopRecorder_type_SLEEP_MONITOR.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase purpose="Check if HumanActivityRecorderSleepMonitorData have endTime attribute with proper type, readonly" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" id="HumanActivityRecorderSleepMonitorData_endTime_attribute">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityRecorderSleepMonitorData_endTime_attribute.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase purpose="Check if HumanActivityRecorderSleepMonitorData cannot be called in new expression and as a function or in new expression" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" id="HumanActivityRecorderSleepMonitorData_notexist">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityRecorderSleepMonitorData_notexist.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase purpose="Check if HumanActivityRecorderSleepMonitorData have startTime attribute with proper type, readonly" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" id="HumanActivityRecorderSleepMonitorData_startTime_attribute">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityRecorderSleepMonitorData_startTime_attribute.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase purpose="Check if HumanActivityRecorderSleepMonitorData have status attribute with proper type, readonly" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" id="HumanActivityRecorderSleepMonitorData_status_attribute">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityRecorderSleepMonitorData_status_attribute.html</test_script_entry>
+ </description>
+ </testcase>
+ </set>
+ <set name="HumanActivityMonitor_mobile" type="js">
+ <capabilities>
+ <capability name="http://tizen.org/feature/profile"><value>MOBILE_FULL</value></capability>
+ <capability name="http://tizen.org/feature/platform.core.cpu.arch.armv7"/>
+ </capabilities>
+ <testcase purpose="Check if the specifies the pedometer user's current movement type is UNKNOWN" onload_delay="60" component="Tizen Device APIs/HumanActivityMonitor/HumanActivityMonitorManager" execution_type="manual" priority="P1" id="HumanActivityMonitorManager_getHumanActivityData_stepStatus_UNKNOWN">
+ <description>
+ <steps>
+ <step order="1">
+ <step_desc>Press run button, press Power key to keep the device LCS off, then Pretend walking with the device.</step_desc>
+ <expected>Pass</expected>
+ </step>
+ </steps>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_getHumanActivityData_stepStatus_UNKNOWN.html</test_script_entry>
+ </description>
+ </testcase>
+ </set>
+ <set name="HumanActivityMonitor_wearable" type="js">
+ <capabilities>
+ <capability name="http://tizen.org/feature/profile"><value>WEARABLE</value></capability>
+ </capabilities>
+ <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityData_notexist" priority="P3" purpose="Check if interface HumanActivityData exists, it should not">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityData_notexist.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="StepDifference_notexist" priority="P3" purpose="Check if interface StepDifference exists, it should not">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/StepDifference_notexist.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityAccumulativePedometerData_notexist" priority="P3" purpose="Check if interface HumanActivityAccumulativePedometerData exists, it should not">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityAccumulativePedometerData_notexist.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityHRMData_notexist" priority="P3" purpose="Check if interface HumanActivityHRMData exists, it should not">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityHRMData_notexist.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityGPSInfo_notexist" priority="P3" purpose="Check if interface HumanActivityGPSInfo exists, it should not">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityGPSInfo_notexist.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityGPSInfoArray_notexist" priority="P3" purpose="Check if interface HumanActivityGPSInfoArray exists, it should not">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityGPSInfoArray_notexist.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityRecognitionData_notexist" priority="P3" purpose="Check if interface HumanActivityRecognitionData exists, it should not">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityRecognitionData_notexist.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivitySleepMonitorData_notexist" priority="P3" purpose="Check if interface HumanActivitySleepMonitorData exists, it should not">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivitySleepMonitorData_notexist.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManagerObject_notexist" priority="P3" purpose="Check if interface HumanActivityMonitorManagerObject exists, it should not">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManagerObject_notexist.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_extend" priority="P3" purpose="Check if HumanActivityMonitorManager is extendable">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_extend.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_getHumanActivityData_exist" priority="P0" purpose="Check if HumanActivityMonitorManager::getHumanActivityData() method exists">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_getHumanActivityData_exist.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_in_tizen" priority="P3" purpose="Check if humanactivitymonitor exists in tizen">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_in_tizen.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_notexist" priority="P3" purpose="Check if interface HumanActivityMonitorManager exists, it should not">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_notexist.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_start_exist" priority="P0" purpose="Check if method HumanActivityMonitorManager::start() exists">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_start_exist.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_start_misarg" priority="P2" purpose="Check if HumanActivityMonitorManager::start() throws exception when type and successCallback are missing">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_start_misarg.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_stop_exist" priority="P0" purpose="Check if HumanActivityMonitorManager::stop() method exists">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_stop_exist.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_stop_misarg" priority="P2" purpose="Check if HumanActivityMonitorManager::stop() throws exception when type is missing">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_stop_misarg.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorSuccessCallback_notexist" priority="P3" purpose="Check if HumanActivityMonitorSuccessCallback does not exist">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorSuccessCallback_notexist.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_start_option_TypeMismatch" onload_delay="30" purpose="Check if HumanActivityMonitorManager::start() with incorrect option argument throws exception">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_start_option_TypeMismatch.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_start_changedCallback_TypeMismatch" onload_delay="30" purpose="Check if HumanActivityMonitorManager::start() with incorrect successCallback argument throws exception">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_start_changedCallback_TypeMismatch.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_start_changedCallback_invalid_cb" onload_delay="30" purpose="Check if HumanActivityMonitorManager::start() method throws exception when HumanActivityMonitorSuccessCallback is invalid">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_start_changedCallback_invalid_cb.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase purpose="Check if readRecorderData throw NotSupportedError called with not supported human activity recorder type" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_readRecorderData_NotSupportedError">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_readRecorderData_NotSupportedError.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase purpose="Check if readRecorderData throws exception when errorCallback is incorrect" onload_delay="30" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_readRecorderData_errorCallback_TypeMismatch">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_readRecorderData_errorCallback_TypeMismatch.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase purpose="Check if readRecorderData throws exception when error callback is invalid" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_readRecorderData_errorCallback_invalid_cb">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_readRecorderData_errorCallback_invalid_cb.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase purpose="Check if readRecorderData exists" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_readRecorderData_exist">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_readRecorderData_exist.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase purpose="Check if HumanActivityMonitorManager::readRecorderData() called with missing non-optional argument throws an exception" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_readRecorderData_misarg">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_readRecorderData_misarg.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase purpose="Check if readRecorderData throws exception when query is incorrect" onload_delay="30" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_readRecorderData_query_TypeMismatch">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_readRecorderData_query_TypeMismatch.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase purpose="Check if readRecorderData throws exception when successCallback is incorrect" onload_delay="30" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_readRecorderData_successCallback_TypeMismatch">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_readRecorderData_successCallback_TypeMismatch.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase purpose="Check if readRecorderData throws exception when success callback is invalid" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_readRecorderData_successCallback_invalid_cb">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_readRecorderData_successCallback_invalid_cb.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase purpose="Check if readRecorderData without optional arguments works properly for PRESSURE HumanActivity type" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="manual" onload_delay="150" id="HumanActivityMonitorManager_readRecorderData_type_PRESSURE">
+ <description>
+ <steps>
+ <step order="1">
+ <step_desc>Waiting for 1 minutes for the callback.</step_desc>
+ <expected>Pass should be shown in the page after 1 minutes.</expected>
+ </step>
+ </steps>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_readRecorderData_type_PRESSURE.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase purpose="Check if HumanActivityMonitorManager::startRecorder() throw NotSupportedError called with not supported human activity recorder type" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_startRecorder_NotSupportedError">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_startRecorder_NotSupportedError.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase purpose="Check if startRecorder exists" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_startRecorder_exist">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_startRecorder_exist.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase purpose="Check if HumanActivityMonitorManager::startRecorder() called with missing non-optional argument throws an exception" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_startRecorder_misarg">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_startRecorder_misarg.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase purpose="Check if method HumanActivityMonitorManager::startRecorder() works properly for PRESSURE HumanActivity type" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_startRecorder_type_PRESSURE">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_startRecorder_type_PRESSURE.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase purpose="Check if HumanActivityMonitorManager::stopRecorder() throw NotSupportedError called with not supported human activity recorder type" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_stopRecorder_NotSupportedError">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_stopRecorder_NotSupportedError.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase purpose="Check if stopRecorder exists" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_stopRecorder_exist">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_stopRecorder_exist.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase purpose="Check if HumanActivityMonitorManager::stopRecorder() called with missing non-optional argument throws an exception" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_stopRecorder_misarg">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_stopRecorder_misarg.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase purpose="Check if method HumanActivityMonitorManager::stopRecorder() works properly for PRESSURE HumanActivity type" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_stopRecorder_type_PRESSURE">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_stopRecorder_type_PRESSURE.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase purpose="Check if HumanActivityReadRecorderSuccessCallback cannot be called in new expression and as a function or in new expression" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" id="HumanActivityReadRecorderSuccessCallback_notexist">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityReadRecorderSuccessCallback_notexist.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase purpose="Check if HumanActivityRecorderData cannot be called in new expression and as a function or in new expression" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" id="HumanActivityRecorderData_notexist">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityRecorderData_notexist.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase purpose="Check if HumanActivityRecorderPressureData have average attribute with proper type, readonly" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="manual" onload_delay="90" id="HumanActivityRecorderPressureData_average_attribute">
+ <description>
+ <pre_condition>Before run this tc, run HumanActivityMonitorManager_readRecorderData_type_PRESSURE.html first, because we should wait at least 1 minute to get the recorded data after start recorder. But if you tested that TC already, you can run this TC now.</pre_condition>
+ <steps>
+ <step order="1">
+ <step_desc>Waiting for 1 minutes for the callback.</step_desc>
+ <expected>Pass should be shown in the page after 1 minutes.</expected>
+ </step>
+ </steps>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityRecorderPressureData_average_attribute.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase purpose="Check if HumanActivityRecorderPressureData have endTime attribute with proper type, readonly" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="manual" onload_delay="90" id="HumanActivityRecorderPressureData_endTime_attribute">
+ <description>
+ <pre_condition>Before run this tc, run HumanActivityMonitorManager_readRecorderData_type_PRESSURE.html first, because we should wait at least 1 minute to get the recorded data after start recorder. But if you tested that TC already, you can run this TC now.</pre_condition>
+ <steps>
+ <step order="1">
+ <step_desc>Waiting for 1 minutes for the callback.</step_desc>
+ <expected>Pass should be shown in the page after 1 minutes.</expected>
+ </step>
+ </steps>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityRecorderPressureData_endTime_attribute.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase purpose="Check if HumanActivityRecorderPressureData have max attribute with proper type, readonly" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="manual" onload_delay="90" id="HumanActivityRecorderPressureData_max_attribute">
+ <description>
+ <pre_condition>Before run this tc, run HumanActivityMonitorManager_readRecorderData_type_PRESSURE.html first, because we should wait at least 1 minute to get the recorded data after start recorder. But if you tested that TC already, you can run this TC now.</pre_condition>
+ <steps>
+ <step order="1">
+ <step_desc>Waiting for 1 minutes for the callback.</step_desc>
+ <expected>Pass should be shown in the page after 1 minutes.</expected>
+ </step>
+ </steps>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityRecorderPressureData_max_attribute.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase purpose="Check if HumanActivityRecorderPressureData have min attribute with proper type, readonly" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="manual" onload_delay="90" id="HumanActivityRecorderPressureData_min_attribute">
+ <description>
+ <pre_condition>Before run this tc, run HumanActivityMonitorManager_readRecorderData_type_PRESSURE.html first, because we should wait at least 1 minute to get the recorded data after start recorder. But if you tested that TC already, you can run this TC now.</pre_condition>
+ <steps>
+ <step order="1">
+ <step_desc>Waiting for 1 minutes for the callback.</step_desc>
+ <expected>Pass should be shown in the page after 1 minutes.</expected>
+ </step>
+ </steps>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityRecorderPressureData_min_attribute.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase purpose="Check if HumanActivityRecorderPressureData cannot be called in new expression and as a function or in new expression" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" id="HumanActivityRecorderPressureData_notexist">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityRecorderPressureData_notexist.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase purpose="Check if HumanActivityRecorderPressureData have startTime attribute with proper type, readonly" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="manual" onload_delay="90" id="HumanActivityRecorderPressureData_startTime_attribute">
+ <description>
+ <pre_condition>Before run this tc, run HumanActivityMonitorManager_readRecorderData_type_PRESSURE.html first, because we should wait at least 1 minute to get the recorded data after start recorder. But if you tested that TC already, you can run this TC now.</pre_condition>
+ <steps>
+ <step order="1">
+ <step_desc>Waiting for 1 minutes for the callback.</step_desc>
+ <expected>Pass should be shown in the page after 1 minutes.</expected>
+ </step>
+ </steps>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityRecorderPressureData_startTime_attribute.html</test_script_entry>
+ </description>
+ </testcase>
+ </set>
+ <set name="HumanActivityMonitor_with_activity_recognition_wearable">
+ <capabilities>
+ <capability name="http://tizen.org/feature/profile"><value>WEARABLE</value></capability>
+ <capability name="http://tizen.org/feature/sensor.activity_recognition"/>
+ </capabilities>
+ <testcase purpose="Check if the method addActivityRecognitionListener of HumanActivityMonitorManager returns proper value" onload_delay="60" component="Tizen Device APIs/HumanActivityMonitor/HumanActivityMonitorManager" execution_type="manual" priority="P1" id="HumanActivityMonitorManager_addActivityRecognitionListener_STATIONARY">
+ <description>
+ <steps>
+ <step order="1">
+ <step_desc>Press run button, then keep the device stationary</step_desc>
+ <expected>Pass</expected>
+ </step>
+ </steps>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_addActivityRecognitionListener_STATIONARY.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase purpose="Check if the method addActivityRecognitionListener of HumanActivityMonitorManager returns proper value" onload_delay="60" component="Tizen Device APIs/HumanActivityMonitor/HumanActivityMonitorManager" execution_type="manual" priority="P1" id="HumanActivityMonitorManager_addActivityRecognitionListener_WALKING">
+ <description>
+ <steps>
+ <step order="1">
+ <step_desc>Press run button. Pretend walking with the device.</step_desc>
+ <expected>Pass</expected>
+ </step>
+ </steps>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_addActivityRecognitionListener_WALKING.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase purpose="Check if the method addActivityRecognitionListener of HumanActivityMonitorManager throws TypeMismatchError when invalid type value is assigned for errorCallback parameter" component="Tizen Device APIs/HumanActivityMonitor/HumanActivityMonitorManager" execution_type="auto" priority="P2" id="HumanActivityMonitorManager_addActivityRecognitionListener_errorCallback_TypeMismatch">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_addActivityRecognitionListener_errorCallback_TypeMismatch.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase purpose="Check if the method addActivityRecognitionListener of HumanActivityMonitorManager exist" component="Tizen Device APIs/HumanActivityMonitor/HumanActivityMonitorManager" execution_type="auto" priority="P1" id="HumanActivityMonitorManager_addActivityRecognitionListener_exist">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_addActivityRecognitionListener_exist.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase purpose="Check if the method addActivityRecognitionListener of HumanActivityMonitorManager throws TypeMismatchError when invalid value is assigned for type parameter" component="Tizen Device APIs/HumanActivityMonitor/HumanActivityMonitorManager" execution_type="auto" priority="P2" id="HumanActivityMonitorManager_addActivityRecognitionListener_type_TypeMismatch">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_addActivityRecognitionListener_listener_TypeMismatch.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase purpose="Check if the method addActivityRecognitionListener of HumanActivityMonitorManager throws TypeMismatchError when no param assigned" component="Tizen Device APIs/HumanActivityMonitor/HumanActivityMonitorManager" execution_type="auto" priority="P2" id="HumanActivityMonitorManager_addActivityRecognitionListener_misarg">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_addActivityRecognitionListener_misarg.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase purpose="Check if the method addActivityRecognitionListener of HumanActivityMonitorManager throws TypeMismatchError when invalid type value is assigned for listener parameter" component="Tizen Device APIs/HumanActivityMonitor/HumanActivityMonitorManager" execution_type="auto" priority="P2" id="HumanActivityMonitorManager_addActivityRecognitionListener_listener_TypeMismatch">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_addActivityRecognitionListener_type_TypeMismatch.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase purpose="Check if the method addActivityRecognitionListener of HumanActivityMonitorManager returns proper value with errorcallback assigned" onload_delay="60" component="Tizen Device APIs/HumanActivityMonitor/HumanActivityMonitorManager" execution_type="manual" priority="P1" id="HumanActivityMonitorManager_addActivityRecognitionListener_with_errorCallback">
+ <description>
+ <steps>
+ <step order="1">
+ <step_desc>Press run button, then keep the device stationary</step_desc>
+ <expected>Pass</expected>
+ </step>
+ </steps>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_addActivityRecognitionListener_with_errorCallback.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase purpose="Check if the method addActivityRecognitionListener of HumanActivityMonitorManager returns proper value with errorcallback null assigned" onload_delay="60" component="Tizen Device APIs/HumanActivityMonitor/HumanActivityMonitorManager" execution_type="manual" priority="P1" id="HumanActivityMonitorManager_addActivityRecognitionListener_with_errorCallback_null">
+ <description>
+ <steps>
+ <step order="1">
+ <step_desc>Press run button, then keep the device stationary</step_desc>
+ <expected>Pass</expected>
+ </step>
+ </steps>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_addActivityRecognitionListener_with_errorCallback_null.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase purpose="Check if the method removeActivityRecognitionListener of HumanActivityMonitorManager returns proper value" onload_delay="20" component="Tizen Device APIs/TBD/HumanActivityMonitor" execution_type="manual" priority="P1" id="HumanActivityMonitorManager_removeActivityRecognitionListener_STATIONARY">
+ <description>
+ <steps>
+ <step order="1">
+ <step_desc>Press run button, then pretend walking with the device for 15 seconds</step_desc>
+ <expected>Pass</expected>
+ </step>
+ </steps>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_removeActivityRecognitionListener.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase purpose="Check if the method removeActivityRecognitionListener of HumanActivityMonitorManager exist" component="Tizen Device APIs/HumanActivityMonitor/HumanActivityMonitorManager" execution_type="auto" priority="P1" id="HumanActivityMonitorManager_removeActivityRecognitionListener_exist">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_removeActivityRecognitionListener_exist.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase purpose="Check if the method removeActivityRecognitionListener of HumanActivityMonitorManager ignores invalid id" onload_delay="3" component="Tizen Device APIs/HumanActivityMonitor/HumanActivityMonitorManager" execution_type="auto" priority="P2" id="HumanActivityMonitorManager_removeActivityRecognitionListener_invalid_id">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_removeActivityRecognitionListener_invalid_id.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase purpose="Check if the method removeActivityRecognitionListener of HumanActivityMonitorManager ignores invalid id when no param assigned (undefined converted to 0)" component="Tizen Device APIs/HumanActivityMonitor/HumanActivityMonitorManager" execution_type="auto" priority="P2" id="HumanActivityMonitorManager_removeActivityRecognitionListener_misarg">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_removeActivityRecognitionListener_misarg.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase purpose="Check if the method removeActivityRecognitionListener of HumanActivityMonitorManager returns proper value with errorcallback assigned" onload_delay="20" component="Tizen Device APIs/TBD/HumanActivityMonitor" execution_type="manual" priority="P1" id="HumanActivityMonitorManager_removeActivityRecognitionListener_STATIONARY">
+ <description>
+ <steps>
+ <step order="1">
+ <step_desc>Press run button, then pretend walking with the device for 15 seconds</step_desc>
+ <expected>Pass</expected>
+ </step>
+ </steps>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_removeActivityRecognitionListener_with_errorCallback.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase purpose="Check if the method removeActivityRecognitionListener of HumanActivityMonitorManager returns proper value with errorcallback null assigned" onload_delay="20" component="Tizen Device APIs/TBD/HumanActivityMonitor" execution_type="manual" priority="P1" id="HumanActivityMonitorManager_removeActivityRecognitionListener_STATIONARY">
+ <description>
+ <steps>
+ <step order="1">
+ <step_desc>Press run button, then pretend walking with the device for 15 seconds</step_desc>
+ <expected>Pass</expected>
+ </step>
+ </steps>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_removeActivityRecognitionListener_with_errorCallback_null.html</test_script_entry>
+ </description>
+ </testcase>
+ </set>
+ <set name="HumanActivityMonitor_with_pedometer_wearable">
+ <capabilities>
+ <capability name="http://tizen.org/feature/profile"><value>WEARABLE</value></capability>
+ <capability name="http://tizen.org/feature/sensor.pedometer"/>
+ </capabilities>
+ <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_getHumanActivityData" priority="P1" purpose="Check if method getHumanActivityData of HumanActivityMonitorManager returns properly value">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_getHumanActivityData.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_getHumanActivityData_errorCallback_TypeMismatch" onload_delay="30" priority="P2" purpose="Check if HumanActivityMonitorManager::getHumanActivityData() with incorrect errorCallback argument throws exception">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_getHumanActivityData_errorCallback_TypeMismatch.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_getHumanActivityData_errorCallback_invalid_cb" onload_delay="30" priority="P2" purpose="Check if HumanActivityMonitorManager::getHumanActivityData() method throws exception when errorCallback is invalid">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_getHumanActivityData_errorCallback_invalid_cb.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_getHumanActivityData_errorCallback_invoked" onload_delay="30" priority="P2" purpose="Check exception in error callback of HumanActivityMonitorManager::getHumanActivityData() method">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_getHumanActivityData_errorCallback_invoked.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_getHumanActivityData_misarg" priority="P2" purpose="Check if HumanActivityMonitorManager::getHumanActivityData() throws exception when successCallback is missing">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_getHumanActivityData_misarg.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_getHumanActivityData_successCallback_TypeMismatch" onload_delay="30" priority="P2" purpose="Check if HumanActivityMonitorManager::getHumanActivityData() with incorrect successCallback argument throws exception">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_getHumanActivityData_successCallback_TypeMismatch.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_getHumanActivityData_successCallback_invalid_cb" onload_delay="30" priority="P2" purpose="Check if HumanActivityMonitorManager::getHumanActivityData() method throws exception when successCallback is invalid">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_getHumanActivityData_successCallback_invalid_cb.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_getHumanActivityData_type_PEDOMETER" onload_delay="30" priority="P1" purpose="Check if HumanActivityMonitorManager::getHumanActivityData() method works properly">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_getHumanActivityData_type_PEDOMETER.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_getHumanActivityData_with_errorCallback" onload_delay="30" priority="P1" purpose="Check if HumanActivityMonitorManager::getHumanActivityData() method works properly with optional argument">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_getHumanActivityData_with_errorCallback.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_start_changedCallback_TypeMismatch" onload_delay="30" priority="P2" purpose="Check if HumanActivityMonitorManager::start() with incorrect successCallback argument throws exception">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_start_changedCallback_TypeMismatch.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_start_errorCallback_TypeMismatch" onload_delay="30" priority="P2" purpose="Check if HumanActivityMonitorManager::start() with incorrect errorCallback argument throws exception">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_start_errorCallback_TypeMismatch.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_start_type_PEDOMETER" priority="P1" purpose="Check if method HumanActivityMonitorManager::start() works properly for PEDOMETER">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_start_type_PEDOMETER.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_start_changedCallback_invalid_cb" onload_delay="30" purpose="Check if HumanActivityMonitorManager::start() method throws exception when HumanActivityMonitorSuccessCallback is invalid">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_start_changedCallback_invalid_cb.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_start_errorCallback_invalid_cb" onload_delay="30" purpose="Check if HumanActivityMonitorManager::start() method throws exception when ErrorCallback is invalid">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_start_errorCallback_invalid_cb.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_stop_type_PEDOMETER" priority="P1" purpose="Check if HumanActivityMonitorManager::stop() method works properly">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_stop_type_PEDOMETER.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityPedometerData_cumulativeCalorie_attribute" onload_delay="9" priority="P1" purpose="Check if HumanActivityPedometerData::cumulativeCalorie exists, has type double, and is readonly">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityPedometerData_cumulativeCalorie_attribute.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityPedometerData_cumulativeDistance_attribute" onload_delay="9" priority="P1" purpose="Check if HumanActivityPedometerData::cumulativeDistance exists, has type double, and is readonly">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityPedometerData_cumulativeDistance_attribute.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityPedometerData_cumulativeRunStepCount_attribute" onload_delay="9" priority="P1" purpose="Check if HumanActivityPedometerData::cumulativeRunStepCount exists, has type double, and is readonly">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityPedometerData_cumulativeRunStepCount_attribute.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityPedometerData_cumulativeTotalStepCount_attribute" onload_delay="9" priority="P1" purpose="Check if HumanActivityPedometerData::cumulativeTotalStepCount exists, has type double, and is readonly">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityPedometerData_cumulativeTotalStepCount_attribute.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityPedometerData_cumulativeWalkStepCount_attribute" onload_delay="9" priority="P1" purpose="Check if HumanActivityPedometerData::cumulativeWalkStepCount exists, has type double, and is readonly">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityPedometerData_cumulativeWalkStepCount_attribute.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityPedometerData_stepCountDifferences_attribute" onload_delay="9" priority="P1" purpose="Check if HumanActivityPedometerData::stepCountDifferences exists, has type double, and is readonly">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityPedometerData_stepCountDifferences_attribute.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityPedometerData_extend" onload_delay="90" priority="P3" purpose="Check if HumanActivityPedometerData object is extendable">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityPedometerData_extend.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityPedometerData_speed_attribute" onload_delay="9" priority="P1" purpose="Check if HumanActivityPedometerData::speed exists, has type double, and is readonly">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityPedometerData_speed_attribute.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityPedometerData_stepStatus_attribute" onload_delay="9" priority="P1" purpose="Check if HumanActivityPedometerData::stepStatus exists, has type string, and is readonly">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityPedometerData_stepStatus_attribute.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityPedometerData_walkingFrequency_attribute" onload_delay="9" priority="P1" purpose="Check if HumanActivityPedometerData::walkingFrequency exists, has type double, and is readonly">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityPedometerData_walkingFrequency_attribute.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityPedometerData_notexist" priority="P3" purpose="Check if interface HumanActivityPedometerData exists, it should not">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityPedometerData_notexist.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityAccumulativePedometerInfo_notexist" priority="P3" purpose="Check if interface HumanActivityAccumulativePedometerInfo exists, it should not">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityAccumulativePedometerInfo_notexist.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_setAccumulativePedometerListener_changeCallback_TypeMismatch" onload_delay="30" priority="P2" purpose="Check if HumanActivityMonitorManager::setAccumulativePedometerListener() with incorrect changeCallback argument throws exception">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_setAccumulativePedometerListener_changeCallback_TypeMismatch.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_setAccumulativePedometerListener_changeCallback_TypeMismatch" onload_delay="30" priority="P2" purpose="Check if HumanActivityMonitorManager::setAccumulativePedometerListener() with incorrect changeCallback argument throws exception">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_setAccumulativePedometerListener_changeCallback_TypeMismatch.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_setAccumulativePedometerListener_changeCallback_invalid_cb" onload_delay="30" priority="P2" purpose="Check if HumanActivityMonitorManager::setAccumulativePedometerListener() method throws exception when changeCallback is invalid">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_setAccumulativePedometerListener_changeCallback_invalid_cb.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_setAccumulativePedometerListener_exist" priority="P0" purpose="Check if method HumanActivityMonitorManager::setAccumulativePedometerListener() exists">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_setAccumulativePedometerListener_exist.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_setAccumulativePedometerListener_misarg" priority="P2" purpose="Check if HumanActivityMonitorManager::setAccumulativePedometerListener() throws exception when changeCallback is missing">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_setAccumulativePedometerListener_misarg.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_unsetAccumulativePedometerListener" onload_delay="30" priority="P1" purpose="Check if HumanActivityMonitorManager::unsetAccumulativePedometerListener() method works properly">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_unsetAccumulativePedometerListener.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion category="Tizen Device API Specifications" element_name="unsetAccumulativePedometerListener" element_type="method" interface="humanactivitymonitor" section="Sensor" specification="HumanActivityMonitor"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_unsetAccumulativePedometerListener_exist" priority="P0" purpose="Check if HumanActivityMonitorManager::unsetAccumulativePedometerListener() method exists">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_unsetAccumulativePedometerListener_exist.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion category="Tizen Device API Specifications" element_name="unsetAccumulativePedometerListener" element_type="method" interface="HumanActivityMonitorManager" section="Sensor" specification="HumanActivityMonitor"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_unsetAccumulativePedometerListener_extra_argument" priority="P1" purpose="Check if HumanActivityMonitorManager::unsetAccumulativePedometerListener() method with extra argument">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_unsetAccumulativePedometerListener_extra_argument.html</test_script_entry>
+ </description>
+ <specs>
+ <spec>
+ <spec_assertion category="Tizen Device API Specifications" element_name="unsetAccumulativePedometerListener" element_type="method" interface="HumanActivityMonitorManager" section="Sensor" specification="HumanActivityMonitor"/>
+ <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
+ <spec_statement>TBD</spec_statement>
+ </spec>
+ </specs>
+ </testcase>
+ <testcase purpose="Check if the specifies the pedometer user's current movement type is NOT_MOVING" onload_delay="60" component="Tizen Device APIs/HumanActivityMonitor/HumanActivityMonitorManager" execution_type="manual" priority="P1" id="HumanActivityMonitorManager_getHumanActivityData_stepStatus_NOT_MOVING">
+ <description>
+ <steps>
+ <step order="1">
+ <step_desc>Press run button, then keep the device stationary.</step_desc>
+ <expected>Pass</expected>
+ </step>
+ </steps>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_getHumanActivityData_stepStatus_NOT_MOVING.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase purpose="Check if the specifies the pedometer user's current movement type is WALKING" onload_delay="60" component="Tizen Device APIs/HumanActivityMonitor/HumanActivityMonitorManager" execution_type="manual" priority="P1" id="HumanActivityMonitorManager_getHumanActivityData_stepStatus_WALKING">
+ <description>
+ <steps>
+ <step order="1">
+ <step_desc>Press run button. Pretend walking with the device.</step_desc>
+ <expected>Pass</expected>
+ </step>
+ </steps>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_getHumanActivityData_stepStatus_WALKING.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase purpose="Check if the specifies the pedometer user's current movement type is RUNNING" onload_delay="60" component="Tizen Device APIs/HumanActivityMonitor/HumanActivityMonitorManager" execution_type="manual" priority="P1" id="HumanActivityMonitorManager_getHumanActivityData_stepStatus_RUNNING">
+ <description>
+ <steps>
+ <step order="1">
+ <step_desc>Press run button. Pretend running with the device.</step_desc>
+ <expected>Pass</expected>
+ </step>
+ </steps>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_getHumanActivityData_stepStatus_RUNNING.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase purpose="Check if readRecorderData can be called with empty object as query argument" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="manual" onload_delay="60" id="HumanActivityMonitorManager_readRecorderData_query_empty">
+ <description>
+ <steps>
+ <step order="1">
+ <step_desc>Press run button. Pretend walking with the device.</step_desc>
+ <expected>Pass</expected>
+ </step>
+ </steps>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_readRecorderData_query_empty.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase purpose="Check if readRecorderData without optional arguments works properly for PEDOMETER HumanActivity type" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="manual" onload_delay="60" id="HumanActivityMonitorManager_readRecorderData_type_PEDOMETER">
+ <description>
+ <steps>
+ <step order="1">
+ <step_desc>Press run button. Pretend walking with the device.</step_desc>
+ <expected>Pass</expected>
+ </step>
+ </steps>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_readRecorderData_type_PEDOMETER.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase purpose="Check if readRecorderData with optional arguments works properly" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="manual" onload_delay="60" id="HumanActivityMonitorManager_readRecorderData_with_errorCallback">
+ <description>
+ <steps>
+ <step order="1">
+ <step_desc>Press run button. Pretend walking with the device.</step_desc>
+ <expected>Pass</expected>
+ </step>
+ </steps>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_readRecorderData_with_errorCallback.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase purpose="Check if HumanActivityMonitorManager::startRecorder() can be called with empty object as option argument" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_startRecorder_option_empty">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_startRecorder_option_empty.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase purpose="Check if method HumanActivityMonitorManager::startRecorder() works properly for PEDOMETER HumanActivity type" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_startRecorder_type_PEDOMETER">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_startRecorder_type_PEDOMETER.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase purpose="Check if method HumanActivityMonitorManager::stopRecorder() works properly for PEDOMETER HumanActivity type" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_stopRecorder_type_PEDOMETER">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_stopRecorder_type_PEDOMETER.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase purpose="Check if HumanActivityRecorderPedometerData have calorie attribute with proper type, readonly" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="manual" onload_delay="60" id="HumanActivityRecorderPedometerData_calorie_attribute">
+ <description>
+ <steps>
+ <step order="1">
+ <step_desc>Press run button. Pretend walking with the device.</step_desc>
+ <expected>Pass</expected>
+ </step>
+ </steps>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityRecorderPedometerData_calorie_attribute.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase purpose="Check if HumanActivityRecorderPedometerData have distance attribute with proper type, readonly" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="manual" onload_delay="60" id="HumanActivityRecorderPedometerData_distance_attribute">
+ <description>
+ <steps>
+ <step order="1">
+ <step_desc>Press run button. Pretend walking with the device.</step_desc>
+ <expected>Pass</expected>
+ </step>
+ </steps>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityRecorderPedometerData_distance_attribute.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase purpose="Check if HumanActivityRecorderPedometerData have endTime attribute with proper type, readonly" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="manual" onload_delay="60" id="HumanActivityRecorderPedometerData_endTime_attribute">
+ <description>
+ <steps>
+ <step order="1">
+ <step_desc>Press run button. Pretend walking with the device.</step_desc>
+ <expected>Pass</expected>
+ </step>
+ </steps>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityRecorderPedometerData_endTime_attribute.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase purpose="Check if HumanActivityRecorderPedometerData cannot be called in new expression and as a function or in new expression" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" id="HumanActivityRecorderPedometerData_notexist">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityRecorderPedometerData_notexist.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase purpose="Check if HumanActivityRecorderPedometerData have runStepCount attribute with proper type, readonly" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="manual" onload_delay="60" id="HumanActivityRecorderPedometerData_runStepCount_attribute">
+ <description>
+ <steps>
+ <step order="1">
+ <step_desc>Press run button. Pretend walking with the device.</step_desc>
+ <expected>Pass</expected>
+ </step>
+ </steps>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityRecorderPedometerData_runStepCount_attribute.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase purpose="Check if HumanActivityRecorderPedometerData have startTime attribute with proper type, readonly" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="manual" onload_delay="60" id="HumanActivityRecorderPedometerData_startTime_attribute">
+ <description>
+ <steps>
+ <step order="1">
+ <step_desc>Press run button. Pretend walking with the device.</step_desc>
+ <expected>Pass</expected>
+ </step>
+ </steps>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityRecorderPedometerData_startTime_attribute.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase purpose="Check if HumanActivityRecorderPedometerData have totalStepCount attribute with proper type, readonly" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="manual" onload_delay="60" id="HumanActivityRecorderPedometerData_totalStepCount_attribute">
+ <description>
+ <steps>
+ <step order="1">
+ <step_desc>Press run button. Pretend walking with the device.</step_desc>
+ <expected>Pass</expected>
+ </step>
+ </steps>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityRecorderPedometerData_totalStepCount_attribute.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase purpose="Check if HumanActivityRecorderPedometerData have walkStepCount attribute with proper type, readonly" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="manual" onload_delay="60" id="HumanActivityRecorderPedometerData_walkStepCount_attribute">
+ <description>
+ <steps>
+ <step order="1">
+ <step_desc>Press run button. Pretend walking with the device.</step_desc>
+ <expected>Pass</expected>
+ </step>
+ </steps>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityRecorderPedometerData_walkStepCount_attribute.html</test_script_entry>
+ </description>
+ </testcase>
+ </set>
+ <set name="HumanActivityMonitor_with_wrist_up_wearable">
+ <capabilities>
+ <capability name="http://tizen.org/feature/profile"><value>WEARABLE</value></capability>
+ <capability name="http://tizen.org/feature/sensor.wrist_up"/>
+ </capabilities>
+ <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_start_type_WRIST_UP" priority="P1" purpose="Check if method HumanActivityMonitorManager::start() works properly for WRIST_UP">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_start_type_WRIST_UP.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_stop_type_WRIST_UP" priority="P1" purpose="Check if HumanActivityMonitorManager::stop() method with WRIST_UP works properly">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_stop_type_WRIST_UP.html</test_script_entry>
+ </description>
+ </testcase>
+ </set>
+ <set name="HumanActivityMonitor_heart_rate_monitor_wearable">
+ <capabilities>
+ <capability name="http://tizen.org/feature/profile"><value>WEARABLE</value></capability>
+ <capability name="http://tizen.org/feature/sensor.heart_rate_monitor"/>
+ </capabilities>
+ <testcase purpose="Check if HumanActivityMonitorManager::getHumanActivityData() method works properly for HumanActivityType HRM" onload_delay="30" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_getHumanActivityData_type_HRM">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_getHumanActivityData_type_HRM.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase purpose="Check if method HumanActivityMonitorManager::start() works properly for HRM HumanActivity type" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_start_type_HRM">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_start_type_HRM.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase purpose="Check if HumanActivityMonitorManager::stop() method works properly for HumanActivity type HRM" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_stop_type_HRM">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_stop_type_HRM.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityHRMData_heartRate_attribute" ondelay="9" purpose="Check if HumanActivityHRMData heartRate attribute">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityHRMData_heartRate_attribute.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityHRMData_rRInterval_attribute" ondelay="9" purpose="Check if HumanActivityHRMData rRInterval attribute">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityHRMData_rRInterval_attribute.html</test_script_entry>
+ </description>
+ </testcase>
+ <!-- <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorOption_callbackInterval_type_HRM" purpose="Check if method HumanActivityMonitorOption::callbackInterval works properly for HRM HumanActivity type">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorOption_callbackInterval_type_HRM.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorOption_callbackInterval_type_HRM_default" purpose="Check if method HumanActivityMonitorOption::callbackInterval works properly when set to null">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorOption_callbackInterval_type_HRM_default.html</test_script_entry>
+ </description>
+ </testcase> -->
+ <testcase purpose="Check if readRecorderData without optional arguments works properly for HRM HumanActivity type" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="manual" onload_delay="1500" id="HumanActivityMonitorManager_readRecorderData_type_HRM">
+ <description>
+ <steps>
+ <step order="1">
+ <step_desc>Waiting for 10 minutes for the callback.</step_desc>
+ <expected>Pass should be shown in the page after 10 minutes.</expected>
+ </step>
+ </steps>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_readRecorderData_type_HRM.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase purpose="Check if method HumanActivityMonitorManager::startRecorder() works properly for HRM HumanActivity type" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_startRecorder_type_HRM">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_startRecorder_type_HRM.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase purpose="Check if method HumanActivityMonitorManager::startRecorder() works properly with optional argument" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_startRecorder_with_option">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_startRecorder_with_option.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase purpose="Check if method HumanActivityMonitorManager::stopRecorder() works properly for HRM HumanActivity type" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_stopRecorder_type_HRM">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_stopRecorder_type_HRM.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase purpose="Check if HumanActivityReadRecorderSuccessCallback onsuccess is called and if its arguments have proper type" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="manual" onload_delay="60" id="HumanActivityReadRecorderSuccessCallback_onsuccess">
+ <description>
+ <pre_condition>Before run this tc, run HumanActivityMonitorManager_readRecorderData_type_HRM.html first, because we should wait at least 10 minutes to get the recorded data after start recorder. But if you tested that TC already, you can run this TC now.</pre_condition>
+ <steps>
+ <step order="1">
+ <step_desc>Waiting for 10 minutes for the callback.</step_desc>
+ <expected>Pass should be shown in the page after 10 minutes.</expected>
+ </step>
+ </steps>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityReadRecorderSuccessCallback_onsuccess.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase purpose="Check if HumanActivityRecorderHRMData have endTime attribute with proper type, readonly" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="manual" onload_delay="60" id="HumanActivityRecorderHRMData_endTime_attribute">
+ <description>
+ <pre_condition>Before run this tc, run HumanActivityMonitorManager_readRecorderData_type_HRM.html first, because we should wait at least 10 minutes to get the recorded data after start recorder. But if you tested that TC already, you can run this TC now.</pre_condition>
+ <steps>
+ <step order="1">
+ <step_desc>Waiting for 10 minutes for the callback.</step_desc>
+ <expected>Pass should be shown in the page after 10 minutes.</expected>
+ </step>
+ </steps>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityRecorderHRMData_endTime_attribute.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase purpose="Check if HumanActivityRecorderHRMData have heartRate attribute with proper type, readonly" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="manual" onload_delay="60" id="HumanActivityRecorderHRMData_heartRate_attribute">
+ <description>
+ <pre_condition>Before run this tc, run HumanActivityMonitorManager_readRecorderData_type_HRM.html first, because we should wait at least 10 minutes to get the recorded data after start recorder. But if you tested that TC already, you can run this TC now.</pre_condition>
+ <steps>
+ <step order="1">
+ <step_desc>Waiting for 10 minutes for the callback.</step_desc>
+ <expected>Pass should be shown in the page after 10 minutes.</expected>
+ </step>
+ </steps>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityRecorderHRMData_heartRate_attribute.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase purpose="Check if HumanActivityRecorderHRMData cannot be called in new expression and as a function or in new expression" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" id="HumanActivityRecorderHRMData_notexist">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityRecorderHRMData_notexist.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase purpose="Check if HumanActivityRecorderHRMData have startTime attribute with proper type, readonly" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="manual" onload_delay="60" id="HumanActivityRecorderHRMData_startTime_attribute">
+ <description>
+ <pre_condition>Before run this tc, run HumanActivityMonitorManager_readRecorderData_type_HRM.html first, because we should wait at least 10 minutes to get the recorded data after start recorder. But if you tested that TC already, you can run this TC now.</pre_condition>
+ <steps>
+ <step order="1">
+ <step_desc>Waiting for 10 minutes for the callback.</step_desc>
+ <expected>Pass should be shown in the page after 10 minutes.</expected>
+ </step>
+ </steps>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityRecorderHRMData_startTime_attribute.html</test_script_entry>
+ </description>
+ </testcase>
+ </set>
+ <set name="HumanActivityMonitor_location_batch_wearable">
+ <capabilities>
+ <capability name="http://tizen.org/feature/profile"><value>WEARABLE</value></capability>
+ <capability name="http://tizen.org/feature/location.batch"/>
+ </capabilities>
+ <testcase purpose="Check if method HumanActivityMonitorManager::start() works properly for GPS HumanActivity type with optional argument" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_start_with_option">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_start_with_option.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase purpose="Check if method HumanActivityMonitorManager::start() works properly for GPS HumanActivity type" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_start_type_GPS">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_start_type_GPS.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_start_option_empty" onload_delay="30" purpose="Check if HumanActivityMonitorManager::start() can be called with empty object as option argument">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_start_option_empty.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase purpose="Check if HumanActivityMonitorManager::stop() method works properly for HumanActivity type GPS" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_stop_type_GPS">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_stop_type_GPS.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityGPSInfo_altitude_attribute" purpose="Check if HumanActivityGPSInfo altitude attribute">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityGPSInfo_altitude_attribute.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityGPSInfo_errorRange_attribute" purpose="Check if HumanActivityGPSInfo errorRange attribute">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityGPSInfo_errorRange_attribute.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityGPSInfo_latitude_attribute" purpose="Check if HumanActivityGPSInfo latitude attribute">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityGPSInfo_latitude_attribute.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityGPSInfo_longitude_attribute" purpose="Check if HumanActivityGPSInfo longitude attribute">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityGPSInfo_longitude_attribute.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityGPSInfo_speed_attribute" purpose="Check if HumanActivityGPSInfo speed attribute">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityGPSInfo_speed_attribute.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityGPSInfo_timestamp_attribute" purpose="Check if HumanActivityGPSInfo timestamp attribute">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityGPSInfo_timestamp_attribute.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase purpose="Check if method HumanActivityMonitorOption::callbackInterval works properly for GPS HumanActivity type" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="manual" priority="P1" id="HumanActivityMonitorOption_callbackInterval_type_GPS" onload_delay="300">
+ <description>
+ <steps>
+ <step order="1">
+ <step_desc>Wait 155 seconds for the callback</step_desc>
+ <expected>Pass should be shown in the page after 155 seconds</expected>
+ </step>
+ </steps>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorOption_callbackInterval_type_GPS.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase purpose="Check if method HumanActivityMonitorOption::callbackInterval works properly when set to null" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="manual" priority="P1" id="HumanActivityMonitorOption_callbackInterval_type_GPS_default" onload_delay="300">
+ <description>
+ <steps>
+ <step order="1">
+ <step_desc>Wait 150 seconds for the callback</step_desc>
+ <expected>Pass should be shown in the page after 150 seconds</expected>
+ </step>
+ </steps>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorOption_callbackInterval_type_GPS_default.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase purpose="Check if method HumanActivityMonitorOption::sampleInterval works properly for GPS HumanActivity type" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="manual" priority="P1" id="HumanActivityMonitorOption_sampleInterval_type_GPS" onload_delay="300">
+ <description>
+ <steps>
+ <step order="1">
+ <step_desc>Wait 120 seconds for the callback</step_desc>
+ <expected>Pass should be shown in the page after 120 seconds</expected>
+ </step>
+ </steps>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorOption_sampleInterval_type_GPS.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase purpose="Check if method HumanActivityMonitorOption::sampleInterval works properly when set to null" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="manual" priority="P1" id="HumanActivityMonitorOption_sampleInterval_type_GPS_default" onload_delay="300" >
+ <description>
+ <steps>
+ <step order="1">
+ <step_desc>Wait 120 seconds for the callback</step_desc>
+ <expected>Pass should be shown in the page after 120 seconds</expected>
+ </step>
+ </steps>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorOption_sampleInterval_type_GPS_default.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="manual" id="HumanActivityMonitorManager_start_errorCallback_invoked" onload_delay="30" priority="P2" purpose="Check exception in error callback of HumanActivityMonitorManager::start() method">
+ <description>
+ <steps>
+ <step order="1">
+ <step_desc>Please set the GPS function to disabled in the location settings</step_desc>
+ <expected>Pass should be shown in the page after GPS off</expected>
+ </step>
+ </steps>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_start_errorCallback_invoked.html</test_script_entry>
+ </description>
+ </testcase>
+ </set>
+ <set name="HumanActivityMonitor_sleep_monitor_wearable">
+ <capabilities>
+ <capability name="http://tizen.org/feature/profile"><value>WEARABLE</value></capability>
+ <capability name="http://tizen.org/feature/sensor.sleep_monitor"/>
+ </capabilities>
+ <testcase purpose="Check if method HumanActivityMonitorManager::start() works properly for SLEEP_MONITOR HumanActivity type" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_start_type_SLEEP_MONITOR">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_start_type_SLEEP_MONITOR.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase purpose="Check if HumanActivityMonitorManager::stop() method works properly for HumanActivity type SLEEP_MONITOR" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_stop_type_SLEEP_MONITOR">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_stop_type_HRM.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivitySleepMonitorData_status_attribute" purpose="Check if HumanActivitySleepMonitorData::status exists and is readonly">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivitySleepMonitorData_status_attribute.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivitySleepMonitorData_timestamp_attribute" purpose="Check if HumanActivitySleepMonitorData::timestamp exists, has type long, and is readonly">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivitySleepMonitorData_timestamp_attribute.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase purpose="Check if readRecorderData without optional arguments works properly for SLEEP_MONITOR HumanActivity type" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_readRecorderData_type_SLEEP_MONITOR">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_readRecorderData_type_SLEEP_MONITOR.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase purpose="Check if method HumanActivityMonitorManager::startRecorder() works properly for SLEEP_MONITOR HumanActivity type" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_startRecorder_type_SLEEP_MONITOR">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_startRecorder_type_SLEEP_MONITOR.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase purpose="Check if method HumanActivityMonitorManager::stopRecorder () works properly for SLEEP_MONITOR HumanActivity type" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_stopRecorder_type_SLEEP_MONITOR">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_stopRecorder_type_SLEEP_MONITOR.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase purpose="Check if HumanActivityRecorderSleepMonitorData have endTime attribute with proper type, readonly" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" id="HumanActivityRecorderSleepMonitorData_endTime_attribute">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityRecorderSleepMonitorData_endTime_attribute.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase purpose="Check if HumanActivityRecorderSleepMonitorData cannot be called in new expression and as a function or in new expression" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" id="HumanActivityRecorderSleepMonitorData_notexist">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityRecorderSleepMonitorData_notexist.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase purpose="Check if HumanActivityRecorderSleepMonitorData have startTime attribute with proper type, readonly" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" id="HumanActivityRecorderSleepMonitorData_startTime_attribute">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityRecorderSleepMonitorData_startTime_attribute.html</test_script_entry>
+ </description>
+ </testcase>
+ <testcase purpose="Check if HumanActivityRecorderSleepMonitorData have status attribute with proper type, readonly" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" id="HumanActivityRecorderSleepMonitorData_status_attribute">
+ <description>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityRecorderSleepMonitorData_status_attribute.html</test_script_entry>
+ </description>
+ </testcase>
+ </set>
+ <set name="HumanActivityMonitor_wearable" type="js">
+ <capabilities>
+ <capability name="http://tizen.org/feature/profile"><value>WEARABLE</value></capability>
+ <capability name="http://tizen.org/feature/platform.core.cpu.arch.armv7"/>
+ </capabilities>
+ <testcase purpose="Check if the specifies the pedometer user's current movement type is UNKNOWN" onload_delay="60" component="Tizen Device APIs/HumanActivityMonitor/HumanActivityMonitorManager" execution_type="manual" priority="P1" id="HumanActivityMonitorManager_getHumanActivityData_stepStatus_UNKNOWN">
+ <description>
+ <steps>
+ <step order="1">
+ <step_desc>Press run button, press Power key to keep the device LCS off, then Pretend walking with the device.</step_desc>
+ <expected>Pass</expected>
+ </step>
+ </steps>
+ <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_getHumanActivityData_stepStatus_UNKNOWN.html</test_script_entry>
+ </description>
+ </testcase>
+ </set>
+ </suite>
+</test_definition>
--- /dev/null
+<!doctype html>
+<!--
+Copyright (c) 2013 Intel Corporation.
+
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+* Redistributions of works must retain the original copyright notice, this list
+ of conditions and the following disclaimer.
+* Redistributions in binary form must reproduce the original copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+* Neither the name of Intel Corporation nor the names of its contributors
+ may be used to endorse or promote products derived from this work without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY INTEL CORPORATION "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL INTEL CORPORATION BE LIABLE FOR ANY DIRECT,
+INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
+EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+Authors:
+ Wang, Jing <jing.j.wang@intel.com>
+
+-->
+
+<head>
+<meta name="viewport" content="width=device-width">
+<script src="jquery-1.10.2.min.js"></script>
+<style type="text/css">
+html {
+ font-family:DejaVu Sans, Bitstream Vera Sans, Arial, Sans;
+}
+
+body {
+ background-color: white;
+}
+
+table#browse {
+ border-collapse:collapse;
+ table-layout:fixed;width:85%;
+}
+
+table#browse th:first-child,table#browse td:first-child {width:35%;}
+
+table#browse th:last-child,table#browse td:last-child {width:25%;}
+
+table#browse th {
+ padding:0;
+ padding-bottom:0.5em;
+ text-align:left;
+ border-bottom:medium solid black;
+}
+table#browse td {
+ padding:1em;
+ padding-bottom:0.5em;
+ border-bottom:thin solid black;
+}
+div#navbar{
+ box-sizing: border-box;
+ width: 99%;
+ border: 0px;
+ text-align: left;
+ background: slateblue;
+ color: white;
+}
+div#footbar{
+ width: 99%;
+ border: 0px;
+ text-align: left;
+}
+textarea#testinfo{
+ width: 99%;
+ font-size: 0.8em;
+}
+input{
+ font-size: 1.2em;
+ padding-top: 0.1em;
+ padding-bottom: 0.1em;
+}
+
+#btnPrev,#btnNext{
+ width: 8%;
+}
+#btnExit,#btnRun,#btnSave,#btnBack,#btnPass,#btnFail,#btnBlock{
+ width: 16%;
+ font-weight: bold;
+}
+
+#btnPass { color: green;}
+#btnFail { color: red;}
+#btnBlock { color: orange;}
+#labBatch{ font-size: 0.5em;}
+#textTest { width: 53%; }
+#title { font-size: 1.4em; font-weight: bold;}
+#frmTest { border: none;}
+.listhide { display: none;}
+.short{
+ padding-left: 1em;
+}
+</style>
+</head>
+
+<body>
+<div id="navbar" class="batchhide">
+ <span class="short listhide suitehide"><input type="button" id="btnBack" value="Back"/></span>
+ <span class="short listhide suitehide">
+ <input type="button" id="btnPrev" value="<"/>
+ <input type="text" id="textTest" readonly />
+ <input type="button" id="btnNext" value=">"/>
+ </span>
+ <span class="short tchide"> <input type="button" id="btnExit" value="Exit"/></span>
+ <span id="title" class="short tchide">Open Web Test</span>
+</div>
+<div id="divSum"> </div>
+<div width="99%" class="batchhide">
+ <textarea class="listhide suitehide" id="testinfo" rows=4 disabled>
+ </textarea>
+</div>
+<div id="footbar" class="batchhide">
+ <span class="short"><input type="button" id="btnRun" value="Run"/></span>
+ <span class="short listhide tchide"><input type="button" id="btnSave" value="Save"/></span>
+ <span class="short listhide suitehide"><input type="button" id="btnPass" value="PASS"/></span>
+ <span class="short listhide suitehide"><input type="button" id="btnFail" value="FAIL"/></span>
+ <span class="short listhide suitehide"><input type="button" id="btnBlock" value="BLOCK"/></span>
+</div>
+<iframe width="100%" id="frmTest" allowFullScreen="true" mozAllowFullScreen="true" webkitAllowFullscreen="true" src="">
+</iframe>
+<script src="testrunner.js"> </script>
+</body>
+</html>
--- /dev/null
+/*! jQuery v1.10.2 | (c) 2005, 2013 jQuery Foundation, Inc. | jquery.org/license
+//@ sourceMappingURL=jquery-1.10.2.min.map
+*/
+(function(e,t){var n,r,i=typeof t,o=e.location,a=e.document,s=a.documentElement,l=e.jQuery,u=e.$,c={},p=[],f="1.10.2",d=p.concat,h=p.push,g=p.slice,m=p.indexOf,y=c.toString,v=c.hasOwnProperty,b=f.trim,x=function(e,t){return new x.fn.init(e,t,r)},w=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,T=/\S+/g,C=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,N=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,k=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,E=/^[\],:{}\s]*$/,S=/(?:^|:|,)(?:\s*\[)+/g,A=/\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g,j=/"[^"\\\r\n]*"|true|false|null|-?(?:\d+\.|)\d+(?:[eE][+-]?\d+|)/g,D=/^-ms-/,L=/-([\da-z])/gi,H=function(e,t){return t.toUpperCase()},q=function(e){(a.addEventListener||"load"===e.type||"complete"===a.readyState)&&(_(),x.ready())},_=function(){a.addEventListener?(a.removeEventListener("DOMContentLoaded",q,!1),e.removeEventListener("load",q,!1)):(a.detachEvent("onreadystatechange",q),e.detachEvent("onload",q))};x.fn=x.prototype={jquery:f,constructor:x,init:function(e,n,r){var i,o;if(!e)return this;if("string"==typeof e){if(i="<"===e.charAt(0)&&">"===e.charAt(e.length-1)&&e.length>=3?[null,e,null]:N.exec(e),!i||!i[1]&&n)return!n||n.jquery?(n||r).find(e):this.constructor(n).find(e);if(i[1]){if(n=n instanceof x?n[0]:n,x.merge(this,x.parseHTML(i[1],n&&n.nodeType?n.ownerDocument||n:a,!0)),k.test(i[1])&&x.isPlainObject(n))for(i in n)x.isFunction(this[i])?this[i](n[i]):this.attr(i,n[i]);return this}if(o=a.getElementById(i[2]),o&&o.parentNode){if(o.id!==i[2])return r.find(e);this.length=1,this[0]=o}return this.context=a,this.selector=e,this}return e.nodeType?(this.context=this[0]=e,this.length=1,this):x.isFunction(e)?r.ready(e):(e.selector!==t&&(this.selector=e.selector,this.context=e.context),x.makeArray(e,this))},selector:"",length:0,toArray:function(){return g.call(this)},get:function(e){return null==e?this.toArray():0>e?this[this.length+e]:this[e]},pushStack:function(e){var t=x.merge(this.constructor(),e);return t.prevObject=this,t.context=this.context,t},each:function(e,t){return x.each(this,e,t)},ready:function(e){return x.ready.promise().done(e),this},slice:function(){return this.pushStack(g.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(0>e?t:0);return this.pushStack(n>=0&&t>n?[this[n]]:[])},map:function(e){return this.pushStack(x.map(this,function(t,n){return e.call(t,n,t)}))},end:function(){return this.prevObject||this.constructor(null)},push:h,sort:[].sort,splice:[].splice},x.fn.init.prototype=x.fn,x.extend=x.fn.extend=function(){var e,n,r,i,o,a,s=arguments[0]||{},l=1,u=arguments.length,c=!1;for("boolean"==typeof s&&(c=s,s=arguments[1]||{},l=2),"object"==typeof s||x.isFunction(s)||(s={}),u===l&&(s=this,--l);u>l;l++)if(null!=(o=arguments[l]))for(i in o)e=s[i],r=o[i],s!==r&&(c&&r&&(x.isPlainObject(r)||(n=x.isArray(r)))?(n?(n=!1,a=e&&x.isArray(e)?e:[]):a=e&&x.isPlainObject(e)?e:{},s[i]=x.extend(c,a,r)):r!==t&&(s[i]=r));return s},x.extend({expando:"jQuery"+(f+Math.random()).replace(/\D/g,""),noConflict:function(t){return e.$===x&&(e.$=u),t&&e.jQuery===x&&(e.jQuery=l),x},isReady:!1,readyWait:1,holdReady:function(e){e?x.readyWait++:x.ready(!0)},ready:function(e){if(e===!0?!--x.readyWait:!x.isReady){if(!a.body)return setTimeout(x.ready);x.isReady=!0,e!==!0&&--x.readyWait>0||(n.resolveWith(a,[x]),x.fn.trigger&&x(a).trigger("ready").off("ready"))}},isFunction:function(e){return"function"===x.type(e)},isArray:Array.isArray||function(e){return"array"===x.type(e)},isWindow:function(e){return null!=e&&e==e.window},isNumeric:function(e){return!isNaN(parseFloat(e))&&isFinite(e)},type:function(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?c[y.call(e)]||"object":typeof e},isPlainObject:function(e){var n;if(!e||"object"!==x.type(e)||e.nodeType||x.isWindow(e))return!1;try{if(e.constructor&&!v.call(e,"constructor")&&!v.call(e.constructor.prototype,"isPrototypeOf"))return!1}catch(r){return!1}if(x.support.ownLast)for(n in e)return v.call(e,n);for(n in e);return n===t||v.call(e,n)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},error:function(e){throw Error(e)},parseHTML:function(e,t,n){if(!e||"string"!=typeof e)return null;"boolean"==typeof t&&(n=t,t=!1),t=t||a;var r=k.exec(e),i=!n&&[];return r?[t.createElement(r[1])]:(r=x.buildFragment([e],t,i),i&&x(i).remove(),x.merge([],r.childNodes))},parseJSON:function(n){return e.JSON&&e.JSON.parse?e.JSON.parse(n):null===n?n:"string"==typeof n&&(n=x.trim(n),n&&E.test(n.replace(A,"@").replace(j,"]").replace(S,"")))?Function("return "+n)():(x.error("Invalid JSON: "+n),t)},parseXML:function(n){var r,i;if(!n||"string"!=typeof n)return null;try{e.DOMParser?(i=new DOMParser,r=i.parseFromString(n,"text/xml")):(r=new ActiveXObject("Microsoft.XMLDOM"),r.async="false",r.loadXML(n))}catch(o){r=t}return r&&r.documentElement&&!r.getElementsByTagName("parsererror").length||x.error("Invalid XML: "+n),r},noop:function(){},globalEval:function(t){t&&x.trim(t)&&(e.execScript||function(t){e.eval.call(e,t)})(t)},camelCase:function(e){return e.replace(D,"ms-").replace(L,H)},nodeName:function(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()},each:function(e,t,n){var r,i=0,o=e.length,a=M(e);if(n){if(a){for(;o>i;i++)if(r=t.apply(e[i],n),r===!1)break}else for(i in e)if(r=t.apply(e[i],n),r===!1)break}else if(a){for(;o>i;i++)if(r=t.call(e[i],i,e[i]),r===!1)break}else for(i in e)if(r=t.call(e[i],i,e[i]),r===!1)break;return e},trim:b&&!b.call("\ufeff\u00a0")?function(e){return null==e?"":b.call(e)}:function(e){return null==e?"":(e+"").replace(C,"")},makeArray:function(e,t){var n=t||[];return null!=e&&(M(Object(e))?x.merge(n,"string"==typeof e?[e]:e):h.call(n,e)),n},inArray:function(e,t,n){var r;if(t){if(m)return m.call(t,e,n);for(r=t.length,n=n?0>n?Math.max(0,r+n):n:0;r>n;n++)if(n in t&&t[n]===e)return n}return-1},merge:function(e,n){var r=n.length,i=e.length,o=0;if("number"==typeof r)for(;r>o;o++)e[i++]=n[o];else while(n[o]!==t)e[i++]=n[o++];return e.length=i,e},grep:function(e,t,n){var r,i=[],o=0,a=e.length;for(n=!!n;a>o;o++)r=!!t(e[o],o),n!==r&&i.push(e[o]);return i},map:function(e,t,n){var r,i=0,o=e.length,a=M(e),s=[];if(a)for(;o>i;i++)r=t(e[i],i,n),null!=r&&(s[s.length]=r);else for(i in e)r=t(e[i],i,n),null!=r&&(s[s.length]=r);return d.apply([],s)},guid:1,proxy:function(e,n){var r,i,o;return"string"==typeof n&&(o=e[n],n=e,e=o),x.isFunction(e)?(r=g.call(arguments,2),i=function(){return e.apply(n||this,r.concat(g.call(arguments)))},i.guid=e.guid=e.guid||x.guid++,i):t},access:function(e,n,r,i,o,a,s){var l=0,u=e.length,c=null==r;if("object"===x.type(r)){o=!0;for(l in r)x.access(e,n,l,r[l],!0,a,s)}else if(i!==t&&(o=!0,x.isFunction(i)||(s=!0),c&&(s?(n.call(e,i),n=null):(c=n,n=function(e,t,n){return c.call(x(e),n)})),n))for(;u>l;l++)n(e[l],r,s?i:i.call(e[l],l,n(e[l],r)));return o?e:c?n.call(e):u?n(e[0],r):a},now:function(){return(new Date).getTime()},swap:function(e,t,n,r){var i,o,a={};for(o in t)a[o]=e.style[o],e.style[o]=t[o];i=n.apply(e,r||[]);for(o in t)e.style[o]=a[o];return i}}),x.ready.promise=function(t){if(!n)if(n=x.Deferred(),"complete"===a.readyState)setTimeout(x.ready);else if(a.addEventListener)a.addEventListener("DOMContentLoaded",q,!1),e.addEventListener("load",q,!1);else{a.attachEvent("onreadystatechange",q),e.attachEvent("onload",q);var r=!1;try{r=null==e.frameElement&&a.documentElement}catch(i){}r&&r.doScroll&&function o(){if(!x.isReady){try{r.doScroll("left")}catch(e){return setTimeout(o,50)}_(),x.ready()}}()}return n.promise(t)},x.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(e,t){c["[object "+t+"]"]=t.toLowerCase()});function M(e){var t=e.length,n=x.type(e);return x.isWindow(e)?!1:1===e.nodeType&&t?!0:"array"===n||"function"!==n&&(0===t||"number"==typeof t&&t>0&&t-1 in e)}r=x(a),function(e,t){var n,r,i,o,a,s,l,u,c,p,f,d,h,g,m,y,v,b="sizzle"+-new Date,w=e.document,T=0,C=0,N=st(),k=st(),E=st(),S=!1,A=function(e,t){return e===t?(S=!0,0):0},j=typeof t,D=1<<31,L={}.hasOwnProperty,H=[],q=H.pop,_=H.push,M=H.push,O=H.slice,F=H.indexOf||function(e){var t=0,n=this.length;for(;n>t;t++)if(this[t]===e)return t;return-1},B="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",P="[\\x20\\t\\r\\n\\f]",R="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",W=R.replace("w","w#"),$="\\["+P+"*("+R+")"+P+"*(?:([*^$|!~]?=)"+P+"*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|("+W+")|)|)"+P+"*\\]",I=":("+R+")(?:\\(((['\"])((?:\\\\.|[^\\\\])*?)\\3|((?:\\\\.|[^\\\\()[\\]]|"+$.replace(3,8)+")*)|.*)\\)|)",z=RegExp("^"+P+"+|((?:^|[^\\\\])(?:\\\\.)*)"+P+"+$","g"),X=RegExp("^"+P+"*,"+P+"*"),U=RegExp("^"+P+"*([>+~]|"+P+")"+P+"*"),V=RegExp(P+"*[+~]"),Y=RegExp("="+P+"*([^\\]'\"]*)"+P+"*\\]","g"),J=RegExp(I),G=RegExp("^"+W+"$"),Q={ID:RegExp("^#("+R+")"),CLASS:RegExp("^\\.("+R+")"),TAG:RegExp("^("+R.replace("w","w*")+")"),ATTR:RegExp("^"+$),PSEUDO:RegExp("^"+I),CHILD:RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+P+"*(even|odd|(([+-]|)(\\d*)n|)"+P+"*(?:([+-]|)"+P+"*(\\d+)|))"+P+"*\\)|)","i"),bool:RegExp("^(?:"+B+")$","i"),needsContext:RegExp("^"+P+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+P+"*((?:-\\d)?\\d*)"+P+"*\\)|)(?=[^-]|$)","i")},K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,et=/^(?:input|select|textarea|button)$/i,tt=/^h\d$/i,nt=/'|\\/g,rt=RegExp("\\\\([\\da-f]{1,6}"+P+"?|("+P+")|.)","ig"),it=function(e,t,n){var r="0x"+t-65536;return r!==r||n?t:0>r?String.fromCharCode(r+65536):String.fromCharCode(55296|r>>10,56320|1023&r)};try{M.apply(H=O.call(w.childNodes),w.childNodes),H[w.childNodes.length].nodeType}catch(ot){M={apply:H.length?function(e,t){_.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function at(e,t,n,i){var o,a,s,l,u,c,d,m,y,x;if((t?t.ownerDocument||t:w)!==f&&p(t),t=t||f,n=n||[],!e||"string"!=typeof e)return n;if(1!==(l=t.nodeType)&&9!==l)return[];if(h&&!i){if(o=Z.exec(e))if(s=o[1]){if(9===l){if(a=t.getElementById(s),!a||!a.parentNode)return n;if(a.id===s)return n.push(a),n}else if(t.ownerDocument&&(a=t.ownerDocument.getElementById(s))&&v(t,a)&&a.id===s)return n.push(a),n}else{if(o[2])return M.apply(n,t.getElementsByTagName(e)),n;if((s=o[3])&&r.getElementsByClassName&&t.getElementsByClassName)return M.apply(n,t.getElementsByClassName(s)),n}if(r.qsa&&(!g||!g.test(e))){if(m=d=b,y=t,x=9===l&&e,1===l&&"object"!==t.nodeName.toLowerCase()){c=mt(e),(d=t.getAttribute("id"))?m=d.replace(nt,"\\$&"):t.setAttribute("id",m),m="[id='"+m+"'] ",u=c.length;while(u--)c[u]=m+yt(c[u]);y=V.test(e)&&t.parentNode||t,x=c.join(",")}if(x)try{return M.apply(n,y.querySelectorAll(x)),n}catch(T){}finally{d||t.removeAttribute("id")}}}return kt(e.replace(z,"$1"),t,n,i)}function st(){var e=[];function t(n,r){return e.push(n+=" ")>o.cacheLength&&delete t[e.shift()],t[n]=r}return t}function lt(e){return e[b]=!0,e}function ut(e){var t=f.createElement("div");try{return!!e(t)}catch(n){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function ct(e,t){var n=e.split("|"),r=e.length;while(r--)o.attrHandle[n[r]]=t}function pt(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&(~t.sourceIndex||D)-(~e.sourceIndex||D);if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function ft(e){return function(t){var n=t.nodeName.toLowerCase();return"input"===n&&t.type===e}}function dt(e){return function(t){var n=t.nodeName.toLowerCase();return("input"===n||"button"===n)&&t.type===e}}function ht(e){return lt(function(t){return t=+t,lt(function(n,r){var i,o=e([],n.length,t),a=o.length;while(a--)n[i=o[a]]&&(n[i]=!(r[i]=n[i]))})})}s=at.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return t?"HTML"!==t.nodeName:!1},r=at.support={},p=at.setDocument=function(e){var n=e?e.ownerDocument||e:w,i=n.defaultView;return n!==f&&9===n.nodeType&&n.documentElement?(f=n,d=n.documentElement,h=!s(n),i&&i.attachEvent&&i!==i.top&&i.attachEvent("onbeforeunload",function(){p()}),r.attributes=ut(function(e){return e.className="i",!e.getAttribute("className")}),r.getElementsByTagName=ut(function(e){return e.appendChild(n.createComment("")),!e.getElementsByTagName("*").length}),r.getElementsByClassName=ut(function(e){return e.innerHTML="<div class='a'></div><div class='a i'></div>",e.firstChild.className="i",2===e.getElementsByClassName("i").length}),r.getById=ut(function(e){return d.appendChild(e).id=b,!n.getElementsByName||!n.getElementsByName(b).length}),r.getById?(o.find.ID=function(e,t){if(typeof t.getElementById!==j&&h){var n=t.getElementById(e);return n&&n.parentNode?[n]:[]}},o.filter.ID=function(e){var t=e.replace(rt,it);return function(e){return e.getAttribute("id")===t}}):(delete o.find.ID,o.filter.ID=function(e){var t=e.replace(rt,it);return function(e){var n=typeof e.getAttributeNode!==j&&e.getAttributeNode("id");return n&&n.value===t}}),o.find.TAG=r.getElementsByTagName?function(e,n){return typeof n.getElementsByTagName!==j?n.getElementsByTagName(e):t}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},o.find.CLASS=r.getElementsByClassName&&function(e,n){return typeof n.getElementsByClassName!==j&&h?n.getElementsByClassName(e):t},m=[],g=[],(r.qsa=K.test(n.querySelectorAll))&&(ut(function(e){e.innerHTML="<select><option selected=''></option></select>",e.querySelectorAll("[selected]").length||g.push("\\["+P+"*(?:value|"+B+")"),e.querySelectorAll(":checked").length||g.push(":checked")}),ut(function(e){var t=n.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("t",""),e.querySelectorAll("[t^='']").length&&g.push("[*^$]="+P+"*(?:''|\"\")"),e.querySelectorAll(":enabled").length||g.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),g.push(",.*:")})),(r.matchesSelector=K.test(y=d.webkitMatchesSelector||d.mozMatchesSelector||d.oMatchesSelector||d.msMatchesSelector))&&ut(function(e){r.disconnectedMatch=y.call(e,"div"),y.call(e,"[s!='']:x"),m.push("!=",I)}),g=g.length&&RegExp(g.join("|")),m=m.length&&RegExp(m.join("|")),v=K.test(d.contains)||d.compareDocumentPosition?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},A=d.compareDocumentPosition?function(e,t){if(e===t)return S=!0,0;var i=t.compareDocumentPosition&&e.compareDocumentPosition&&e.compareDocumentPosition(t);return i?1&i||!r.sortDetached&&t.compareDocumentPosition(e)===i?e===n||v(w,e)?-1:t===n||v(w,t)?1:c?F.call(c,e)-F.call(c,t):0:4&i?-1:1:e.compareDocumentPosition?-1:1}:function(e,t){var r,i=0,o=e.parentNode,a=t.parentNode,s=[e],l=[t];if(e===t)return S=!0,0;if(!o||!a)return e===n?-1:t===n?1:o?-1:a?1:c?F.call(c,e)-F.call(c,t):0;if(o===a)return pt(e,t);r=e;while(r=r.parentNode)s.unshift(r);r=t;while(r=r.parentNode)l.unshift(r);while(s[i]===l[i])i++;return i?pt(s[i],l[i]):s[i]===w?-1:l[i]===w?1:0},n):f},at.matches=function(e,t){return at(e,null,null,t)},at.matchesSelector=function(e,t){if((e.ownerDocument||e)!==f&&p(e),t=t.replace(Y,"='$1']"),!(!r.matchesSelector||!h||m&&m.test(t)||g&&g.test(t)))try{var n=y.call(e,t);if(n||r.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(i){}return at(t,f,null,[e]).length>0},at.contains=function(e,t){return(e.ownerDocument||e)!==f&&p(e),v(e,t)},at.attr=function(e,n){(e.ownerDocument||e)!==f&&p(e);var i=o.attrHandle[n.toLowerCase()],a=i&&L.call(o.attrHandle,n.toLowerCase())?i(e,n,!h):t;return a===t?r.attributes||!h?e.getAttribute(n):(a=e.getAttributeNode(n))&&a.specified?a.value:null:a},at.error=function(e){throw Error("Syntax error, unrecognized expression: "+e)},at.uniqueSort=function(e){var t,n=[],i=0,o=0;if(S=!r.detectDuplicates,c=!r.sortStable&&e.slice(0),e.sort(A),S){while(t=e[o++])t===e[o]&&(i=n.push(o));while(i--)e.splice(n[i],1)}return e},a=at.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(1===i||9===i||11===i){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=a(e)}else if(3===i||4===i)return e.nodeValue}else for(;t=e[r];r++)n+=a(t);return n},o=at.selectors={cacheLength:50,createPseudo:lt,match:Q,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(rt,it),e[3]=(e[4]||e[5]||"").replace(rt,it),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||at.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&at.error(e[0]),e},PSEUDO:function(e){var n,r=!e[5]&&e[2];return Q.CHILD.test(e[0])?null:(e[3]&&e[4]!==t?e[2]=e[4]:r&&J.test(r)&&(n=mt(r,!0))&&(n=r.indexOf(")",r.length-n)-r.length)&&(e[0]=e[0].slice(0,n),e[2]=r.slice(0,n)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(rt,it).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=N[e+" "];return t||(t=RegExp("(^|"+P+")"+e+"("+P+"|$)"))&&N(e,function(e){return t.test("string"==typeof e.className&&e.className||typeof e.getAttribute!==j&&e.getAttribute("class")||"")})},ATTR:function(e,t,n){return function(r){var i=at.attr(r,e);return null==i?"!="===t:t?(i+="","="===t?i===n:"!="===t?i!==n:"^="===t?n&&0===i.indexOf(n):"*="===t?n&&i.indexOf(n)>-1:"$="===t?n&&i.slice(-n.length)===n:"~="===t?(" "+i+" ").indexOf(n)>-1:"|="===t?i===n||i.slice(0,n.length+1)===n+"-":!1):!0}},CHILD:function(e,t,n,r,i){var o="nth"!==e.slice(0,3),a="last"!==e.slice(-4),s="of-type"===t;return 1===r&&0===i?function(e){return!!e.parentNode}:function(t,n,l){var u,c,p,f,d,h,g=o!==a?"nextSibling":"previousSibling",m=t.parentNode,y=s&&t.nodeName.toLowerCase(),v=!l&&!s;if(m){if(o){while(g){p=t;while(p=p[g])if(s?p.nodeName.toLowerCase()===y:1===p.nodeType)return!1;h=g="only"===e&&!h&&"nextSibling"}return!0}if(h=[a?m.firstChild:m.lastChild],a&&v){c=m[b]||(m[b]={}),u=c[e]||[],d=u[0]===T&&u[1],f=u[0]===T&&u[2],p=d&&m.childNodes[d];while(p=++d&&p&&p[g]||(f=d=0)||h.pop())if(1===p.nodeType&&++f&&p===t){c[e]=[T,d,f];break}}else if(v&&(u=(t[b]||(t[b]={}))[e])&&u[0]===T)f=u[1];else while(p=++d&&p&&p[g]||(f=d=0)||h.pop())if((s?p.nodeName.toLowerCase()===y:1===p.nodeType)&&++f&&(v&&((p[b]||(p[b]={}))[e]=[T,f]),p===t))break;return f-=i,f===r||0===f%r&&f/r>=0}}},PSEUDO:function(e,t){var n,r=o.pseudos[e]||o.setFilters[e.toLowerCase()]||at.error("unsupported pseudo: "+e);return r[b]?r(t):r.length>1?(n=[e,e,"",t],o.setFilters.hasOwnProperty(e.toLowerCase())?lt(function(e,n){var i,o=r(e,t),a=o.length;while(a--)i=F.call(e,o[a]),e[i]=!(n[i]=o[a])}):function(e){return r(e,0,n)}):r}},pseudos:{not:lt(function(e){var t=[],n=[],r=l(e.replace(z,"$1"));return r[b]?lt(function(e,t,n,i){var o,a=r(e,null,i,[]),s=e.length;while(s--)(o=a[s])&&(e[s]=!(t[s]=o))}):function(e,i,o){return t[0]=e,r(t,null,o,n),!n.pop()}}),has:lt(function(e){return function(t){return at(e,t).length>0}}),contains:lt(function(e){return function(t){return(t.textContent||t.innerText||a(t)).indexOf(e)>-1}}),lang:lt(function(e){return G.test(e||"")||at.error("unsupported lang: "+e),e=e.replace(rt,it).toLowerCase(),function(t){var n;do if(n=h?t.lang:t.getAttribute("xml:lang")||t.getAttribute("lang"))return n=n.toLowerCase(),n===e||0===n.indexOf(e+"-");while((t=t.parentNode)&&1===t.nodeType);return!1}}),target:function(t){var n=e.location&&e.location.hash;return n&&n.slice(1)===t.id},root:function(e){return e===d},focus:function(e){return e===f.activeElement&&(!f.hasFocus||f.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:function(e){return e.disabled===!1},disabled:function(e){return e.disabled===!0},checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,e.selected===!0},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeName>"@"||3===e.nodeType||4===e.nodeType)return!1;return!0},parent:function(e){return!o.pseudos.empty(e)},header:function(e){return tt.test(e.nodeName)},input:function(e){return et.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||t.toLowerCase()===e.type)},first:ht(function(){return[0]}),last:ht(function(e,t){return[t-1]}),eq:ht(function(e,t,n){return[0>n?n+t:n]}),even:ht(function(e,t){var n=0;for(;t>n;n+=2)e.push(n);return e}),odd:ht(function(e,t){var n=1;for(;t>n;n+=2)e.push(n);return e}),lt:ht(function(e,t,n){var r=0>n?n+t:n;for(;--r>=0;)e.push(r);return e}),gt:ht(function(e,t,n){var r=0>n?n+t:n;for(;t>++r;)e.push(r);return e})}},o.pseudos.nth=o.pseudos.eq;for(n in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})o.pseudos[n]=ft(n);for(n in{submit:!0,reset:!0})o.pseudos[n]=dt(n);function gt(){}gt.prototype=o.filters=o.pseudos,o.setFilters=new gt;function mt(e,t){var n,r,i,a,s,l,u,c=k[e+" "];if(c)return t?0:c.slice(0);s=e,l=[],u=o.preFilter;while(s){(!n||(r=X.exec(s)))&&(r&&(s=s.slice(r[0].length)||s),l.push(i=[])),n=!1,(r=U.exec(s))&&(n=r.shift(),i.push({value:n,type:r[0].replace(z," ")}),s=s.slice(n.length));for(a in o.filter)!(r=Q[a].exec(s))||u[a]&&!(r=u[a](r))||(n=r.shift(),i.push({value:n,type:a,matches:r}),s=s.slice(n.length));if(!n)break}return t?s.length:s?at.error(e):k(e,l).slice(0)}function yt(e){var t=0,n=e.length,r="";for(;n>t;t++)r+=e[t].value;return r}function vt(e,t,n){var r=t.dir,o=n&&"parentNode"===r,a=C++;return t.first?function(t,n,i){while(t=t[r])if(1===t.nodeType||o)return e(t,n,i)}:function(t,n,s){var l,u,c,p=T+" "+a;if(s){while(t=t[r])if((1===t.nodeType||o)&&e(t,n,s))return!0}else while(t=t[r])if(1===t.nodeType||o)if(c=t[b]||(t[b]={}),(u=c[r])&&u[0]===p){if((l=u[1])===!0||l===i)return l===!0}else if(u=c[r]=[p],u[1]=e(t,n,s)||i,u[1]===!0)return!0}}function bt(e){return e.length>1?function(t,n,r){var i=e.length;while(i--)if(!e[i](t,n,r))return!1;return!0}:e[0]}function xt(e,t,n,r,i){var o,a=[],s=0,l=e.length,u=null!=t;for(;l>s;s++)(o=e[s])&&(!n||n(o,r,i))&&(a.push(o),u&&t.push(s));return a}function wt(e,t,n,r,i,o){return r&&!r[b]&&(r=wt(r)),i&&!i[b]&&(i=wt(i,o)),lt(function(o,a,s,l){var u,c,p,f=[],d=[],h=a.length,g=o||Nt(t||"*",s.nodeType?[s]:s,[]),m=!e||!o&&t?g:xt(g,f,e,s,l),y=n?i||(o?e:h||r)?[]:a:m;if(n&&n(m,y,s,l),r){u=xt(y,d),r(u,[],s,l),c=u.length;while(c--)(p=u[c])&&(y[d[c]]=!(m[d[c]]=p))}if(o){if(i||e){if(i){u=[],c=y.length;while(c--)(p=y[c])&&u.push(m[c]=p);i(null,y=[],u,l)}c=y.length;while(c--)(p=y[c])&&(u=i?F.call(o,p):f[c])>-1&&(o[u]=!(a[u]=p))}}else y=xt(y===a?y.splice(h,y.length):y),i?i(null,a,y,l):M.apply(a,y)})}function Tt(e){var t,n,r,i=e.length,a=o.relative[e[0].type],s=a||o.relative[" "],l=a?1:0,c=vt(function(e){return e===t},s,!0),p=vt(function(e){return F.call(t,e)>-1},s,!0),f=[function(e,n,r){return!a&&(r||n!==u)||((t=n).nodeType?c(e,n,r):p(e,n,r))}];for(;i>l;l++)if(n=o.relative[e[l].type])f=[vt(bt(f),n)];else{if(n=o.filter[e[l].type].apply(null,e[l].matches),n[b]){for(r=++l;i>r;r++)if(o.relative[e[r].type])break;return wt(l>1&&bt(f),l>1&&yt(e.slice(0,l-1).concat({value:" "===e[l-2].type?"*":""})).replace(z,"$1"),n,r>l&&Tt(e.slice(l,r)),i>r&&Tt(e=e.slice(r)),i>r&&yt(e))}f.push(n)}return bt(f)}function Ct(e,t){var n=0,r=t.length>0,a=e.length>0,s=function(s,l,c,p,d){var h,g,m,y=[],v=0,b="0",x=s&&[],w=null!=d,C=u,N=s||a&&o.find.TAG("*",d&&l.parentNode||l),k=T+=null==C?1:Math.random()||.1;for(w&&(u=l!==f&&l,i=n);null!=(h=N[b]);b++){if(a&&h){g=0;while(m=e[g++])if(m(h,l,c)){p.push(h);break}w&&(T=k,i=++n)}r&&((h=!m&&h)&&v--,s&&x.push(h))}if(v+=b,r&&b!==v){g=0;while(m=t[g++])m(x,y,l,c);if(s){if(v>0)while(b--)x[b]||y[b]||(y[b]=q.call(p));y=xt(y)}M.apply(p,y),w&&!s&&y.length>0&&v+t.length>1&&at.uniqueSort(p)}return w&&(T=k,u=C),x};return r?lt(s):s}l=at.compile=function(e,t){var n,r=[],i=[],o=E[e+" "];if(!o){t||(t=mt(e)),n=t.length;while(n--)o=Tt(t[n]),o[b]?r.push(o):i.push(o);o=E(e,Ct(i,r))}return o};function Nt(e,t,n){var r=0,i=t.length;for(;i>r;r++)at(e,t[r],n);return n}function kt(e,t,n,i){var a,s,u,c,p,f=mt(e);if(!i&&1===f.length){if(s=f[0]=f[0].slice(0),s.length>2&&"ID"===(u=s[0]).type&&r.getById&&9===t.nodeType&&h&&o.relative[s[1].type]){if(t=(o.find.ID(u.matches[0].replace(rt,it),t)||[])[0],!t)return n;e=e.slice(s.shift().value.length)}a=Q.needsContext.test(e)?0:s.length;while(a--){if(u=s[a],o.relative[c=u.type])break;if((p=o.find[c])&&(i=p(u.matches[0].replace(rt,it),V.test(s[0].type)&&t.parentNode||t))){if(s.splice(a,1),e=i.length&&yt(s),!e)return M.apply(n,i),n;break}}}return l(e,f)(i,t,!h,n,V.test(e)),n}r.sortStable=b.split("").sort(A).join("")===b,r.detectDuplicates=S,p(),r.sortDetached=ut(function(e){return 1&e.compareDocumentPosition(f.createElement("div"))}),ut(function(e){return e.innerHTML="<a href='#'></a>","#"===e.firstChild.getAttribute("href")})||ct("type|href|height|width",function(e,n,r){return r?t:e.getAttribute(n,"type"===n.toLowerCase()?1:2)}),r.attributes&&ut(function(e){return e.innerHTML="<input/>",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||ct("value",function(e,n,r){return r||"input"!==e.nodeName.toLowerCase()?t:e.defaultValue}),ut(function(e){return null==e.getAttribute("disabled")})||ct(B,function(e,n,r){var i;return r?t:(i=e.getAttributeNode(n))&&i.specified?i.value:e[n]===!0?n.toLowerCase():null}),x.find=at,x.expr=at.selectors,x.expr[":"]=x.expr.pseudos,x.unique=at.uniqueSort,x.text=at.getText,x.isXMLDoc=at.isXML,x.contains=at.contains}(e);var O={};function F(e){var t=O[e]={};return x.each(e.match(T)||[],function(e,n){t[n]=!0}),t}x.Callbacks=function(e){e="string"==typeof e?O[e]||F(e):x.extend({},e);var n,r,i,o,a,s,l=[],u=!e.once&&[],c=function(t){for(r=e.memory&&t,i=!0,a=s||0,s=0,o=l.length,n=!0;l&&o>a;a++)if(l[a].apply(t[0],t[1])===!1&&e.stopOnFalse){r=!1;break}n=!1,l&&(u?u.length&&c(u.shift()):r?l=[]:p.disable())},p={add:function(){if(l){var t=l.length;(function i(t){x.each(t,function(t,n){var r=x.type(n);"function"===r?e.unique&&p.has(n)||l.push(n):n&&n.length&&"string"!==r&&i(n)})})(arguments),n?o=l.length:r&&(s=t,c(r))}return this},remove:function(){return l&&x.each(arguments,function(e,t){var r;while((r=x.inArray(t,l,r))>-1)l.splice(r,1),n&&(o>=r&&o--,a>=r&&a--)}),this},has:function(e){return e?x.inArray(e,l)>-1:!(!l||!l.length)},empty:function(){return l=[],o=0,this},disable:function(){return l=u=r=t,this},disabled:function(){return!l},lock:function(){return u=t,r||p.disable(),this},locked:function(){return!u},fireWith:function(e,t){return!l||i&&!u||(t=t||[],t=[e,t.slice?t.slice():t],n?u.push(t):c(t)),this},fire:function(){return p.fireWith(this,arguments),this},fired:function(){return!!i}};return p},x.extend({Deferred:function(e){var t=[["resolve","done",x.Callbacks("once memory"),"resolved"],["reject","fail",x.Callbacks("once memory"),"rejected"],["notify","progress",x.Callbacks("memory")]],n="pending",r={state:function(){return n},always:function(){return i.done(arguments).fail(arguments),this},then:function(){var e=arguments;return x.Deferred(function(n){x.each(t,function(t,o){var a=o[0],s=x.isFunction(e[t])&&e[t];i[o[1]](function(){var e=s&&s.apply(this,arguments);e&&x.isFunction(e.promise)?e.promise().done(n.resolve).fail(n.reject).progress(n.notify):n[a+"With"](this===r?n.promise():this,s?[e]:arguments)})}),e=null}).promise()},promise:function(e){return null!=e?x.extend(e,r):r}},i={};return r.pipe=r.then,x.each(t,function(e,o){var a=o[2],s=o[3];r[o[1]]=a.add,s&&a.add(function(){n=s},t[1^e][2].disable,t[2][2].lock),i[o[0]]=function(){return i[o[0]+"With"](this===i?r:this,arguments),this},i[o[0]+"With"]=a.fireWith}),r.promise(i),e&&e.call(i,i),i},when:function(e){var t=0,n=g.call(arguments),r=n.length,i=1!==r||e&&x.isFunction(e.promise)?r:0,o=1===i?e:x.Deferred(),a=function(e,t,n){return function(r){t[e]=this,n[e]=arguments.length>1?g.call(arguments):r,n===s?o.notifyWith(t,n):--i||o.resolveWith(t,n)}},s,l,u;if(r>1)for(s=Array(r),l=Array(r),u=Array(r);r>t;t++)n[t]&&x.isFunction(n[t].promise)?n[t].promise().done(a(t,u,n)).fail(o.reject).progress(a(t,l,s)):--i;return i||o.resolveWith(u,n),o.promise()}}),x.support=function(t){var n,r,o,s,l,u,c,p,f,d=a.createElement("div");if(d.setAttribute("className","t"),d.innerHTML=" <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",n=d.getElementsByTagName("*")||[],r=d.getElementsByTagName("a")[0],!r||!r.style||!n.length)return t;s=a.createElement("select"),u=s.appendChild(a.createElement("option")),o=d.getElementsByTagName("input")[0],r.style.cssText="top:1px;float:left;opacity:.5",t.getSetAttribute="t"!==d.className,t.leadingWhitespace=3===d.firstChild.nodeType,t.tbody=!d.getElementsByTagName("tbody").length,t.htmlSerialize=!!d.getElementsByTagName("link").length,t.style=/top/.test(r.getAttribute("style")),t.hrefNormalized="/a"===r.getAttribute("href"),t.opacity=/^0.5/.test(r.style.opacity),t.cssFloat=!!r.style.cssFloat,t.checkOn=!!o.value,t.optSelected=u.selected,t.enctype=!!a.createElement("form").enctype,t.html5Clone="<:nav></:nav>"!==a.createElement("nav").cloneNode(!0).outerHTML,t.inlineBlockNeedsLayout=!1,t.shrinkWrapBlocks=!1,t.pixelPosition=!1,t.deleteExpando=!0,t.noCloneEvent=!0,t.reliableMarginRight=!0,t.boxSizingReliable=!0,o.checked=!0,t.noCloneChecked=o.cloneNode(!0).checked,s.disabled=!0,t.optDisabled=!u.disabled;try{delete d.test}catch(h){t.deleteExpando=!1}o=a.createElement("input"),o.setAttribute("value",""),t.input=""===o.getAttribute("value"),o.value="t",o.setAttribute("type","radio"),t.radioValue="t"===o.value,o.setAttribute("checked","t"),o.setAttribute("name","t"),l=a.createDocumentFragment(),l.appendChild(o),t.appendChecked=o.checked,t.checkClone=l.cloneNode(!0).cloneNode(!0).lastChild.checked,d.attachEvent&&(d.attachEvent("onclick",function(){t.noCloneEvent=!1}),d.cloneNode(!0).click());for(f in{submit:!0,change:!0,focusin:!0})d.setAttribute(c="on"+f,"t"),t[f+"Bubbles"]=c in e||d.attributes[c].expando===!1;d.style.backgroundClip="content-box",d.cloneNode(!0).style.backgroundClip="",t.clearCloneStyle="content-box"===d.style.backgroundClip;for(f in x(t))break;return t.ownLast="0"!==f,x(function(){var n,r,o,s="padding:0;margin:0;border:0;display:block;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;",l=a.getElementsByTagName("body")[0];l&&(n=a.createElement("div"),n.style.cssText="border:0;width:0;height:0;position:absolute;top:0;left:-9999px;margin-top:1px",l.appendChild(n).appendChild(d),d.innerHTML="<table><tr><td></td><td>t</td></tr></table>",o=d.getElementsByTagName("td"),o[0].style.cssText="padding:0;margin:0;border:0;display:none",p=0===o[0].offsetHeight,o[0].style.display="",o[1].style.display="none",t.reliableHiddenOffsets=p&&0===o[0].offsetHeight,d.innerHTML="",d.style.cssText="box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;",x.swap(l,null!=l.style.zoom?{zoom:1}:{},function(){t.boxSizing=4===d.offsetWidth}),e.getComputedStyle&&(t.pixelPosition="1%"!==(e.getComputedStyle(d,null)||{}).top,t.boxSizingReliable="4px"===(e.getComputedStyle(d,null)||{width:"4px"}).width,r=d.appendChild(a.createElement("div")),r.style.cssText=d.style.cssText=s,r.style.marginRight=r.style.width="0",d.style.width="1px",t.reliableMarginRight=!parseFloat((e.getComputedStyle(r,null)||{}).marginRight)),typeof d.style.zoom!==i&&(d.innerHTML="",d.style.cssText=s+"width:1px;padding:1px;display:inline;zoom:1",t.inlineBlockNeedsLayout=3===d.offsetWidth,d.style.display="block",d.innerHTML="<div></div>",d.firstChild.style.width="5px",t.shrinkWrapBlocks=3!==d.offsetWidth,t.inlineBlockNeedsLayout&&(l.style.zoom=1)),l.removeChild(n),n=d=o=r=null)}),n=s=l=u=r=o=null,t
+}({});var B=/(?:\{[\s\S]*\}|\[[\s\S]*\])$/,P=/([A-Z])/g;function R(e,n,r,i){if(x.acceptData(e)){var o,a,s=x.expando,l=e.nodeType,u=l?x.cache:e,c=l?e[s]:e[s]&&s;if(c&&u[c]&&(i||u[c].data)||r!==t||"string"!=typeof n)return c||(c=l?e[s]=p.pop()||x.guid++:s),u[c]||(u[c]=l?{}:{toJSON:x.noop}),("object"==typeof n||"function"==typeof n)&&(i?u[c]=x.extend(u[c],n):u[c].data=x.extend(u[c].data,n)),a=u[c],i||(a.data||(a.data={}),a=a.data),r!==t&&(a[x.camelCase(n)]=r),"string"==typeof n?(o=a[n],null==o&&(o=a[x.camelCase(n)])):o=a,o}}function W(e,t,n){if(x.acceptData(e)){var r,i,o=e.nodeType,a=o?x.cache:e,s=o?e[x.expando]:x.expando;if(a[s]){if(t&&(r=n?a[s]:a[s].data)){x.isArray(t)?t=t.concat(x.map(t,x.camelCase)):t in r?t=[t]:(t=x.camelCase(t),t=t in r?[t]:t.split(" ")),i=t.length;while(i--)delete r[t[i]];if(n?!I(r):!x.isEmptyObject(r))return}(n||(delete a[s].data,I(a[s])))&&(o?x.cleanData([e],!0):x.support.deleteExpando||a!=a.window?delete a[s]:a[s]=null)}}}x.extend({cache:{},noData:{applet:!0,embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"},hasData:function(e){return e=e.nodeType?x.cache[e[x.expando]]:e[x.expando],!!e&&!I(e)},data:function(e,t,n){return R(e,t,n)},removeData:function(e,t){return W(e,t)},_data:function(e,t,n){return R(e,t,n,!0)},_removeData:function(e,t){return W(e,t,!0)},acceptData:function(e){if(e.nodeType&&1!==e.nodeType&&9!==e.nodeType)return!1;var t=e.nodeName&&x.noData[e.nodeName.toLowerCase()];return!t||t!==!0&&e.getAttribute("classid")===t}}),x.fn.extend({data:function(e,n){var r,i,o=null,a=0,s=this[0];if(e===t){if(this.length&&(o=x.data(s),1===s.nodeType&&!x._data(s,"parsedAttrs"))){for(r=s.attributes;r.length>a;a++)i=r[a].name,0===i.indexOf("data-")&&(i=x.camelCase(i.slice(5)),$(s,i,o[i]));x._data(s,"parsedAttrs",!0)}return o}return"object"==typeof e?this.each(function(){x.data(this,e)}):arguments.length>1?this.each(function(){x.data(this,e,n)}):s?$(s,e,x.data(s,e)):null},removeData:function(e){return this.each(function(){x.removeData(this,e)})}});function $(e,n,r){if(r===t&&1===e.nodeType){var i="data-"+n.replace(P,"-$1").toLowerCase();if(r=e.getAttribute(i),"string"==typeof r){try{r="true"===r?!0:"false"===r?!1:"null"===r?null:+r+""===r?+r:B.test(r)?x.parseJSON(r):r}catch(o){}x.data(e,n,r)}else r=t}return r}function I(e){var t;for(t in e)if(("data"!==t||!x.isEmptyObject(e[t]))&&"toJSON"!==t)return!1;return!0}x.extend({queue:function(e,n,r){var i;return e?(n=(n||"fx")+"queue",i=x._data(e,n),r&&(!i||x.isArray(r)?i=x._data(e,n,x.makeArray(r)):i.push(r)),i||[]):t},dequeue:function(e,t){t=t||"fx";var n=x.queue(e,t),r=n.length,i=n.shift(),o=x._queueHooks(e,t),a=function(){x.dequeue(e,t)};"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,a,o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return x._data(e,n)||x._data(e,n,{empty:x.Callbacks("once memory").add(function(){x._removeData(e,t+"queue"),x._removeData(e,n)})})}}),x.fn.extend({queue:function(e,n){var r=2;return"string"!=typeof e&&(n=e,e="fx",r--),r>arguments.length?x.queue(this[0],e):n===t?this:this.each(function(){var t=x.queue(this,e,n);x._queueHooks(this,e),"fx"===e&&"inprogress"!==t[0]&&x.dequeue(this,e)})},dequeue:function(e){return this.each(function(){x.dequeue(this,e)})},delay:function(e,t){return e=x.fx?x.fx.speeds[e]||e:e,t=t||"fx",this.queue(t,function(t,n){var r=setTimeout(t,e);n.stop=function(){clearTimeout(r)}})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,n){var r,i=1,o=x.Deferred(),a=this,s=this.length,l=function(){--i||o.resolveWith(a,[a])};"string"!=typeof e&&(n=e,e=t),e=e||"fx";while(s--)r=x._data(a[s],e+"queueHooks"),r&&r.empty&&(i++,r.empty.add(l));return l(),o.promise(n)}});var z,X,U=/[\t\r\n\f]/g,V=/\r/g,Y=/^(?:input|select|textarea|button|object)$/i,J=/^(?:a|area)$/i,G=/^(?:checked|selected)$/i,Q=x.support.getSetAttribute,K=x.support.input;x.fn.extend({attr:function(e,t){return x.access(this,x.attr,e,t,arguments.length>1)},removeAttr:function(e){return this.each(function(){x.removeAttr(this,e)})},prop:function(e,t){return x.access(this,x.prop,e,t,arguments.length>1)},removeProp:function(e){return e=x.propFix[e]||e,this.each(function(){try{this[e]=t,delete this[e]}catch(n){}})},addClass:function(e){var t,n,r,i,o,a=0,s=this.length,l="string"==typeof e&&e;if(x.isFunction(e))return this.each(function(t){x(this).addClass(e.call(this,t,this.className))});if(l)for(t=(e||"").match(T)||[];s>a;a++)if(n=this[a],r=1===n.nodeType&&(n.className?(" "+n.className+" ").replace(U," "):" ")){o=0;while(i=t[o++])0>r.indexOf(" "+i+" ")&&(r+=i+" ");n.className=x.trim(r)}return this},removeClass:function(e){var t,n,r,i,o,a=0,s=this.length,l=0===arguments.length||"string"==typeof e&&e;if(x.isFunction(e))return this.each(function(t){x(this).removeClass(e.call(this,t,this.className))});if(l)for(t=(e||"").match(T)||[];s>a;a++)if(n=this[a],r=1===n.nodeType&&(n.className?(" "+n.className+" ").replace(U," "):"")){o=0;while(i=t[o++])while(r.indexOf(" "+i+" ")>=0)r=r.replace(" "+i+" "," ");n.className=e?x.trim(r):""}return this},toggleClass:function(e,t){var n=typeof e;return"boolean"==typeof t&&"string"===n?t?this.addClass(e):this.removeClass(e):x.isFunction(e)?this.each(function(n){x(this).toggleClass(e.call(this,n,this.className,t),t)}):this.each(function(){if("string"===n){var t,r=0,o=x(this),a=e.match(T)||[];while(t=a[r++])o.hasClass(t)?o.removeClass(t):o.addClass(t)}else(n===i||"boolean"===n)&&(this.className&&x._data(this,"__className__",this.className),this.className=this.className||e===!1?"":x._data(this,"__className__")||"")})},hasClass:function(e){var t=" "+e+" ",n=0,r=this.length;for(;r>n;n++)if(1===this[n].nodeType&&(" "+this[n].className+" ").replace(U," ").indexOf(t)>=0)return!0;return!1},val:function(e){var n,r,i,o=this[0];{if(arguments.length)return i=x.isFunction(e),this.each(function(n){var o;1===this.nodeType&&(o=i?e.call(this,n,x(this).val()):e,null==o?o="":"number"==typeof o?o+="":x.isArray(o)&&(o=x.map(o,function(e){return null==e?"":e+""})),r=x.valHooks[this.type]||x.valHooks[this.nodeName.toLowerCase()],r&&"set"in r&&r.set(this,o,"value")!==t||(this.value=o))});if(o)return r=x.valHooks[o.type]||x.valHooks[o.nodeName.toLowerCase()],r&&"get"in r&&(n=r.get(o,"value"))!==t?n:(n=o.value,"string"==typeof n?n.replace(V,""):null==n?"":n)}}}),x.extend({valHooks:{option:{get:function(e){var t=x.find.attr(e,"value");return null!=t?t:e.text}},select:{get:function(e){var t,n,r=e.options,i=e.selectedIndex,o="select-one"===e.type||0>i,a=o?null:[],s=o?i+1:r.length,l=0>i?s:o?i:0;for(;s>l;l++)if(n=r[l],!(!n.selected&&l!==i||(x.support.optDisabled?n.disabled:null!==n.getAttribute("disabled"))||n.parentNode.disabled&&x.nodeName(n.parentNode,"optgroup"))){if(t=x(n).val(),o)return t;a.push(t)}return a},set:function(e,t){var n,r,i=e.options,o=x.makeArray(t),a=i.length;while(a--)r=i[a],(r.selected=x.inArray(x(r).val(),o)>=0)&&(n=!0);return n||(e.selectedIndex=-1),o}}},attr:function(e,n,r){var o,a,s=e.nodeType;if(e&&3!==s&&8!==s&&2!==s)return typeof e.getAttribute===i?x.prop(e,n,r):(1===s&&x.isXMLDoc(e)||(n=n.toLowerCase(),o=x.attrHooks[n]||(x.expr.match.bool.test(n)?X:z)),r===t?o&&"get"in o&&null!==(a=o.get(e,n))?a:(a=x.find.attr(e,n),null==a?t:a):null!==r?o&&"set"in o&&(a=o.set(e,r,n))!==t?a:(e.setAttribute(n,r+""),r):(x.removeAttr(e,n),t))},removeAttr:function(e,t){var n,r,i=0,o=t&&t.match(T);if(o&&1===e.nodeType)while(n=o[i++])r=x.propFix[n]||n,x.expr.match.bool.test(n)?K&&Q||!G.test(n)?e[r]=!1:e[x.camelCase("default-"+n)]=e[r]=!1:x.attr(e,n,""),e.removeAttribute(Q?n:r)},attrHooks:{type:{set:function(e,t){if(!x.support.radioValue&&"radio"===t&&x.nodeName(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},propFix:{"for":"htmlFor","class":"className"},prop:function(e,n,r){var i,o,a,s=e.nodeType;if(e&&3!==s&&8!==s&&2!==s)return a=1!==s||!x.isXMLDoc(e),a&&(n=x.propFix[n]||n,o=x.propHooks[n]),r!==t?o&&"set"in o&&(i=o.set(e,r,n))!==t?i:e[n]=r:o&&"get"in o&&null!==(i=o.get(e,n))?i:e[n]},propHooks:{tabIndex:{get:function(e){var t=x.find.attr(e,"tabindex");return t?parseInt(t,10):Y.test(e.nodeName)||J.test(e.nodeName)&&e.href?0:-1}}}}),X={set:function(e,t,n){return t===!1?x.removeAttr(e,n):K&&Q||!G.test(n)?e.setAttribute(!Q&&x.propFix[n]||n,n):e[x.camelCase("default-"+n)]=e[n]=!0,n}},x.each(x.expr.match.bool.source.match(/\w+/g),function(e,n){var r=x.expr.attrHandle[n]||x.find.attr;x.expr.attrHandle[n]=K&&Q||!G.test(n)?function(e,n,i){var o=x.expr.attrHandle[n],a=i?t:(x.expr.attrHandle[n]=t)!=r(e,n,i)?n.toLowerCase():null;return x.expr.attrHandle[n]=o,a}:function(e,n,r){return r?t:e[x.camelCase("default-"+n)]?n.toLowerCase():null}}),K&&Q||(x.attrHooks.value={set:function(e,n,r){return x.nodeName(e,"input")?(e.defaultValue=n,t):z&&z.set(e,n,r)}}),Q||(z={set:function(e,n,r){var i=e.getAttributeNode(r);return i||e.setAttributeNode(i=e.ownerDocument.createAttribute(r)),i.value=n+="","value"===r||n===e.getAttribute(r)?n:t}},x.expr.attrHandle.id=x.expr.attrHandle.name=x.expr.attrHandle.coords=function(e,n,r){var i;return r?t:(i=e.getAttributeNode(n))&&""!==i.value?i.value:null},x.valHooks.button={get:function(e,n){var r=e.getAttributeNode(n);return r&&r.specified?r.value:t},set:z.set},x.attrHooks.contenteditable={set:function(e,t,n){z.set(e,""===t?!1:t,n)}},x.each(["width","height"],function(e,n){x.attrHooks[n]={set:function(e,r){return""===r?(e.setAttribute(n,"auto"),r):t}}})),x.support.hrefNormalized||x.each(["href","src"],function(e,t){x.propHooks[t]={get:function(e){return e.getAttribute(t,4)}}}),x.support.style||(x.attrHooks.style={get:function(e){return e.style.cssText||t},set:function(e,t){return e.style.cssText=t+""}}),x.support.optSelected||(x.propHooks.selected={get:function(e){var t=e.parentNode;return t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex),null}}),x.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){x.propFix[this.toLowerCase()]=this}),x.support.enctype||(x.propFix.enctype="encoding"),x.each(["radio","checkbox"],function(){x.valHooks[this]={set:function(e,n){return x.isArray(n)?e.checked=x.inArray(x(e).val(),n)>=0:t}},x.support.checkOn||(x.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})});var Z=/^(?:input|select|textarea)$/i,et=/^key/,tt=/^(?:mouse|contextmenu)|click/,nt=/^(?:focusinfocus|focusoutblur)$/,rt=/^([^.]*)(?:\.(.+)|)$/;function it(){return!0}function ot(){return!1}function at(){try{return a.activeElement}catch(e){}}x.event={global:{},add:function(e,n,r,o,a){var s,l,u,c,p,f,d,h,g,m,y,v=x._data(e);if(v){r.handler&&(c=r,r=c.handler,a=c.selector),r.guid||(r.guid=x.guid++),(l=v.events)||(l=v.events={}),(f=v.handle)||(f=v.handle=function(e){return typeof x===i||e&&x.event.triggered===e.type?t:x.event.dispatch.apply(f.elem,arguments)},f.elem=e),n=(n||"").match(T)||[""],u=n.length;while(u--)s=rt.exec(n[u])||[],g=y=s[1],m=(s[2]||"").split(".").sort(),g&&(p=x.event.special[g]||{},g=(a?p.delegateType:p.bindType)||g,p=x.event.special[g]||{},d=x.extend({type:g,origType:y,data:o,handler:r,guid:r.guid,selector:a,needsContext:a&&x.expr.match.needsContext.test(a),namespace:m.join(".")},c),(h=l[g])||(h=l[g]=[],h.delegateCount=0,p.setup&&p.setup.call(e,o,m,f)!==!1||(e.addEventListener?e.addEventListener(g,f,!1):e.attachEvent&&e.attachEvent("on"+g,f))),p.add&&(p.add.call(e,d),d.handler.guid||(d.handler.guid=r.guid)),a?h.splice(h.delegateCount++,0,d):h.push(d),x.event.global[g]=!0);e=null}},remove:function(e,t,n,r,i){var o,a,s,l,u,c,p,f,d,h,g,m=x.hasData(e)&&x._data(e);if(m&&(c=m.events)){t=(t||"").match(T)||[""],u=t.length;while(u--)if(s=rt.exec(t[u])||[],d=g=s[1],h=(s[2]||"").split(".").sort(),d){p=x.event.special[d]||{},d=(r?p.delegateType:p.bindType)||d,f=c[d]||[],s=s[2]&&RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),l=o=f.length;while(o--)a=f[o],!i&&g!==a.origType||n&&n.guid!==a.guid||s&&!s.test(a.namespace)||r&&r!==a.selector&&("**"!==r||!a.selector)||(f.splice(o,1),a.selector&&f.delegateCount--,p.remove&&p.remove.call(e,a));l&&!f.length&&(p.teardown&&p.teardown.call(e,h,m.handle)!==!1||x.removeEvent(e,d,m.handle),delete c[d])}else for(d in c)x.event.remove(e,d+t[u],n,r,!0);x.isEmptyObject(c)&&(delete m.handle,x._removeData(e,"events"))}},trigger:function(n,r,i,o){var s,l,u,c,p,f,d,h=[i||a],g=v.call(n,"type")?n.type:n,m=v.call(n,"namespace")?n.namespace.split("."):[];if(u=f=i=i||a,3!==i.nodeType&&8!==i.nodeType&&!nt.test(g+x.event.triggered)&&(g.indexOf(".")>=0&&(m=g.split("."),g=m.shift(),m.sort()),l=0>g.indexOf(":")&&"on"+g,n=n[x.expando]?n:new x.Event(g,"object"==typeof n&&n),n.isTrigger=o?2:3,n.namespace=m.join("."),n.namespace_re=n.namespace?RegExp("(^|\\.)"+m.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,n.result=t,n.target||(n.target=i),r=null==r?[n]:x.makeArray(r,[n]),p=x.event.special[g]||{},o||!p.trigger||p.trigger.apply(i,r)!==!1)){if(!o&&!p.noBubble&&!x.isWindow(i)){for(c=p.delegateType||g,nt.test(c+g)||(u=u.parentNode);u;u=u.parentNode)h.push(u),f=u;f===(i.ownerDocument||a)&&h.push(f.defaultView||f.parentWindow||e)}d=0;while((u=h[d++])&&!n.isPropagationStopped())n.type=d>1?c:p.bindType||g,s=(x._data(u,"events")||{})[n.type]&&x._data(u,"handle"),s&&s.apply(u,r),s=l&&u[l],s&&x.acceptData(u)&&s.apply&&s.apply(u,r)===!1&&n.preventDefault();if(n.type=g,!o&&!n.isDefaultPrevented()&&(!p._default||p._default.apply(h.pop(),r)===!1)&&x.acceptData(i)&&l&&i[g]&&!x.isWindow(i)){f=i[l],f&&(i[l]=null),x.event.triggered=g;try{i[g]()}catch(y){}x.event.triggered=t,f&&(i[l]=f)}return n.result}},dispatch:function(e){e=x.event.fix(e);var n,r,i,o,a,s=[],l=g.call(arguments),u=(x._data(this,"events")||{})[e.type]||[],c=x.event.special[e.type]||{};if(l[0]=e,e.delegateTarget=this,!c.preDispatch||c.preDispatch.call(this,e)!==!1){s=x.event.handlers.call(this,e,u),n=0;while((o=s[n++])&&!e.isPropagationStopped()){e.currentTarget=o.elem,a=0;while((i=o.handlers[a++])&&!e.isImmediatePropagationStopped())(!e.namespace_re||e.namespace_re.test(i.namespace))&&(e.handleObj=i,e.data=i.data,r=((x.event.special[i.origType]||{}).handle||i.handler).apply(o.elem,l),r!==t&&(e.result=r)===!1&&(e.preventDefault(),e.stopPropagation()))}return c.postDispatch&&c.postDispatch.call(this,e),e.result}},handlers:function(e,n){var r,i,o,a,s=[],l=n.delegateCount,u=e.target;if(l&&u.nodeType&&(!e.button||"click"!==e.type))for(;u!=this;u=u.parentNode||this)if(1===u.nodeType&&(u.disabled!==!0||"click"!==e.type)){for(o=[],a=0;l>a;a++)i=n[a],r=i.selector+" ",o[r]===t&&(o[r]=i.needsContext?x(r,this).index(u)>=0:x.find(r,this,null,[u]).length),o[r]&&o.push(i);o.length&&s.push({elem:u,handlers:o})}return n.length>l&&s.push({elem:this,handlers:n.slice(l)}),s},fix:function(e){if(e[x.expando])return e;var t,n,r,i=e.type,o=e,s=this.fixHooks[i];s||(this.fixHooks[i]=s=tt.test(i)?this.mouseHooks:et.test(i)?this.keyHooks:{}),r=s.props?this.props.concat(s.props):this.props,e=new x.Event(o),t=r.length;while(t--)n=r[t],e[n]=o[n];return e.target||(e.target=o.srcElement||a),3===e.target.nodeType&&(e.target=e.target.parentNode),e.metaKey=!!e.metaKey,s.filter?s.filter(e,o):e},props:"altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(e,t){return null==e.which&&(e.which=null!=t.charCode?t.charCode:t.keyCode),e}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(e,n){var r,i,o,s=n.button,l=n.fromElement;return null==e.pageX&&null!=n.clientX&&(i=e.target.ownerDocument||a,o=i.documentElement,r=i.body,e.pageX=n.clientX+(o&&o.scrollLeft||r&&r.scrollLeft||0)-(o&&o.clientLeft||r&&r.clientLeft||0),e.pageY=n.clientY+(o&&o.scrollTop||r&&r.scrollTop||0)-(o&&o.clientTop||r&&r.clientTop||0)),!e.relatedTarget&&l&&(e.relatedTarget=l===e.target?n.toElement:l),e.which||s===t||(e.which=1&s?1:2&s?3:4&s?2:0),e}},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==at()&&this.focus)try{return this.focus(),!1}catch(e){}},delegateType:"focusin"},blur:{trigger:function(){return this===at()&&this.blur?(this.blur(),!1):t},delegateType:"focusout"},click:{trigger:function(){return x.nodeName(this,"input")&&"checkbox"===this.type&&this.click?(this.click(),!1):t},_default:function(e){return x.nodeName(e.target,"a")}},beforeunload:{postDispatch:function(e){e.result!==t&&(e.originalEvent.returnValue=e.result)}}},simulate:function(e,t,n,r){var i=x.extend(new x.Event,n,{type:e,isSimulated:!0,originalEvent:{}});r?x.event.trigger(i,null,t):x.event.dispatch.call(t,i),i.isDefaultPrevented()&&n.preventDefault()}},x.removeEvent=a.removeEventListener?function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n,!1)}:function(e,t,n){var r="on"+t;e.detachEvent&&(typeof e[r]===i&&(e[r]=null),e.detachEvent(r,n))},x.Event=function(e,n){return this instanceof x.Event?(e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||e.returnValue===!1||e.getPreventDefault&&e.getPreventDefault()?it:ot):this.type=e,n&&x.extend(this,n),this.timeStamp=e&&e.timeStamp||x.now(),this[x.expando]=!0,t):new x.Event(e,n)},x.Event.prototype={isDefaultPrevented:ot,isPropagationStopped:ot,isImmediatePropagationStopped:ot,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=it,e&&(e.preventDefault?e.preventDefault():e.returnValue=!1)},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=it,e&&(e.stopPropagation&&e.stopPropagation(),e.cancelBubble=!0)},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=it,this.stopPropagation()}},x.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(e,t){x.event.special[e]={delegateType:t,bindType:t,handle:function(e){var n,r=this,i=e.relatedTarget,o=e.handleObj;return(!i||i!==r&&!x.contains(r,i))&&(e.type=o.origType,n=o.handler.apply(this,arguments),e.type=t),n}}}),x.support.submitBubbles||(x.event.special.submit={setup:function(){return x.nodeName(this,"form")?!1:(x.event.add(this,"click._submit keypress._submit",function(e){var n=e.target,r=x.nodeName(n,"input")||x.nodeName(n,"button")?n.form:t;r&&!x._data(r,"submitBubbles")&&(x.event.add(r,"submit._submit",function(e){e._submit_bubble=!0}),x._data(r,"submitBubbles",!0))}),t)},postDispatch:function(e){e._submit_bubble&&(delete e._submit_bubble,this.parentNode&&!e.isTrigger&&x.event.simulate("submit",this.parentNode,e,!0))},teardown:function(){return x.nodeName(this,"form")?!1:(x.event.remove(this,"._submit"),t)}}),x.support.changeBubbles||(x.event.special.change={setup:function(){return Z.test(this.nodeName)?(("checkbox"===this.type||"radio"===this.type)&&(x.event.add(this,"propertychange._change",function(e){"checked"===e.originalEvent.propertyName&&(this._just_changed=!0)}),x.event.add(this,"click._change",function(e){this._just_changed&&!e.isTrigger&&(this._just_changed=!1),x.event.simulate("change",this,e,!0)})),!1):(x.event.add(this,"beforeactivate._change",function(e){var t=e.target;Z.test(t.nodeName)&&!x._data(t,"changeBubbles")&&(x.event.add(t,"change._change",function(e){!this.parentNode||e.isSimulated||e.isTrigger||x.event.simulate("change",this.parentNode,e,!0)}),x._data(t,"changeBubbles",!0))}),t)},handle:function(e){var n=e.target;return this!==n||e.isSimulated||e.isTrigger||"radio"!==n.type&&"checkbox"!==n.type?e.handleObj.handler.apply(this,arguments):t},teardown:function(){return x.event.remove(this,"._change"),!Z.test(this.nodeName)}}),x.support.focusinBubbles||x.each({focus:"focusin",blur:"focusout"},function(e,t){var n=0,r=function(e){x.event.simulate(t,e.target,x.event.fix(e),!0)};x.event.special[t]={setup:function(){0===n++&&a.addEventListener(e,r,!0)},teardown:function(){0===--n&&a.removeEventListener(e,r,!0)}}}),x.fn.extend({on:function(e,n,r,i,o){var a,s;if("object"==typeof e){"string"!=typeof n&&(r=r||n,n=t);for(a in e)this.on(a,n,r,e[a],o);return this}if(null==r&&null==i?(i=n,r=n=t):null==i&&("string"==typeof n?(i=r,r=t):(i=r,r=n,n=t)),i===!1)i=ot;else if(!i)return this;return 1===o&&(s=i,i=function(e){return x().off(e),s.apply(this,arguments)},i.guid=s.guid||(s.guid=x.guid++)),this.each(function(){x.event.add(this,e,i,r,n)})},one:function(e,t,n,r){return this.on(e,t,n,r,1)},off:function(e,n,r){var i,o;if(e&&e.preventDefault&&e.handleObj)return i=e.handleObj,x(e.delegateTarget).off(i.namespace?i.origType+"."+i.namespace:i.origType,i.selector,i.handler),this;if("object"==typeof e){for(o in e)this.off(o,n,e[o]);return this}return(n===!1||"function"==typeof n)&&(r=n,n=t),r===!1&&(r=ot),this.each(function(){x.event.remove(this,e,r,n)})},trigger:function(e,t){return this.each(function(){x.event.trigger(e,t,this)})},triggerHandler:function(e,n){var r=this[0];return r?x.event.trigger(e,n,r,!0):t}});var st=/^.[^:#\[\.,]*$/,lt=/^(?:parents|prev(?:Until|All))/,ut=x.expr.match.needsContext,ct={children:!0,contents:!0,next:!0,prev:!0};x.fn.extend({find:function(e){var t,n=[],r=this,i=r.length;if("string"!=typeof e)return this.pushStack(x(e).filter(function(){for(t=0;i>t;t++)if(x.contains(r[t],this))return!0}));for(t=0;i>t;t++)x.find(e,r[t],n);return n=this.pushStack(i>1?x.unique(n):n),n.selector=this.selector?this.selector+" "+e:e,n},has:function(e){var t,n=x(e,this),r=n.length;return this.filter(function(){for(t=0;r>t;t++)if(x.contains(this,n[t]))return!0})},not:function(e){return this.pushStack(ft(this,e||[],!0))},filter:function(e){return this.pushStack(ft(this,e||[],!1))},is:function(e){return!!ft(this,"string"==typeof e&&ut.test(e)?x(e):e||[],!1).length},closest:function(e,t){var n,r=0,i=this.length,o=[],a=ut.test(e)||"string"!=typeof e?x(e,t||this.context):0;for(;i>r;r++)for(n=this[r];n&&n!==t;n=n.parentNode)if(11>n.nodeType&&(a?a.index(n)>-1:1===n.nodeType&&x.find.matchesSelector(n,e))){n=o.push(n);break}return this.pushStack(o.length>1?x.unique(o):o)},index:function(e){return e?"string"==typeof e?x.inArray(this[0],x(e)):x.inArray(e.jquery?e[0]:e,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){var n="string"==typeof e?x(e,t):x.makeArray(e&&e.nodeType?[e]:e),r=x.merge(this.get(),n);return this.pushStack(x.unique(r))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}});function pt(e,t){do e=e[t];while(e&&1!==e.nodeType);return e}x.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return x.dir(e,"parentNode")},parentsUntil:function(e,t,n){return x.dir(e,"parentNode",n)},next:function(e){return pt(e,"nextSibling")},prev:function(e){return pt(e,"previousSibling")},nextAll:function(e){return x.dir(e,"nextSibling")},prevAll:function(e){return x.dir(e,"previousSibling")},nextUntil:function(e,t,n){return x.dir(e,"nextSibling",n)},prevUntil:function(e,t,n){return x.dir(e,"previousSibling",n)},siblings:function(e){return x.sibling((e.parentNode||{}).firstChild,e)},children:function(e){return x.sibling(e.firstChild)},contents:function(e){return x.nodeName(e,"iframe")?e.contentDocument||e.contentWindow.document:x.merge([],e.childNodes)}},function(e,t){x.fn[e]=function(n,r){var i=x.map(this,t,n);return"Until"!==e.slice(-5)&&(r=n),r&&"string"==typeof r&&(i=x.filter(r,i)),this.length>1&&(ct[e]||(i=x.unique(i)),lt.test(e)&&(i=i.reverse())),this.pushStack(i)}}),x.extend({filter:function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?x.find.matchesSelector(r,e)?[r]:[]:x.find.matches(e,x.grep(t,function(e){return 1===e.nodeType}))},dir:function(e,n,r){var i=[],o=e[n];while(o&&9!==o.nodeType&&(r===t||1!==o.nodeType||!x(o).is(r)))1===o.nodeType&&i.push(o),o=o[n];return i},sibling:function(e,t){var n=[];for(;e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n}});function ft(e,t,n){if(x.isFunction(t))return x.grep(e,function(e,r){return!!t.call(e,r,e)!==n});if(t.nodeType)return x.grep(e,function(e){return e===t!==n});if("string"==typeof t){if(st.test(t))return x.filter(t,e,n);t=x.filter(t,e)}return x.grep(e,function(e){return x.inArray(e,t)>=0!==n})}function dt(e){var t=ht.split("|"),n=e.createDocumentFragment();if(n.createElement)while(t.length)n.createElement(t.pop());return n}var ht="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",gt=/ jQuery\d+="(?:null|\d+)"/g,mt=RegExp("<(?:"+ht+")[\\s/>]","i"),yt=/^\s+/,vt=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,bt=/<([\w:]+)/,xt=/<tbody/i,wt=/<|&#?\w+;/,Tt=/<(?:script|style|link)/i,Ct=/^(?:checkbox|radio)$/i,Nt=/checked\s*(?:[^=]|=\s*.checked.)/i,kt=/^$|\/(?:java|ecma)script/i,Et=/^true\/(.*)/,St=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,At={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],area:[1,"<map>","</map>"],param:[1,"<object>","</object>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:x.support.htmlSerialize?[0,"",""]:[1,"X<div>","</div>"]},jt=dt(a),Dt=jt.appendChild(a.createElement("div"));At.optgroup=At.option,At.tbody=At.tfoot=At.colgroup=At.caption=At.thead,At.th=At.td,x.fn.extend({text:function(e){return x.access(this,function(e){return e===t?x.text(this):this.empty().append((this[0]&&this[0].ownerDocument||a).createTextNode(e))},null,e,arguments.length)},append:function(){return this.domManip(arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Lt(this,e);t.appendChild(e)}})},prepend:function(){return this.domManip(arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Lt(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return this.domManip(arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return this.domManip(arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},remove:function(e,t){var n,r=e?x.filter(e,this):this,i=0;for(;null!=(n=r[i]);i++)t||1!==n.nodeType||x.cleanData(Ft(n)),n.parentNode&&(t&&x.contains(n.ownerDocument,n)&&_t(Ft(n,"script")),n.parentNode.removeChild(n));return this},empty:function(){var e,t=0;for(;null!=(e=this[t]);t++){1===e.nodeType&&x.cleanData(Ft(e,!1));while(e.firstChild)e.removeChild(e.firstChild);e.options&&x.nodeName(e,"select")&&(e.options.length=0)}return this},clone:function(e,t){return e=null==e?!1:e,t=null==t?e:t,this.map(function(){return x.clone(this,e,t)})},html:function(e){return x.access(this,function(e){var n=this[0]||{},r=0,i=this.length;if(e===t)return 1===n.nodeType?n.innerHTML.replace(gt,""):t;if(!("string"!=typeof e||Tt.test(e)||!x.support.htmlSerialize&&mt.test(e)||!x.support.leadingWhitespace&&yt.test(e)||At[(bt.exec(e)||["",""])[1].toLowerCase()])){e=e.replace(vt,"<$1></$2>");try{for(;i>r;r++)n=this[r]||{},1===n.nodeType&&(x.cleanData(Ft(n,!1)),n.innerHTML=e);n=0}catch(o){}}n&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var e=x.map(this,function(e){return[e.nextSibling,e.parentNode]}),t=0;return this.domManip(arguments,function(n){var r=e[t++],i=e[t++];i&&(r&&r.parentNode!==i&&(r=this.nextSibling),x(this).remove(),i.insertBefore(n,r))},!0),t?this:this.remove()},detach:function(e){return this.remove(e,!0)},domManip:function(e,t,n){e=d.apply([],e);var r,i,o,a,s,l,u=0,c=this.length,p=this,f=c-1,h=e[0],g=x.isFunction(h);if(g||!(1>=c||"string"!=typeof h||x.support.checkClone)&&Nt.test(h))return this.each(function(r){var i=p.eq(r);g&&(e[0]=h.call(this,r,i.html())),i.domManip(e,t,n)});if(c&&(l=x.buildFragment(e,this[0].ownerDocument,!1,!n&&this),r=l.firstChild,1===l.childNodes.length&&(l=r),r)){for(a=x.map(Ft(l,"script"),Ht),o=a.length;c>u;u++)i=l,u!==f&&(i=x.clone(i,!0,!0),o&&x.merge(a,Ft(i,"script"))),t.call(this[u],i,u);if(o)for(s=a[a.length-1].ownerDocument,x.map(a,qt),u=0;o>u;u++)i=a[u],kt.test(i.type||"")&&!x._data(i,"globalEval")&&x.contains(s,i)&&(i.src?x._evalUrl(i.src):x.globalEval((i.text||i.textContent||i.innerHTML||"").replace(St,"")));l=r=null}return this}});function Lt(e,t){return x.nodeName(e,"table")&&x.nodeName(1===t.nodeType?t:t.firstChild,"tr")?e.getElementsByTagName("tbody")[0]||e.appendChild(e.ownerDocument.createElement("tbody")):e}function Ht(e){return e.type=(null!==x.find.attr(e,"type"))+"/"+e.type,e}function qt(e){var t=Et.exec(e.type);return t?e.type=t[1]:e.removeAttribute("type"),e}function _t(e,t){var n,r=0;for(;null!=(n=e[r]);r++)x._data(n,"globalEval",!t||x._data(t[r],"globalEval"))}function Mt(e,t){if(1===t.nodeType&&x.hasData(e)){var n,r,i,o=x._data(e),a=x._data(t,o),s=o.events;if(s){delete a.handle,a.events={};for(n in s)for(r=0,i=s[n].length;i>r;r++)x.event.add(t,n,s[n][r])}a.data&&(a.data=x.extend({},a.data))}}function Ot(e,t){var n,r,i;if(1===t.nodeType){if(n=t.nodeName.toLowerCase(),!x.support.noCloneEvent&&t[x.expando]){i=x._data(t);for(r in i.events)x.removeEvent(t,r,i.handle);t.removeAttribute(x.expando)}"script"===n&&t.text!==e.text?(Ht(t).text=e.text,qt(t)):"object"===n?(t.parentNode&&(t.outerHTML=e.outerHTML),x.support.html5Clone&&e.innerHTML&&!x.trim(t.innerHTML)&&(t.innerHTML=e.innerHTML)):"input"===n&&Ct.test(e.type)?(t.defaultChecked=t.checked=e.checked,t.value!==e.value&&(t.value=e.value)):"option"===n?t.defaultSelected=t.selected=e.defaultSelected:("input"===n||"textarea"===n)&&(t.defaultValue=e.defaultValue)}}x.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,t){x.fn[e]=function(e){var n,r=0,i=[],o=x(e),a=o.length-1;for(;a>=r;r++)n=r===a?this:this.clone(!0),x(o[r])[t](n),h.apply(i,n.get());return this.pushStack(i)}});function Ft(e,n){var r,o,a=0,s=typeof e.getElementsByTagName!==i?e.getElementsByTagName(n||"*"):typeof e.querySelectorAll!==i?e.querySelectorAll(n||"*"):t;if(!s)for(s=[],r=e.childNodes||e;null!=(o=r[a]);a++)!n||x.nodeName(o,n)?s.push(o):x.merge(s,Ft(o,n));return n===t||n&&x.nodeName(e,n)?x.merge([e],s):s}function Bt(e){Ct.test(e.type)&&(e.defaultChecked=e.checked)}x.extend({clone:function(e,t,n){var r,i,o,a,s,l=x.contains(e.ownerDocument,e);if(x.support.html5Clone||x.isXMLDoc(e)||!mt.test("<"+e.nodeName+">")?o=e.cloneNode(!0):(Dt.innerHTML=e.outerHTML,Dt.removeChild(o=Dt.firstChild)),!(x.support.noCloneEvent&&x.support.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||x.isXMLDoc(e)))for(r=Ft(o),s=Ft(e),a=0;null!=(i=s[a]);++a)r[a]&&Ot(i,r[a]);if(t)if(n)for(s=s||Ft(e),r=r||Ft(o),a=0;null!=(i=s[a]);a++)Mt(i,r[a]);else Mt(e,o);return r=Ft(o,"script"),r.length>0&&_t(r,!l&&Ft(e,"script")),r=s=i=null,o},buildFragment:function(e,t,n,r){var i,o,a,s,l,u,c,p=e.length,f=dt(t),d=[],h=0;for(;p>h;h++)if(o=e[h],o||0===o)if("object"===x.type(o))x.merge(d,o.nodeType?[o]:o);else if(wt.test(o)){s=s||f.appendChild(t.createElement("div")),l=(bt.exec(o)||["",""])[1].toLowerCase(),c=At[l]||At._default,s.innerHTML=c[1]+o.replace(vt,"<$1></$2>")+c[2],i=c[0];while(i--)s=s.lastChild;if(!x.support.leadingWhitespace&&yt.test(o)&&d.push(t.createTextNode(yt.exec(o)[0])),!x.support.tbody){o="table"!==l||xt.test(o)?"<table>"!==c[1]||xt.test(o)?0:s:s.firstChild,i=o&&o.childNodes.length;while(i--)x.nodeName(u=o.childNodes[i],"tbody")&&!u.childNodes.length&&o.removeChild(u)}x.merge(d,s.childNodes),s.textContent="";while(s.firstChild)s.removeChild(s.firstChild);s=f.lastChild}else d.push(t.createTextNode(o));s&&f.removeChild(s),x.support.appendChecked||x.grep(Ft(d,"input"),Bt),h=0;while(o=d[h++])if((!r||-1===x.inArray(o,r))&&(a=x.contains(o.ownerDocument,o),s=Ft(f.appendChild(o),"script"),a&&_t(s),n)){i=0;while(o=s[i++])kt.test(o.type||"")&&n.push(o)}return s=null,f},cleanData:function(e,t){var n,r,o,a,s=0,l=x.expando,u=x.cache,c=x.support.deleteExpando,f=x.event.special;for(;null!=(n=e[s]);s++)if((t||x.acceptData(n))&&(o=n[l],a=o&&u[o])){if(a.events)for(r in a.events)f[r]?x.event.remove(n,r):x.removeEvent(n,r,a.handle);
+u[o]&&(delete u[o],c?delete n[l]:typeof n.removeAttribute!==i?n.removeAttribute(l):n[l]=null,p.push(o))}},_evalUrl:function(e){return x.ajax({url:e,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0})}}),x.fn.extend({wrapAll:function(e){if(x.isFunction(e))return this.each(function(t){x(this).wrapAll(e.call(this,t))});if(this[0]){var t=x(e,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstChild&&1===e.firstChild.nodeType)e=e.firstChild;return e}).append(this)}return this},wrapInner:function(e){return x.isFunction(e)?this.each(function(t){x(this).wrapInner(e.call(this,t))}):this.each(function(){var t=x(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=x.isFunction(e);return this.each(function(n){x(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(){return this.parent().each(function(){x.nodeName(this,"body")||x(this).replaceWith(this.childNodes)}).end()}});var Pt,Rt,Wt,$t=/alpha\([^)]*\)/i,It=/opacity\s*=\s*([^)]*)/,zt=/^(top|right|bottom|left)$/,Xt=/^(none|table(?!-c[ea]).+)/,Ut=/^margin/,Vt=RegExp("^("+w+")(.*)$","i"),Yt=RegExp("^("+w+")(?!px)[a-z%]+$","i"),Jt=RegExp("^([+-])=("+w+")","i"),Gt={BODY:"block"},Qt={position:"absolute",visibility:"hidden",display:"block"},Kt={letterSpacing:0,fontWeight:400},Zt=["Top","Right","Bottom","Left"],en=["Webkit","O","Moz","ms"];function tn(e,t){if(t in e)return t;var n=t.charAt(0).toUpperCase()+t.slice(1),r=t,i=en.length;while(i--)if(t=en[i]+n,t in e)return t;return r}function nn(e,t){return e=t||e,"none"===x.css(e,"display")||!x.contains(e.ownerDocument,e)}function rn(e,t){var n,r,i,o=[],a=0,s=e.length;for(;s>a;a++)r=e[a],r.style&&(o[a]=x._data(r,"olddisplay"),n=r.style.display,t?(o[a]||"none"!==n||(r.style.display=""),""===r.style.display&&nn(r)&&(o[a]=x._data(r,"olddisplay",ln(r.nodeName)))):o[a]||(i=nn(r),(n&&"none"!==n||!i)&&x._data(r,"olddisplay",i?n:x.css(r,"display"))));for(a=0;s>a;a++)r=e[a],r.style&&(t&&"none"!==r.style.display&&""!==r.style.display||(r.style.display=t?o[a]||"":"none"));return e}x.fn.extend({css:function(e,n){return x.access(this,function(e,n,r){var i,o,a={},s=0;if(x.isArray(n)){for(o=Rt(e),i=n.length;i>s;s++)a[n[s]]=x.css(e,n[s],!1,o);return a}return r!==t?x.style(e,n,r):x.css(e,n)},e,n,arguments.length>1)},show:function(){return rn(this,!0)},hide:function(){return rn(this)},toggle:function(e){return"boolean"==typeof e?e?this.show():this.hide():this.each(function(){nn(this)?x(this).show():x(this).hide()})}}),x.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=Wt(e,"opacity");return""===n?"1":n}}}},cssNumber:{columnCount:!0,fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":x.support.cssFloat?"cssFloat":"styleFloat"},style:function(e,n,r,i){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var o,a,s,l=x.camelCase(n),u=e.style;if(n=x.cssProps[l]||(x.cssProps[l]=tn(u,l)),s=x.cssHooks[n]||x.cssHooks[l],r===t)return s&&"get"in s&&(o=s.get(e,!1,i))!==t?o:u[n];if(a=typeof r,"string"===a&&(o=Jt.exec(r))&&(r=(o[1]+1)*o[2]+parseFloat(x.css(e,n)),a="number"),!(null==r||"number"===a&&isNaN(r)||("number"!==a||x.cssNumber[l]||(r+="px"),x.support.clearCloneStyle||""!==r||0!==n.indexOf("background")||(u[n]="inherit"),s&&"set"in s&&(r=s.set(e,r,i))===t)))try{u[n]=r}catch(c){}}},css:function(e,n,r,i){var o,a,s,l=x.camelCase(n);return n=x.cssProps[l]||(x.cssProps[l]=tn(e.style,l)),s=x.cssHooks[n]||x.cssHooks[l],s&&"get"in s&&(a=s.get(e,!0,r)),a===t&&(a=Wt(e,n,i)),"normal"===a&&n in Kt&&(a=Kt[n]),""===r||r?(o=parseFloat(a),r===!0||x.isNumeric(o)?o||0:a):a}}),e.getComputedStyle?(Rt=function(t){return e.getComputedStyle(t,null)},Wt=function(e,n,r){var i,o,a,s=r||Rt(e),l=s?s.getPropertyValue(n)||s[n]:t,u=e.style;return s&&(""!==l||x.contains(e.ownerDocument,e)||(l=x.style(e,n)),Yt.test(l)&&Ut.test(n)&&(i=u.width,o=u.minWidth,a=u.maxWidth,u.minWidth=u.maxWidth=u.width=l,l=s.width,u.width=i,u.minWidth=o,u.maxWidth=a)),l}):a.documentElement.currentStyle&&(Rt=function(e){return e.currentStyle},Wt=function(e,n,r){var i,o,a,s=r||Rt(e),l=s?s[n]:t,u=e.style;return null==l&&u&&u[n]&&(l=u[n]),Yt.test(l)&&!zt.test(n)&&(i=u.left,o=e.runtimeStyle,a=o&&o.left,a&&(o.left=e.currentStyle.left),u.left="fontSize"===n?"1em":l,l=u.pixelLeft+"px",u.left=i,a&&(o.left=a)),""===l?"auto":l});function on(e,t,n){var r=Vt.exec(t);return r?Math.max(0,r[1]-(n||0))+(r[2]||"px"):t}function an(e,t,n,r,i){var o=n===(r?"border":"content")?4:"width"===t?1:0,a=0;for(;4>o;o+=2)"margin"===n&&(a+=x.css(e,n+Zt[o],!0,i)),r?("content"===n&&(a-=x.css(e,"padding"+Zt[o],!0,i)),"margin"!==n&&(a-=x.css(e,"border"+Zt[o]+"Width",!0,i))):(a+=x.css(e,"padding"+Zt[o],!0,i),"padding"!==n&&(a+=x.css(e,"border"+Zt[o]+"Width",!0,i)));return a}function sn(e,t,n){var r=!0,i="width"===t?e.offsetWidth:e.offsetHeight,o=Rt(e),a=x.support.boxSizing&&"border-box"===x.css(e,"boxSizing",!1,o);if(0>=i||null==i){if(i=Wt(e,t,o),(0>i||null==i)&&(i=e.style[t]),Yt.test(i))return i;r=a&&(x.support.boxSizingReliable||i===e.style[t]),i=parseFloat(i)||0}return i+an(e,t,n||(a?"border":"content"),r,o)+"px"}function ln(e){var t=a,n=Gt[e];return n||(n=un(e,t),"none"!==n&&n||(Pt=(Pt||x("<iframe frameborder='0' width='0' height='0'/>").css("cssText","display:block !important")).appendTo(t.documentElement),t=(Pt[0].contentWindow||Pt[0].contentDocument).document,t.write("<!doctype html><html><body>"),t.close(),n=un(e,t),Pt.detach()),Gt[e]=n),n}function un(e,t){var n=x(t.createElement(e)).appendTo(t.body),r=x.css(n[0],"display");return n.remove(),r}x.each(["height","width"],function(e,n){x.cssHooks[n]={get:function(e,r,i){return r?0===e.offsetWidth&&Xt.test(x.css(e,"display"))?x.swap(e,Qt,function(){return sn(e,n,i)}):sn(e,n,i):t},set:function(e,t,r){var i=r&&Rt(e);return on(e,t,r?an(e,n,r,x.support.boxSizing&&"border-box"===x.css(e,"boxSizing",!1,i),i):0)}}}),x.support.opacity||(x.cssHooks.opacity={get:function(e,t){return It.test((t&&e.currentStyle?e.currentStyle.filter:e.style.filter)||"")?.01*parseFloat(RegExp.$1)+"":t?"1":""},set:function(e,t){var n=e.style,r=e.currentStyle,i=x.isNumeric(t)?"alpha(opacity="+100*t+")":"",o=r&&r.filter||n.filter||"";n.zoom=1,(t>=1||""===t)&&""===x.trim(o.replace($t,""))&&n.removeAttribute&&(n.removeAttribute("filter"),""===t||r&&!r.filter)||(n.filter=$t.test(o)?o.replace($t,i):o+" "+i)}}),x(function(){x.support.reliableMarginRight||(x.cssHooks.marginRight={get:function(e,n){return n?x.swap(e,{display:"inline-block"},Wt,[e,"marginRight"]):t}}),!x.support.pixelPosition&&x.fn.position&&x.each(["top","left"],function(e,n){x.cssHooks[n]={get:function(e,r){return r?(r=Wt(e,n),Yt.test(r)?x(e).position()[n]+"px":r):t}}})}),x.expr&&x.expr.filters&&(x.expr.filters.hidden=function(e){return 0>=e.offsetWidth&&0>=e.offsetHeight||!x.support.reliableHiddenOffsets&&"none"===(e.style&&e.style.display||x.css(e,"display"))},x.expr.filters.visible=function(e){return!x.expr.filters.hidden(e)}),x.each({margin:"",padding:"",border:"Width"},function(e,t){x.cssHooks[e+t]={expand:function(n){var r=0,i={},o="string"==typeof n?n.split(" "):[n];for(;4>r;r++)i[e+Zt[r]+t]=o[r]||o[r-2]||o[0];return i}},Ut.test(e)||(x.cssHooks[e+t].set=on)});var cn=/%20/g,pn=/\[\]$/,fn=/\r?\n/g,dn=/^(?:submit|button|image|reset|file)$/i,hn=/^(?:input|select|textarea|keygen)/i;x.fn.extend({serialize:function(){return x.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=x.prop(this,"elements");return e?x.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!x(this).is(":disabled")&&hn.test(this.nodeName)&&!dn.test(e)&&(this.checked||!Ct.test(e))}).map(function(e,t){var n=x(this).val();return null==n?null:x.isArray(n)?x.map(n,function(e){return{name:t.name,value:e.replace(fn,"\r\n")}}):{name:t.name,value:n.replace(fn,"\r\n")}}).get()}}),x.param=function(e,n){var r,i=[],o=function(e,t){t=x.isFunction(t)?t():null==t?"":t,i[i.length]=encodeURIComponent(e)+"="+encodeURIComponent(t)};if(n===t&&(n=x.ajaxSettings&&x.ajaxSettings.traditional),x.isArray(e)||e.jquery&&!x.isPlainObject(e))x.each(e,function(){o(this.name,this.value)});else for(r in e)gn(r,e[r],n,o);return i.join("&").replace(cn,"+")};function gn(e,t,n,r){var i;if(x.isArray(t))x.each(t,function(t,i){n||pn.test(e)?r(e,i):gn(e+"["+("object"==typeof i?t:"")+"]",i,n,r)});else if(n||"object"!==x.type(t))r(e,t);else for(i in t)gn(e+"["+i+"]",t[i],n,r)}x.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(e,t){x.fn[t]=function(e,n){return arguments.length>0?this.on(t,null,e,n):this.trigger(t)}}),x.fn.extend({hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)},bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)}});var mn,yn,vn=x.now(),bn=/\?/,xn=/#.*$/,wn=/([?&])_=[^&]*/,Tn=/^(.*?):[ \t]*([^\r\n]*)\r?$/gm,Cn=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Nn=/^(?:GET|HEAD)$/,kn=/^\/\//,En=/^([\w.+-]+:)(?:\/\/([^\/?#:]*)(?::(\d+)|)|)/,Sn=x.fn.load,An={},jn={},Dn="*/".concat("*");try{yn=o.href}catch(Ln){yn=a.createElement("a"),yn.href="",yn=yn.href}mn=En.exec(yn.toLowerCase())||[];function Hn(e){return function(t,n){"string"!=typeof t&&(n=t,t="*");var r,i=0,o=t.toLowerCase().match(T)||[];if(x.isFunction(n))while(r=o[i++])"+"===r[0]?(r=r.slice(1)||"*",(e[r]=e[r]||[]).unshift(n)):(e[r]=e[r]||[]).push(n)}}function qn(e,n,r,i){var o={},a=e===jn;function s(l){var u;return o[l]=!0,x.each(e[l]||[],function(e,l){var c=l(n,r,i);return"string"!=typeof c||a||o[c]?a?!(u=c):t:(n.dataTypes.unshift(c),s(c),!1)}),u}return s(n.dataTypes[0])||!o["*"]&&s("*")}function _n(e,n){var r,i,o=x.ajaxSettings.flatOptions||{};for(i in n)n[i]!==t&&((o[i]?e:r||(r={}))[i]=n[i]);return r&&x.extend(!0,e,r),e}x.fn.load=function(e,n,r){if("string"!=typeof e&&Sn)return Sn.apply(this,arguments);var i,o,a,s=this,l=e.indexOf(" ");return l>=0&&(i=e.slice(l,e.length),e=e.slice(0,l)),x.isFunction(n)?(r=n,n=t):n&&"object"==typeof n&&(a="POST"),s.length>0&&x.ajax({url:e,type:a,dataType:"html",data:n}).done(function(e){o=arguments,s.html(i?x("<div>").append(x.parseHTML(e)).find(i):e)}).complete(r&&function(e,t){s.each(r,o||[e.responseText,t,e])}),this},x.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){x.fn[t]=function(e){return this.on(t,e)}}),x.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:yn,type:"GET",isLocal:Cn.test(mn[1]),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Dn,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":x.parseJSON,"text xml":x.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?_n(_n(e,x.ajaxSettings),t):_n(x.ajaxSettings,e)},ajaxPrefilter:Hn(An),ajaxTransport:Hn(jn),ajax:function(e,n){"object"==typeof e&&(n=e,e=t),n=n||{};var r,i,o,a,s,l,u,c,p=x.ajaxSetup({},n),f=p.context||p,d=p.context&&(f.nodeType||f.jquery)?x(f):x.event,h=x.Deferred(),g=x.Callbacks("once memory"),m=p.statusCode||{},y={},v={},b=0,w="canceled",C={readyState:0,getResponseHeader:function(e){var t;if(2===b){if(!c){c={};while(t=Tn.exec(a))c[t[1].toLowerCase()]=t[2]}t=c[e.toLowerCase()]}return null==t?null:t},getAllResponseHeaders:function(){return 2===b?a:null},setRequestHeader:function(e,t){var n=e.toLowerCase();return b||(e=v[n]=v[n]||e,y[e]=t),this},overrideMimeType:function(e){return b||(p.mimeType=e),this},statusCode:function(e){var t;if(e)if(2>b)for(t in e)m[t]=[m[t],e[t]];else C.always(e[C.status]);return this},abort:function(e){var t=e||w;return u&&u.abort(t),k(0,t),this}};if(h.promise(C).complete=g.add,C.success=C.done,C.error=C.fail,p.url=((e||p.url||yn)+"").replace(xn,"").replace(kn,mn[1]+"//"),p.type=n.method||n.type||p.method||p.type,p.dataTypes=x.trim(p.dataType||"*").toLowerCase().match(T)||[""],null==p.crossDomain&&(r=En.exec(p.url.toLowerCase()),p.crossDomain=!(!r||r[1]===mn[1]&&r[2]===mn[2]&&(r[3]||("http:"===r[1]?"80":"443"))===(mn[3]||("http:"===mn[1]?"80":"443")))),p.data&&p.processData&&"string"!=typeof p.data&&(p.data=x.param(p.data,p.traditional)),qn(An,p,n,C),2===b)return C;l=p.global,l&&0===x.active++&&x.event.trigger("ajaxStart"),p.type=p.type.toUpperCase(),p.hasContent=!Nn.test(p.type),o=p.url,p.hasContent||(p.data&&(o=p.url+=(bn.test(o)?"&":"?")+p.data,delete p.data),p.cache===!1&&(p.url=wn.test(o)?o.replace(wn,"$1_="+vn++):o+(bn.test(o)?"&":"?")+"_="+vn++)),p.ifModified&&(x.lastModified[o]&&C.setRequestHeader("If-Modified-Since",x.lastModified[o]),x.etag[o]&&C.setRequestHeader("If-None-Match",x.etag[o])),(p.data&&p.hasContent&&p.contentType!==!1||n.contentType)&&C.setRequestHeader("Content-Type",p.contentType),C.setRequestHeader("Accept",p.dataTypes[0]&&p.accepts[p.dataTypes[0]]?p.accepts[p.dataTypes[0]]+("*"!==p.dataTypes[0]?", "+Dn+"; q=0.01":""):p.accepts["*"]);for(i in p.headers)C.setRequestHeader(i,p.headers[i]);if(p.beforeSend&&(p.beforeSend.call(f,C,p)===!1||2===b))return C.abort();w="abort";for(i in{success:1,error:1,complete:1})C[i](p[i]);if(u=qn(jn,p,n,C)){C.readyState=1,l&&d.trigger("ajaxSend",[C,p]),p.async&&p.timeout>0&&(s=setTimeout(function(){C.abort("timeout")},p.timeout));try{b=1,u.send(y,k)}catch(N){if(!(2>b))throw N;k(-1,N)}}else k(-1,"No Transport");function k(e,n,r,i){var c,y,v,w,T,N=n;2!==b&&(b=2,s&&clearTimeout(s),u=t,a=i||"",C.readyState=e>0?4:0,c=e>=200&&300>e||304===e,r&&(w=Mn(p,C,r)),w=On(p,w,C,c),c?(p.ifModified&&(T=C.getResponseHeader("Last-Modified"),T&&(x.lastModified[o]=T),T=C.getResponseHeader("etag"),T&&(x.etag[o]=T)),204===e||"HEAD"===p.type?N="nocontent":304===e?N="notmodified":(N=w.state,y=w.data,v=w.error,c=!v)):(v=N,(e||!N)&&(N="error",0>e&&(e=0))),C.status=e,C.statusText=(n||N)+"",c?h.resolveWith(f,[y,N,C]):h.rejectWith(f,[C,N,v]),C.statusCode(m),m=t,l&&d.trigger(c?"ajaxSuccess":"ajaxError",[C,p,c?y:v]),g.fireWith(f,[C,N]),l&&(d.trigger("ajaxComplete",[C,p]),--x.active||x.event.trigger("ajaxStop")))}return C},getJSON:function(e,t,n){return x.get(e,t,n,"json")},getScript:function(e,n){return x.get(e,t,n,"script")}}),x.each(["get","post"],function(e,n){x[n]=function(e,r,i,o){return x.isFunction(r)&&(o=o||i,i=r,r=t),x.ajax({url:e,type:n,dataType:o,data:r,success:i})}});function Mn(e,n,r){var i,o,a,s,l=e.contents,u=e.dataTypes;while("*"===u[0])u.shift(),o===t&&(o=e.mimeType||n.getResponseHeader("Content-Type"));if(o)for(s in l)if(l[s]&&l[s].test(o)){u.unshift(s);break}if(u[0]in r)a=u[0];else{for(s in r){if(!u[0]||e.converters[s+" "+u[0]]){a=s;break}i||(i=s)}a=a||i}return a?(a!==u[0]&&u.unshift(a),r[a]):t}function On(e,t,n,r){var i,o,a,s,l,u={},c=e.dataTypes.slice();if(c[1])for(a in e.converters)u[a.toLowerCase()]=e.converters[a];o=c.shift();while(o)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!l&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),l=o,o=c.shift())if("*"===o)o=l;else if("*"!==l&&l!==o){if(a=u[l+" "+o]||u["* "+o],!a)for(i in u)if(s=i.split(" "),s[1]===o&&(a=u[l+" "+s[0]]||u["* "+s[0]])){a===!0?a=u[i]:u[i]!==!0&&(o=s[0],c.unshift(s[1]));break}if(a!==!0)if(a&&e["throws"])t=a(t);else try{t=a(t)}catch(p){return{state:"parsererror",error:a?p:"No conversion from "+l+" to "+o}}}return{state:"success",data:t}}x.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/(?:java|ecma)script/},converters:{"text script":function(e){return x.globalEval(e),e}}}),x.ajaxPrefilter("script",function(e){e.cache===t&&(e.cache=!1),e.crossDomain&&(e.type="GET",e.global=!1)}),x.ajaxTransport("script",function(e){if(e.crossDomain){var n,r=a.head||x("head")[0]||a.documentElement;return{send:function(t,i){n=a.createElement("script"),n.async=!0,e.scriptCharset&&(n.charset=e.scriptCharset),n.src=e.url,n.onload=n.onreadystatechange=function(e,t){(t||!n.readyState||/loaded|complete/.test(n.readyState))&&(n.onload=n.onreadystatechange=null,n.parentNode&&n.parentNode.removeChild(n),n=null,t||i(200,"success"))},r.insertBefore(n,r.firstChild)},abort:function(){n&&n.onload(t,!0)}}}});var Fn=[],Bn=/(=)\?(?=&|$)|\?\?/;x.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Fn.pop()||x.expando+"_"+vn++;return this[e]=!0,e}}),x.ajaxPrefilter("json jsonp",function(n,r,i){var o,a,s,l=n.jsonp!==!1&&(Bn.test(n.url)?"url":"string"==typeof n.data&&!(n.contentType||"").indexOf("application/x-www-form-urlencoded")&&Bn.test(n.data)&&"data");return l||"jsonp"===n.dataTypes[0]?(o=n.jsonpCallback=x.isFunction(n.jsonpCallback)?n.jsonpCallback():n.jsonpCallback,l?n[l]=n[l].replace(Bn,"$1"+o):n.jsonp!==!1&&(n.url+=(bn.test(n.url)?"&":"?")+n.jsonp+"="+o),n.converters["script json"]=function(){return s||x.error(o+" was not called"),s[0]},n.dataTypes[0]="json",a=e[o],e[o]=function(){s=arguments},i.always(function(){e[o]=a,n[o]&&(n.jsonpCallback=r.jsonpCallback,Fn.push(o)),s&&x.isFunction(a)&&a(s[0]),s=a=t}),"script"):t});var Pn,Rn,Wn=0,$n=e.ActiveXObject&&function(){var e;for(e in Pn)Pn[e](t,!0)};function In(){try{return new e.XMLHttpRequest}catch(t){}}function zn(){try{return new e.ActiveXObject("Microsoft.XMLHTTP")}catch(t){}}x.ajaxSettings.xhr=e.ActiveXObject?function(){return!this.isLocal&&In()||zn()}:In,Rn=x.ajaxSettings.xhr(),x.support.cors=!!Rn&&"withCredentials"in Rn,Rn=x.support.ajax=!!Rn,Rn&&x.ajaxTransport(function(n){if(!n.crossDomain||x.support.cors){var r;return{send:function(i,o){var a,s,l=n.xhr();if(n.username?l.open(n.type,n.url,n.async,n.username,n.password):l.open(n.type,n.url,n.async),n.xhrFields)for(s in n.xhrFields)l[s]=n.xhrFields[s];n.mimeType&&l.overrideMimeType&&l.overrideMimeType(n.mimeType),n.crossDomain||i["X-Requested-With"]||(i["X-Requested-With"]="XMLHttpRequest");try{for(s in i)l.setRequestHeader(s,i[s])}catch(u){}l.send(n.hasContent&&n.data||null),r=function(e,i){var s,u,c,p;try{if(r&&(i||4===l.readyState))if(r=t,a&&(l.onreadystatechange=x.noop,$n&&delete Pn[a]),i)4!==l.readyState&&l.abort();else{p={},s=l.status,u=l.getAllResponseHeaders(),"string"==typeof l.responseText&&(p.text=l.responseText);try{c=l.statusText}catch(f){c=""}s||!n.isLocal||n.crossDomain?1223===s&&(s=204):s=p.text?200:404}}catch(d){i||o(-1,d)}p&&o(s,c,p,u)},n.async?4===l.readyState?setTimeout(r):(a=++Wn,$n&&(Pn||(Pn={},x(e).unload($n)),Pn[a]=r),l.onreadystatechange=r):r()},abort:function(){r&&r(t,!0)}}}});var Xn,Un,Vn=/^(?:toggle|show|hide)$/,Yn=RegExp("^(?:([+-])=|)("+w+")([a-z%]*)$","i"),Jn=/queueHooks$/,Gn=[nr],Qn={"*":[function(e,t){var n=this.createTween(e,t),r=n.cur(),i=Yn.exec(t),o=i&&i[3]||(x.cssNumber[e]?"":"px"),a=(x.cssNumber[e]||"px"!==o&&+r)&&Yn.exec(x.css(n.elem,e)),s=1,l=20;if(a&&a[3]!==o){o=o||a[3],i=i||[],a=+r||1;do s=s||".5",a/=s,x.style(n.elem,e,a+o);while(s!==(s=n.cur()/r)&&1!==s&&--l)}return i&&(a=n.start=+a||+r||0,n.unit=o,n.end=i[1]?a+(i[1]+1)*i[2]:+i[2]),n}]};function Kn(){return setTimeout(function(){Xn=t}),Xn=x.now()}function Zn(e,t,n){var r,i=(Qn[t]||[]).concat(Qn["*"]),o=0,a=i.length;for(;a>o;o++)if(r=i[o].call(n,t,e))return r}function er(e,t,n){var r,i,o=0,a=Gn.length,s=x.Deferred().always(function(){delete l.elem}),l=function(){if(i)return!1;var t=Xn||Kn(),n=Math.max(0,u.startTime+u.duration-t),r=n/u.duration||0,o=1-r,a=0,l=u.tweens.length;for(;l>a;a++)u.tweens[a].run(o);return s.notifyWith(e,[u,o,n]),1>o&&l?n:(s.resolveWith(e,[u]),!1)},u=s.promise({elem:e,props:x.extend({},t),opts:x.extend(!0,{specialEasing:{}},n),originalProperties:t,originalOptions:n,startTime:Xn||Kn(),duration:n.duration,tweens:[],createTween:function(t,n){var r=x.Tween(e,u.opts,t,n,u.opts.specialEasing[t]||u.opts.easing);return u.tweens.push(r),r},stop:function(t){var n=0,r=t?u.tweens.length:0;if(i)return this;for(i=!0;r>n;n++)u.tweens[n].run(1);return t?s.resolveWith(e,[u,t]):s.rejectWith(e,[u,t]),this}}),c=u.props;for(tr(c,u.opts.specialEasing);a>o;o++)if(r=Gn[o].call(u,e,c,u.opts))return r;return x.map(c,Zn,u),x.isFunction(u.opts.start)&&u.opts.start.call(e,u),x.fx.timer(x.extend(l,{elem:e,anim:u,queue:u.opts.queue})),u.progress(u.opts.progress).done(u.opts.done,u.opts.complete).fail(u.opts.fail).always(u.opts.always)}function tr(e,t){var n,r,i,o,a;for(n in e)if(r=x.camelCase(n),i=t[r],o=e[n],x.isArray(o)&&(i=o[1],o=e[n]=o[0]),n!==r&&(e[r]=o,delete e[n]),a=x.cssHooks[r],a&&"expand"in a){o=a.expand(o),delete e[r];for(n in o)n in e||(e[n]=o[n],t[n]=i)}else t[r]=i}x.Animation=x.extend(er,{tweener:function(e,t){x.isFunction(e)?(t=e,e=["*"]):e=e.split(" ");var n,r=0,i=e.length;for(;i>r;r++)n=e[r],Qn[n]=Qn[n]||[],Qn[n].unshift(t)},prefilter:function(e,t){t?Gn.unshift(e):Gn.push(e)}});function nr(e,t,n){var r,i,o,a,s,l,u=this,c={},p=e.style,f=e.nodeType&&nn(e),d=x._data(e,"fxshow");n.queue||(s=x._queueHooks(e,"fx"),null==s.unqueued&&(s.unqueued=0,l=s.empty.fire,s.empty.fire=function(){s.unqueued||l()}),s.unqueued++,u.always(function(){u.always(function(){s.unqueued--,x.queue(e,"fx").length||s.empty.fire()})})),1===e.nodeType&&("height"in t||"width"in t)&&(n.overflow=[p.overflow,p.overflowX,p.overflowY],"inline"===x.css(e,"display")&&"none"===x.css(e,"float")&&(x.support.inlineBlockNeedsLayout&&"inline"!==ln(e.nodeName)?p.zoom=1:p.display="inline-block")),n.overflow&&(p.overflow="hidden",x.support.shrinkWrapBlocks||u.always(function(){p.overflow=n.overflow[0],p.overflowX=n.overflow[1],p.overflowY=n.overflow[2]}));for(r in t)if(i=t[r],Vn.exec(i)){if(delete t[r],o=o||"toggle"===i,i===(f?"hide":"show"))continue;c[r]=d&&d[r]||x.style(e,r)}if(!x.isEmptyObject(c)){d?"hidden"in d&&(f=d.hidden):d=x._data(e,"fxshow",{}),o&&(d.hidden=!f),f?x(e).show():u.done(function(){x(e).hide()}),u.done(function(){var t;x._removeData(e,"fxshow");for(t in c)x.style(e,t,c[t])});for(r in c)a=Zn(f?d[r]:0,r,u),r in d||(d[r]=a.start,f&&(a.end=a.start,a.start="width"===r||"height"===r?1:0))}}function rr(e,t,n,r,i){return new rr.prototype.init(e,t,n,r,i)}x.Tween=rr,rr.prototype={constructor:rr,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||"swing",this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(x.cssNumber[n]?"":"px")},cur:function(){var e=rr.propHooks[this.prop];return e&&e.get?e.get(this):rr.propHooks._default.get(this)},run:function(e){var t,n=rr.propHooks[this.prop];return this.pos=t=this.options.duration?x.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):rr.propHooks._default.set(this),this}},rr.prototype.init.prototype=rr.prototype,rr.propHooks={_default:{get:function(e){var t;return null==e.elem[e.prop]||e.elem.style&&null!=e.elem.style[e.prop]?(t=x.css(e.elem,e.prop,""),t&&"auto"!==t?t:0):e.elem[e.prop]},set:function(e){x.fx.step[e.prop]?x.fx.step[e.prop](e):e.elem.style&&(null!=e.elem.style[x.cssProps[e.prop]]||x.cssHooks[e.prop])?x.style(e.elem,e.prop,e.now+e.unit):e.elem[e.prop]=e.now}}},rr.propHooks.scrollTop=rr.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},x.each(["toggle","show","hide"],function(e,t){var n=x.fn[t];x.fn[t]=function(e,r,i){return null==e||"boolean"==typeof e?n.apply(this,arguments):this.animate(ir(t,!0),e,r,i)}}),x.fn.extend({fadeTo:function(e,t,n,r){return this.filter(nn).css("opacity",0).show().end().animate({opacity:t},e,n,r)},animate:function(e,t,n,r){var i=x.isEmptyObject(e),o=x.speed(t,n,r),a=function(){var t=er(this,x.extend({},e),o);(i||x._data(this,"finish"))&&t.stop(!0)};return a.finish=a,i||o.queue===!1?this.each(a):this.queue(o.queue,a)},stop:function(e,n,r){var i=function(e){var t=e.stop;delete e.stop,t(r)};return"string"!=typeof e&&(r=n,n=e,e=t),n&&e!==!1&&this.queue(e||"fx",[]),this.each(function(){var t=!0,n=null!=e&&e+"queueHooks",o=x.timers,a=x._data(this);if(n)a[n]&&a[n].stop&&i(a[n]);else for(n in a)a[n]&&a[n].stop&&Jn.test(n)&&i(a[n]);for(n=o.length;n--;)o[n].elem!==this||null!=e&&o[n].queue!==e||(o[n].anim.stop(r),t=!1,o.splice(n,1));(t||!r)&&x.dequeue(this,e)})},finish:function(e){return e!==!1&&(e=e||"fx"),this.each(function(){var t,n=x._data(this),r=n[e+"queue"],i=n[e+"queueHooks"],o=x.timers,a=r?r.length:0;for(n.finish=!0,x.queue(this,e,[]),i&&i.stop&&i.stop.call(this,!0),t=o.length;t--;)o[t].elem===this&&o[t].queue===e&&(o[t].anim.stop(!0),o.splice(t,1));for(t=0;a>t;t++)r[t]&&r[t].finish&&r[t].finish.call(this);delete n.finish})}});function ir(e,t){var n,r={height:e},i=0;for(t=t?1:0;4>i;i+=2-t)n=Zt[i],r["margin"+n]=r["padding"+n]=e;return t&&(r.opacity=r.width=e),r}x.each({slideDown:ir("show"),slideUp:ir("hide"),slideToggle:ir("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,t){x.fn[e]=function(e,n,r){return this.animate(t,e,n,r)}}),x.speed=function(e,t,n){var r=e&&"object"==typeof e?x.extend({},e):{complete:n||!n&&t||x.isFunction(e)&&e,duration:e,easing:n&&t||t&&!x.isFunction(t)&&t};return r.duration=x.fx.off?0:"number"==typeof r.duration?r.duration:r.duration in x.fx.speeds?x.fx.speeds[r.duration]:x.fx.speeds._default,(null==r.queue||r.queue===!0)&&(r.queue="fx"),r.old=r.complete,r.complete=function(){x.isFunction(r.old)&&r.old.call(this),r.queue&&x.dequeue(this,r.queue)},r},x.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2}},x.timers=[],x.fx=rr.prototype.init,x.fx.tick=function(){var e,n=x.timers,r=0;for(Xn=x.now();n.length>r;r++)e=n[r],e()||n[r]!==e||n.splice(r--,1);n.length||x.fx.stop(),Xn=t},x.fx.timer=function(e){e()&&x.timers.push(e)&&x.fx.start()},x.fx.interval=13,x.fx.start=function(){Un||(Un=setInterval(x.fx.tick,x.fx.interval))},x.fx.stop=function(){clearInterval(Un),Un=null},x.fx.speeds={slow:600,fast:200,_default:400},x.fx.step={},x.expr&&x.expr.filters&&(x.expr.filters.animated=function(e){return x.grep(x.timers,function(t){return e===t.elem}).length}),x.fn.offset=function(e){if(arguments.length)return e===t?this:this.each(function(t){x.offset.setOffset(this,e,t)});var n,r,o={top:0,left:0},a=this[0],s=a&&a.ownerDocument;if(s)return n=s.documentElement,x.contains(n,a)?(typeof a.getBoundingClientRect!==i&&(o=a.getBoundingClientRect()),r=or(s),{top:o.top+(r.pageYOffset||n.scrollTop)-(n.clientTop||0),left:o.left+(r.pageXOffset||n.scrollLeft)-(n.clientLeft||0)}):o},x.offset={setOffset:function(e,t,n){var r=x.css(e,"position");"static"===r&&(e.style.position="relative");var i=x(e),o=i.offset(),a=x.css(e,"top"),s=x.css(e,"left"),l=("absolute"===r||"fixed"===r)&&x.inArray("auto",[a,s])>-1,u={},c={},p,f;l?(c=i.position(),p=c.top,f=c.left):(p=parseFloat(a)||0,f=parseFloat(s)||0),x.isFunction(t)&&(t=t.call(e,n,o)),null!=t.top&&(u.top=t.top-o.top+p),null!=t.left&&(u.left=t.left-o.left+f),"using"in t?t.using.call(e,u):i.css(u)}},x.fn.extend({position:function(){if(this[0]){var e,t,n={top:0,left:0},r=this[0];return"fixed"===x.css(r,"position")?t=r.getBoundingClientRect():(e=this.offsetParent(),t=this.offset(),x.nodeName(e[0],"html")||(n=e.offset()),n.top+=x.css(e[0],"borderTopWidth",!0),n.left+=x.css(e[0],"borderLeftWidth",!0)),{top:t.top-n.top-x.css(r,"marginTop",!0),left:t.left-n.left-x.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent||s;while(e&&!x.nodeName(e,"html")&&"static"===x.css(e,"position"))e=e.offsetParent;return e||s})}}),x.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(e,n){var r=/Y/.test(n);x.fn[e]=function(i){return x.access(this,function(e,i,o){var a=or(e);return o===t?a?n in a?a[n]:a.document.documentElement[i]:e[i]:(a?a.scrollTo(r?x(a).scrollLeft():o,r?o:x(a).scrollTop()):e[i]=o,t)},e,i,arguments.length,null)}});function or(e){return x.isWindow(e)?e:9===e.nodeType?e.defaultView||e.parentWindow:!1}x.each({Height:"height",Width:"width"},function(e,n){x.each({padding:"inner"+e,content:n,"":"outer"+e},function(r,i){x.fn[i]=function(i,o){var a=arguments.length&&(r||"boolean"!=typeof i),s=r||(i===!0||o===!0?"margin":"border");return x.access(this,function(n,r,i){var o;return x.isWindow(n)?n.document.documentElement["client"+e]:9===n.nodeType?(o=n.documentElement,Math.max(n.body["scroll"+e],o["scroll"+e],n.body["offset"+e],o["offset"+e],o["client"+e])):i===t?x.css(n,r,s):x.style(n,r,i,s)},n,a?i:t,a,null)}})}),x.fn.size=function(){return this.length},x.fn.andSelf=x.fn.addBack,"object"==typeof module&&module&&"object"==typeof module.exports?module.exports=x:(e.jQuery=e.$=x,"function"==typeof define&&define.amd&&define("jquery",[],function(){return x}))})(window);
--- /dev/null
+/*
+Copyright (c) 2013 Intel Corporation.
+
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+* Redistributions of works must retain the original copyright notice, this list
+ of conditions and the following disclaimer.
+* Redistributions in binary form must reproduce the original copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+* Neither the name of Intel Corporation nor the names of its contributors
+ may be used to endorse or promote products derived from this work without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY INTEL CORPORATION "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL INTEL CORPORATION BE LIABLE FOR ANY DIRECT,
+INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
+EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+Authors:
+ Wang, Jing <jing.j.wang@intel.com>
+
+*/
+$(function(){
+ try {
+ // Checks if a device supports bluetooth API or not
+ var shape = tizen.systeminfo.getCapability("http://tizen.org/feature/screen.shape");
+ console.log("Shape = " + shape);
+ //alert(" Shape = " + shape);
+ } catch (error) {
+ // alert("Error name: " + error.name + ", message: " + error.message);
+ console.log("Error name: " + error.name + ", message: " + error.message);
+ }
+
+ if(shape=="circle"){
+ $('body').css('max-width', '100%');
+ $('body').css('max-height', '100%');
+ $('body').css('background-color', 'white');
+ $('body').css('margin-top', '20%');
+ $('body').css('margin-bottom', '20%');
+ $('body').css('margin-left', '20%');
+ $('body').css('margin-right', '20%');
+ }
+});
+
+var STUB_PORT = "";
+var RESOURCE_DIR;
+$.ajax({
+ url:"/tmp/TCT_CONFIG",
+ data:{},
+ async:false,
+ success:function(data){
+ var regEx = /DEVICE_SUITE_TARGET_30=(.+)/i;
+ var path = regEx.exec(data);
+ RESOURCE_DIR = path[1];
+ }
+});
+$.ajax({
+ url:RESOURCE_DIR + "/tct/portconfigure.json",
+ dataType:"json",
+ data:{},
+ async:false,
+ success:function(data){
+ STUB_PORT = data[0]["STUB_PORT"];
+ }
+});
+(function (window){
+ function TestRunner() {
+ this.start = null;
+ this.ui = null;
+ this.submitResult = function () {};
+ this.report = function (result, message) {};
+ this.doTest = function () {};
+ }
+
+ TestRunner.prototype = (function () {
+ var index = -1;
+ var Tests = [];
+ var Testsuites = {};
+ var TestsuiteSums = {};
+ var TestsetSums = {};
+ var sum = newSummary();
+ var testContext = newTestContext();
+ function newSummary(sum) {
+ if (typeof sum === "undefined")
+ return {"TOTAL": 0, "PASS" : 0, "FAIL" : 0, "BLOCK" : 0, "NOTRUN" : 0};
+ return {"TOTAL": sum.TOTAL, "PASS": sum.PASS, "FAIL": sum.FAIL, "BLOCK": sum.BLOCK, "NOTRUN": sum.NOTRUN};
+ }
+ function newTestContext() {
+ return {start_time: null, prev_uri: "", uri: "", sub_index: 0, onload_delay: 0};
+ }
+ function getParms () {
+ var parms = {};
+ var items = location.search.substring(1).split('&');
+ for ( var i = 0, max = items.length; i < max; i++) {
+ var pos = items[i].indexOf('=');
+ if (pos > 0) {
+ var key = items[i].substring(0, pos);
+ var val = items[i].substring(pos + 1);
+ if (!parms[key]) {
+ var rawVal = decodeURI(val);
+ if (rawVal.indexOf(',') < 0)
+ parms[key] = rawVal;
+ else
+ parms[key] = rawVal.split(',');
+ }
+ } else
+ parms[items[i]] = 1;
+ }
+ return parms;
+ }
+ return {
+ constructor: TestRunner,
+ options: getParms(),
+ addTestsuite: function (testsuite, category) {
+ if (!category)
+ category = "default";
+ if (typeof Testsuites[category] === "undefined")
+ Testsuites[category] = [];
+ Testsuites[category].push(testsuite);
+ },
+
+ goNext: function () {
+ if (Tests.length === 0) return false;
+ if (index >= Tests.length) {
+ index = -1;
+ return false;
+ }
+ index++;
+ return true;
+ },
+
+ goPrev: function () {
+ if (Tests.length === 0) return false;
+ if (index < 0) {
+ index = Tests.length;
+ return false;
+ }
+ index--;
+ return true;
+ },
+
+ runAll: function () {
+ testContext = newTestContext();
+ VIEWFLAGS.add("batch");
+ this.ui.updateView(VIEWFLAGS.del("suite"));
+ this.testIndex(-1);
+ this.doTest();
+ },
+
+ cleanTests: function () {
+ Tests = [];
+ },
+
+ testIndex: function (ind) {
+ if (typeof ind === "undefined")
+ return index;
+ index = ind;
+ },
+
+ getTest: function (ind) {
+ if (typeof ind === "undefined")
+ ind = index;
+ return Tests[ind];
+ },
+
+ addTest: function (test) {
+ if (test instanceof Array)
+ Tests = Tests.concat(test);
+ else
+ Tests.push(test);
+ },
+
+ sumInit: function (num) {
+ if (typeof num === "undefined")
+ num = Tests.length;
+ sum.TOTAL = sum.NOTRUN = num;
+ sum.PASS = sum.FAIL = sum.BLOCK = 0;
+ },
+
+ sumUpdate: function (oldRes, newRes, set) {
+ if (oldRes !== null) {
+ sum[oldRes]--;
+ if (set !== null) TestsetSums[set][oldRes]--;
+ }
+ if (newRes !== null) {
+ sum[newRes]++;
+ if (set != null) TestsetSums[set][newRes]++;
+ }
+ },
+
+ checkResult: function (oTestDoc) {
+ var message = "";
+ if (!oTestDoc) {
+ this.report('FAIL', 'Test page crash');
+ return true;
+ }
+ // Handle sub-index test
+ if (testContext.sub_index > 0) {
+ var oRes = $(oTestDoc).find("table#results");
+ if (oRes.length == 0)
+ return false;
+ var ind = testContext.sub_index - 1;
+ var $n = $(oRes).find('tbody > tr').eq(ind);
+ if ($n.length == 0)
+ return false
+ var result = $n.children("td:eq(0)").text();
+ message = $n.children("td:eq(2)").text();
+ this.report(result.toUpperCase(), message);
+ return true;
+ }
+
+ var oPass = $(oTestDoc).find(".pass");
+ var oFail = $(oTestDoc).find(".fail");
+ // Qunit sub-cases
+ var oUnitRes = $(oTestDoc).find("ol.qunit-assert-list");
+ $(oUnitRes).find('li').each(function() {
+ message += "[assert]" + $(this).attr("class");
+ message += "[message]*" + $(this).children("span").text() + "\n";
+ });
+ // All tests pass
+ if (oPass.length > 0 && oFail.length == 0) {
+ this.report('PASS', message);
+ return true;
+ }
+ // Handle failed tests
+ if (oFail.length > 0) {
+ var oRes = $(oTestDoc).find("table#results");
+ $(oRes).find('tr.fail').each(function() {
+ message += " *" + $(this).children("td:eq(1)").text() + ": ";
+ message += $(this).children("td:eq(2)").text();
+ });
+ this.report('FAIL', message);
+ return true;
+ }
+ return false;
+ },
+
+ testInfo: function (ind) {
+ var info = "";
+ var tc = this.getTest();
+ if (!tc) return info;
+ info += "Test : (" + (index + 1) + "/" + sum.TOTAL + ") ";
+ info += tc.test_script_entry;
+ info += "\nPurpose: " + tc.purpose;
+ if (tc.pre_condition)
+ info += "\nPrecondition: " + tc.pre_condition;
+ if (tc.steps)
+ info += "\n" + tc.steps;
+ return info;
+ },
+
+ getTestCaseUrl: function () {
+ function getUriField(uri, param) {
+ var querys = uri.split("?")
+ if (querys.length <= 1)
+ return "";
+ uri = querys[1];
+ var start = uri.indexOf(param);
+ if (start == -1)
+ return "";
+ start += param.length + 1;
+ var end = uri.indexOf("&", start);
+ if (end == -1)
+ return uri.substring(start);
+ return uri.substring(start, end);
+ }
+ var tc = this.getTest();
+ if (!tc) return null;
+ var delay = tc.onload_delay;
+ if (delay)
+ testContext.onload_delay = parseInt(delay) * 1000;
+ else
+ testContext.onload_delay = 5000;
+
+ var uri = tc.test_script_entry;
+ if (typeof this.options.testprefix !== "undefined") {
+ var pos = uri.indexOf('http://');
+ if (pos !== 0)
+ uri = this.options.testprefix + uri
+ }
+ var val = getUriField(uri, "value");
+ if (val && tc.execution_type == "auto" && VIEWFLAGS.has("batch")) { // Need sub index in TC
+ testContext.sub_index = parseInt(val);
+ testContext.uri = uri.split("?")[0];
+ if (testContext.uri == testContext.prev_uri)
+ return "";
+ } else {
+ testContext.uri = uri;
+ testContext.sub_index = 0;
+ }
+ testContext.prev_uri = testContext.uri;
+ testContext.start_time = new Date();
+ return testContext.uri;
+ },
+
+ loadReady: function () {
+ if (!VIEWFLAGS.has("batch"))
+ return;
+ if (!this.ui.testComplete()){
+ if (testContext.onload_delay > 0){
+ var tval = 500;
+ var self = this;
+ setTimeout(function() {self.loadReady();}, tval);
+ testContext.onload_delay -= tval;
+ return
+ }
+ this.report("BLOCK", "Timeout");
+ }
+ this.doTest();
+ },
+
+ getListSum: function () {
+ var sumdata = "";
+ sumdata += "<p><table id='browse'><tr><th>Testsuite</th>";
+ sumdata += "<th>Total</th><th>Pass</th><th>Fail</th><th>Block</th></tr>";
+ $.each(TestsuiteSums, function (key, val){
+ sumdata += "<tr><td>" + key+ "</td>";
+ sumdata += "<td style='color:black;'>" + val.TOTAL + "</td>";
+ sumdata += "<td style='color:green;'>" + val.PASS + "</td>";
+ sumdata += "<td style='color:red;'>" + val.FAIL + "</td>";
+ sumdata += "<td style='color:orange;'>" + val.BLOCK + "</td></tr>";
+ });
+ sumdata += "</table>";
+ return sumdata;
+ },
+
+ getTestSum: function (include_set) {
+ var sumdata = "<section><h3>Total:" + sum.TOTAL
+ + " Pass:<span style='color:green;'>" + sum.PASS
+ + "</span> Fail:<span style='color:red;'>" + sum.FAIL
+ + "</span> Block:<span style='color:orange;'>" + sum.BLOCK
+ + "</span> Notrun:<span style='color:black;'>" + sum.NOTRUN
+ + "</span>";
+ if (this.options.notifyInfo) {
+ sumdata += "<span style='color:slateblue;'> " + this.options.notifyInfo + "</span>";
+ this.options.notifyInfo = "";
+ }
+ sumdata += "</h3></section>";
+ if (VIEWFLAGS.has("batch")) {
+ var tc = this.getTest();
+ if (tc) sumdata += "<h4><span style='background-color: wheat'>(#" + index + ") " + tc.id + "</span></h4>";
+ }
+ if (this.options.testsuite_name)
+ TestsuiteSums[this.options.testsuite_name] = newSummary(sum)
+ if (include_set) {
+ sumdata += "<p><table id='browse'><tr><th>Testset</th>";
+ sumdata += "<th>Total</th><th>Pass</th><th>Fail</th><th>Block</th></tr>";
+ $.each(TestsetSums, function (key, val){
+ sumdata += "<tr><td>" + key+ "</td>";
+ sumdata += "<td style='color:black;'>" + val.TOTAL + "</td>";
+ sumdata += "<td style='color:green;'>" + val.PASS + "</td>";
+ sumdata += "<td style='color:red;'>" + val.FAIL + "</td>";
+ sumdata += "<td style='color:orange;'>" + val.BLOCK + "</td></tr>";
+ });
+ sumdata += "</table>";
+ }
+ return sumdata;
+ },
+
+ getListInfo: function () {
+ function createList(category) {
+ var testList = "";
+ $.each(Testsuites[category], function (ind, val) {
+ testList += "<li><input type='checkbox' id='" + val + "'> <a href=''>" + val + "</a>" + "</li>";
+ });
+ return testList;
+ }
+ var data = "<html><head><style>.category{background: #cccccc;border: 1px solid #aaaaaa;} li{list-style-type: none; padding-left: 0.6em; padding-bottom:0.8em; font-size: 1.3em;}html{font-family:DejaVu Sans, Bitstream Vera Sans, Arial, Sans;}</style></head><body>";
+ $.each(Testsuites, function(key, val) {
+ data += "<section><h3 class='category'><input type='checkbox' id='" + key + "'> " + key + "</h3>"
+ data += createList(key) + "</section>";
+ });
+ data += "</body></html>";
+ return data;
+ },
+
+ getBrowseInfo: function () {
+ var failList = passList = blockList = notrunList = "";
+ function createTestList(tc, color, ind) {
+ var mtag = (tc.execution_type === "manual") ? "(M)" : "";
+ return "<li>" + mtag + "<a rel='" + ind + "' href='' style ='color:" + color + ";'>" + tc.id + "</a>" + "</li>";
+ }
+ TestsetSums = {};
+ $.each(Tests, function (ind, val) {
+ if (this.set === null)
+ this.set = "default";
+ if (typeof TestsetSums[this.set] === "undefined")
+ TestsetSums[this.set] = newSummary();
+ TestsetSums[this.set][this.result]++;
+ TestsetSums[this.set]["TOTAL"]++;
+ if (this.result == "FAIL")
+ failList += createTestList(this, "red", ind);
+ if (this.result == "PASS")
+ passList += createTestList(this, "green", ind);
+ if (this.result == "BLOCK")
+ blockList += createTestList(this, "orange", ind);
+ if (this.result == "NOTRUN")
+ notrunList += createTestList(this, "black", ind);
+ });
+ var data = "<html><head><style>ul li {padding-bottom:0.8em;font-size: 1.3em;}";
+ data += "html{font-family:DejaVu Sans, Bitstream Vera Sans, Arial, Sans;}</style></head><body>";
+ if (notrunList)
+ data += "<section><h3>Notrun</h3><ul>" + notrunList + "</ul></section>";
+ if (failList)
+ data += "<section><h3 style='color: red;'>Fail</h3><ul>" + failList + "</ul></section>";
+ if (blockList)
+ data += "<section><h3 style='color: orange;'>Block</h3><ul>" + blockList + "</ul></section>";
+ if (passList)
+ data += "<section><h3 style='color: green'>Pass</h3><ul>" + passList + "</ul></section>";
+ data += "</body></html>";
+ return data;
+ },
+
+ TestCase: function () {
+ return {
+ id: null,
+ test_script_entry: null,
+ execution_type: "manual",
+ result: "NOTRUN",
+ purpose: "",
+ set: null,
+ pre_condition: "",
+ onload_delay: 0,
+ steps: "",
+ data: null};
+ },
+
+ TestSuite: function () {
+ return {
+ id: null,
+ sum: null,
+ data: null};
+ }
+
+ };
+ }());
+ // Standalone test runner
+ var master_runner = new TestRunner();
+ master_runner.start = function (ui) {
+ function filter(xml, self) {
+ var set_ind = 0;
+ var manuals = [];
+ $(xml).find("set").each(function () {
+ var setname = $(this).attr("name");
+ if (!setname)
+ setname = "set" + set_ind;
+ $(this).find("testcase").each(function () {
+ var v = $(this).attr('execution_type');
+ if (self.options.execution_type && v != self.options.execution_type
+ && $.inArray(v, self.options.execution_type) < 0) {
+ $(this).remove();
+ return;
+ }
+ v = $(this).attr('priority');
+ if (self.options.priority && v != self.options.priority
+ && $.inArray(v, self.options.priority) < 0){
+ $(this).remove();
+ return;
+ }
+ var test = self.TestCase();
+ test.id = $(this).attr("id");
+ test.execution_type = $(this).attr("execution_type");
+ test.test_script_entry = $(this).find("test_script_entry").text();
+ test.purpose = $(this).attr("purpose");
+ test.pre_condition = $(this).find("pre_condition").text();
+ test.onload_delay = $(this).attr("onload_delay");
+ test.result = "NOTRUN";
+ test.set = setname;
+ test.data = this;
+ if (test.execution_type === "auto")
+ self.addTest(test);
+ else
+ manuals.push(test);
+ });
+ set_ind++;
+ });
+ self.addTest(manuals);
+ }
+
+ var self = this;
+ if (ui) ui.bind(self);
+ if (self.options.testsuite_name)
+ self.options.testsuite = "opt/" + self.options.testsuite_name + "/tests.xml";
+ if (!self.options.testsuite) {
+ $.getJSON(TESTLIST_FILE, function(data) {
+ for (var i = 0, imax = data.length; i < imax; i++) {
+ for (var j = 0, jmax = data[i].tests.length; j < jmax; j++)
+ self.addTestsuite(data[i].tests[j], data[i].category);
+ }
+ self.ui.list();
+ self.options.multiplex = true;
+ });
+ } else {
+ $.get(self.options.testsuite, null, function (xml) {
+ self.internal.xmldoc = xml;
+ filter(xml, self);
+ self.sumInit();
+ self.ui.browse();
+ setTimeout(function () {
+ if (self.options.autorun)
+ self.runAll();
+ }, 500);
+ }, "xml");
+ }
+ };
+
+ master_runner.doTest = function () {
+ var self = this, tc = null;
+ while (self.goNext()) {
+ tc = self.getTest();
+ if (!tc || tc.execution_type === "manual")
+ break;
+ self.ui.updateTestInfo(self.testInfo(), null, null);
+ self.ui.runTest(self.getTestCaseUrl());
+ return;
+ }
+ this.ui.updateView(VIEWFLAGS.del("batch"));
+ if (self.options.autorun) {
+ self.submitResult();
+ if (self.options.multiplex) {
+ self.ui.list();
+ return;
+ }
+ close_window();
+ return;
+ }
+ if (!tc) {
+ setTimeout(function () {self.ui.browse();}, 500);
+ return;
+ }
+ this.ui.updateTest();
+ };
+
+ master_runner.report = function (result, log) {
+ var tc = this.getTest();
+ if (!tc) return;
+ var oldresult = tc.result;
+ this.sumUpdate(oldresult, result, tc.set);
+ tc.result = result;
+ $(tc.data).find('result_info').remove();
+ $(tc.data).attr('result', result);
+ var doc = $.parseXML("<result_info><actual_result>" + result +
+ "</actual_result><stdout>" +
+ escape_html(log) + "</stdout></result_info>");
+ $(tc.data).append(doc.documentElement);
+ if (VIEWFLAGS.has("batch")) result = null;
+ this.ui.updateTestInfo(null, this.getTestSum(false), result);
+ };
+
+ master_runner.submitResult = function () {
+ var SERVER = "http://127.0.0.1:8080";
+ var contents = (new XMLSerializer()).serializeToString(this.internal.xmldoc);
+ var resfile = "tests.res.xml";
+ if (this.options.testsuite_name)
+ resfile = this.options.testsuite_name + "." + resfile;
+ $.post(SERVER + "/save_file", {filename: resfile, data: contents})
+ };
+
+ master_runner.internal = {xmldoc: null};
+
+ // Controlled test runner
+ var slave_runner = new TestRunner();
+ slave_runner.start = function (ui) {
+ function sync_session_id() {
+ $.get(SERVER + "/init_session_id?session_id="
+ + self.internal.session_id);
+ }
+ var self = this;
+ self.internal.session_id = Math.round(Math.random() * 10000);
+ sync_session_id();
+ var next_step = self.internal.get_json("ask_next_step");
+ if (!next_step || next_step.step != "continue") {
+ close_window();
+ return false;
+ }
+ ui.bind(self);
+ var f = function () {
+ var p = self.internal.get_json("check_execution_progress");
+ if (p) self.sumInit(parseInt(p.total));
+ self.doTest();
+ };
+ self.ui.updateView(VIEWFLAGS.add("batch"));
+ self.ui.updateView(VIEWFLAGS.del("suite"));
+ setTimeout(f, 1000);
+ return true;
+ };
+
+ slave_runner.doTest = function () {
+ var self = this;
+ if (self.internal.stage > 0) {
+ self.ui.updateView(VIEWFLAGS.del("batch"));
+ self.goNext();
+ self.ui.updateTest();
+ return;
+ }
+ var next_step = self.internal.get_json("ask_next_step");
+ if (next_step && next_step.step == "continue") {
+ var task = self.internal.get_json("auto_test_task");
+ if (task === null) {
+ print_error("ask_test_task", "Fail get task");
+ } else if (task.invalid === 0) {
+ print_error("ask_test_task", "Invalid session");
+ } else if (task.stop === 0) {
+ print_error("ask_test_task", "close window");
+ } else if (task.none !== 0) { //handle auto test
+ var test = self.TestCase();
+ test.id = task.case_id;
+ test.onload_delay = task.onload_delay;
+ test.test_script_entry = task.entry;
+ test.execution_type = "auto";
+ test.purpose = task.purpose;
+ test.pre_condition = task.pre_condition;
+ self.addTest(test);
+ self.goNext();
+ self.ui.updateTestInfo(self.testInfo(), null, null);
+ self.ui.runTest(self.getTestCaseUrl());
+ return;
+ } else { //handle manual test
+ self.ui.updateView(VIEWFLAGS.del("batch"));
+ self.internal.stage = 1;
+ var mtask = self.internal.get_json("manual_cases");
+ if (mtask && mtask.none != 0) {
+ self.cleanTests();
+ for (var i = 0, max = mtask.length; i < max; i++) {
+ var test = self.TestCase();
+ test.id = mtask[i].case_id;
+ test.test_script_entry = mtask[i].entry;
+ test.purpose = mtask[i].purpose;
+ test.pre_condition = mtask[i].pre_condition;
+ test.result = "NOTRUN";
+ test.execution_type = "manual";
+ test.index = i;
+ var steps = "";
+ $(mtask[i].steps).each(function () {
+ steps += "Step-" + this.order + "\t: " + this.step_desc + "\n";
+ steps += "Expect\t: " + this.expected + "\n";
+ });
+ test.steps = steps;
+ self.addTest(test);
+ }
+ self.ui.updateTest(-1);
+ self.sumInit();
+ self.ui.browse();
+ } else
+ close_window();
+ return;
+ }
+ }
+ close_window();
+ };
+
+ slave_runner.report = function(result, log) {
+ var tc = this.getTest();
+ var oldresult;
+ if (this.internal.stage > 0) {
+ this.internal.post_json("commit_manual_result",
+ {"case_id": tc.id, "result": result});
+ oldresult = tc.result
+ tc.result = result;
+ } else {
+ this.internal.post_json("commit_result",
+ { "case_id" : tc.id,
+ "result" : result,
+ "msg" : "[Message]" + log,
+ "session_id" : this.internal.session_id});
+ oldresult = "NOTRUN";
+ }
+ this.sumUpdate(oldresult, result, null);
+ if (VIEWFLAGS.has("batch")) result = null;
+ this.ui.updateTestInfo(null, this.getTestSum(false), result);
+ };
+
+ slave_runner.submitResult = function () {
+ $.get(SERVER + "/generate_xml");
+ };
+
+ slave_runner.internal = {
+ session_id: null,
+ stage: 0,
+ get_json: function (name) {
+ var jsondata = null;
+ $.getJSON(SERVER + "/" + name + "?session_id="
+ + this.session_id, function(data) {
+ jsondata = data;});
+ return jsondata; },
+ post_json: function (name, d) {
+ $.post(SERVER + "/" + name, d, null, "json");
+ }
+ };
+
+ var i_ui = (function () {
+ var testinfo = $("#testinfo").get(0);
+ var frmTest = $("#frmTest").get(0);
+ var textTest = $("#textTest").get(0);
+ var btnPass = $("#btnPass").get(0);
+ var btnFail = $("#btnFail").get(0);
+ var btnBlock = $("#btnBlock").get(0);
+ var btnExit = $("#btnExit").get(0);
+ var btnNext = $("#btnNext").get(0);
+ var btnPrev = $("#btnPrev").get(0);
+ var btnRun = $("#btnRun").get(0);
+ var divSum = $("#divSum").get(0);
+ var btnBack = $("#btnBack").get(0);
+ var btnSave = $("#btnSave").get(0);
+ var runner = null;
+ var listmode = null;
+ var nextTest = function () {
+ runner.goNext();
+ selectTest();
+ };
+
+ var prevTest = function() {
+ runner.goPrev();
+ selectTest();
+ };
+
+ var selectResult = function() {
+ runner.report(this.value, "");
+ };
+
+ var selectTest = function () {
+ frmTest.src = "";
+ var tc = runner.getTest();
+ if (!tc) {
+ if (runner.testIndex() === -1)
+ textTest.value = "---Begin---";
+ else
+ textTest.value = "---End---";
+ changeColor("NOTRUN");
+ return;
+ }
+ testinfo.value = runner.testInfo();
+ $(divSum).html(runner.getTestSum(false));
+ textTest.value = ((tc.execution_type === "manual") ? "(M)" : "") + tc.id;
+ changeColor(tc.result);
+ };
+
+ function changeColor(result) {
+ if (result === "PASS")
+ $(textTest).css("backgroundColor", "lightgreen");
+ else if (result === "FAIL")
+ $(textTest).css("backgroundColor", "tomato");
+ else if (result === "BLOCK")
+ $(textTest).css("backgroundColor", "yellow");
+ else
+ $(textTest).css("backgroundColor", "white");
+ }
+
+ return {
+ bind: function (r) {
+ var self = this;
+ r.ui = self;
+ runner = r;
+ $(btnPass).on("click", selectResult);
+ $(btnFail).on("click", selectResult);
+ $(btnBlock).on("click", selectResult);
+ $(btnNext).on("click", nextTest);
+ $(btnPrev).on("click", prevTest);
+ $(btnRun).on("click", function () {
+ if (VIEWFLAGS.has("list")) {
+ runner.options.auto_testsuites = [];
+ var tdoc = frmTest.contentWindow.document;
+ $(tdoc).find("section li>input:checked").each(function () {
+ var tname = $(this).attr("id");
+ runner.options.auto_testsuites.push(tname);
+ });
+ self.list();
+ } else if (VIEWFLAGS.has("suite")) {
+ runner.runAll();
+ } else
+ self.runTest(runner.getTestCaseUrl());
+ });
+ $(frmTest).on("load", function () {runner.loadReady();});
+ $(btnExit).on("click", function () {
+ runner.submitResult();
+ if (runner.options.multiplex && VIEWFLAGS.has("suite"))
+ self.list();
+ else
+ close_window();
+ });
+ $(btnBack).on("click", function () {
+ frmTest.src = "";
+ setTimeout(function () {self.browse();}, 300);
+ });
+ $(btnSave).on("click", function () {
+ runner.submitResult();
+ runner.options.notifyInfo = "*Save succeed*";
+ $(divSum).html(runner.getTestSum(true));
+ });
+ frmTest.height = $(window).height();
+ },
+
+ list: function () {
+ var tdoc = frmTest.contentWindow.document;
+ $(btnExit).attr("value", "Exit");
+ tdoc.open("text/html", "replace");
+ tdoc.writeln(runner.getListInfo());
+ var self = this;
+ $(tdoc).find("section li>a").on("click", function (e) {
+ runner.options.testsuite_name = $(this).text();
+ VIEWFLAGS.del("list");
+ runner.start();
+ window.scrollTo(0, 0);
+ e.preventDefault();
+ });
+ $(tdoc).find("section h3>input[type=checkbox]").on("click", function () {
+ $boxs = $(this).parent().parent().find("li>input[type=checkbox]");
+ $boxs.prop('checked', $(this).is(':checked'));
+ });
+ $(divSum).html(runner.getListSum());
+ runner.cleanTests();
+ self.updateView(VIEWFLAGS.add("list"));
+ if (runner.options.auto_testsuites) {
+ if (runner.options.auto_testsuites.length > 0) {
+ var ts = runner.options.auto_testsuites.shift();
+ runner.options.testsuite_name = ts;
+ runner.options.autorun = true;
+ VIEWFLAGS.del("list");
+ runner.start();
+ } else
+ runner.options.autorun = false;
+ }
+ },
+
+ browse: function () {
+ var tdoc = frmTest.contentWindow.document;
+ if (runner.options.multiplex)
+ $(btnExit).attr("value", "Back");
+ tdoc.open("text/html", "replace");
+ tdoc.writeln(runner.getBrowseInfo());
+ var self = this;
+ $(tdoc).find("section ul li>a").on("click", function (e) {
+ var ind = parseInt($(this).attr("rel"));
+ self.updateView(VIEWFLAGS.del("suite"));
+ self.updateTest(ind);
+ window.scrollTo(0, 0);
+ e.preventDefault();
+ });
+ $(divSum).html(runner.getTestSum(true));
+ self.updateView(VIEWFLAGS.add("suite"));
+ },
+
+ updateTest: function (ind) {
+ if (typeof ind !== "undefined") runner.testIndex(ind);
+ selectTest();
+ },
+
+ updateView: function (flags) {
+ if (flags & VIEWFLAGS.flags.batch)
+ $(".batchhide").hide();
+ else {
+ $(".batchhide").show();
+ if (flags & VIEWFLAGS.flags.list) {
+ $(".tchide").show();
+ $(".suitehide").show();
+ $(".listhide").hide();
+ } else if (flags & VIEWFLAGS.flags.suite) {
+ $(".listhide").show();
+ $(".tchide").show();
+ $(".suitehide").hide();
+ } else {
+ $(".listhide").show();
+ $(".suitehide").show();
+ $(".tchide").hide();
+ }
+ }
+ },
+
+ testComplete: function () {
+ return runner.checkResult(frmTest.contentWindow.document);
+ },
+
+ runTest: function (uri) {
+ if (uri === null) return;
+ if (uri)
+ frmTest.src = uri;
+ else
+ runner.loadReady();
+ },
+
+ updateTestInfo: function (info, sum, result) {
+ if (info !== null)
+ testinfo.value = info;
+ if (sum !== null)
+ $(divSum).html(sum);
+ if (result !== null)
+ changeColor(result);
+ },
+ };
+ } ());
+
+ function escape_html(s) {
+ return s.replace(/\&/g, "&").replace(/</g, "<").replace(/"/g,
+ """).replace(/'/g, "'");
+ }
+
+ function print_error(command, message) {
+ console.warn("Command -" + command + ": " + message);
+ }
+
+ function close_window() {
+ setTimeout(function () {
+ window.open('', '_self', '');
+ window.close();
+ if (window.parent != window.self) {
+ window.parent.onbeforeunload = null;
+ window.parent.close();
+ }
+ }, 1000);
+ }
+
+ function pre_init() {
+ var runner_ok = false;
+ $.get(SERVER + "/check_server", function () {
+ runner_ok = slave_runner.start(i_ui);
+ });
+ if (!runner_ok)
+ master_runner.start(i_ui);
+ }
+ var SERVER = "http://127.0.0.1:8000";
+ var TESTLIST_FILE = "testlist.json"
+ var VIEWFLAGS = { val: 0,
+ flags: {suite: 1, batch: 2, list: 4},
+ add: function (f) { this.val |= this.flags[f]; return this.val},
+ del: function (f) { this.val &= ~this.flags[f]; return this.val},
+ has: function (f) { return this.val & this.flags[f];},
+ };
+ $.ajaxSetup({ async: false});
+ $(window).on("ready", pre_init);
+})(window);
+++ /dev/null
-Copyright (c) 2014 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.
\ No newline at end of file
+++ /dev/null
-
- Apache License
- Version 2.0, January 2004
- http://www.apache.org/licenses/
-
- TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
- 1. Definitions.
-
- "License" shall mean the terms and conditions for use, reproduction,
- and distribution as defined by Sections 1 through 9 of this document.
-
- "Licensor" shall mean the copyright owner or entity authorized by
- the copyright owner that is granting the License.
-
- "Legal Entity" shall mean the union of the acting entity and all
- other entities that control, are controlled by, or are under common
- control with that entity. For the purposes of this definition,
- "control" means (i) the power, direct or indirect, to cause the
- direction or management of such entity, whether by contract or
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
- outstanding shares, or (iii) beneficial ownership of such entity.
-
- "You" (or "Your") shall mean an individual or Legal Entity
- exercising permissions granted by this License.
-
- "Source" form shall mean the preferred form for making modifications,
- including but not limited to software source code, documentation
- source, and configuration files.
-
- "Object" form shall mean any form resulting from mechanical
- transformation or translation of a Source form, including but
- not limited to compiled object code, generated documentation,
- and conversions to other media types.
-
- "Work" shall mean the work of authorship, whether in Source or
- Object form, made available under the License, as indicated by a
- copyright notice that is included in or attached to the work
- (an example is provided in the Appendix below).
-
- "Derivative Works" shall mean any work, whether in Source or Object
- form, that is based on (or derived from) the Work and for which the
- editorial revisions, annotations, elaborations, or other modifications
- represent, as a whole, an original work of authorship. For the purposes
- of this License, Derivative Works shall not include works that remain
- separable from, or merely link (or bind by name) to the interfaces of,
- the Work and Derivative Works thereof.
-
- "Contribution" shall mean any work of authorship, including
- the original version of the Work and any modifications or additions
- to that Work or Derivative Works thereof, that is intentionally
- submitted to Licensor for inclusion in the Work by the copyright owner
- or by an individual or Legal Entity authorized to submit on behalf of
- the copyright owner. For the purposes of this definition, "submitted"
- means any form of electronic, verbal, or written communication sent
- to the Licensor or its representatives, including but not limited to
- communication on electronic mailing lists, source code control systems,
- and issue tracking systems that are managed by, or on behalf of, the
- Licensor for the purpose of discussing and improving the Work, but
- excluding communication that is conspicuously marked or otherwise
- designated in writing by the copyright owner as "Not a Contribution."
-
- "Contributor" shall mean Licensor and any individual or Legal Entity
- on behalf of whom a Contribution has been received by Licensor and
- subsequently incorporated within the Work.
-
- 2. Grant of Copyright License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- copyright license to reproduce, prepare Derivative Works of,
- publicly display, publicly perform, sublicense, and distribute the
- Work and such Derivative Works in Source or Object form.
-
- 3. Grant of Patent License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- (except as stated in this section) patent license to make, have made,
- use, offer to sell, sell, import, and otherwise transfer the Work,
- where such license applies only to those patent claims licensable
- by such Contributor that are necessarily infringed by their
- Contribution(s) alone or by combination of their Contribution(s)
- with the Work to which such Contribution(s) was submitted. If You
- institute patent litigation against any entity (including a
- cross-claim or counterclaim in a lawsuit) alleging that the Work
- or a Contribution incorporated within the Work constitutes direct
- or contributory patent infringement, then any patent licenses
- granted to You under this License for that Work shall terminate
- as of the date such litigation is filed.
-
- 4. Redistribution. You may reproduce and distribute copies of the
- Work or Derivative Works thereof in any medium, with or without
- modifications, and in Source or Object form, provided that You
- meet the following conditions:
-
- (a) You must give any other recipients of the Work or
- Derivative Works a copy of this License; and
-
- (b) You must cause any modified files to carry prominent notices
- stating that You changed the files; and
-
- (c) You must retain, in the Source form of any Derivative Works
- that You distribute, all copyright, patent, trademark, and
- attribution notices from the Source form of the Work,
- excluding those notices that do not pertain to any part of
- the Derivative Works; and
-
- (d) If the Work includes a "NOTICE" text file as part of its
- distribution, then any Derivative Works that You distribute must
- include a readable copy of the attribution notices contained
- within such NOTICE file, excluding those notices that do not
- pertain to any part of the Derivative Works, in at least one
- of the following places: within a NOTICE text file distributed
- as part of the Derivative Works; within the Source form or
- documentation, if provided along with the Derivative Works; or,
- within a display generated by the Derivative Works, if and
- wherever such third-party notices normally appear. The contents
- of the NOTICE file are for informational purposes only and
- do not modify the License. You may add Your own attribution
- notices within Derivative Works that You distribute, alongside
- or as an addendum to the NOTICE text from the Work, provided
- that such additional attribution notices cannot be construed
- as modifying the License.
-
- You may add Your own copyright statement to Your modifications and
- may provide additional or different license terms and conditions
- for use, reproduction, or distribution of Your modifications, or
- for any such Derivative Works as a whole, provided Your use,
- reproduction, and distribution of the Work otherwise complies with
- the conditions stated in this License.
-
- 5. Submission of Contributions. Unless You explicitly state otherwise,
- any Contribution intentionally submitted for inclusion in the Work
- by You to the Licensor shall be under the terms and conditions of
- this License, without any additional terms or conditions.
- Notwithstanding the above, nothing herein shall supersede or modify
- the terms of any separate license agreement you may have executed
- with Licensor regarding such Contributions.
-
- 6. Trademarks. This License does not grant permission to use the trade
- names, trademarks, service marks, or product names of the Licensor,
- except as required for reasonable and customary use in describing the
- origin of the Work and reproducing the content of the NOTICE file.
-
- 7. Disclaimer of Warranty. Unless required by applicable law or
- agreed to in writing, Licensor provides the Work (and each
- Contributor provides its Contributions) on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied, including, without limitation, any warranties or conditions
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- PARTICULAR PURPOSE. You are solely responsible for determining the
- appropriateness of using or redistributing the Work and assume any
- risks associated with Your exercise of permissions under this License.
-
- 8. Limitation of Liability. In no event and under no legal theory,
- whether in tort (including negligence), contract, or otherwise,
- unless required by applicable law (such as deliberate and grossly
- negligent acts) or agreed to in writing, shall any Contributor be
- liable to You for damages, including any direct, indirect, special,
- incidental, or consequential damages of any character arising as a
- result of this License or out of the use or inability to use the
- Work (including but not limited to damages for loss of goodwill,
- work stoppage, computer failure or malfunction, or any and all
- other commercial damages or losses), even if such Contributor
- has been advised of the possibility of such damages.
-
- 9. Accepting Warranty or Additional Liability. While redistributing
- the Work or Derivative Works thereof, You may choose to offer,
- and charge a fee for, acceptance of support, warranty, indemnity,
- or other liability obligations and/or rights consistent with this
- License. However, in accepting such obligations, You may act only
- on Your own behalf and on Your sole responsibility, not on behalf
- of any other Contributor, and only if You agree to indemnify,
- defend, and hold each Contributor harmless for any liability
- incurred by, or claims asserted against, such Contributor by reason
- of your accepting any such warranty or additional liability.
-
- END OF TERMS AND CONDITIONS
-
- APPENDIX: How to apply the Apache License to your work.
-
- To apply the Apache License to your work, attach the following
- boilerplate notice, with the fields enclosed by brackets "[]"
- replaced with your own identifying information. (Don't include
- the brackets!) The text should be enclosed in the appropriate
- comment syntax for the file format. We also recommend that a
- file or class name and description of purpose be included on the
- same "printed page" as the copyright notice for easier
- identification within third-party archives.
-
- Copyright [yyyy] [name of copyright owner]
-
- 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.
\ No newline at end of file
+++ /dev/null
-----------------------------------------------
-License
-----------------------------------------------
-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:
- Saleh Enam Shohag <saleh.enam@samsung.com>
-
-----------------------------------------------
-Introduction
-----------------------------------------------
-This test suite is for testing tizen HumanActivity API, which covers the following specifications:
-TBD
-
-----------------------------------------------
-Test Environment
-----------------------------------------------
-1. Testkit-stub must be installed on target device.
-2. Testkit-lite must be installed on test machine.
-
-
-----------------------------------------------
-Build and Run
-----------------------------------------------
-(Suppose you only get the source code and Testkit-Lite has been set up on your test machine.
- If you have got tct-humanactivitymonitor-tizen-tests ZIP packages, you can directly go to step 3 on the test machine;
- if you have not installed Testkit-Lite, you need to install the latest version.)
-
-Steps:
-1. Prepare for building by running the following command:
- cd tct-humanactivitymonitor-tizen-tests
-
-2. Build ZIP package by running the following command:
- ./pack.sh
-
-3. Unzip the package on the test machine by running the following command:
- unzip -o tct-humanactivitymonitor-tizen-tests-<version>.zip -d /home/owner/share/tct
-
-4. Install the package on the test machine by running the following command:
- /home/owner/share/tct/opt/tct-humanactivitymonitor-tizen-tests/inst.sh
-
-5. Run test cases by running the following command on host:
- testkit-lite -f device:/home/owner/share/tct/opt/tct-humanactivitymonitor-tizen-tests/tests.xml -e "WRTLauncher" -o tct-humanactivitymonitor-tizen-tests.results.xml
\ No newline at end of file
+++ /dev/null
-#!/bin/bash
-PATH=/bin:/usr/bin:/sbin:/usr/sbin
-for i in `grep -r "0xA" /var/cynara/db/_ | grep $1`
-do
- CLIENT=`echo $i | cut -d ";" -f1`
- USER=`echo $i | cut -d ";" -f2`
- PRIVILEGE=`echo $i | cut -d ";" -f3`
- #echo "cyad --erase=\"\" -r=no -c $CLIENT -u $USER -p $PRIVILEGE"
- cyad --erase="" -r=no -c $CLIENT -u $USER -p $PRIVILEGE
-done
+++ /dev/null
-<widget id='http://tizen.org/test/tct-humanactivitymonitor-tizen-tests' xmlns='http://www.w3.org/ns/widgets' xmlns:tizen='http://tizen.org/ns/widgets' version='3.0'>
- <access origin="*"/>
- <name>tct-humanactivitymonitor-tizen-tests</name>
- <tizen:privilege name="http://tizen.org/privilege/healthinfo"/>
- <tizen:privilege name="http://tizen.org/privilege/location"/>
- <icon src="icon.png" height="117" width="117"/>
- <tizen:application id="api1human0.WebAPItizenHumanTests" package="api1human0" required_version="3.0"/>
- <tizen:setting screen-orientation="landscape" />
- <tizen:setting background-support="enable"/>
-</widget>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2014 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:
- Wei Zhang <wei625.zhang@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityAccumulativePedometerData_notexist</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityAccumulativePedometerData_notexist
-//==== LABEL Check if interface HumanActivityAccumulativePedometerData exists, it should not
-//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityAccumulativePedometerData:HumanActivityAccumulativePedometerData U
-//==== SPEC_URL TBD
-//==== PRIORITY P3
-//==== TEST_CRITERIA NIO
-
-test(function () {
- check_no_interface_object("HumanActivityAccumulativePedometerData");
-}, document.title);
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2014 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:
- Saud Mohammad Mostafa <saud.mm@samsung.com>
- Saleh Enam Shohag <saleh.enam@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityAccumulativePedometerInfo_notexist</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityAccumulativePedometerInfo_notexist
-//==== LABEL Check if interface HumanActivityAccumulativePedometerInfo exists, it should not
-//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityAccumulativePedometerInfo:HumanActivityAccumulativePedometerInfo U
-//==== SPEC_URL TBD
-//==== PRIORITY P3
-//==== TEST_CRITERIA NIO
-
-test(function () {
- check_no_interface_object("HumanActivityAccumulativePedometerInfo");
-}, document.title);
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2014 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:
- Saleh Enam Shohag <saleh.enam@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityData_notexist</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityData_notexist
-//==== LABEL Check if interface HumanActivityData exists, it should not
-//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityData:HumanActivityData U
-//==== SPEC_URL TBD
-//==== PRIORITY P3
-//==== TEST_CRITERIA NIO
-
-test(function () {
- check_no_interface_object("HumanActivityData");
-}, document.title);
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2014 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:
- Wei Zhang <wei625.zhang@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityGPSInfoArray_notexist</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityGPSInfoArray_notexist
-//==== LABEL Check if interface HumanActivityGPSInfoArray exists, it should not
-//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityGPSInfoArray:HumanActivityGPSInfoArray U
-//==== SPEC_URL TBD
-//==== PRIORITY P3
-//==== TEST_CRITERIA NIO
-
-test(function () {
- check_no_interface_object("HumanActivityGPSInfoArray");
-}, document.title);
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>\r
-<!--\r
-Copyright (c) 2014 Samsung Electronics Co., Ltd.\r
-\r
-Licensed under the Apache License, Version 2.0 (the License);\r
-you may not use this file except in compliance with the License.\r
-You may obtain a copy of the License at\r
-\r
- http://www.apache.org/licenses/LICENSE-2.0\r
-\r
-Unless required by applicable law or agreed to in writing, software\r
-distributed under the License is distributed on an "AS IS" BASIS,\r
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
-See the License for the specific language governing permissions and\r
-limitations under the License.\r
-\r
-Authors:\r
- Ran Wang <ran22.wang@samsung.com>\r
-\r
--->\r
-<html>\r
-<head>\r
-<title>HumanActivityGPSInfo_altitude_attribute</title>\r
-<meta charset="utf-8"/>\r
-<script src="support/unitcommon.js"></script>\r
-<script src="support/humanactivitymonitor_common.js"></script>\r
-</head>\r
-<body>\r
-<div id="log"></div>\r
-<script>\r
-//==== TEST: HumanActivityGPSInfo_altitude_attribute\r
-//==== LABEL Check if HumanActivityGPSInfo::altitude exists, has type double, and is readonly\r
-//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityGPSInfo:altitude A\r
-//==== SPEC_URL TBD\r
-//==== PRIORITY P1\r
-//==== ONLOAD_DELAY 9\r
-//==== TEST_CRITERIA AE AT ARO\r
-\r
-setup({timeout: 9000});\r
-\r
-var t = async_test(document.title, {timeout: 9000}), getHumanActivityDataSuccess, getHumanActivityDataError, humanActivityType = "GPS";\r
-\r
-t.step(function () {\r
- add_result_callback(function () {\r
- tizen.humanactivitymonitor.stop(humanActivityType);\r
- });\r
-\r
- getHumanActivityDataError = t.step_func(function (error) {\r
- assert_unreached("getHumanActivityDataError is called" + error.name);\r
- });\r
-\r
- getHumanActivityDataSuccess = t.step_func(function (gpsInfo) {\r
- check_readonly(gpsInfo, "altitude", gpsInfo.altitude, "double", gpsInfo.altitude + 10);\r
- t.done();\r
- });\r
-\r
- tizen.humanactivitymonitor.start(humanActivityType);\r
- tizen.humanactivitymonitor.getHumanActivityData(humanActivityType, getHumanActivityDataSuccess, getHumanActivityDataError);\r
-});\r
-\r
-</script>\r
-</body>\r
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>\r
-<!--\r
-Copyright (c) 2014 Samsung Electronics Co., Ltd.\r
-\r
-Licensed under the Apache License, Version 2.0 (the License);\r
-you may not use this file except in compliance with the License.\r
-You may obtain a copy of the License at\r
-\r
- http://www.apache.org/licenses/LICENSE-2.0\r
-\r
-Unless required by applicable law or agreed to in writing, software\r
-distributed under the License is distributed on an "AS IS" BASIS,\r
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
-See the License for the specific language governing permissions and\r
-limitations under the License.\r
-\r
-Authors:\r
- Ran Wang <ran22.wang@samsung.com>\r
-\r
--->\r
-<html>\r
-<head>\r
-<title>HumanActivityGPSInfo_errorRange_attribute</title>\r
-<meta charset="utf-8"/>\r
-<script src="support/unitcommon.js"></script>\r
-<script src="support/humanactivitymonitor_common.js"></script>\r
-</head>\r
-<body>\r
-<div id="log"></div>\r
-<script>\r
-//==== TEST: HumanActivityGPSInfo_errorRange_attribute\r
-//==== LABEL Check if HumanActivityGPSInfo::errorRange exists, has type long, and is readonly\r
-//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityGPSInfo:errorRange A\r
-//==== SPEC_URL TBD\r
-//==== PRIORITY P1\r
-//==== ONLOAD_DELAY 9\r
-//==== TEST_CRITERIA AE AT ARO\r
-\r
-setup({timeout: 9000});\r
-\r
-var t = async_test(document.title, {timeout: 9000}), getHumanActivityDataSuccess, getHumanActivityDataError, humanActivityType = "GPS";\r
-\r
-t.step(function () {\r
- add_result_callback(function () {\r
- tizen.humanactivitymonitor.stop(humanActivityType);\r
- });\r
-\r
- getHumanActivityDataError = t.step_func(function (error) {\r
- assert_unreached("getHumanActivityDataError is called" + error.name);\r
- });\r
-\r
- getHumanActivityDataSuccess = t.step_func(function (gpsInfo) {\r
- check_readonly(gpsInfo, "errorRange", gpsInfo.errorRange, "long", gpsInfo.errorRange + 10);\r
- t.done();\r
- });\r
-\r
- tizen.humanactivitymonitor.start(humanActivityType);\r
- tizen.humanactivitymonitor.getHumanActivityData(humanActivityType, getHumanActivityDataSuccess, getHumanActivityDataError);\r
-});\r
-\r
-</script>\r
-</body>\r
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>\r
-<!--\r
-Copyright (c) 2014 Samsung Electronics Co., Ltd.\r
-\r
-Licensed under the Apache License, Version 2.0 (the License);\r
-you may not use this file except in compliance with the License.\r
-You may obtain a copy of the License at\r
-\r
- http://www.apache.org/licenses/LICENSE-2.0\r
-\r
-Unless required by applicable law or agreed to in writing, software\r
-distributed under the License is distributed on an "AS IS" BASIS,\r
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
-See the License for the specific language governing permissions and\r
-limitations under the License.\r
-\r
-Authors:\r
- Ran Wang <ran22.wang@samsung.com>\r
-\r
--->\r
-<html>\r
-<head>\r
-<title>HumanActivityGPSInfo_latitude_attribute</title>\r
-<meta charset="utf-8"/>\r
-<script src="support/unitcommon.js"></script>\r
-<script src="support/humanactivitymonitor_common.js"></script>\r
-</head>\r
-<body>\r
-<div id="log"></div>\r
-<script>\r
-//==== TEST: HumanActivityGPSInfo_latitude_attribute\r
-//==== LABEL Check if HumanActivityGPSInfo::latitude exists, has type double, and is readonly\r
-//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityGPSInfo:latitude A\r
-//==== SPEC_URL TBD\r
-//==== PRIORITY P1\r
-//==== ONLOAD_DELAY 9\r
-//==== TEST_CRITERIA AE AT ARO\r
-\r
-setup({timeout: 9000});\r
-\r
-var t = async_test(document.title, {timeout: 9000}), getHumanActivityDataSuccess, getHumanActivityDataError, humanActivityType = "GPS";\r
-\r
-t.step(function () {\r
- add_result_callback(function () {\r
- tizen.humanactivitymonitor.stop(humanActivityType);\r
- });\r
-\r
- getHumanActivityDataError = t.step_func(function (error) {\r
- assert_unreached("getHumanActivityDataError is called" + error.name);\r
- });\r
-\r
- getHumanActivityDataSuccess = t.step_func(function (gpsInfo) {\r
- check_readonly(gpsInfo, "latitude", gpsInfo.latitude, "double", gpsInfo.latitude + 10);\r
- t.done();\r
- });\r
-\r
- tizen.humanactivitymonitor.start(humanActivityType);\r
- tizen.humanactivitymonitor.getHumanActivityData(humanActivityType, getHumanActivityDataSuccess, getHumanActivityDataError);\r
-});\r
-\r
-</script>\r
-</body>\r
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>\r
-<!--\r
-Copyright (c) 2014 Samsung Electronics Co., Ltd.\r
-\r
-Licensed under the Apache License, Version 2.0 (the License);\r
-you may not use this file except in compliance with the License.\r
-You may obtain a copy of the License at\r
-\r
- http://www.apache.org/licenses/LICENSE-2.0\r
-\r
-Unless required by applicable law or agreed to in writing, software\r
-distributed under the License is distributed on an "AS IS" BASIS,\r
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
-See the License for the specific language governing permissions and\r
-limitations under the License.\r
-\r
-Authors:\r
- Ran Wang <ran22.wang@samsung.com>\r
-\r
--->\r
-<html>\r
-<head>\r
-<title>HumanActivityGPSInfo_longitude_attribute</title>\r
-<meta charset="utf-8"/>\r
-<script src="support/unitcommon.js"></script>\r
-<script src="support/humanactivitymonitor_common.js"></script>\r
-</head>\r
-<body>\r
-<div id="log"></div>\r
-<script>\r
-//==== TEST: HumanActivityGPSInfo_longitude_attribute\r
-//==== LABEL Check if HumanActivityGPSInfo::longitude exists, has type double, and is readonly\r
-//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityGPSInfo:longitude A\r
-//==== SPEC_URL TBD\r
-//==== PRIORITY P1\r
-//==== ONLOAD_DELAY 9\r
-//==== TEST_CRITERIA AE AT ARO\r
-\r
-setup({timeout: 9000});\r
-\r
-var t = async_test(document.title, {timeout: 9000}), getHumanActivityDataSuccess, getHumanActivityDataError, humanActivityType = "GPS";\r
-\r
-t.step(function () {\r
- add_result_callback(function () {\r
- tizen.humanactivitymonitor.stop(humanActivityType);\r
- });\r
-\r
- getHumanActivityDataError = t.step_func(function (error) {\r
- assert_unreached("getHumanActivityDataError is called" + error.name);\r
- });\r
-\r
- getHumanActivityDataSuccess = t.step_func(function (gpsInfo) {\r
- check_readonly(gpsInfo, "longitude", gpsInfo.longitude, "double", gpsInfo.longitude + 10);\r
- t.done();\r
- });\r
-\r
- tizen.humanactivitymonitor.start(humanActivityType);\r
- tizen.humanactivitymonitor.getHumanActivityData(humanActivityType, getHumanActivityDataSuccess, getHumanActivityDataError);\r
-});\r
-\r
-</script>\r
-</body>\r
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2014 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:
- Wei Zhang <wei625.zhang@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityGPSInfo_notexist</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityGPSInfo_notexist
-//==== LABEL Check if interface HumanActivityGPSInfo exists, it should not
-//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityGPSInfo:HumanActivityGPSInfo U
-//==== SPEC_URL TBD
-//==== PRIORITY P3
-//==== TEST_CRITERIA NIO
-
-test(function () {
- check_no_interface_object("HumanActivityGPSInfo");
-}, document.title);
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>\r
-<!--\r
-Copyright (c) 2014 Samsung Electronics Co., Ltd.\r
-\r
-Licensed under the Apache License, Version 2.0 (the License);\r
-you may not use this file except in compliance with the License.\r
-You may obtain a copy of the License at\r
-\r
- http://www.apache.org/licenses/LICENSE-2.0\r
-\r
-Unless required by applicable law or agreed to in writing, software\r
-distributed under the License is distributed on an "AS IS" BASIS,\r
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
-See the License for the specific language governing permissions and\r
-limitations under the License.\r
-\r
-Authors:\r
- Ran Wang <ran22.wang@samsung.com>\r
-\r
--->\r
-<html>\r
-<head>\r
-<title>HumanActivityGPSInfo_speed_attribute</title>\r
-<meta charset="utf-8"/>\r
-<script src="support/unitcommon.js"></script>\r
-<script src="support/humanactivitymonitor_common.js"></script>\r
-</head>\r
-<body>\r
-<div id="log"></div>\r
-<script>\r
-//==== TEST: HumanActivityGPSInfo_speed_attribute\r
-//==== LABEL Check if HumanActivityGPSInfo::speed exists, has type double, and is readonly\r
-//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityGPSInfo:speed A\r
-//==== SPEC_URL TBD\r
-//==== PRIORITY P1\r
-//==== ONLOAD_DELAY 9\r
-//==== TEST_CRITERIA AE AT ARO\r
-\r
-setup({timeout: 9000});\r
-\r
-var t = async_test(document.title, {timeout: 9000}), getHumanActivityDataSuccess, getHumanActivityDataError, humanActivityType = "GPS";\r
-\r
-t.step(function () {\r
- add_result_callback(function () {\r
- tizen.humanactivitymonitor.stop(humanActivityType);\r
- });\r
-\r
- getHumanActivityDataError = t.step_func(function (error) {\r
- assert_unreached("getHumanActivityDataError is called" + error.name);\r
- });\r
-\r
- getHumanActivityDataSuccess = t.step_func(function (gpsInfo) {\r
- check_readonly(gpsInfo, "speed", gpsInfo.speed, "double", gpsInfo.speed + 10);\r
- t.done();\r
- });\r
-\r
- tizen.humanactivitymonitor.start(humanActivityType);\r
- tizen.humanactivitymonitor.getHumanActivityData(humanActivityType, getHumanActivityDataSuccess, getHumanActivityDataError);\r
-});\r
-\r
-</script>\r
-</body>\r
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>\r
-<!--\r
-Copyright (c) 2014 Samsung Electronics Co., Ltd.\r
-\r
-Licensed under the Apache License, Version 2.0 (the License);\r
-you may not use this file except in compliance with the License.\r
-You may obtain a copy of the License at\r
-\r
- http://www.apache.org/licenses/LICENSE-2.0\r
-\r
-Unless required by applicable law or agreed to in writing, software\r
-distributed under the License is distributed on an "AS IS" BASIS,\r
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
-See the License for the specific language governing permissions and\r
-limitations under the License.\r
-\r
-Authors:\r
- Ran Wang <ran22.wang@samsung.com>\r
-\r
--->\r
-<html>\r
-<head>\r
-<title>HumanActivityGPSInfo_timestamp_attribute</title>\r
-<meta charset="utf-8"/>\r
-<script src="support/unitcommon.js"></script>\r
-<script src="support/humanactivitymonitor_common.js"></script>\r
-</head>\r
-<body>\r
-<div id="log"></div>\r
-<script>\r
-//==== TEST: HumanActivityGPSInfo_timestamp_attribute\r
-//==== LABEL Check if HumanActivityGPSInfo::speed exists, has type long, and is readonly\r
-//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityGPSInfo:speed A\r
-//==== SPEC_URL TBD\r
-//==== PRIORITY P1\r
-//==== ONLOAD_DELAY 9\r
-//==== TEST_CRITERIA AE AT ARO\r
-\r
-setup({timeout: 9000});\r
-\r
-var t = async_test(document.title, {timeout: 9000}), getHumanActivityDataSuccess, getHumanActivityDataError, humanActivityType = "GPS";\r
-\r
-t.step(function () {\r
- add_result_callback(function () {\r
- tizen.humanactivitymonitor.stop(humanActivityType);\r
- });\r
-\r
- getHumanActivityDataError = t.step_func(function (error) {\r
- assert_unreached("getHumanActivityDataError is called" + error.name);\r
- });\r
-\r
- getHumanActivityDataSuccess = t.step_func(function (gpsInfo) {\r
- check_readonly(gpsInfo, "timestamp", gpsInfo.timestamp, "long", gpsInfo.timestamp + 10);\r
- t.done();\r
- });\r
-\r
- tizen.humanactivitymonitor.start(humanActivityType);\r
- tizen.humanactivitymonitor.getHumanActivityData(humanActivityType, getHumanActivityDataSuccess, getHumanActivityDataError);\r
-});\r
-\r
-</script>\r
-</body>\r
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>\r
-<!--\r
-Copyright (c) 2014 Samsung Electronics Co., Ltd.\r
-\r
-Licensed under the Apache License, Version 2.0 (the License);\r
-you may not use this file except in compliance with the License.\r
-You may obtain a copy of the License at\r
-\r
- http://www.apache.org/licenses/LICENSE-2.0\r
-\r
-Unless required by applicable law or agreed to in writing, software\r
-distributed under the License is distributed on an "AS IS" BASIS,\r
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
-See the License for the specific language governing permissions and\r
-limitations under the License.\r
-\r
-Authors:\r
- Ran Wang <ran22.wang@samsung.com>\r
-\r
--->\r
-<html>\r
-<head>\r
-<title>HumanActivityHRMData_heartRate_attribute</title>\r
-<meta charset="utf-8"/>\r
-<script src="support/unitcommon.js"></script>\r
-<script src="support/humanactivitymonitor_common.js"></script>\r
-</head>\r
-<body>\r
-<div id="log"></div>\r
-<script>\r
-//==== TEST: HumanActivityHRMData_heartRate_attribute\r
-//==== LABEL Check if HumanActivityHRMData::heartRate exists, has type long, and is readonly\r
-//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityGPSInfo:heartRate A\r
-//==== SPEC_URL TBD\r
-//==== PRIORITY P1\r
-//==== ONLOAD_DELAY 9\r
-//==== TEST_CRITERIA AE AT ARO\r
-\r
-setup({timeout: 9000});\r
-\r
-var t = async_test(document.title, {timeout: 9000}), getHumanActivityDataSuccess, getHumanActivityDataError, humanActivityType = "HRM";\r
-\r
-t.step(function () {\r
- add_result_callback(function () {\r
- tizen.humanactivitymonitor.stop(humanActivityType);\r
- });\r
-\r
- getHumanActivityDataError = t.step_func(function (error) {\r
- assert_unreached("getHumanActivityDataError is called" + error.name);\r
- });\r
-\r
- getHumanActivityDataSuccess = t.step_func(function (hrmInfo) {\r
- check_readonly(hrmInfo, "heartRate", hrmInfo.heartRate, "long", hrmInfo.heartRate + 10);\r
- t.done();\r
- });\r
-\r
- tizen.humanactivitymonitor.start(humanActivityType);\r
- setTimeout(function(){ tizen.humanactivitymonitor.getHumanActivityData(humanActivityType, getHumanActivityDataSuccess, getHumanActivityDataError); }, 1000);\r
- \r
-});\r
-\r
-</script>\r
-</body>\r
-</html>\r
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2014 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:
- Wei Zhang <wei625.zhang@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityHRMData_notexist</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityHRMData_notexist
-//==== LABEL Check if interface HumanActivityHRMData exists, it should not
-//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityHRMData:HumanActivityHRMData U
-//==== SPEC_URL TBD
-//==== PRIORITY P3
-//==== TEST_CRITERIA NIO
-
-test(function () {
- check_no_interface_object("HumanActivityHRMData");
-}, document.title);
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>\r
-<!--\r
-Copyright (c) 2014 Samsung Electronics Co., Ltd.\r
-\r
-Licensed under the Apache License, Version 2.0 (the License);\r
-you may not use this file except in compliance with the License.\r
-You may obtain a copy of the License at\r
-\r
- http://www.apache.org/licenses/LICENSE-2.0\r
-\r
-Unless required by applicable law or agreed to in writing, software\r
-distributed under the License is distributed on an "AS IS" BASIS,\r
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
-See the License for the specific language governing permissions and\r
-limitations under the License.\r
-\r
-Authors:\r
- Ran Wang <ran22.wang@samsung.com>\r
-\r
--->\r
-<html>\r
-<head>\r
-<title>HumanActivityHRMData_rRInterval_attribute</title>\r
-<meta charset="utf-8"/>\r
-<script src="support/unitcommon.js"></script>\r
-<script src="support/humanactivitymonitor_common.js"></script>\r
-</head>\r
-<body>\r
-<div id="log"></div>\r
-<script>\r
-//==== TEST: HumanActivityHRMData_rRInterval_attribute\r
-//==== LABEL Check if HumanActivityHRMData::rRInterval exists, has type long, and is readonly\r
-//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityGPSInfo:rRInterval A\r
-//==== SPEC_URL TBD\r
-//==== PRIORITY P1\r
-//==== ONLOAD_DELAY 9\r
-//==== TEST_CRITERIA AE AT ARO\r
-\r
-setup({timeout: 9000});\r
-\r
-var t = async_test(document.title, {timeout: 9000}), getHumanActivityDataSuccess, getHumanActivityDataError, humanActivityType = "HRM";\r
-\r
-t.step(function () {\r
- add_result_callback(function () {\r
- tizen.humanactivitymonitor.stop(humanActivityType);\r
- });\r
-\r
- getHumanActivityDataError = t.step_func(function (error) {\r
- assert_unreached("getHumanActivityDataError is called" + error.name);\r
- });\r
-\r
- getHumanActivityDataSuccess = t.step_func(function (hrmInfo) {\r
- check_readonly(hrmInfo, "rRInterval", hrmInfo.rRInterval, "long", hrmInfo.rRInterval + 10);\r
- t.done();\r
- });\r
-\r
- tizen.humanactivitymonitor.start(humanActivityType);\r
- setTimeout(function(){ tizen.humanactivitymonitor.getHumanActivityData(humanActivityType, getHumanActivityDataSuccess, getHumanActivityDataError); }, 1000);\r
- \r
-});\r
-\r
-</script>\r
-</body>\r
-</html>\r
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2014 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:
- Saud Mohammad Mostafa <saud.mm@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityMonitorManagerObject_notexist</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityMonitorManagerObject_notexist
-//==== LABEL Check if interface HumanActivityMonitorManagerObject exists, it should not
-//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityMonitorManagerObject U
-//==== SPEC_URL TBD
-//==== PRIORITY P3
-//==== TEST_CRITERIA NIO
-
-test(function () {
- check_no_interface_object("HumanActivityMonitorManagerObject");
-}, document.title);
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2016 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:
- Hyukin Kwon <hyukin.kwon@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityMonitorManager_addActivityRecognitionListener_STATIONARY</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-<script src="support/humanactivitymonitor_common.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityMonitorManager_addActivityRecognitionListener_STATIONARY
-//==== LABEL Check if the method addActivityRecognitionListener of HumanActivityMonitorManager returns proper value
-//==== SPEC Tizen Web API:HumanActivityMonitor:HumanActivityMonitorManager:addActivityRecognitionListener M
-//==== SPEC_URL TBD
-//==== PRIORITY P1
-//==== EXECUTION_TYPE manual
-//==== STEP Press run button, then keep the device stationary
-//==== EXPECT Pass
-//==== TEST_CRITERIA MR MMINA CBT
-//==== ONLOAD_DELAY 60
-
-setup({"timeout": 60000});
-
-var t = async_test(document.title, {"timeout": 60000}), returnedValue = null, humanActivityType = "STATIONARY", listener;
-
-t.step(function () {
- add_result_callback(function () {
- tizen.humanactivitymonitor.removeActivityRecognitionListener(returnedValue);
- });
-
- listener = t.step_func(function (info) {
- assert_type(info, "object", "info is not an object");
- assert_own_property(info, "type", "info does not have type property");
- assert_equals(info.type, "STATIONARY", "Expected STATIONARY, but got " + info.type);
- assert_own_property(info, "timestamp", "info does not have timestamp property");
- assert_type(info.timestamp, "long", "info.timestamp is not long type");
- assert_in_array(info.accuracy, ["LOW", "MEDIUM", "HIGH"], "Incorrect value of type");
- assert_type(info, "object", "info is not an object");
- t.done();
- });
-
- returnedValue = tizen.humanactivitymonitor.addActivityRecognitionListener(humanActivityType, listener);
- assert_type(returnedValue, "long", "Incorrect type returned from addActivityRecognitionListener");
- alert("Keep the device stationary after pressing OK.");
-});
-</script>
-</body>
-</html>
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2016 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:
- Hyukin Kwon <hyukin.kwon@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityMonitorManager_addActivityRecognitionListener_WALKING</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-<script src="support/humanactivitymonitor_common.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityMonitorManager_addActivityRecognitionListener_WALKING
-//==== LABEL Check if the method addActivityRecognitionListener of HumanActivityMonitorManager returns proper value
-//==== SPEC Tizen Web API:HumanActivityMonitor:HumanActivityMonitorManager:addActivityRecognitionListener M
-//==== SPEC_URL TBD
-//==== PRIORITY P1
-//==== EXECUTION_TYPE manual
-//==== STEP Press run button. Pretend walking with the device.
-//==== EXPECT Pass
-//==== TEST_CRITERIA MR MMINA CBT
-//==== ONLOAD_DELAY 60
-
-setup({"timeout": 60000});
-
-var t = async_test(document.title, {"timeout": 60000}), returnedValue = null, humanActivityType = "WALKING", listener;
-
-t.step(function () {
- add_result_callback(function () {
- tizen.humanactivitymonitor.removeActivityRecognitionListener(returnedValue);
- });
-
- listener = t.step_func(function (info) {
- assert_type(info, "object", "info is not an object");
- assert_own_property(info, "type", "info does not have type property");
- assert_equals(info.type, "WALKING", "Expected WALKING, but got " + info.type);
- assert_own_property(info, "timestamp", "info does not have timestamp property");
- assert_type(info.timestamp, "long", "info.timestamp is not long type");
- assert_in_array(info.accuracy, ["LOW", "MEDIUM", "HIGH"], "Incorrect value of type");
- assert_type(info, "object", "info is not an object");
- t.done();
- });
-
- returnedValue = tizen.humanactivitymonitor.addActivityRecognitionListener(humanActivityType, listener);
- assert_type(returnedValue, "long", "Incorrect type returned from addActivityRecognitionListener");
- alert("Grab the device, and pretend walking after pressing OK.");
-});
-</script>
-</body>
-</html>
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2016 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:
- Hyukin Kwon <hyukin.kwon@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityMonitorManager_addActivityRecognitionListener_errorCallback_TypeMismatch</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-<script src="support/humanactivitymonitor_common.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityMonitorManager_addActivityRecognitionListener_errorCallback_TypeMismatch
-//==== LABEL Check if the method addActivityRecognitionListener of HumanActivityMonitorManager throws TypeMismatchError when invalid type value is assigned for errorCallback parameter
-//==== SPEC Tizen Web API:HumanActivityMonitor:HumanActivityMonitorManager:addActivityRecognitionListener M
-//==== SPEC_URL TBD
-//==== PRIORITY P2
-//==== TEST_CRITERIA MC
-
-test(function () {
- var humanActivityType = "STATIONARY", listener, errorCallback, conversionTable, exceptionName;
- listener = function () {};
- conversionTable = getTypeConversionExceptions("functionObject", false);
- for (i = 0; i < conversionTable.length; i++) {
- listener = conversionTable[i][0];
- exceptionName = conversionTable[i][1];
- assert_throws(TYPE_MISMATCH_EXCEPTION, function () {
- tizen.humanactivitymonitor.addActivityRecognitionListener(humanActivityType, listener, errorCallback);
- }, "TypeMismatchError should be thrown - given incorrect listener");
- }
-}, document.title);
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2016 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:
- Hyukin Kwon <hyukin.kwon@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityMonitorManager_addActivityRecognitionListener_exist</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-<script src="support/humanactivitymonitor_common.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityMonitorManager_addActivityRecognitionListener_exist
-//==== LABEL Check if the method addActivityRecognitionListener of HumanActivityMonitorManager exist
-//==== SPEC Tizen Web API:HumanActivityMonitor:HumanActivityMonitorManager:addActivityRecognitionListener M
-//==== SPEC_URL TBD
-//==== PRIORITY P1
-//==== TEST_CRITERIA ME
-
-test(function () {
- check_method_exists(tizen.humanactivitymonitor, "addActivityRecognitionListener");
-}, document.title);
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2016 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:
- Hyukin Kwon <hyukin.kwon@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityMonitorManager_addActivityRecognitionListener_type_TypeMismatch</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-<script src="support/humanactivitymonitor_common.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityMonitorManager_addActivityRecognitionListener_type_TypeMismatch
-//==== LABEL Check if the method addActivityRecognitionListener of HumanActivityMonitorManager throws TypeMismatchError when invalid value is assigned for type parameter
-//==== SPEC Tizen Web API:HumanActivityMonitor:HumanActivityMonitorManager:addActivityRecognitionListener M
-//==== SPEC_URL TBD
-//==== PRIORITY P2
-//==== TEST_CRITERIA MC MTCB MTL
-
-test(function () {
- var humanActivityType = "STATIONARY", listener, conversionTable, exceptionName;
- conversionTable = getTypeConversionExceptions("functionObject", false);
- for (i = 0; i < conversionTable.length; i++) {
- listener = conversionTable[i][0];
- exceptionName = conversionTable[i][1];
- assert_throws(TYPE_MISMATCH_EXCEPTION, function () {
- tizen.humanactivitymonitor.addActivityRecognitionListener(humanActivityType, listener);
- }, "TypeMismatchError should be thrown - given incorrect listener");
- }
-}, document.title);
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2016 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:
- Hyukin Kwon <hyukin.kwon@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityMonitorManager_addActivityRecognitionListener_misarg</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-<script src="support/humanactivitymonitor_common.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityMonitorManager_addActivityRecognitionListener_misarg
-//==== LABEL Check if the method addActivityRecognitionListener of HumanActivityMonitorManager throws TypeMismatchError when no param assigned
-//==== SPEC Tizen Web API:HumanActivityMonitor:HumanActivityMonitorManager:addActivityRecognitionListener M
-//==== SPEC_URL TBD
-//==== PRIORITY P2
-//==== TEST_CRITERIA MMA
-
-test(function () {
- assert_throws(TYPE_MISMATCH_EXCEPTION, function () {
- tizen.humanactivitymonitor.addActivityRecognitionListener();
- }, TYPE_MISMATCH_EXCEPTION + " should be thrown when no argument assigned");
-}, document.title);
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2016 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:
- Hyukin Kwon <hyukin.kwon@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityMonitorManager_addActivityRecognitionListener_listener_TypeMismatch</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-<script src="support/humanactivitymonitor_common.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityMonitorManager_addActivityRecognitionListener_listener_TypeMismatch
-//==== LABEL Check if the method addActivityRecognitionListener of HumanActivityMonitorManager throws TypeMismatchError when invalid type value is assigned for listener parameter
-//==== SPEC Tizen Web API:HumanActivityMonitor:HumanActivityMonitorManager:addActivityRecognitionListener M
-//==== SPEC_URL TBD
-//==== PRIORITY P2
-//==== TEST_CRITERIA MC
-
-test(function () {
- var humanActivityType = "INVALID", listener;
- listener = function () {};
- assert_throws(TYPE_MISMATCH_EXCEPTION, function () {
- tizen.humanactivitymonitor.addActivityRecognitionListener(humanActivityType, listener);
- });
-}, document.title);
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2016 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:
- Hyukin Kwon <hyukin.kwon@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityMonitorManager_addActivityRecognitionListener_with_errorCallback</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-<script src="support/humanactivitymonitor_common.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityMonitorManager_addActivityRecognitionListener_with_errorCallback
-//==== LABEL Check if the method addActivityRecognitionListener of HumanActivityMonitorManager returns proper value with errorcallback assigned
-//==== SPEC Tizen Web API:HumanActivityMonitor:HumanActivityMonitorManager:addActivityRecognitionListener M
-//==== SPEC_URL TBD
-//==== PRIORITY P1
-//==== EXECUTION_TYPE manual
-//==== STEP Press run button, then keep the device stationary
-//==== EXPECT Pass
-//==== TEST_CRITERIA MR MOA CBT
-//==== ONLOAD_DELAY 60
-
-setup({"timeout": 60000});
-
-var t = async_test(document.title, {"timeout": 60000}), returnedValue = null, humanActivityType = "STATIONARY", listener, errorCallback;
-
-t.step(function () {
- add_result_callback(function () {
- tizen.humanactivitymonitor.removeActivityRecognitionListener(returnedValue);
- });
-
- errorCallback = t.step_func(function (error) {
- assert_unreached("Error callback should not be invoked, but was invoked with the error " + error.name);
- });
-
- listener = t.step_func(function (info) {
- assert_type(info, "object", "info is not an object");
- assert_own_property(info, "type", "info does not have type property");
- assert_equals(info.type, "STATIONARY", "Expected STATIONARY, but got " + info.type);
- assert_own_property(info, "timestamp", "info does not have timestamp property");
- assert_type(info.timestamp, "long", "info.timestamp is not long type");
- assert_in_array(info.accuracy, ["LOW", "MEDIUM", "HIGH"], "Incorrect value of type");
- assert_type(info, "object", "info is not an object");
- t.done();
- });
-
- returnedValue = tizen.humanactivitymonitor.addActivityRecognitionListener(humanActivityType, listener, errorCallback);
- assert_type(returnedValue, "long", "Incorrect type returned from addActivityRecognitionListener");
- alert("Keep the device stationary after pressing OK.");
-});
-</script>
-</body>
-</html>
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2016 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:
- Hyukin Kwon <hyukin.kwon@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityMonitorManager_addActivityRecognitionListener_with_errorCallback_null</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-<script src="support/humanactivitymonitor_common.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityMonitorManager_addActivityRecognitionListener_with_errorCallback_null
-//==== LABEL Check if the method addActivityRecognitionListener of HumanActivityMonitorManager returns proper value with errorcallback null assigned
-//==== SPEC Tizen Web API:HumanActivityMonitor:HumanActivityMonitorManager:addActivityRecognitionListener M
-//==== SPEC_URL TBD
-//==== PRIORITY P1
-//==== EXECUTION_TYPE manual
-//==== STEP Press run button, then keep the device stationary
-//==== EXPECT Pass
-//==== TEST_CRITERIA MR MMINA CBT
-//==== ONLOAD_DELAY 60
-
-setup({"timeout": 60000});
-
-var t = async_test(document.title, {"timeout": 60000}), returnedValue = null, humanActivityType = "STATIONARY", listener;
-
-t.step(function () {
- add_result_callback(function () {
- tizen.humanactivitymonitor.removeActivityRecognitionListener(returnedValue);
- });
-
- listener = t.step_func(function (info) {
- assert_type(info, "object", "info is not an object");
- assert_own_property(info, "type", "info does not have type property");
- assert_equals(info.type, "STATIONARY", "Expected STATIONARY, but got " + info.type);
- assert_own_property(info, "timestamp", "info does not have timestamp property");
- assert_type(info.timestamp, "long", "info.timestamp is not long type");
- assert_in_array(info.accuracy, ["LOW", "MEDIUM", "HIGH"], "Incorrect value of type");
- assert_type(info, "object", "info is not an object");
- t.done();
- });
-
- returnedValue = tizen.humanactivitymonitor.addActivityRecognitionListener(humanActivityType, listener, null);
- assert_type(returnedValue, "long", "Incorrect type returned from addActivityRecognitionListener");
- alert("Keep the device stationary after pressing OK.");
-});
-</script>
-</body>
-</html>
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2014 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:
- Saud Mohammad Mostafa <saud.mm@samsung.com>
- Saleh Enam Shohag <saleh.enam@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityMonitorManager_extend</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityMonitorManager_extend
-//==== LABEL Check if HumanActivityMonitorManager is extendable
-//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityMonitorManager:HumanActivityMonitorManager U
-//==== SPEC_URL TBD
-//==== PRIORITY P3
-//==== TEST_CRITERIA OBX
-
-test(function () {
- check_extensibility(tizen.humanactivitymonitor);
-}, document.title);
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2014 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:
- Saud Mohammad Mostafa <saud.mm@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityMonitorManager_getHumanActivityData</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-<script src="support/humanactivitymonitor_common.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityMonitorManager_getHumanActivityData
-//==== LABEL Check if method getHumanActivityData of HumanActivityMonitorManager returns properly value
-//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityMonitorManager:getHumanActivityData M
-//==== SPEC_URL TBD
-//==== PRIORITY P1
-//==== TEST_CRITERIA MR MMINA
-
-test(function () {
- var returnedValue = null, humanActivityType = "PEDOMETER";
-
- add_result_callback(function () {
- tizen.humanactivitymonitor.stop(humanActivityType);
- });
-
- try {
- returnedValue = tizen.humanactivitymonitor.start(humanActivityType);
- assert_equals(returnedValue, undefined, "Incorrect returned value");
- returnedValue = tizen.humanactivitymonitor.getHumanActivityData(humanActivityType, function () {});
- assert_equals(returnedValue, undefined, "Incorrect returned value");
- } catch (e) {
- if(e.name === NOT_SUPPORTED_EXCEPTION) {
- //do nothing here
- } else {
- assert_unreached("unexpected exception is thrown" + e.name + ", msg: " + e.message);
- }
- }
-}, document.title);
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2014 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:
- Saud Mohammad Mostafa <saud.mm@samsung.com>
- Saleh Enam Shohag <saleh.enam@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityMonitorManager_getHumanActivityData_errorCallback_TypeMismatch</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-<script src="support/humanactivitymonitor_common.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityMonitorManager_getHumanActivityData_errorCallback_TypeMismatch
-//==== LABEL Check if HumanActivityMonitorManager::getHumanActivityData() with incorrect errorCallback argument throws exception
-//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityMonitorManager:getHumanActivityData M
-//==== SPEC_URL TBD
-//==== PRIORITY P2
-//==== ONLOAD_DELAY 30
-//==== TEST_CRITERIA MC
-
-setup({timeout: 30000});
-
-var t = async_test(document.title, {timeout: 30000}), successCallback, errorCallback, conversionTable, exceptionName, i, humanActivityType;
-
-t.step(function () {
- add_result_callback(function () {
- tizen.humanactivitymonitor.stop(humanActivityType);
- });
-
- successCallback = t.step_func(function (humanActivityData) {
- assert_unreached("Should not be here.");
- });
-
- humanActivityType = "PEDOMETER";
- tizen.humanactivitymonitor.start(humanActivityType);
- conversionTable = getTypeConversionExceptions("functionObject", true);
- for (i = 0; i < conversionTable.length; i++) {
- errorCallback = conversionTable[i][0];
- exceptionName = conversionTable[i][1];
- assert_throws(TYPE_MISMATCH_EXCEPTION, function () {
- tizen.humanactivitymonitor.getHumanActivityData(humanActivityType, successCallback, errorCallback);
- }, " should be thrown - given incorrect errorCallback");
- }
- t.done();
-});
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2014 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:
- Saud Mohammad Mostafa <saud.mm@samsung.com>
- Saleh Enam Shohag <saleh.enam@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityMonitorManager_getHumanActivityData_errorCallback_invalid_cb</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityMonitorManager_getHumanActivityData_errorCallback_invalid_cb
-//==== LABEL Check if HumanActivityMonitorManager::getHumanActivityData() method throws exception when errorCallback is invalid
-//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityMonitorManager:getHumanActivityData M
-//==== SPEC_URL TBD
-//==== PRIORITY P2
-//==== ONLOAD_DELAY 30
-//==== TEST_CRITERIA MTCB
-
-setup({timeout: 30000});
-
-var t = async_test(document.title, {timeout: 30000}), successCallback, invalidCallback, humanActivityType = "PEDOMETER";
-
-t.step(function () {
- add_result_callback(function () {
- tizen.humanactivitymonitor.stop(humanActivityType);
- });
-
- successCallback = t.step_func(function (humanActivityData) {
- assert_unreached("Should not be here.");
- });
-
- invalidCallback = {
- onerror: t.step_func(function (error) {
- assert_unreached("Invalid errorCallback should not be invoked: " + error.name + ": " + error.message);
- })
- };
-
- tizen.humanactivitymonitor.start(humanActivityType);
- assert_throws(TYPE_MISMATCH_EXCEPTION, function () {
- tizen.humanactivitymonitor.getHumanActivityData(humanActivityType, successCallback, invalidCallback);
- }, TYPE_MISMATCH_EXCEPTION + "should be thrown");
- t.done();
-});
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2014 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:
- Saleh Enam Shohag <saleh.enam@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityMonitorManager_getHumanActivityData_errorCallback_invoked</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityMonitorManager_getHumanActivityData_errorCallback_invoked
-//==== LABEL Check exception in error callback of HumanActivityMonitorManager::getHumanActivityData() method
-//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityMonitorManager:getHumanActivityData M
-//==== SPEC_URL TBD
-//==== PRIORITY P2
-//==== ONLOAD_DELAY 30
-//==== TEST_CRITERIA MERRCB
-
-setup({timeout: 30000});
-
-var t = async_test(document.title, {timeout: 30000}), successCallback, errorCallback, humanActivityType = "PEDOMETER";
-
-t.step(function () {
- successCallback = t.step_func(function (humanActivityData) {
- assert_unreached("SuccessCallback should not invoke");
- });
-
- errorCallback = t.step_func(function (error) {
- assert_equals(error.name, "ServiceNotAvailableError", "Incorrect error name");
- assert_type(error.message, "string", "Error message is not string");
- assert_not_equals(error.message, "", "Error message is empty");
- t.done();
- });
-
- tizen.humanactivitymonitor.getHumanActivityData(humanActivityType, successCallback, errorCallback);
-});
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2014 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:
- Saud Mohammad Mostafa <saud.mm@samsung.com>
- Saleh Enam Shohag <saleh.enam@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityMonitorManager_getHumanActivityData_exist</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityMonitorManager_getHumanActivityData_exist
-//==== LABEL Check if HumanActivityMonitorManager::getHumanActivityData() method exists
-//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityMonitorManager:getHumanActivityData M
-//==== SPEC_URL TBD
-//==== PRIORITY P0
-//==== TEST_CRITERIA ME
-
-test(function () {
- check_method_exists(tizen.humanactivitymonitor, "getHumanActivityData");
-}, document.title);
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2014 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:
- Saud Mohammad Mostafa <saud.mm@samsung.com>
- Saleh Enam Shohag <saleh.enam@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityMonitorManager_getHumanActivityData_misarg</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityMonitorManager_getHumanActivityData_misarg
-//==== LABEL Check if HumanActivityMonitorManager::getHumanActivityData() throws exception when successCallback is missing
-//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityMonitorManager:getHumanActivityData M
-//==== SPEC_URL TBD
-//==== PRIORITY P2
-//==== TEST_CRITERIA MMA
-
-test(function () {
- var humanActivityType;
- add_result_callback(function () {
- tizen.humanactivitymonitor.stop(humanActivityType);
- });
-
- humanActivityType = "PEDOMETER";
- tizen.humanactivitymonitor.start(humanActivityType);
- assert_throws(TYPE_MISMATCH_EXCEPTION, function () {
- tizen.humanactivitymonitor.getHumanActivityData();
- }, TYPE_MISMATCH_EXCEPTION + " should be thrown");
-}, document.title);
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2014 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:
- Wei Zhang <wei625.zhang@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityMonitorManager_getHumanActivityData_stepStatus_NOT_MOVING</title>
-<script src="support/unitcommon.js"></script>
-<meta charset="utf-8"/>
-<script src="support/humanactivitymonitor_common.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityMonitorManager_getHumanActivityData_stepStatus_NOT_MOVING
-//==== LABEL Check if the specifies the pedometer user's current movement type is NOT_MOVING
-//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityMonitorManager:getHumanActivityData M
-//==== SPEC_URL TBD
-//==== PRIORITY P1
-//==== EXECUTION_TYPE manual
-//==== STEP Press run button, then keep the device stationary.
-//==== EXPECT Pass
-//==== ONLOAD_DELAY 30
-//==== TEST_CRITERIA MR MMINA
-
-setup({timeout: 30000});
-
-var t = async_test(document.title, {timeout: 30000}), successCallback, returnedValue = null, humanActivityType;
-
-t.step(function () {
- add_result_callback(function () {
- tizen.humanactivitymonitor.stop(humanActivityType);
- });
-
- successCallback = t.step_func(function (humanActivityData) {
- assert_equals(returnedValue, undefined, "Incorrect returned value");
- if (humanActivityData.stepStatus === "NOT_MOVING")
- t.done();
- });
-
- humanActivityType = "PEDOMETER";
- tizen.humanactivitymonitor.start(humanActivityType);
- setTimeout(function(){
- returnedValue = tizen.humanactivitymonitor.getHumanActivityData(humanActivityType, successCallback);}, 20000);
-});
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2014 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:
- Wei Zhang <wei625.zhang@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityMonitorManager_getHumanActivityData_stepStatus_RUNNING</title>
-<script src="support/unitcommon.js"></script>
-<meta charset="utf-8"/>
-<script src="support/humanactivitymonitor_common.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityMonitorManager_getHumanActivityData_stepStatus_RUNNING
-//==== LABEL Check if the specifies the pedometer user's current movement type is RUNNING
-//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityMonitorManager:getHumanActivityData M
-//==== SPEC_URL TBD
-//==== PRIORITY P1
-//==== EXECUTION_TYPE manual
-//==== STEP Press run button. Pretend running with the device.
-//==== EXPECT Pass
-//==== ONLOAD_DELAY 30
-//==== TEST_CRITERIA MR MMINA
-
-setup({timeout: 30000});
-
-var t = async_test(document.title, {timeout: 30000}), successCallback, returnedValue = null, humanActivityType;
-
-t.step(function () {
- add_result_callback(function () {
- tizen.humanactivitymonitor.stop(humanActivityType);
- });
-
- successCallback = t.step_func(function (humanActivityData) {
- assert_equals(returnedValue, undefined, "Incorrect returned value");
- if (humanActivityData.stepStatus === "RUNNING")
- t.done();
- });
-
- humanActivityType = "PEDOMETER";
- tizen.humanactivitymonitor.start(humanActivityType);
- setTimeout(function(){
- returnedValue = tizen.humanactivitymonitor.getHumanActivityData(humanActivityType, successCallback);}, 20000);
-});
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2014 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:
- Wei Zhang <wei625.zhang@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityMonitorManager_getHumanActivityData_stepStatus_UNKNOWN</title>
-<script src="support/unitcommon.js"></script>
-<meta charset="utf-8"/>
-<script src="support/humanactivitymonitor_common.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityMonitorManager_getHumanActivityData_stepStatus_UNKNOWN
-//==== LABEL Check if the specifies the pedometer user's current movement type is UNKNOWN
-//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityMonitorManager:getHumanActivityData M
-//==== SPEC_URL TBD
-//==== PRIORITY P1
-//==== EXECUTION_TYPE manual
-//==== STEP Press run button, press Power key to keep the device LCD off, then Pretend walking with the device.
-//==== EXPECT Pass
-//==== ONLOAD_DELAY 30
-//==== TEST_CRITERIA MR MMINA
-
-setup({timeout: 30000});
-
-var t = async_test(document.title, {timeout: 30000}), successCallback, returnedValue = null, humanActivityType;
-
-t.step(function () {
- add_result_callback(function () {
- tizen.humanactivitymonitor.stop(humanActivityType);
- });
-
- successCallback = t.step_func(function (humanActivityData) {
- assert_equals(returnedValue, undefined, "Incorrect returned value");
- if (humanActivityData.stepStatus === "UNKNOWN")
- t.done();
- });
-
- humanActivityType = "PEDOMETER";
- tizen.humanactivitymonitor.start(humanActivityType);
- setTimeout(function(){
- returnedValue = tizen.humanactivitymonitor.getHumanActivityData(humanActivityType, successCallback);}, 20000);
-});
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2014 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:
- Wei Zhang <wei625.zhang@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityMonitorManager_getHumanActivityData_stepStatus_WALKING</title>
-<script src="support/unitcommon.js"></script>
-<meta charset="utf-8"/>
-<script src="support/humanactivitymonitor_common.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityMonitorManager_getHumanActivityData_stepStatus_WALKING
-//==== LABEL Check if the specifies the pedometer user's current movement type is WALKING
-//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityMonitorManager:getHumanActivityData M
-//==== SPEC_URL TBD
-//==== PRIORITY P1
-//==== EXECUTION_TYPE manual
-//==== STEP Press run button. Pretend walking with the device.
-//==== EXPECT Pass
-//==== ONLOAD_DELAY 30
-//==== TEST_CRITERIA MR MMINA
-
-setup({timeout: 30000});
-
-var t = async_test(document.title, {timeout: 30000}), successCallback, returnedValue = null, humanActivityType;
-
-t.step(function () {
- add_result_callback(function () {
- tizen.humanactivitymonitor.stop(humanActivityType);
- });
-
- successCallback = t.step_func(function (humanActivityData) {
- assert_equals(returnedValue, undefined, "Incorrect returned value");
- if (humanActivityData.stepStatus === "WALKING")
- t.done();
- });
-
- humanActivityType = "PEDOMETER";
- tizen.humanactivitymonitor.start(humanActivityType);
- setTimeout(function(){
- returnedValue = tizen.humanactivitymonitor.getHumanActivityData(humanActivityType, successCallback);}, 20000);
-});
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2014 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:
- Saud Mohammad Mostafa <saud.mm@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityMonitorManager_getHumanActivityData_successCallback_TypeMismatch</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityMonitorManager_getHumanActivityData_successCallback_TypeMismatch
-//==== LABEL Check if HumanActivityMonitorManager::getHumanActivityData() with incorrect successCallback argument throws exception
-//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityMonitorManager:getHumanActivityData M
-//==== SPEC_URL TBD
-//==== PRIORITY P2
-//==== ONLOAD_DELAY 30
-//==== TEST_CRITERIA MC
-
-setup({timeout: 30000});
-
-var t = async_test(document.title, {timeout: 30000}), successCallback, conversionTable, exceptionName, i, humanActivityType;
-
-t.step(function () {
- add_result_callback(function () {
- tizen.humanactivitymonitor.stop(humanActivityType);
- });
-
- humanActivityType = "PEDOMETER";
- tizen.humanactivitymonitor.start(humanActivityType);
- conversionTable = getTypeConversionExceptions("functionObject", false);
- for (i = 0; i < conversionTable.length; i++) {
- successCallback = conversionTable[i][0];
- exceptionName = conversionTable[i][1];
- assert_throws(TYPE_MISMATCH_EXCEPTION, function () {
- tizen.humanactivitymonitor.getHumanActivityData(humanActivityType, successCallback);
- }, TYPE_MISMATCH_EXCEPTION + " should be thrown - given incorrect successCallback");
- }
- t.done();
-});
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2014 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:
- Saud Mohammad Mostafa <saud.mm@samsung.com>
- Saleh Enam Shohag <saleh.enam@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityMonitorManager_getHumanActivityData_successCallback_invalid_cb </title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityMonitorManager_getHumanActivityData_successCallback_invalid_cb
-//==== LABEL Check if HumanActivityMonitorManager::getHumanActivityData() method throws exception when successCallback is invalid
-//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityMonitorManager:getHumanActivityData M
-//==== SPEC_URL TBD
-//==== PRIORITY P2
-//==== ONLOAD_DELAY 30
-//==== TEST_CRITERIA MTCB
-
-setup({timeout: 30000});
-
-var t = async_test(document.title, {timeout: 30000}), invalidCallback, humanActivityType
-
-t.step(function () {
- add_result_callback(function () {
- tizen.humanactivitymonitor.stop(humanActivityType);
- });
-
- invalidCallback = {
- onsuccess: t.step_func(function (humanActivityData) {
- assert_unreached("Invalid success callback invoked");
- })
- };
-
- humanActivityType = "PEDOMETER";
- tizen.humanactivitymonitor.start(humanActivityType);
- assert_throws(TYPE_MISMATCH_EXCEPTION, function () {
- tizen.humanactivitymonitor.getHumanActivityData(humanActivityType, invalidCallback);
- }, TYPE_MISMATCH_EXCEPTION + "should be thrown");
- t.done();
-});
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2014 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:
- Saleh Enam Shohag <saleh.enam@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityMonitorManager_getHumanActivityData_type_HRM</title>
-<script src="support/unitcommon.js"></script>
-<meta charset="utf-8"/>
-<script src="support/humanactivitymonitor_common.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityMonitorManager_getHumanActivityData_type_HRM
-//==== LABEL Check if HumanActivityMonitorManager::getHumanActivityData() method works properly for HumanActivityType HRM
-//==== SPEC Tizen Web API:System:HumanActivityMonitor:HumanActivityMonitorManager:getHumanActivityData M
-//==== SPEC_URL TBD
-//==== PRIORITY P1
-//==== ONLOAD_DELAY 30
-//==== TEST_CRITERIA MR MMINA
-
-setup({timeout: 30000});
-
-var t = async_test(document.title, {timeout: 30000}), successCallback, returnedValue = null, humanActivityType;
-
-t.step(function () {
- add_result_callback(function () {
- tizen.humanactivitymonitor.stop(humanActivityType);
- });
-
- successCallback = t.step_func(function (humanActivityData) {
- assert_equals(returnedValue, undefined, "Incorrect returned value");
- t.done();
- });
-
- humanActivityType = "HRM";
- tizen.humanactivitymonitor.start(humanActivityType);
- setTimeout(function(){ returnedValue = tizen.humanactivitymonitor.getHumanActivityData(humanActivityType, successCallback); }, 3000);
-
-});
-
-</script>
-</body>
-</html>
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2014 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:
- Saud Mohammad Mostafa <saud.mm@samsung.com>
- Saleh Enam Shohag <saleh.enam@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityMonitorManager_getHumanActivityData_type_PEDOMETER</title>
-<script src="support/unitcommon.js"></script>
-<meta charset="utf-8"/>
-<script src="support/humanactivitymonitor_common.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityMonitorManager_getHumanActivityData_type_PEDOMETER
-//==== LABEL Check if HumanActivityMonitorManager::getHumanActivityData() method works properly
-//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityMonitorManager:getHumanActivityData M
-//==== SPEC_URL TBD
-//==== PRIORITY P1
-//==== ONLOAD_DELAY 30
-//==== TEST_CRITERIA MR MMINA
-
-setup({timeout: 30000});
-
-var t = async_test(document.title, {timeout: 30000}), successCallback, returnedValue = null, humanActivityType;
-
-t.step(function () {
- add_result_callback(function () {
- tizen.humanactivitymonitor.stop(humanActivityType);
- });
-
- successCallback = t.step_func(function (humanActivityData) {
- assert_equals(returnedValue, undefined, "Incorrect returned value");
- check_human_activity_pedometer_data(humanActivityData);
- t.done();
- });
-
- humanActivityType = "PEDOMETER";
- tizen.humanactivitymonitor.start(humanActivityType);
- returnedValue = tizen.humanactivitymonitor.getHumanActivityData(humanActivityType, successCallback);
-});
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2014 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:
- Saud Mohammad Mostafa <saud.mm@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityMonitorManager_getHumanActivityData_with_errorCallback</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-<script src="support/humanactivitymonitor_common.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityMonitorManager_getHumanActivityData_with_errorCallback
-//==== LABEL Check if HumanActivityMonitorManager::getHumanActivityData() method works properly with optional argument
-//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityMonitorManager:getHumanActivityData M
-//==== SPEC_URL TBD
-//==== PRIORITY P1
-//==== ONLOAD_DELAY 30
-//==== TEST_CRITERIA MR MOA
-
-setup({timeout: 30000});
-
-var t = async_test(document.title, {timeout: 30000}), successCallback, errorCallback, returnedValue = null, humanActivityType;
-
-t.step(function () {
- add_result_callback(function () {
- tizen.humanactivitymonitor.stop(humanActivityType);
- });
-
- successCallback = t.step_func(function (humanActivityData) {
- assert_equals(returnedValue, undefined, "Incorrect returned value");
- check_human_activity_pedometer_data(humanActivityData);
- t.done();
- });
-
- errorCallback = t.step_func(function (error) {
- assert_unreached("error callback invoked: name: " + error.name + ", msg: " + error.message);
- });
- humanActivityType = "PEDOMETER";
- tizen.humanactivitymonitor.start(humanActivityType);
- returnedValue = tizen.humanactivitymonitor.getHumanActivityData(humanActivityType, successCallback, errorCallback);
-});
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2014 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:
- Saud Mohammad Mostafa <saud.mm@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityMonitorManager_in_tizen</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityMonitorManager_in_tizen
-//==== LABEL Check if humanactivitymonitor exists in tizen
-//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityMonitorManager:HumanActivityMonitorManager U
-//==== SPEC_URL TBD
-//==== PRIORITY P3
-//==== TEST_CRITERIA OBME
-
-test(function () {
- assert_true("humanactivitymonitor" in tizen, "No humanactivitymonitor in tizen");
- check_readonly(tizen, "humanactivitymonitor", tizen.humanactivitymonitor, "object", "dummyValue");
-}, document.title);
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2014 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:
- Saud Mohammad Mostafa <saud.mm@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityMonitorManager_notexist</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityMonitorManager_notexist
-//==== LABEL Check if interface HumanActivityMonitorManager exists, it should not
-//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityMonitorManager:HumanActivityMonitorManager U
-//==== SPEC_URL TBD
-//==== PRIORITY P3
-//==== TEST_CRITERIA NIO
-
-test(function () {
- check_no_interface_object("HumanActivityMonitorManager");
-}, document.title);
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2016 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:
- Xiaoyan Qian <xy.qian@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityMonitorManager_readRecorderData_NotSupportedError</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityMonitorManager_readRecorderData_NotSupportedError
-//==== LABEL Check if readRecorderData throw NotSupportedError called with not supported human activity recorder type
-//==== SPEC Tizen Web API:System:HumanActivityMonitor:HumanActivityMonitorManager:readRecorderData M
-//==== SPEC_URL TBD
-//==== PRIORITY P2
-//==== TEST_CRITERIA MC
-
-setup({timeout: 30000});
-
-var t = async_test(document.title, {timeout: 30000}), successCallback, date = new Date(), endTime = date.getTime(), startTime = date.setDate(date.getDate() - 1),
- query = {
- startTime: startTime/1000,
- endTime: endTime/1000,
- interval: 1440
- };
-
-t.step(function () {
- successCallback = t.step_func(function (humanactivitydata) {
- assert_unreached("success callback should not be invoked");
- });
-
- if (!tizen.systeminfo.getCapability("http://tizen.org/feature/sensor.pedometer")) {
- assert_throws(NOT_SUPPORTED_EXCEPTION, function () {
- tizen.humanactivitymonitor.readRecorderData("PEDOMETER", query, successCallback);
- }, "NotSupportedError exception should throw");
- }
- if (!tizen.systeminfo.getCapability("http://tizen.org/feature/sensor.heart_rate_monitor")) {
- assert_throws(NOT_SUPPORTED_EXCEPTION, function () {
- tizen.humanactivitymonitor.readRecorderData("HRM", query, successCallback);
- }, "NotSupportedError exception should throw");
- }
- if (!tizen.systeminfo.getCapability("http://tizen.org/feature/sensor.sleep_monitor")) {
- assert_throws(NOT_SUPPORTED_EXCEPTION, function () {
- tizen.humanactivitymonitor.readRecorderData("SLEEP_MONITOR", query, successCallback);
- }, "NotSupportedError exception should throw");
- }
- if (!tizen.systeminfo.getCapability("http://tizen.org/feature/sensor.barometer")) {
- assert_throws(NOT_SUPPORTED_EXCEPTION, function () {
- tizen.humanactivitymonitor.readRecorderData("PRESSURE", query, successCallback);
- }, "NotSupportedError exception should throw");
- }
-
- t.done();
-});
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2016 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.
-
-Author:
- Xiaoyan Qian <xy.qian@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityMonitorManager_readRecorderData_errorCallback_TypeMismatch</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityMonitorManager_readRecorderData_errorCallback_TypeMismatch
-//==== LABEL Check if readRecorderData throws exception when errorCallback is incorrect
-//==== ONLOAD_DELAY 30
-//==== SPEC Tizen Web API:System:HumanActivityMonitor:HumanActivityMonitorManager:readRecorderData M
-//==== SPEC_URL TBD
-//==== PRIORITY P2
-//==== TEST_CRITERIA MC
-
-setup({timeout: 30000});
-
-var t = async_test(document.title, {timeout: 30000}), conversionTable, successCallback, errorCallback, exceptionName, i,
- date = new Date(), endTime = date.getTime(), startTime = date.setDate(date.getDate() - 1),
- query = {
- startTime: startTime/1000,
- endTime: endTime/1000,
- interval: 1440
- };
-
-t.step(function () {
- conversionTable = getTypeConversionExceptions("functionObject", true);
-
- successCallback = t.step_func(function (playlist) {
- assert_unreached("createPlaylist() success callback should not be invoked.");
- });
-
- for (i = 0; i < conversionTable.length; i++) {
- errorCallback = conversionTable[i][0];
- exceptionName = conversionTable[i][1];
- assert_throws({name: exceptionName},
- function () {
- tizen.humanactivitymonitor.readRecorderData("PEDOMETER", query, successCallback, errorCallback);
- }, "Given incorrect error callback.");
- }
-
- t.done();
-});
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2016 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:
- Xiaoyan Qian <xy.qian@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityMonitorManager_readRecorderData_errorCallback_invalid_cb</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityMonitorManager_readRecorderData_errorCallback_invalid_cb
-//==== LABEL Check if readRecorderData throws exception when error callback is invalid
-//==== SPEC Tizen Web API:System:HumanActivityMonitor:HumanActivityMonitorManager:readRecorderData M
-//==== SPEC_URL TBD
-//==== PRIORITY P2
-//==== TEST_CRITERIA MTCB
-
-setup({timeout: 30000});
-
-var t = async_test(document.title, {timeout: 30000}), successCallback, incorrectCallback, date = new Date(), endTime = date.getTime(), startTime = date.setDate(date.getDate() - 1),
- query = {
- startTime: startTime/1000,
- endTime: endTime/1000,
- interval: 1440
- };
-
-t.step(function () {
- successCallback = t.step_func(function (humanactivitydata) {
- assert_unreached("readRecorderData() success callback should not be invoked");
- });
-
- incorrectCallback = {
- onerror: t.step_func(function (error) {
- assert_unreached("Invalid error callback invoked:" + error.name + ": " + error.message);
- })
- };
-
- assert_throws(TYPE_MISMATCH_EXCEPTION,
- function () {
- tizen.humanactivitymonitor.readRecorderData("PEDOMETER", query, successCallback, incorrectCallback);
- }, "Given invalid successCallback.");
-
- t.done();
-});
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2016 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:
- Xiaoyan Qian <xy.qian@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityMonitorManager_readRecorderData_exist</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityMonitorManager_readRecorderData_exist
-//==== LABEL Check if readRecorderData exists
-//==== SPEC Tizen Web API:System:HumanActivityMonitor:HumanActivityMonitorManager:readRecorderData M
-//==== SPEC_URL TBD
-//==== PRIORITY P0
-//==== TEST_CRITERIA ME
-
-test(function () {
- assert_true("readRecorderData" in tizen.humanactivitymonitor, "HumanActivityMonitorManager should have readRecorderData method");
- check_method_exists(tizen.humanactivitymonitor, "readRecorderData");
-}, document.title);
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2016 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:
- Xiaoyan Qian <xy.qian@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityMonitorManager_readRecorderData_misarg</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityMonitorManager_readRecorderData_misarg
-//==== LABEL Check if HumanActivityMonitorManager::readRecorderData() called with missing non-optional argument throws an exception
-//==== PRIORITY P1
-//==== SPEC Tizen Web API:System:HumanActivityMonitor:HumanActivityMonitorManager:readRecorderData M
-//==== SPEC_URL TBD
-//==== TEST_CRITERIA MMA
-
-test(function () {
- assert_throws(TYPE_MISMATCH_EXCEPTION, function () {
- tizen.humanactivitymonitor.readRecorderData();
- }, "TypeMismatchError exception should throw");
-}, document.title);
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2016 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.
-
-Author:
- Xiaoyan Qian <xy.qian@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityMonitorManager_readRecorderData_query_TypeMismatch</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityMonitorManager_readRecorderData_query_TypeMismatch
-//==== LABEL Check if readRecorderData throws exception when query is incorrect
-//==== ONLOAD_DELAY 30
-//==== SPEC Tizen Web API:System:HumanActivityMonitor:HumanActivityMonitorManager:readRecorderData M
-//==== SPEC_URL TBD
-//==== PRIORITY P2
-//==== TEST_CRITERIA MC
-
-setup({timeout: 30000});
-
-var t = async_test(document.title, {timeout: 30000}), conversionTable, successCallback, errorCallback, exceptionName, i,
- date = new Date(), endTime = date.getTime(), startTime = date.setDate(date.getDate() - 1),
- query = {
- startTime: startTime/1000,
- endTime: endTime/1000,
- interval: 1440
- };
-
-t.step(function () {
- conversionTable = getTypeConversionExceptions("dictionary", true);
-
- errorCallback = t.step_func(function (error) {
- assert_unreached("readRecorderData() error callback was invoked: " + error.name + " msg: " + error.message);
- });
-
- successCallback = t.step_func(function (humanactivitydata) {
- assert_unreached("readRecorderData() success callback should not be invoked");
- });
-
- for (i = 0; i < conversionTable.length; i++) {
- query = conversionTable[i][0];
- exceptionName = conversionTable[i][1];
- assert_throws({name: exceptionName},
- function () {
- tizen.humanactivitymonitor.readRecorderData("PEDOMETER", query, successCallback, errorCallback);
- }, "Given incorrect query callback.");
- }
-
- t.done();
-});
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2016 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:
- Xiaoyan Qian <xy.qian@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityMonitorManager_readRecorderData_query_empty</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityMonitorManager_readRecorderData_query_empty
-//==== LABEL Check if readRecorderData can be called with empty object as query argument
-//==== SPEC Tizen Web API:System:HumanActivityMonitor:HumanActivityMonitorManager:readRecorderData M
-//==== SPEC_URL TBD
-//==== PRIORITY P1
-//==== EXECUTION_TYPE manual
-//==== STEP Press run button. Pretend walking with the device.
-//==== EXPECT Pass
-//==== TEST_CRITERIA MTD
-//==== ONLOAD_DELAY 60
-
-setup({timeout: 90000});
-
-var t = async_test(document.title, {timeout: 90000}), retValue = null, successCallback;
-
-t.step(function () {
-
- add_result_callback(function () {
- tizen.humanactivitymonitor.stopRecorder("PEDOMETER");
- });
-
- successCallback = t.step_func(function (humanactivitydata) {
- assert_equals(retValue, undefined, "readRecorderData should return undefined");
- t.done();
- });
-
- tizen.humanactivitymonitor.startRecorder("PEDOMETER");
- setTimeout(function(){tizen.humanactivitymonitor.stopRecorder("PEDOMETER");
- retValue = tizen.humanactivitymonitor.readRecorderData("PEDOMETER", {}, successCallback);}, 60000);
-
-});
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2016 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.
-
-Author:
- Xiaoyan Qian <xy.qian@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityMonitorManager_readRecorderData_successCallback_TypeMismatch</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityMonitorManager_readRecorderData_successCallback_TypeMismatch
-//==== LABEL Check if readRecorderData throws exception when successCallback is incorrect
-//==== ONLOAD_DELAY 30
-//==== SPEC Tizen Web API:System:HumanActivityMonitor:HumanActivityMonitorManager:readRecorderData M
-//==== SPEC_URL TBD
-//==== PRIORITY P2
-//==== TEST_CRITERIA MC
-
-setup({timeout: 30000});
-
-var t = async_test(document.title, {timeout: 30000}), conversionTable, successCallback, errorCallback, exceptionName, i,
- date = new Date(), endTime = date.getTime(), startTime = date.setDate(date.getDate() - 1),
- query = {
- startTime: startTime/1000,
- endTime: endTime/1000,
- interval: 1440
- };
-
-t.step(function () {
- conversionTable = getTypeConversionExceptions("functionObject", true);
-
- errorCallback = t.step_func(function (error) {
- assert_unreached("readRecorderData() error callback was invoked: " + error.name + " msg: " + error.message);
- });
-
- for (i = 0; i < conversionTable.length; i++) {
- successCallback = conversionTable[i][0];
- exceptionName = conversionTable[i][1];
- assert_throws({name: exceptionName},
- function () {
- tizen.humanactivitymonitor.readRecorderData("PEDOMETER", query, successCallback, errorCallback);
- }, "Given incorrect success callback.");
- }
-
- t.done();
-});
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2016 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:
- Xiaoyan Qian <xy.qian@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityMonitorManager_readRecorderData_successCallback_invalid_cb</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityMonitorManager_readRecorderData_successCallback_invalid_cb
-//==== LABEL Check if readRecorderData throws exception when success callback is invalid
-//==== SPEC Tizen Web API:System:HumanActivityMonitor:HumanActivityMonitorManager:readRecorderData M
-//==== SPEC_URL TBD
-//==== PRIORITY P2
-//==== TEST_CRITERIA MTCB
-
-test(function () {
- var incorrectCallback, date = new Date(), endTime = date.getTime(), startTime = date.setDate(date.getDate() - 1),
- query = {
- startTime: startTime/1000,
- endTime: endTime/1000,
- interval: 1440
- };
-
- incorrectCallback = {
- onsuccess: function (humanactivitydata) {
- assert_unreached("Invalid success callback invoked.");
- }
- };
-
- assert_throws(TYPE_MISMATCH_EXCEPTION,
- function () {
- tizen.humanactivitymonitor.readRecorderData("PEDOMETER", query, incorrectCallback);
- }, "Given invalid successCallback.");
-
-}, document.title);
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2016 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:
- Xiaoyan Qian <xy.qian@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityMonitorManager_readRecorderData_type_HRM</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityMonitorManager_readRecorderData_type_HRM
-//==== LABEL Check if readRecorderData without optional arguments works properly for HRM HumanActivity type
-//==== SPEC Tizen Web API:System:HumanActivityMonitor:HumanActivityMonitorManager:readRecorderData M
-//==== SPEC_URL TBD
-//==== PRIORITY P1
-//==== TEST_CRITERIA MR MMINA
-
-setup({timeout: 1500000});
-
-var t = async_test(document.title, {timeout: 1500000}), retValue = null, successCallback, date = new Date(), endTime = date.getTime() + 1200000, startTime = date.setDate(date.getDate() - 1),
- options = {
- interval: 10,
- retentionPeriod: 1
- },
- query = {
- startTime: startTime/1000,
- endTime: endTime/1000,
- interval: 10
- };
-
-t.step(function () {
- add_result_callback(function () {
- tizen.humanactivitymonitor.stopRecorder("HRM");
- });
-
- successCallback = t.step_func(function (humanactivitydata) {
- assert_equals(retValue, undefined, "readRecorderData should return undefined");
- t.done();
- });
-
- errorCallback = t.step_func(function (error) {
- assert_unreached("Invalid error callback invoked:" + error.name + ": " + error.message);
- });
-
- tizen.humanactivitymonitor.startRecorder("HRM", options);
- setTimeout(function() {
- retValue = tizen.humanactivitymonitor.readRecorderData("HRM", query, successCallback);}, 600000);
-
-});
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2016 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:
- Xiaoyan Qian <xy.qian@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityMonitorManager_readRecorderData_type_PEDOMETER</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityMonitorManager_readRecorderData_type_PEDOMETER
-//==== LABEL Check if readRecorderData without optional arguments works properly for PEDOMETER HumanActivity type
-//==== SPEC Tizen Web API:System:HumanActivityMonitor:HumanActivityMonitorManager:readRecorderData M
-//==== SPEC_URL TBD
-//==== PRIORITY P1
-//==== EXECUTION_TYPE manual
-//==== STEP Press run button. Pretend walking with the device.
-//==== EXPECT Pass
-//==== TEST_CRITERIA MR MMINA
-//==== ONLOAD_DELAY 60
-
-setup({timeout: 90000});
-
-var t = async_test(document.title, {timeout: 90000}), retValue = null, successCallback, date = new Date(), startTime = date.getTime(), endTime = date.setDate(date.getDate() + 1),
- query = {
- startTime: startTime/1000,
- endTime: endTime/1000,
- interval: 1440
- };
-
-t.step(function () {
- add_result_callback(function () {
- tizen.humanactivitymonitor.stopRecorder("PEDOMETER");
- });
- successCallback = t.step_func(function (humanactivitydata) {
- assert_equals(retValue, undefined, "readRecorderData should return undefined");
- t.done();
- });
-
- tizen.humanactivitymonitor.startRecorder("PEDOMETER");
- setTimeout(function(){tizen.humanactivitymonitor.stopRecorder("PEDOMETER");
- retValue = tizen.humanactivitymonitor.readRecorderData("PEDOMETER", query, successCallback);}, 60000);
-
-});
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2016 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:
- Xiaoyan Qian <xy.qian@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityMonitorManager_readRecorderData_type_PRESSURE</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityMonitorManager_readRecorderData_type_PRESSURE
-//==== LABEL Check if readRecorderData without optional arguments works properly for PRESSURE HumanActivity type
-//==== SPEC Tizen Web API:System:HumanActivityMonitor:HumanActivityMonitorManager:readRecorderData M
-//==== SPEC_URL TBD
-//==== PRIORITY P1
-//==== TEST_CRITERIA MR MMINA
-
-setup({timeout: 150000});
-
-var t = async_test(document.title, {timeout: 150000}), retValue = null, successCallback, date = new Date(), endTime = date.getTime() + 120000, startTime = date.setDate(date.getDate() - 1),
- query = {
- startTime: startTime/1000,
- endTime: endTime/1000,
- interval: 10
- };
-
-t.step(function () {
-
- add_result_callback(function () {
- tizen.humanactivitymonitor.stopRecorder("PRESSURE");
- });
-
- successCallback = t.step_func(function (humanactivitydata) {
- assert_equals(retValue, undefined, "readRecorderData should return undefined");
- tizen.humanactivitymonitor.stopRecorder("PRESSURE");
- t.done();
- });
-
- tizen.humanactivitymonitor.startRecorder("PRESSURE");
- setTimeout(function(){
- retValue = tizen.humanactivitymonitor.readRecorderData("PRESSURE", query, successCallback);}, 60000);
-
-});
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2016 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:
- Xiaoyan Qian <xy.qian@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityMonitorManager_readRecorderData_type_SLEEP_MONITOR</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityMonitorManager_readRecorderData_type_SLEEP_MONITOR
-//==== LABEL Check if readRecorderData without optional arguments works properly for SLEEP_MONITOR HumanActivity type
-//==== SPEC Tizen Web API:System:HumanActivityMonitor:HumanActivityMonitorManager:readRecorderData M
-//==== SPEC_URL TBD
-//==== PRIORITY P1
-//==== TEST_CRITERIA MR MMINA
-
-setup({timeout: 30000});
-
-var t = async_test(document.title, {timeout: 30000}), retValue = null, successCallback, date = new Date(), endTime = date.getTime(), startTime = date.setDate(date.getDate() - 1),
- query = {
- startTime: startTime/1000,
- endTime: endTime/1000,
- interval: 1440
- };
-
-t.step(function () {
- add_result_callback(function () {
- tizen.humanactivitymonitor.stopRecorder("SLEEP_MONITOR");
- });
-
- successCallback = t.step_func(function (humanactivitydata) {
- assert_equals(retValue, undefined, "readRecorderData should return undefined");
- t.done();
- });
-
- tizen.humanactivitymonitor.startRecorder("SLEEP_MONITOR");
- setTimeout(function(){tizen.humanactivitymonitor.stopRecorder("SLEEP_MONITOR");
- retValue = tizen.humanactivitymonitor.readRecorderData("SLEEP_MONITOR", query, successCallback);}, 100);
-
-});
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2016 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:
- Xiaoyan Qian <xy.qian@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityMonitorManager_readRecorderData_with_errorCallback</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityMonitorManager_readRecorderData_with_errorCallback
-//==== LABEL Check if readRecorderData with optional arguments works properly
-//==== SPEC Tizen Web API:System:HumanActivityMonitor:HumanActivityMonitorManager:readRecorderData M
-//==== SPEC_URL TBD
-//==== PRIORITY P1
-//==== TEST_CRITERIA MR MOA
-
-setup({timeout: 120000});
-
-var t = async_test(document.title, {timeout: 120000}), retValue = null, successCallback, errorCallback, date = new Date(), startTime = date.getTime(), endTime = date.setDate(date.getDate() + 1),
- query = {
- startTime: startTime/1000,
- endTime: endTime/1000,
- interval: 1440
- };
-
-t.step(function () {
- add_result_callback(function () {
- tizen.humanactivitymonitor.stopRecorder("PEDOMETER");
- });
-
- successCallback = t.step_func(function (humanactivitydata) {
- assert_equals(retValue, undefined, "readRecorderData should return undefined");
- t.done();
- });
-
- errorCallback = t.step_func(function (error) {
- assert_unreached("Invalid error callback invoked:" + error.name + ": " + error.message);
- });
-
- tizen.humanactivitymonitor.startRecorder("PEDOMETER");
- setTimeout(function(){tizen.humanactivitymonitor.stopRecorder("PEDOMETER");
- retValue = tizen.humanactivitymonitor.readRecorderData("PEDOMETER", query, successCallback, errorCallback);}, 60000);
-
-});
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2016 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:
- Hyukin Kwon <hyukin.kwon@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityMonitorManager_removeActivityRecognitionListener</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-<script src="support/humanactivitymonitor_common.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityMonitorManager_removeActivityRecognitionListener_STATIONARY
-//==== LABEL Check if the method removeActivityRecognitionListener of HumanActivityMonitorManager returns proper value
-//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityMonitorManager:removeActivityRecognitionListener M
-//==== SPEC_URL TBD
-//==== PRIORITY P1
-//==== EXECUTION_TYPE manual
-//==== STEP Press run button, then pretend walking with the device for 15 seconds
-//==== EXPECT Pass
-//==== TEST_CRITERIA MR MMINA
-//==== ONLOAD_DELAY 20
-
-setup({"timeout": 20000});
-
-var t = async_test(document.title, {"timeout": 20000}), returnedId = null, returnedValue = undefined, humanActivityType = "WALKING", listener;
-
-t.step(function () {
- listener = t.step_func(function (info) {
- assert_unreached("Callback should not be invoked after removeActivityRecognitionListener call");
- });
-
- returnedId = tizen.humanactivitymonitor.addActivityRecognitionListener(humanActivityType, listener);
- returnedValue = tizen.humanactivitymonitor.removeActivityRecognitionListener(returnedId);
- assert_equals(returnedValue, undefined, "Should return nothing");
- alert("Grab the device, and pretend walking for 15 seconds after pressing OK");
- setTimeout(function () {t.done();}, 15000);
-});
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2016 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:
- Hyukin Kwon <hyukin.kwon@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityMonitorManager_removeActivityRecognitionListener_exist</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-<script src="support/humanactivitymonitor_common.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityMonitorManager_removeActivityRecognitionListener_exist
-//==== LABEL Check if the method removeActivityRecognitionListener of HumanActivityMonitorManager exist
-//==== SPEC Tizen Web API:HumanActivityMonitor:HumanActivityMonitorManager:removeActivityRecognitionListener M
-//==== SPEC_URL TBD
-//==== PRIORITY P1
-//==== TEST_CRITERIA ME
-
-test(function () {
- check_method_exists(tizen.humanactivitymonitor, "addActivityRecognitionListener");
-}, document.title);
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2016 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:
- Hyukin Kwon <hyukin.kwon@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityMonitorManager_removeActivityRecognitionListener_invalid_id</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-<script src="support/humanactivitymonitor_common.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityMonitorManager_removeActivityRecognitionListener_invalid_id
-//==== LABEL Check if the method removeActivityRecognitionListener of HumanActivityMonitorManager ignores invalid id
-//==== SPEC Tizen Web API:HumanActivityMonitor:HumanActivityMonitorManager:removeActivityRecognitionListener M
-//==== SPEC_URL TBD
-//==== PRIORITY P2
-//==== TEST_CRITERIA MMA
-//==== ONLOAD_DELAY 3
-
-setup({"timeout": 3000});
-
-var t = async_test(document.title, {"timeout": 3000}), invalidId = 10000, errorCallback;
-
-t.step(function () {
- errorCallback = t.step_func(function (error) {
- assert_unreached("Error callback should not be invoked, but was invoked with the error " + error.name);
- });
-
- try {
- tizen.humanactivitymonitor.removeActivityRecognitionListener(invalidId, errorCallback);
- setTimeout(function () {t.done();}, 2000);
- } catch (error) {
- assert_unreached("Should not throw any error, but threw " + error.name);
- }
-});
-</script>
-</body>
-</html>
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2016 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:
- Hyukin Kwon <hyukin.kwon@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityMonitorManager_removeActivityRecognitionListener_misarg</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-<script src="support/humanactivitymonitor_common.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityMonitorManager_removeActivityRecognitionListener_exist
-//==== LABEL Check if the method removeActivityRecognitionListener of HumanActivityMonitorManager ignores invalid id when no param assigned (undefined converted to 0)
-//==== SPEC Tizen Web API:HumanActivityMonitor:HumanActivityMonitorManager:removeActivityRecognitionListener M
-//==== SPEC_URL TBD
-//==== PRIORITY P2
-//==== TEST_CRITERIA MMA
-
-test(function () {
- try {
- tizen.humanactivitymonitor.removeActivityRecognitionListener();
- } catch (error) {
- assert_unreached("Should not throw any error, but threw " + error.name);
- }
-}, document.title);
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2016 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:
- Hyukin Kwon <hyukin.kwon@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityMonitorManager_removeActivityRecognitionListener</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-<script src="support/humanactivitymonitor_common.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityMonitorManager_removeActivityRecognitionListener_STATIONARY
-//==== LABEL Check if the method removeActivityRecognitionListener of HumanActivityMonitorManager returns proper value with errorcallback assigned
-//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityMonitorManager:removeActivityRecognitionListener M
-//==== SPEC_URL TBD
-//==== PRIORITY P1
-//==== EXECUTION_TYPE manual
-//==== STEP Press run button, then pretend walking with the device for 15 seconds
-//==== EXPECT Pass
-//==== TEST_CRITERIA MR MMINA CBT
-//==== ONLOAD_DELAY 20
-
-setup({"timeout": 20000});
-
-var t = async_test(document.title, {"timeout": 20000}), returnedId = null, returnedValue = undefined, humanActivityType = "WALKING", listener, errorCallback;
-
-t.step(function () {
- listener = t.step_func(function (info) {
- assert_unreached("Callback should not be invoked after removeActivityRecognitionListener call");
- });
-
- errorCallback = t.step_func(function (error) {
- assert_unreached("Error callback should not be invoked, but was invoked with the error " + error.name);
- });
-
- returnedId = tizen.humanactivitymonitor.addActivityRecognitionListener(humanActivityType, listener);
- returnedValue = tizen.humanactivitymonitor.removeActivityRecognitionListener(returnedId, errorCallback);
- assert_equals(returnedValue, undefined, "Should return nothing");
- alert("Grab the device, and pretend walking for 15 seconds after pressing OK");
- setTimeout(function () {t.done();}, 15000);
-});
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2016 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:
- Hyukin Kwon <hyukin.kwon@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityMonitorManager_removeActivityRecognitionListener</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-<script src="support/humanactivitymonitor_common.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityMonitorManager_removeActivityRecognitionListener_STATIONARY
-//==== LABEL Check if the method removeActivityRecognitionListener of HumanActivityMonitorManager returns proper value with errorcallback null assigned
-//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityMonitorManager:removeActivityRecognitionListener M
-//==== SPEC_URL TBD
-//==== PRIORITY P1
-//==== EXECUTION_TYPE manual
-//==== STEP Press run button, then pretend walking with the device for 15 seconds
-//==== EXPECT Pass
-//==== TEST_CRITERIA MR MMINA CBT
-//==== ONLOAD_DELAY 20
-
-setup({"timeout": 20000});
-
-var t = async_test(document.title, {"timeout": 20000}), returnedId = null, returnedValue = undefined, humanActivityType = "WALKING", listener;
-
-t.step(function () {
- listener = t.step_func(function (info) {
- assert_unreached("Callback should not be invoked after removeActivityRecognitionListener call");
- });
-
- returnedId = tizen.humanactivitymonitor.addActivityRecognitionListener(humanActivityType, listener);
- returnedValue = tizen.humanactivitymonitor.removeActivityRecognitionListener(returnedId, null);
- assert_equals(returnedValue, undefined, "Should return nothing");
- alert("Grab the device, and pretend walking for 15 seconds after pressing OK");
- setTimeout(function () {t.done();}, 15000);
-});
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2014 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:
- Saleh Enam Shohag <saleh.enam@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityMonitorManager_setAccumulativePedometerListener</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityMonitorManager_setAccumulativePedometerListener
-//==== LABEL Check if HumanActivityMonitorManager::setAccumulativePedometerListener() method works properly
-//==== PRIORITY P1
-//==== ONLOAD_DELAY 30
-//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityMonitorManager:setAccumulativePedometerListener M
-//==== SPEC_URL TBD
-//==== TEST_CRITERIA MAST MR
-
-setup({timeout: 30000});
-
-var t = async_test(document.title, {timeout: 30000}), changeCallback, returnedValue = null;
-
-t.step(function () {
- changeCallback = t.step_func(function (pedometerInfo) {
- assert_equals(returnedValue, undefined, "setAccumulativePedometerListener should return undefined.");
- t.done();
- });
-
- returnedValue = tizen.humanactivitymonitor.setAccumulativePedometerListener(changeCallback);
-});
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2014 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:
- Saleh Enam Shohag <saleh.enam@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityMonitorManager_setAccumulativePedometerListener_changeCallback_TypeMismatch</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityMonitorManager_setAccumulativePedometerListener_changeCallback_TypeMismatch
-//==== LABEL Check if HumanActivityMonitorManager::setAccumulativePedometerListener() with incorrect changeCallback argument throws exception
-//==== PRIORITY P2
-//==== ONLOAD_DELAY 30
-//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityMonitorManager:setAccumulativePedometerListener M
-//==== SPEC_URL TBD
-//==== TTEST_CRITERIA MC
-
-setup({timeout: 30000});
-
-var t = async_test(document.title, {timeout: 30000}),
- conversionTable, changeCallback, exceptionName, i;
-
-t.step(function () {
- conversionTable = getTypeConversionExceptions("functionObject", false);
- for (i = 0; i < conversionTable.length; i++) {
- changeCallback = conversionTable[i][0];
- exceptionName = conversionTable[i][1];
- assert_throws(TYPE_MISMATCH_EXCEPTION, function () {
- tizen.humanactivitymonitor.setAccumulativePedometerListener(changeCallback);
- }, TYPE_MISMATCH_EXCEPTION + "should be thrown");
- }
- t.done();
-});
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2014 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:
- Saleh Enam Shohag <saleh.enam@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityMonitorManager_setAccumulativePedometerListener_changeCallback_invalid_cb</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityMonitorManager_setAccumulativePedometerListener_changeCallback_invalid_cb
-//==== LABEL Check if HumanActivityMonitorManager::setAccumulativePedometerListener() method throws exception when changeCallback is invalid
-//==== PRIORITY: P2
-//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityMonitorManager:setAccumulativePedometerListener M
-//==== SPEC_URL TBD
-//==== ONLOAD_DELAY 30
-//==== TEST_CRITERIA MTCB
-
-setup({timeout: 30000});
-
-var t = async_test(document.title, {timeout: 30000}), invalidCallback;
-
-t.step(function () {
- invalidCallback = {
- onsuccess: t.step_func(function (pedometerInfo) {
- assert_unreached("setAccumulativePedometerListener() changeCallback should not invoked");
- })
- };
-
- assert_throws(TYPE_MISMATCH_EXCEPTION, function () {
- tizen.humanactivitymonitor.setAccumulativePedometerListener(invalidCallback);
- }, TYPE_MISMATCH_EXCEPTION + " should be thrown");
- t.done();
-});
-
-</script>
-</body>
-</html>
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2014 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:
- Saleh Enam Shohag <saleh.enam@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityMonitorManager_setAccumulativePedometerListener_exist</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityMonitorManager_setAccumulativePedometerListener_exist
-//==== LABEL Check if method HumanActivityMonitorManager::setAccumulativePedometerListener() exists
-//==== PRIORITY P0
-//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityMonitorManager:setAccumulativePedometerListener M
-//==== SPEC_URL TBD
-//==== TEST_CRITERIA ME
-
-test(function () {
- check_method_exists(tizen.humanactivitymonitor, "setAccumulativePedometerListener");
-}, document.title);
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2014 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:
- Saleh Enam Shohag <saleh.enam@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityMonitorManager_setAccumulativePedometerListener_misarg</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityMonitorManager_setAccumulativePedometerListener_misarg
-//==== LABEL Check if HumanActivityMonitorManager::setAccumulativePedometerListener() throws exception when changeCallback is missing
-//==== PRIORITY: P2
-//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityMonitorManager:setAccumulativePedometerListener M
-//==== SPEC_URL TBD
-//==== TEST_CRITERIA MMA
-
-test(function () {
- assert_throws(TYPE_MISMATCH_EXCEPTION, function () {
- tizen.humanactivitymonitor.setAccumulativePedometerListener();
- }, "Invoked without non-optional arguments.");
-}, document.title);
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2016 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:
- Xiaoyan Qian <xy.qian@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityMonitorManager_startRecorder_NotSupportedError</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityMonitorManager_startRecorder_NotSupportedError
-//==== LABEL Check if HumanActivityMonitorManager::startRecorder() throw NotSupportedError called with not supported human activity recorder type
-//==== PRIORITY P1
-//==== SPEC Tizen Web API:System:HumanActivityMonitor:HumanActivityMonitorManager:startRecorder M
-//==== SPEC_URL TBD
-//==== TEST_CRITERIA MC
-
-test(function () {
- if (!tizen.systeminfo.getCapability("http://tizen.org/feature/sensor.pedometer")) {
- assert_throws(NOT_SUPPORTED_EXCEPTION, function () {
- tizen.humanactivitymonitor.startRecorder("PEDOMETER");
- }, "NotSupportedError exception should throw");
- }
- if (!tizen.systeminfo.getCapability("http://tizen.org/feature/sensor.heart_rate_monitor")) {
- assert_throws(NOT_SUPPORTED_EXCEPTION, function () {
- tizen.humanactivitymonitor.startRecorder("HRM");
- }, "NotSupportedError exception should throw");
- }
- if (!tizen.systeminfo.getCapability("http://tizen.org/feature/sensor.sleep_monitor")) {
- assert_throws(NOT_SUPPORTED_EXCEPTION, function () {
- tizen.humanactivitymonitor.startRecorder("SLEEP_MONITOR");
- }, "NotSupportedError exception should throw");
- }
- if (!tizen.systeminfo.getCapability("http://tizen.org/feature/sensor.barometer")) {
- assert_throws(NOT_SUPPORTED_EXCEPTION, function () {
- tizen.humanactivitymonitor.startRecorder("PRESSURE");
- }, "NotSupportedError exception should throw");
- }
-}, document.title);
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2016 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:
- Xiaoyan Qian <xy.qian@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityMonitorManager_startRecorder_exist</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityMonitorManager_startRecorder_exist
-//==== LABEL Check if startRecorder exists
-//==== SPEC Tizen Web API:System:HumanActivityMonitor:HumanActivityMonitorManager:startRecorder M
-//==== SPEC_URL TBD
-//==== PRIORITY P0
-//==== TEST_CRITERIA ME
-
-test(function () {
- assert_true("startRecorder" in tizen.humanactivitymonitor, "HumanActivityMonitorManager should have startRecorder method");
- check_method_exists(tizen.humanactivitymonitor, "startRecorder");
-}, document.title);
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2016 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:
- Xiaoyan Qian <xy.qian@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityMonitorManager_startRecorder_misarg</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityMonitorManager_startRecorder_misarg
-//==== LABEL Check if HumanActivityMonitorManager::startRecorder() called with missing non-optional argument throws an exception
-//==== PRIORITY P1
-//==== SPEC Tizen Web API:System:HumanActivityMonitor:HumanActivityMonitorManager:startRecorder M
-//==== SPEC_URL TBD
-//==== TEST_CRITERIA MMA
-
-test(function () {
- assert_throws(TYPE_MISMATCH_EXCEPTION, function () {
- tizen.humanactivitymonitor.startRecorder();
- }, "TypeMismatchError exception should throw");
-}, document.title);
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2016 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:
- Xiaoyan Qian <xy.qian@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityMonitorManager_startRecorder_option_empty</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityMonitorManager_startRecorder_option_empty
-//==== LABEL Check if HumanActivityMonitorManager::startRecorder() can be called with empty object as option argument
-//==== PRIORITY P1
-//==== SPEC Tizen Web API:System:HumanActivityMonitor:HumanActivityMonitorManager:startRecorder M
-//==== SPEC_URL TBD
-//==== TEST_CRITERIA MR MTD
-
-test(function () {
- add_result_callback(function () {
- tizen.humanactivitymonitor.stopRecorder(humanActivityType);
- });
-
- var returnedValue = null, humanActivityType = "PEDOMETER";
- returnedValue = tizen.humanactivitymonitor.startRecorder(humanActivityType, {});
- assert_equals(returnedValue, undefined, "Incorrect returned value");
-}, document.title);
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2016 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:
- Xiaoyan Qian <xy.qian@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityMonitorManager_startRecorder_type_HRM</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityMonitorManager_startRecorder_type_HRM
-//==== LABEL Check if method HumanActivityMonitorManager::startRecorder() works properly for HRM HumanActivity type
-//==== PRIORITY P1
-//==== SPEC Tizen Web API:System:HumanActivityMonitor:HumanActivityMonitorManager:startRecorder M
-//==== SPEC_URL TBD
-//==== TEST_CRITERIA MR MMINA
-
-test(function () {
- var returnedValue = null, humanActivityType = "HRM";
-
- add_result_callback(function () {
- tizen.humanactivitymonitor.stopRecorder(humanActivityType);
- });
-
- try {
- tizen.humanactivitymonitor.stopRecorder(humanActivityType);
- returnedValue = tizen.humanactivitymonitor.startRecorder(humanActivityType);
- assert_equals(returnedValue, undefined, "Incorrect returned value from startRecorder method");
- tizen.humanactivitymonitor.stopRecorder(humanActivityType);
- } catch (e) {
- if(e.name === NOT_SUPPORTED_EXCEPTION) {
- } else {
- assert_unreached("unexpected exception is thrown" + e.name + ", msg: " + e.message);
- }
- }
-}, document.title);
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2016 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:
- Xiaoyan Qian <xy.qian@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityMonitorManager_startRecorder_type_PEDOMETER</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityMonitorManager_startRecorder_type_PEDOMETER
-//==== LABEL Check if method HumanActivityMonitorManager::startRecorder() works properly for PEDOMETER HumanActivity type
-//==== PRIORITY P1
-//==== SPEC Tizen Web API:System:HumanActivityMonitor:HumanActivityMonitorManager:startRecorder M
-//==== SPEC_URL TBD
-//==== TEST_CRITERIA MR MMINA
-
-test(function () {
- var returnedValue = null, humanActivityType = "PEDOMETER";
-
- add_result_callback(function () {
- tizen.humanactivitymonitor.stopRecorder(humanActivityType);
- });
-
- try {
- returnedValue = tizen.humanactivitymonitor.startRecorder(humanActivityType);
- assert_equals(returnedValue, undefined, "Incorrect returned value from startRecorder method");
- tizen.humanactivitymonitor.stopRecorder(humanActivityType);
- } catch (e) {
- if(e.name === NOT_SUPPORTED_EXCEPTION) {
- } else {
- assert_unreached("unexpected exception is thrown" + e.name + ", msg: " + e.message);
- }
- }
-}, document.title);
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2016 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:
- Xiaoyan Qian <xy.qian@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityMonitorManager_startRecorder_type_PRESSURE</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityMonitorManager_startRecorder_type_PRESSURE
-//==== LABEL Check if method HumanActivityMonitorManager::startRecorder() works properly for PRESSURE HumanActivity type
-//==== PRIORITY P1
-//==== SPEC Tizen Web API:System:HumanActivityMonitor:HumanActivityMonitorManager:startRecorder M
-//==== SPEC_URL TBD
-//==== TEST_CRITERIA MR MMINA
-
-test(function () {
- var returnedValue = null, humanActivityType = "PRESSURE";
-
- add_result_callback(function () {
- tizen.humanactivitymonitor.stopRecorder(humanActivityType);
- });
-
- try {
- tizen.humanactivitymonitor.stopRecorder(humanActivityType);
- returnedValue = tizen.humanactivitymonitor.startRecorder(humanActivityType);
- assert_equals(returnedValue, undefined, "Incorrect returned value from startRecorder method");
- tizen.humanactivitymonitor.stopRecorder(humanActivityType);
- } catch (e) {
- if(e.name === NOT_SUPPORTED_EXCEPTION) {
- } else {
- assert_unreached("unexpected exception is thrown" + e.name + ", msg: " + e.message);
- }
- }
-}, document.title);
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2016 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:
- Xiaoyan Qian <xy.qian@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityMonitorManager_startRecorder_type_SLEEP_MONITOR</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityMonitorManager_startRecorder_type_SLEEP_MONITOR
-//==== LABEL Check if method HumanActivityMonitorManager::startRecorder() works properly for SLEEP_MONITOR HumanActivity type
-//==== PRIORITY P1
-//==== SPEC Tizen Web API:System:HumanActivityMonitor:HumanActivityMonitorManager:startRecorder M
-//==== SPEC_URL TBD
-//==== TEST_CRITERIA MR MMINA
-
-test(function () {
- var returnedValue = null, humanActivityType = "SLEEP_MONITOR";
-
- add_result_callback(function () {
- tizen.humanactivitymonitor.stopRecorder(humanActivityType);
- });
-
- try {
- returnedValue = tizen.humanactivitymonitor.startRecorder(humanActivityType);
- assert_equals(returnedValue, undefined, "Incorrect returned value from startRecorder method");
- tizen.humanactivitymonitor.stopRecorder(humanActivityType);
- } catch (e) {
- if(e.name === NOT_SUPPORTED_EXCEPTION) {
- } else {
- assert_unreached("unexpected exception is thrown" + e.name + ", msg: " + e.message);
- }
- }
-}, document.title);
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2016 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:
- Xiaoyan Qian <xy.qian@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityMonitorManager_startRecorder_with_option</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityMonitorManager_startRecorder_with_option
-//==== LABEL Check if method HumanActivityMonitorManager::startRecorder() works properly with optional argument
-//==== PRIORITY P1
-//==== SPEC Tizen Web API:System:HumanActivityMonitor:HumanActivityMonitorManager:startRecorder M
-//==== SPEC_URL TBD
-//==== TEST_CRITERIA MR MOA
-
-test(function () {
- var returnedValue = null, humanActivityType = "HRM",
- options = {
- retentionPeriod: 1
- };
-
- add_result_callback(function () {
- tizen.humanactivitymonitor.stopRecorder(humanActivityType);
- });
-
- try {
- returnedValue = tizen.humanactivitymonitor.startRecorder(humanActivityType, options);
- assert_equals(returnedValue, undefined, "Incorrect returned value from startRecorder method");
- tizen.humanactivitymonitor.stopRecorder(humanActivityType);
- } catch (e) {
- if(e.name === NOT_SUPPORTED_EXCEPTION) {
- } else {
- assert_unreached("unexpected exception is thrown" + e.name + ", msg: " + e.message);
- }
- }
-}, document.title);
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2014 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:
- Saleh Enam Shohag <saleh.enam@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityMonitorManager_start_HumanActivityMonitorSuccessCallback_TypeMismatch </title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityMonitorManager_start_HumanActivityMonitorSuccessCallback_TypeMismatch
-//==== LABEL Check if HumanActivityMonitorManager::start() with incorrect successCallback argument throws exception
-//==== PRIORITY P2
-//==== ONLOAD_DELAY 30
-//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityMonitorManager:start M
-//==== SPEC_URL TBD
-//==== TEST_CRITERIA MC
-
-setup({timeout: 90000});
-
-var t = async_test(document.title, {timeout: 90000}), successCallback, conversionTable, i, humanActivityType = "PEDOMETER";
-
-t.step(function () {
- conversionTable = getTypeConversionExceptions("functionObject", true);
- for (i = 0; i < conversionTable.length; i++) {
- successCallback = conversionTable[i][0];
- exceptionName = conversionTable[i][1];
- assert_throws(TYPE_MISMATCH_EXCEPTION, function () {
- tizen.humanactivitymonitor.start(humanActivityType, successCallback);
- }, TYPE_MISMATCH_EXCEPTION + "should be thrown");
- }
- t.done();
-});
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2014 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:
- Saleh Enam Shohag <saleh.enam@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityMonitorManager_start_HumanActivityMonitorSuccessCallback_invalid_cb </title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityMonitorManager_start_HumanActivityMonitorSuccessCallback_invalid_cb
-//==== LABEL Check if HumanActivityMonitorManager::start() method throws exception when HumanActivityMonitorSuccessCallback is invalid
-//==== PRIORITY P2
-//==== ONLOAD_DELAY 30
-//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityMonitorManager:start M
-//==== SPEC_URL TBD
-//==== TEST_CRITERIA MTCB
-
-setup({timeout: 9000});
-
-var t = async_test(document.title, {timeout: 9000}), invalidCallback, humanActivityType = "PEDOMETER";
-
-t.step(function () {
- invalidCallback = {
- onsuccess: t.step_func(function (humanActivityData) {
- assert_unreached("Invalid success callback invoked");
- })
- };
-
- assert_throws(TYPE_MISMATCH_EXCEPTION, function () {
- tizen.humanactivitymonitor.start(humanActivityType, invalidCallback);
- }, TYPE_MISMATCH_EXCEPTION + "should be thrown");
- t.done();
-});
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2014 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:
- Saleh Enam Shohag <saleh.enam@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityMonitorManager_start_changedCallback_TypeMismatch </title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityMonitorManager_start_changedCallback_TypeMismatch
-//==== LABEL Check if HumanActivityMonitorManager::start() with incorrect successCallback argument throws exception
-//==== PRIORITY P2
-//==== ONLOAD_DELAY 30
-//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityMonitorManager:start M
-//==== SPEC_URL TBD
-//==== TEST_CRITERIA MC
-
-setup({timeout: 90000});
-
-var t = async_test(document.title, {timeout: 90000}), successCallback, conversionTable, i, humanActivityType = "PEDOMETER";
-
-t.step(function () {
- conversionTable = getTypeConversionExceptions("functionObject", true);
- for (i = 0; i < conversionTable.length; i++) {
- successCallback = conversionTable[i][0];
- exceptionName = conversionTable[i][1];
- assert_throws(TYPE_MISMATCH_EXCEPTION, function () {
- tizen.humanactivitymonitor.start(humanActivityType, successCallback);
- }, TYPE_MISMATCH_EXCEPTION + "should be thrown");
- }
- t.done();
-});
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2014 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:
- Saleh Enam Shohag <saleh.enam@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityMonitorManager_start_changedCallback_invalid_cb </title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityMonitorManager_start_changedCallback_invalid_cb
-//==== LABEL Check if HumanActivityMonitorManager::start() method throws exception when HumanActivityMonitorSuccessCallback is invalid
-//==== PRIORITY P2
-//==== ONLOAD_DELAY 30
-//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityMonitorManager:start M
-//==== SPEC_URL TBD
-//==== TEST_CRITERIA MTCB
-
-setup({timeout: 9000});
-
-var t = async_test(document.title, {timeout: 9000}), invalidCallback, humanActivityType = "PEDOMETER";
-
-t.step(function () {
- invalidCallback = {
- onsuccess: t.step_func(function (humanActivityData) {
- assert_unreached("Invalid success callback invoked");
- })
- };
-
- assert_throws(TYPE_MISMATCH_EXCEPTION, function () {
- tizen.humanactivitymonitor.start(humanActivityType, invalidCallback);
- }, TYPE_MISMATCH_EXCEPTION + "should be thrown");
- t.done();
-});
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2016 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:
- Wei Zhang <wei625.zhang@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityMonitorManager_start_errorCallback_TypeMismatch </title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityMonitorManager_start_errorCallback_TypeMismatch
-//==== LABEL Check if HumanActivityMonitorManager::start() with incorrect errorCallback argument throws exception
-//==== PRIORITY P2
-//==== ONLOAD_DELAY 30
-//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityMonitorManager:start M
-//==== SPEC_URL TBD
-//==== TEST_CRITERIA MC
-
-setup({timeout: 90000});
-
-var t = async_test(document.title, {timeout: 90000}), successCallback, errorCallback, conversionTable, i, humanActivityType = "PEDOMETER";
-
-t.step(function () {
-
- successCallback = t.step_func(function (humanActivityData) {
- assert_unreached("SuccessCallback should not invoke");
- });
-
- conversionTable = getTypeConversionExceptions("functionObject", true);
- for (i = 0; i < conversionTable.length; i++) {
- errorCallback = conversionTable[i][0];
- exceptionName = conversionTable[i][1];
- assert_throws(TYPE_MISMATCH_EXCEPTION, function () {
- tizen.humanactivitymonitor.start(humanActivityType, successCallback, errorCallback);
- }, TYPE_MISMATCH_EXCEPTION + "should be thrown");
- }
- t.done();
-});
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2016 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:
- Wei Zhang <wei625.zhang@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityMonitorManager_start_errorCallback_invalid_cb </title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityMonitorManager_start_errorCallback_invalid_cb
-//==== LABEL Check if HumanActivityMonitorManager::start() method throws exception when ErrorCallback is invalid
-//==== PRIORITY P2
-//==== ONLOAD_DELAY 30
-//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityMonitorManager:start M
-//==== SPEC_URL TBD
-//==== TEST_CRITERIA MTCB
-
-setup({timeout: 9000});
-
-var t = async_test(document.title, {timeout: 9000}), successCallback, invalidCallback, humanActivityType = "PEDOMETER";
-
-t.step(function () {
-
- successCallback = t.step_func(function (humanActivityData) {
- assert_unreached("SuccessCallback should not invoke");
- });
-
- invalidCallback = {
- onerror: t.step_func(function (humanActivityData) {
- assert_unreached("Invalid success callback invoked");
- })
- };
-
- assert_throws(TYPE_MISMATCH_EXCEPTION, function () {
- tizen.humanactivitymonitor.start(humanActivityType, successCallback, invalidCallback);
- }, TYPE_MISMATCH_EXCEPTION + "should be thrown");
- t.done();
-});
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2016 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:
- Wei Zhang <wei625.zhang@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityMonitorManager_start_errorCallback_invoked</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityMonitorManager_start_errorCallback_invoked
-//==== LABEL Check exception in error callback of HumanActivityMonitorManager::start() method
-//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityMonitorManager:start M
-//==== EXECUTION_TYPE manual
-//==== SPEC_URL TBD
-//==== PRIORITY P2
-//==== STEP Please set the GPS function to disabled in the location settings
-//==== EXPECT Pass should be shown in the page after GPS off
-//==== ONLOAD_DELAY 300
-//==== TEST_CRITERIA MERRCB
-
-setup({timeout: 30000});
-
-var t = async_test(document.title, {timeout: 30000}), successCallback, errorCallback, humanActivityType = "GPS";
-
-t.step(function () {
- successCallback = t.step_func(function (humanActivityData) {
- //assert_unreached("SuccessCallback should not invoke");
- });
-
- errorCallback = t.step_func(function (error) {
- assert_equals(error.name, "ServiceNotAvailableError", "Incorrect error name");
- assert_type(error.message, "string", "Error message is not string");
- assert_not_equals(error.message, "", "Error message is empty");
- t.done();
- });
-
- tizen.humanactivitymonitor.start(humanActivityType, successCallback, errorCallback);
-});
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2014 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:
- Saleh Enam Shohag <saleh.enam@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityMonitorManager_start_exist</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityMonitorManager_start_exist
-//==== LABEL Check if method HumanActivityMonitorManager::start() exists
-//==== PRIORITY P0
-//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityMonitorManager:start M
-//==== SPEC_URL TBD
-//==== TEST_CRITERIA ME
-
-test(function () {
- check_method_exists(tizen.humanactivitymonitor, "start");
-}, document.title);
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2014 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:
- Saleh Enam Shohag <saleh.enam@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityMonitorManager_start_misarg</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityMonitorManager_start_misarg
-//==== LABEL Check if HumanActivityMonitorManager::start() throws exception when type and successCallback are missing
-//==== PRIORITY P2
-//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityMonitorManager:start M
-//==== SPEC_URL TBD
-//==== TEST_CRITERIA MMA
-
-test(function () {
- assert_throws(TYPE_MISMATCH_EXCEPTION, function () {
- tizen.humanactivitymonitor.start();
- }, TYPE_MISMATCH_EXCEPTION + "should be thrown");
-}, document.title);
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2014 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:
- Wei Zhang <wei625.zhang@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityMonitorManager_start_option_TypeMismatch </title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityMonitorManager_start_option_TypeMismatch
-//==== LABEL Check if HumanActivityMonitorManager::start() with incorrect option argument throws exception
-//==== PRIORITY P2
-//==== ONLOAD_DELAY 30
-//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityMonitorManager:start M
-//==== SPEC_URL TBD
-//==== TEST_CRITERIA MC
-
-setup({timeout: 90000});
-
-var t = async_test(document.title, {timeout: 90000}), successCallback, errorCallback, option, conversionTable, i, humanActivityType = "PEDOMETER";
-
-t.step(function () {
- successCallback = t.step_func(function (humanActivityData) {
- assert_unreached("successCallback callback should not be invoked");
- });
-
- errorCallback = t.step_func(function (e) {
- assert_unreached("errorCallback exception:" + e.message);
- });
-
- conversionTable = getTypeConversionExceptions("dictionary", true);
- for (i = 0; i < conversionTable.length; i++) {
- option = conversionTable[i][0];
- exceptionName = conversionTable[i][1];
- assert_throws(TYPE_MISMATCH_EXCEPTION, function () {
- tizen.humanactivitymonitor.start(humanActivityType, successCallback, errorCallback, option);
- }, TYPE_MISMATCH_EXCEPTION + "should be thrown");
- }
- t.done();
-});
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2014 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:
- Wei Zhang <wei625.zhang@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityMonitorManager_start_option_empty</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-<script src="support/humanactivitymonitor_common.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityMonitorManager_start_option_empty
-//==== LABEL Check if HumanActivityMonitorManager::start() can be called with empty object as option argument
-//==== PRIORITY P1
-//==== SPEC Tizen Web API:System:HumanActivityMonitor:HumanActivityMonitorManager:start M
-//==== SPEC_URL TBD
-//==== TEST_CRITERIA MR MAST MTD
-
-setup({timeout: 90000});
-
-var t = async_test(document.title, {timeout: 90000}), successCallback, errorCallback, returnedValue = null, humanActivityType = "GPS";
-
-t.step(function () {
- add_result_callback(function () {
- tizen.humanactivitymonitor.stop(humanActivityType);
- });
- errorCallback = t.step_func(function (e) {
- assert_unreached("errorCallback exception:" + e.message);
- });
- successCallback = t.step_func(function (humanActivityData) {
- assert_type(humanActivityData, "object", "humanActivityData is not object type");
- assert_equals(returnedValue, undefined, "Incorrect returned value");
- t.done();
- });
- returnedValue = tizen.humanactivitymonitor.start(humanActivityType, successCallback, errorCallback, {});
-});
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2014 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:
- Saleh Enam Shohag <saleh.enam@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityMonitorManager_start_type_GPS</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-<script src="support/humanactivitymonitor_common.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityMonitorManager_start_type_GPS
-//==== LABEL Check if method HumanActivityMonitorManager::start() works properly for GPS HumanActivity type
-//==== PRIORITY P1
-//==== SPEC Tizen Web API:System:HumanActivityMonitor:HumanActivityMonitorManager:start M
-//==== SPEC_URL TBD
-//==== TEST_CRITERIA MR MAST
-
-test(function () {
- var returnedValue = null, humanActivityType = "GPS";
- try {
- returnedValue = tizen.humanactivitymonitor.start(humanActivityType);
- assert_equals(returnedValue, undefined, "Incorrect returned value from start method");
- tizen.humanactivitymonitor.stop(humanActivityType);
- } catch (e) {
- if(e.name === NOT_SUPPORTED_EXCEPTION) {
- } else {
- assert_unreached("unexpected exception is thrown" + e.name + ", msg: " + e.message);
- }
- }
-}, document.title);
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2014 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:
- Saleh Enam Shohag <saleh.enam@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityMonitorManager_start_type_HRM</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-<script src="support/humanactivitymonitor_common.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityMonitorManager_start_type_HRM
-//==== LABEL Check if method HumanActivityMonitorManager::start() works properly for HRM HumanActivity type
-//==== PRIORITY P1
-//==== SPEC Tizen Web API:System:HumanActivityMonitor:HumanActivityMonitorManager:start M
-//==== SPEC_URL TBD
-//==== TEST_CRITERIA MR MAST
-
-test(function () {
- var returnedValue = null, humanActivityType = "HRM";
- try {
- returnedValue = tizen.humanactivitymonitor.start(humanActivityType);
- assert_equals(returnedValue, undefined, "Incorrect returned value from start method");
- tizen.humanactivitymonitor.stop(humanActivityType);
- } catch (e) {
- if(e.name === NOT_SUPPORTED_EXCEPTION) {
- } else {
- assert_unreached("unexpected exception is thrown" + e.name + ", msg: " + e.message);
- }
- }
-}, document.title);
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2014 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:
- Saleh Enam Shohag <saleh.enam@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityMonitorManager_start_type_PEDOMETER</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-<script src="support/humanactivitymonitor_common.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityMonitorManager_start_type_PEDOMETER
-//==== LABEL Check if method HumanActivityMonitorManager::start() works properly for PEDOMETER
-//==== PRIORITY P1
-//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityMonitorManager:start M
-//==== SPEC_URL TBD
-//==== TEST_CRITERIA MR MAST
-
-test(function () {
- var returnedValue = null, humanActivityType = "PEDOMETER";
- try {
- returnedValue = tizen.humanactivitymonitor.start(humanActivityType);
- assert_equals(returnedValue, undefined, "Incorrect returned value from start method");
- tizen.humanactivitymonitor.stop(humanActivityType);
- } catch (e) {
- if(e.name === NOT_SUPPORTED_EXCEPTION) {
- } else {
- assert_unreached("unexpected exception is thrown" + e.name + ", msg: " + e.message);
- }
- }
-}, document.title);
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2016 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:
- Wei Zhang <wei625.zhang@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityMonitorManager_start_type_SLEEP_MONITOR</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-<script src="support/humanactivitymonitor_common.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityMonitorManager_start_type_SLEEP_MONITOR
-//==== LABEL Check if method HumanActivityMonitorManager::start() works properly for SLEEP_MONITOR HumanActivity type
-//==== PRIORITY P1
-//==== SPEC Tizen Web API:System:HumanActivityMonitor:HumanActivityMonitorManager:start M
-//==== SPEC_URL TBD
-//==== TEST_CRITERIA MR MAST
-
-test(function () {
- var returnedValue = null, humanActivityType = "SLEEP_MONITOR";
- try {
- returnedValue = tizen.humanactivitymonitor.start(humanActivityType);
- assert_equals(returnedValue, undefined, "Incorrect returned value from start method");
- tizen.humanactivitymonitor.stop(humanActivityType);
- } catch (e) {
- if(e.name === NOT_SUPPORTED_EXCEPTION) {
- } else {
- assert_unreached("unexpected exception is thrown" + e.name + ", msg: " + e.message);
- }
- }
-}, document.title);
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2014 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:
- Saleh Enam Shohag <saleh.enam@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityMonitorManager_start_type_WRIST_UP</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-<script src="support/humanactivitymonitor_common.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityMonitorManager_start_type_WRIST_UP
-//==== LABEL Check if method HumanActivityMonitorManager::start() works properly for WRIST_UP
-//==== PRIORITY P1
-//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityMonitorManager:start M
-//==== SPEC_URL TBD
-//==== TEST_CRITERIA MR MAST
-
-test(function () {
- var returnedValue = null, humanActivityType = "WRIST_UP";
- try {
- returnedValue = tizen.humanactivitymonitor.start(humanActivityType);
- assert_equals(returnedValue, undefined, "Incorrect returned value from start method");
- tizen.humanactivitymonitor.stop(humanActivityType);
- } catch (e) {
- if(e.name === NOT_SUPPORTED_EXCEPTION) {
- } else {
- assert_unreached("unexpected exception is thrown" + e.name + ", msg: " + e.message);
- }
- }
-}, document.title);
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2014 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:
- Wei Zhang <wei625.zhang@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityMonitorManager_start_with_option</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-<script src="support/humanactivitymonitor_common.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityMonitorManager_start_with_option
-//==== LABEL Check if method HumanActivityMonitorManager::start() works properly for GPS HumanActivity type with optional argument
-
-//==== PRIORITY P1
-//==== SPEC Tizen Web API:System:HumanActivityMonitor:HumanActivityMonitorManager:start M
-//==== SPEC_URL TBD
-//==== TEST_CRITERIA MR MAST MOA
-
-setup({timeout: 90000});
-
-var t = async_test(document.title, {timeout: 90000}), successCallback, errorCallback, returnedValue = null, humanActivityType = "GPS", option = {callbackInterval: 150000};
-
-t.step(function () {
- add_result_callback(function () {
- tizen.humanactivitymonitor.stop(humanActivityType);
- });
- errorCallback = t.step_func(function (e) {
- assert_unreached("errorCallback exception:" + e.message);
- });
- successCallback = t.step_func(function (humanActivityData) {
- assert_type(humanActivityData, "object", "humanActivityData is not object type");
- assert_equals(returnedValue, undefined, "Incorrect returned value");
- t.done();
- });
- returnedValue = tizen.humanactivitymonitor.start(humanActivityType, successCallback, errorCallback, option);
-});
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2016 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:
- Xiaoyan Qian <xy.qian@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityMonitorManager_stopRecorder_NotSupportedError</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityMonitorManager_stopRecorder_NotSupportedError
-//==== LABEL Check if HumanActivityMonitorManager::stopRecorder() throw NotSupportedError called with not supported human activity recorder type
-//==== PRIORITY P2
-//==== SPEC Tizen Web API:System:HumanActivityMonitor:HumanActivityMonitorManager:stopRecorder M
-//==== SPEC_URL TBD
-//==== TEST_CRITERIA MC
-
-test(function () {
- if (!tizen.systeminfo.getCapability("http://tizen.org/feature/sensor.pedometer")) {
- assert_throws(NOT_SUPPORTED_EXCEPTION, function () {
- tizen.humanactivitymonitor.stopRecorder("PEDOMETER");
- }, "NotSupportedError exception should throw");
- }
- if (!tizen.systeminfo.getCapability("http://tizen.org/feature/sensor.heart_rate_monitor")) {
- assert_throws(NOT_SUPPORTED_EXCEPTION, function () {
- tizen.humanactivitymonitor.stopRecorder("HRM");
- }, "NotSupportedError exception should throw");
- }
- if (!tizen.systeminfo.getCapability("http://tizen.org/feature/sensor.sleep_monitor")) {
- assert_throws(NOT_SUPPORTED_EXCEPTION, function () {
- tizen.humanactivitymonitor.stopRecorder("SLEEP_MONITOR");
- }, "NotSupportedError exception should throw");
- }
- if (!tizen.systeminfo.getCapability("http://tizen.org/feature/sensor.barometer")) {
- assert_throws(NOT_SUPPORTED_EXCEPTION, function () {
- tizen.humanactivitymonitor.stopRecorder("PRESSURE");
- }, "NotSupportedError exception should throw");
- }
-}, document.title);
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2016 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:
- Xiaoyan Qian <xy.qian@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityMonitorManager_stopRecorder_exist</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityMonitorManager_stopRecorder_exist
-//==== LABEL Check if stopRecorder exists
-//==== SPEC Tizen Web API:System:HumanActivityMonitor:HumanActivityMonitorManager:stopRecorder M
-//==== SPEC_URL TBD
-//==== PRIORITY P0
-//==== TEST_CRITERIA ME
-
-test(function () {
- assert_true("stopRecorder" in tizen.humanactivitymonitor, "HumanActivityMonitorManager should have stopRecorder method");
- check_method_exists(tizen.humanactivitymonitor, "stopRecorder");
-}, document.title);
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2016 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:
- Xiaoyan Qian <xy.qian@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityMonitorManager_stopRecorder_misarg</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityMonitorManager_stopRecorder_misarg
-//==== LABEL Check if HumanActivityMonitorManager::stopRecorder() called with missing non-optional argument throws an exception
-//==== PRIORITY P1
-//==== SPEC Tizen Web API:System:HumanActivityMonitor:HumanActivityMonitorManager:stopRecorder M
-//==== SPEC_URL TBD
-//==== TEST_CRITERIA MMA
-
-test(function () {
- assert_throws(TYPE_MISMATCH_EXCEPTION, function () {
- tizen.humanactivitymonitor.stopRecorder();
- }, "TypeMismatchError exception should throw");
-}, document.title);
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2016 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:
- Xiaoyan Qian <xy.qian@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityMonitorManager_stopRecorder_type_HRM</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityMonitorManager_stopRecorder_type_HRM
-//==== LABEL Check if method HumanActivityMonitorManager::stopRecorder() works properly for HRM HumanActivity type
-//==== PRIORITY P1
-//==== SPEC Tizen Web API:System:HumanActivityMonitor:HumanActivityMonitorManager:stopRecorder M
-//==== SPEC_URL TBD
-//==== TEST_CRITERIA MR
-
-test(function () {
- var returnedValue = null, humanActivityType = "HRM";
-
- add_result_callback(function () {
- tizen.humanactivitymonitor.stopRecorder(humanActivityType);
- });
-
- try {
- tizen.humanactivitymonitor.startRecorder(humanActivityType);
- returnedValue = tizen.humanactivitymonitor.stopRecorder(humanActivityType);
- assert_equals(returnedValue, undefined, "Incorrect returned value from stopRecorder method");
- } catch (e) {
- if(e.name === NOT_SUPPORTED_EXCEPTION) {
- } else {
- assert_unreached("unexpected exception is thrown" + e.name + ", msg: " + e.message);
- }
- }
-}, document.title);
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2016 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:
- Xiaoyan Qian <xy.qian@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityMonitorManager_stopRecorder_type_PEDOMETER</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityMonitorManager_stopRecorder_type_PEDOMETER
-//==== LABEL Check if method HumanActivityMonitorManager::stopRecorder() works properly for PEDOMETER HumanActivity type
-//==== PRIORITY P1
-//==== SPEC Tizen Web API:System:HumanActivityMonitor:HumanActivityMonitorManager:stopRecorder M
-//==== SPEC_URL TBD
-//==== TEST_CRITERIA MR
-
-test(function () {
- var returnedValue = null, humanActivityType = "PEDOMETER";
-
- add_result_callback(function () {
- tizen.humanactivitymonitor.stopRecorder(humanActivityType);
- });
-
- try {
- tizen.humanactivitymonitor.startRecorder(humanActivityType);
- returnedValue = tizen.humanactivitymonitor.stopRecorder(humanActivityType);
- assert_equals(returnedValue, undefined, "Incorrect returned value from stopRecorder method");
- } catch (e) {
- if(e.name === NOT_SUPPORTED_EXCEPTION) {
- } else {
- assert_unreached("unexpected exception is thrown" + e.name + ", msg: " + e.message);
- }
- }
-}, document.title);
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2016 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:
- Xiaoyan Qian <xy.qian@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityMonitorManager_stopRecorder_type_PRESSURE</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityMonitorManager_stopRecorder_type_PRESSURE
-//==== LABEL Check if method HumanActivityMonitorManager::stopRecorder() works properly for PRESSURE HumanActivity type
-//==== PRIORITY P1
-//==== SPEC Tizen Web API:System:HumanActivityMonitor:HumanActivityMonitorManager:stopRecorder M
-//==== SPEC_URL TBD
-//==== TEST_CRITERIA MR
-
-test(function () {
- var returnedValue = null, humanActivityType = "PRESSURE";
-
- add_result_callback(function () {
- tizen.humanactivitymonitor.stopRecorder(humanActivityType);
- });
-
- try {
- tizen.humanactivitymonitor.startRecorder(humanActivityType);
- returnedValue = tizen.humanactivitymonitor.stopRecorder(humanActivityType);
- assert_equals(returnedValue, undefined, "Incorrect returned value from startRecorder method");
- } catch (e) {
- if(e.name === NOT_SUPPORTED_EXCEPTION) {
- } else {
- assert_unreached("unexpected exception is thrown" + e.name + ", msg: " + e.message);
- }
- }
-}, document.title);
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2016 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:
- Xiaoyan Qian <xy.qian@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityMonitorManager_stopRecorder_type_SLEEP_MONITOR</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityMonitorManager_stopRecorder_type_SLEEP_MONITOR
-//==== LABEL Check if method HumanActivityMonitorManager::stopRecorder () works properly for SLEEP_MONITOR HumanActivity type
-//==== PRIORITY P1
-//==== SPEC Tizen Web API:System:HumanActivityMonitor:HumanActivityMonitorManager:stopRecorder M
-//==== SPEC_URL TBD
-//==== TEST_CRITERIA MR
-
-test(function () {
- var returnedValue = null, humanActivityType = "SLEEP_MONITOR";
-
- add_result_callback(function () {
- tizen.humanactivitymonitor.stopRecorder(humanActivityType);
- });
-
- try {
- tizen.humanactivitymonitor.startRecorder(humanActivityType);
- returnedValue = tizen.humanactivitymonitor.stopRecorder(humanActivityType);
- assert_equals(returnedValue, undefined, "Incorrect returned value from stopRecorder method");
- } catch (e) {
- if(e.name === NOT_SUPPORTED_EXCEPTION) {
- } else {
- assert_unreached("unexpected exception is thrown" + e.name + ", msg: " + e.message);
- }
- }
-}, document.title);
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2014 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:
- Wahid Dilawar Al-Hakim <wahid.h@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityMonitorManager_stop_exist</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityMonitorManager_stop_exist
-//==== LABEL Check if HumanActivityMonitorManager::stop() method exists
-//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityMonitorManager:stop M
-//==== SPEC_URL TBD
-//==== PRIORITY P0
-//==== TEST_CRITERIA ME
-
-test(function () {
- check_method_exists(tizen.humanactivitymonitor, "stop");
-}, document.title);
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2014 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:
- Wahid Dilawar Al-Hakim <wahid.h@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityMonitorManager_stop_misarg</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityMonitorManager_stop_misarg
-//==== LABEL Check if HumanActivityMonitorManager::stop() throws exception when type is missing
-//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityMonitorManager:stop M
-//==== SPEC_URL TBD
-//==== PRIORITY P2
-//==== TEST_CRITERIA MMA
-
-test(function () {
- assert_throws(TYPE_MISMATCH_EXCEPTION, function () {
- tizen.humanactivitymonitor.stop();
- }, TYPE_MISMATCH_EXCEPTION + "should be thrown");
-}, document.title);
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2014 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:
- Saleh Enam Shohag <saleh.enam@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityMonitorManager_stop_type_GPS</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityMonitorManager_stop_type_GPS
-//==== LABEL Check if HumanActivityMonitorManager::stop() method works properly for HumanActivity type GPS
-//==== SPEC Tizen Web API:System:HumanActivityMonitor:HumanActivityMonitorManager:stop M
-//==== SPEC_URL TBD
-//==== PRIORITY P1
-//==== TEST_CRITERIA MR
-
-test(function () {
- var returnedValue, humanActivityType = "GPS";
- returnedValue = tizen.humanactivitymonitor.start(humanActivityType);
- assert_equals(returnedValue, undefined, "Incorrect returned value from start method");
- returnedValue = null;
- returnedValue = tizen.humanactivitymonitor.stop(humanActivityType);
- assert_equals(returnedValue, undefined, "Incorrect returned value from stop method");
-}, document.title);
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2014 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:
- Saleh Enam Shohag <saleh.enam@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityMonitorManager_stop_type_HRM</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityMonitorManager_stop_type_HRM
-//==== LABEL Check if HumanActivityMonitorManager::stop() method works properly for HumanActivity type HRM
-//==== SPEC Tizen Web API:System:HumanActivityMonitor:HumanActivityMonitorManager:stop M
-//==== SPEC_URL TBD
-//==== PRIORITY P1
-//==== TEST_CRITERIA MR
-
-test(function () {
- var returnedValue, humanActivityType = "HRM";
- returnedValue = tizen.humanactivitymonitor.start(humanActivityType);
- assert_equals(returnedValue, undefined, "Incorrect returned value from start method");
- returnedValue = null;
- returnedValue = tizen.humanactivitymonitor.stop(humanActivityType);
- assert_equals(returnedValue, undefined, "Incorrect returned value from stop method");
-}, document.title);
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2014 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:
- Wahid Dilawar Al-Hakim <wahid.h@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityMonitorManager_stop_type_PEDOMETER</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityMonitorManager_stop_type_PEDOMETER
-//==== LABEL Check if HumanActivityMonitorManager::stop() method works properly
-//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityMonitorManager:stop M
-//==== SPEC_URL TBD
-//==== PRIORITY P1
-//==== TEST_CRITERIA MR
-
-test(function () {
- var returnedValue, humanActivityType = "PEDOMETER";
- returnedValue = tizen.humanactivitymonitor.start(humanActivityType);
- assert_equals(returnedValue, undefined, "Incorrect returned value from start method");
- returnedValue = null;
- returnedValue = tizen.humanactivitymonitor.stop(humanActivityType);
- assert_equals(returnedValue, undefined, "Incorrect returned value from stop method");
-}, document.title);
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2016 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:
- Wei Zhang <wei625.zhang@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityMonitorManager_stop_type_SLEEP_MONITOR</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityMonitorManager_stop_type_SLEEP_MONITOR
-//==== LABEL Check if HumanActivityMonitorManager::stop() method works properly for HumanActivity type SLEEP_MONITOR
-//==== SPEC Tizen Web API:System:HumanActivityMonitor:HumanActivityMonitorManager:stop M
-//==== SPEC_URL TBD
-//==== PRIORITY P1
-//==== TEST_CRITERIA MR
-
-test(function () {
- var returnedValue, humanActivityType = "SLEEP_MONITOR";
- returnedValue = tizen.humanactivitymonitor.start(humanActivityType);
- assert_equals(returnedValue, undefined, "Incorrect returned value from start method");
- returnedValue = null;
- returnedValue = tizen.humanactivitymonitor.stop(humanActivityType);
- assert_equals(returnedValue, undefined, "Incorrect returned value from stop method");
-}, document.title);
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2014 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:
- Wahid Dilawar Al-Hakim <wahid.h@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityMonitorManager_stop_type_WRIST_UP</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityMonitorManager_stop_type_WRIST_UP
-//==== LABEL Check if HumanActivityMonitorManager::stop() method with WRIST_UP works properly
-//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityMonitorManager:stop M
-//==== SPEC_URL TBD
-//==== PRIORITY P1
-//==== TEST_CRITERIA MR
-
-test(function () {
- var returnedValue = null, humanActivityType = "WRIST_UP";
- returnedValue = tizen.humanactivitymonitor.start(humanActivityType);
- assert_equals(returnedValue, undefined, "Incorrect returned value from start method");
- returnedValue = tizen.humanactivitymonitor.stop(humanActivityType);
- assert_equals(returnedValue, undefined, "Incorrect returned value from stop method");
-}, document.title);
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2014 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:
- Wahid Dilawar Al-Hakim <wahid.h@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityMonitorManager_unsetAccumulativePedometerListener</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityMonitorManager_unsetAccumulativePedometerListener
-//==== LABEL Check if HumanActivityMonitorManager::unsetAccumulativePedometerListener() method works properly
-//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:humanactivitymonitor:unsetAccumulativePedometerListener M
-//==== SPEC_URL TBD
-//==== PRIORITY: P1
-//==== ONLOAD_DELAY 30
-//==== TEST_CRITERIA MNA MNAST MR
-
-setup({timeout: 30000});
-
-var t = async_test(document.title, {timeout: 30000}), changeCallback, returnedValue = null;
-
-t.step(function () {
- changeCallback = t.step(function (pedometer) {
- returnedValue = tizen.humanactivitymonitor.unsetAccumulativePedometerListener();
- assert_equals(returnedValue, undefined, "unsetAccumulativePedometerListener should return undefined.");
- assert_equals(pedometer, undefined, "unsetAccumulativePedometerListener should return undefined.");
- t.done();
- });
-
- tizen.humanactivitymonitor.setAccumulativePedometerListener(changeCallback);
-});
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2014 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:
- Wahid Dilawar Al-Hakim <wahid.h@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityMonitorManager_unsetAccumulativePedometerListener_exist</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityMonitorManager_unsetAccumulativePedometerListener_exist
-//==== LABEL Check if HumanActivityMonitorManager::unsetAccumulativePedometerListener() method exists
-//==== PRIORITY: P0
-//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityMonitorManager:unsetAccumulativePedometerListener M
-//==== SPEC_URL TBD
-//==== TEST_CRITERIA ME
-
-test(function () {
- check_method_exists(tizen.humanactivitymonitor, "unsetAccumulativePedometerListener");
-}, document.title);
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2014 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:
- Wahid Dilawar Al-Hakim <wahid.h@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityMonitorManager_unsetAccumulativePedometerListener_extra_argument</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityMonitorManager_unsetAccumulativePedometerListener_extra_argument
-//==== LABEL Check if HumanActivityMonitorManager::unsetAccumulativePedometerListener() method with extra argument
-//==== PRIORITY: P1
-//==== SPEC: Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityMonitorManager:unsetAccumulativePedometerListener M
-//==== SPEC_URL TBD
-//==== TEST_CRITERIA MNAEX
-
-test(function () {
- checkExtraArgument(tizen.humanactivitymonitor, "unsetAccumulativePedometerListener");
-}, document.title);
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2014 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:
- Hyukin Kwon <hyukin.kwon@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityMonitorOption_callbackInterval_type_GPS</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-<script src="support/humanactivitymonitor_common.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityMonitorOption_callbackInterval_type_GPS
-//==== LABEL Check if method HumanActivityMonitorOption::callbackInterval works properly for GPS HumanActivity type
-//==== PRIORITY P1
-//==== EXECUTION_TYPE manual
-//==== SPEC Tizen Web API:System:HumanActivityMonitor:HumanActivityMonitorOption:callbackInterval A
-//==== SPEC_URL TBD
-//==== STEP Wait 155 seconds for the callback
-//==== EXPECT Pass should be shown in the page after 155 seconds
-//==== TEST_CRITERIA
-//==== ONLOAD_DELAY 300
-
-setup({"timeout": 300000});
-
-var t = async_test(document.title, {"timeout": 300000}), changedCallback, startMeasure, endMeasure, humanActivityType = "GPS", cbFlag = 0;
-
-t.step(function () {
- add_result_callback(function () {
- tizen.humanactivitymonitor.stop(humanActivityType);
- });
-
- changedCallback = t.step_func(function (gpsInfo) {
- if (cbFlag == 1) {
- endMeasure = new Date().getTime();
- assert_approx_equals(endMeasure - startMeasure, 150000, 1000, "Callback should be invoked in given interval time.");
- t.done();
- }
- if (cbFlag == 0) {
- startMeasure = new Date().getTime();
- cbFlag = 1;
- }
- });
-
- tizen.humanactivitymonitor.start(humanActivityType, changedCallback, {callbackInterval:155000});
- startMeasure = new Date().getTime();
-});
-
-</script>
-</body>
-</html>
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2014 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:
- Hyukin Kwon <hyukin.kwon@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityMonitorOption_callbackInterval_type_GPS_default</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-<script src="support/humanactivitymonitor_common.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityMonitorOption_callbackInterval_type_GPS_default
-//==== LABEL Check if method HumanActivityMonitorOption::callbackInterval works properly when set to null
-//==== PRIORITY P1
-//==== EXECUTION_TYPE manual
-//==== SPEC Tizen Web API:System:HumanActivityMonitor:HumanActivityMonitorOption:callbackInterval A
-//==== SPEC_URL TBD
-//==== STEP Wait 150 seconds for the callback
-//==== EXPECT Pass should be shown in the page after 150 seconds
-//==== TEST_CRITERIA
-//==== ONLOAD_DELAY 300
-
-setup({"timeout": 300000});
-
-var t = async_test(document.title, {"timeout": 300000}), changedCallback, startMeasure, endMeasure, humanActivityType = "GPS", cbFlag = 0;
-
-t.step(function () {
- add_result_callback(function () {
- tizen.humanactivitymonitor.stop(humanActivityType);
- });
-
- changedCallback = t.step_func(function (gpsInfo) {
- if (cbFlag == 1) {
- endMeasure = new Date().getTime();
- assert_approx_equals(endMeasure - startMeasure, 150000, 1000, "Callback should be invoked in given interval time.");
- t.done();
- }
- if (cbFlag == 0) {
- startMeasure = new Date().getTime();
- cbFlag = 1;
- }
- });
-
- tizen.humanactivitymonitor.start(humanActivityType, changedCallback, {callbackInterval:null});
-});
-
-</script>
-</body>
-</html>
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2014 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:
- Hyukin Kwon <hyukin.kwon@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityMonitorOption_callbackInterval_type_HRM</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-<script src="support/humanactivitymonitor_common.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityMonitorOption_callbackInterval_type_HRM
-//==== LABEL Check if method HumanActivityMonitorOption::callbackInterval works properly for HRM HumanActivity type
-//==== PRIORITY P1
-//==== SPEC Tizen Web API:System:HumanActivityMonitor:HumanActivityMonitorOption:callbackInterval A
-//==== SPEC_URL TBD
-//==== TEST_CRITERIA
-
-var t = async_test(document.title), changedCallback, startMeasure, endMeasure, humanActivityType = "HRM", cbFlag = 0;
-
-t.step(function () {
- add_result_callback(function () {
- tizen.humanactivitymonitor.stop(humanActivityType);
- });
-
- changedCallback = t.step_func(function (hrmInfo) {
- if (cbFlag == 1) {
- endMeasure = new Date().getTime();
- assert_approx_equals(endMeasure - startMeasure, 500, 100, "Callback should be invoked in given interval time.");
- t.done();
- }
- if (cbFlag == 0) {
- startMeasure = new Date().getTime();
- cbFlag = 1;
- }
- });
-
- tizen.humanactivitymonitor.start(humanActivityType, changedCallback, {callbackInterval:500});
-});
-
-</script>
-</body>
-</html>
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2014 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:
- Hyukin Kwon <hyukin.kwon@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityMonitorOption_callbackInterval_type_HRM_default</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-<script src="support/humanactivitymonitor_common.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityMonitorOption_callbackInterval_type_HRM_default
-//==== LABEL Check if method HumanActivityMonitorOption::callbackInterval() works properly when set to null
-//==== PRIORITY P1
-//==== SPEC Tizen Web API:System:HumanActivityMonitor:HumanActivityMonitorOption:callbackInterval A
-//==== SPEC_URL TBD
-//==== TEST_CRITERIA
-
-var t = async_test(document.title), changedCallback, startMeasure, endMeasure, humanActivityType = "HRM", cbFlag = 0;
-
-t.step(function () {
- add_result_callback(function () {
- tizen.humanactivitymonitor.stop(humanActivityType);
- });
-
- changedCallback = t.step_func(function (hrmInfo) {
- if (cbFlag == 1) {
- endMeasure = new Date().getTime();
- assert_approx_equals(endMeasure - startMeasure, 100, 50, "Callback should be invoked in given interval time.");
- t.done();
- }
- if (cbFlag == 0) {
- startMeasure = new Date().getTime();
- cbFlag = 1;
- }
- });
-
- tizen.humanactivitymonitor.start(humanActivityType, changedCallback, {callbackInterval:null});
- startMeasure = new Date().getTime();
-});
-
-</script>
-</body>
-</html>
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2014 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:
- Hyukin Kwon <hyukin.kwon@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityMonitorOption_sampleInterval_type_GPS</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-<script src="support/humanactivitymonitor_common.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityMonitorOption_sampleInterval_type_GPS
-//==== LABEL Check if method HumanActivityMonitorOption::sampleInterval works properly for GPS HumanActivity type
-//==== PRIORITY P1
-//==== EXECUTION_TYPE manual
-//==== SPEC Tizen Web API:System:HumanActivityMonitor:HumanActivityMonitorOption:sampleInterval A
-//==== SPEC_URL TBD
-//==== STEP Wait 120 seconds for the callback
-//==== EXPECT Pass should be shown in the page after 120 seconds
-//==== TEST_CRITERIA
-//==== ONLOAD_DELAY 300
-
-setup({"timeout": 300000});
-
-var t = async_test(document.title, {"timeout": 300000}), changedCallback, humanActivityType = "GPS", cbFlag = 0;
-
-t.step(function () {
- add_result_callback(function () {
- tizen.humanactivitymonitor.stop(humanActivityType);
- });
-
- changedCallback = t.step_func(function (gpsInfo) {
- if (cbFlag == 1) {
- assert_approx_equals(gpsInfo.gpsInfo.length, 60, 5, "GPS information should be sampled approximately 60 times");
- t.done();
- }
- if (cbFlag == 0) {
- cbFlag = 1;
- }
- });
-
- tizen.humanactivitymonitor.start(humanActivityType, changedCallback, {callbackInterval:120000, sampleInterval:2000});
-});
-
-</script>
-</body>
-</html>
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2014 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:
- Hyukin Kwon <hyukin.kwon@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityMonitorOption_sampleInterval_type_GPS_default</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-<script src="support/humanactivitymonitor_common.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityMonitorOption_sampleInterval_type_GPS_default
-//==== LABEL Check if method HumanActivityMonitorOption::sampleInterval works properly when set to null
-//==== PRIORITY P1
-//==== EXECUTION_TYPE manual
-//==== SPEC Tizen Web API:System:HumanActivityMonitor:HumanActivityMonitorOption:sampleInterval A
-//==== SPEC_URL TBD
-//==== STEP Wait 120 seconds for the callback
-//==== EXPECT Pass should be shown in the page after 120 seconds
-//==== TEST_CRITERIA
-//==== ONLOAD_DELAY 300
-
-setup({"timeout": 300000});
-
-var t = async_test(document.title, {"timeout": 300000}), changedCallback, humanActivityType = "GPS", cbFlag = 0;
-
-t.step(function () {
- add_result_callback(function () {
- tizen.humanactivitymonitor.stop(humanActivityType);
- });
-
- changedCallback = t.step_func(function (gpsInfo) {
- if (cbFlag == 1) {
- assert_approx_equals(gpsInfo.gpsInfo.length, 120, 5, "GPS information should be sampled approximately 120 times");
- t.done();
- }
- if (cbFlag == 0) {
- cbFlag = 1;
- }
- });
-
- tizen.humanactivitymonitor.start(humanActivityType, changedCallback, {callbackInterval:120000, sampleInterval:null});
-});
-
-</script>
-</body>
-</html>
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2014 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:
- Wahid Dilawar Al-Hakim <wahid.h@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityMonitorSuccessCallback_notexist</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityMonitorSuccessCallback_notexist
-//==== LABEL Check if HumanActivityMonitorSuccessCallback does not exist
-//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityMonitorSuccessCallback U
-//==== SPEC_URL TBD
-//==== PRIORITY P3
-//==== TEST_CRITERIA CBNIO
-
-test(function () {
- check_no_interface_object("HumanActivityMonitorSuccessCallback");
-}, document.title);
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2014 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:
- Wahid Dilawar Al-Hakim <wahid.h@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityMonitorSuccessCallback_onsuccess</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-<script src="support/humanactivitymonitor_common.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityMonitorSuccessCallback_onsuccess
-//==== LABEL Test whether HumanActivityMonitorSuccessCallback::onsuccess() is called with argument of proper type
-//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityMonitorSuccessCallback:onsuccess M
-//==== SPEC_URL TBD
-//==== PRIORITY P1
-//==== ONLOAD_DELAY 90
-//==== TEST_CRITERIA CBT CBOA
-
-setup({timeout: 90000});
-
-var t = async_test(document.title, {timeout: 90000}), successCallback, errorCallback, returnedValue = null, humanActivityType = "PEDOMETER";
-
-t.step(function () {
- add_result_callback(function () {
- tizen.humanactivitymonitor.stop(humanActivityType);
- });
-
- successCallback = t.step_func(function (humanActivityData) {
- assert_type(humanActivityData, "object", "humanActivityData is not object type");
- assert_equals(returnedValue, undefined, "Incorrect returned value");
- check_human_activity_pedometer_data(humanActivityData);
- t.done();
- });
-
- errorCallback = t.step_func(function (error) {
- assert_unreached("error callback invoked: name: " + error.name + ", msg: " + error.message);
- });
-
- returnedValue = tizen.humanactivitymonitor.start(humanActivityType);
- assert_equals(returnedValue, undefined, "Incorrect returned value");
- returnedValue = tizen.humanactivitymonitor.getHumanActivityData(humanActivityType, successCallback, errorCallback);
-});
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2014 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:
- Saleh Enam Shohag <saleh.enam@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityPedometerData_cumulativeCalorie_attribute</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-<script src="support/humanactivitymonitor_common.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityPedometerData_cumulativeCalorie_attribute
-//==== LABEL Check if HumanActivityPedometerData::cumulativeCalorie exists, has type double, and is readonly
-//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityPedometerData:cumulativeCalorie A
-//==== SPEC_URL TBD
-//==== PRIORITY P1
-//==== ONLOAD_DELAY 9
-//==== TEST_CRITERIA AE AT ARO
-
-setup({timeout: 9000});
-
-var t = async_test(document.title, {timeout: 9000}), getHumanActivityDataSuccess, getHumanActivityDataError, humanActivityType = "PEDOMETER";
-
-t.step(function () {
- add_result_callback(function () {
- tizen.humanactivitymonitor.stop(humanActivityType);
- });
-
- getHumanActivityDataError = t.step_func(function (error) {
- assert_unreached("getHumanActivityDataError is called" + error.name);
- });
-
- getHumanActivityDataSuccess = t.step_func(function (pedometerInfo) {
- check_readonly(pedometerInfo, "cumulativeCalorie", pedometerInfo.cumulativeCalorie, "double", pedometerInfo.cumulativeCalorie + 10);
- t.done();
- });
-
- tizen.humanactivitymonitor.start(humanActivityType);
- tizen.humanactivitymonitor.getHumanActivityData(humanActivityType, getHumanActivityDataSuccess, getHumanActivityDataError);
-});
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2014 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:
- Saleh Enam Shohag <saleh.enam@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityPedometerData_cumulativeDistance_attribute</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-<script src="support/humanactivitymonitor_common.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityPedometerData_cumulativeDistance_attribute
-//==== LABEL Check if HumanActivityPedometerData::cumulativeDistance exists, has type double, and is readonly
-//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityPedometerData:cumulativeDistance A
-//==== SPEC_URL TBD
-//==== PRIORITY P1
-//==== ONLOAD_DELAY 9
-//==== TEST_CRITERIA AE AT ARO
-
-setup({timeout: 9000});
-
-var t = async_test(document.title, {timeout: 9000}), getHumanActivityDataSuccess, getHumanActivityDataError, humanActivityType = "PEDOMETER";
-
-t.step(function () {
- add_result_callback(function () {
- tizen.humanactivitymonitor.stop(humanActivityType);
- });
-
- getHumanActivityDataError = t.step_func(function (error) {
- assert_unreached("getHumanActivityDataError is called" + error.name);
- });
-
- getHumanActivityDataSuccess = t.step_func(function (pedometerInfo) {
- check_readonly(pedometerInfo, "cumulativeDistance", pedometerInfo.cumulativeDistance, "double", pedometerInfo.cumulativeDistance + 10);
- t.done();
- });
-
- tizen.humanactivitymonitor.start(humanActivityType);
- tizen.humanactivitymonitor.getHumanActivityData(humanActivityType, getHumanActivityDataSuccess, getHumanActivityDataError);
-});
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2014 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:
- Saleh Enam Shohag <saleh.enam@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityPedometerData_cumulativeRunStepCount_attribute</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-<script src="support/humanactivitymonitor_common.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityPedometerData_cumulativeRunStepCount_attribute
-//==== LABEL Check if HumanActivityPedometerData::cumulativeRunStepCount exists, has type double, and is readonly
-//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityPedometerData:cumulativeRunStepCount A
-//==== SPEC_URL TBD
-//==== PRIORITY P1
-//==== ONLOAD_DELAY 9
-//==== TEST_CRITERIA AE AT ARO
-
-setup({timeout: 9000});
-
-var t = async_test(document.title, {timeout: 9000}), getHumanActivityDataSuccess, getHumanActivityDataError, humanActivityType = "PEDOMETER";
-
-t.step(function () {
- add_result_callback(function () {
- tizen.humanactivitymonitor.stop(humanActivityType);
- });
-
- getHumanActivityDataError = t.step_func(function (error) {
- assert_unreached("getHumanActivityDataError is called" + error.name);
- });
-
- getHumanActivityDataSuccess = t.step_func(function (pedometerInfo) {
- check_readonly(pedometerInfo, "cumulativeRunStepCount", pedometerInfo.cumulativeRunStepCount, "double",
- pedometerInfo.cumulativeRunStepCount + 10);
- t.done();
- });
-
- tizen.humanactivitymonitor.start(humanActivityType);
- tizen.humanactivitymonitor.getHumanActivityData(humanActivityType, getHumanActivityDataSuccess, getHumanActivityDataError);
-});
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2014 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:
- Saleh Enam Shohag <saleh.enam@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityPedometerData_cumulativeTotalStepCount_attribute</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-<script src="support/humanactivitymonitor_common.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityPedometerData_cumulativeTotalStepCount_attribute
-//==== LABEL Check if HumanActivityPedometerData::cumulativeTotalStepCount exists, has type double, and is readonly
-//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityPedometerData:cumulativeTotalStepCount A
-//==== SPEC_URL TBD
-//==== PRIORITY P1
-//==== ONLOAD_DELAY 9
-//==== TEST_CRITERIA AE AT ARO
-
-setup({timeout: 9000});
-
-var t = async_test(document.title, {timeout: 9000}), getHumanActivityDataSuccess, getHumanActivityDataError, humanActivityType = "PEDOMETER";
-
-t.step(function () {
- add_result_callback(function () {
- tizen.humanactivitymonitor.stop(humanActivityType);
- });
-
- getHumanActivityDataError = t.step_func(function (error) {
- assert_unreached("getHumanActivityDataError is called" + error.name);
- });
-
- getHumanActivityDataSuccess = t.step_func(function (pedometerInfo) {
- check_readonly(pedometerInfo, "cumulativeTotalStepCount", pedometerInfo.cumulativeTotalStepCount, "double",
- pedometerInfo.cumulativeTotalStepCount + 10);
- t.done();
- });
-
- tizen.humanactivitymonitor.start(humanActivityType);
- tizen.humanactivitymonitor.getHumanActivityData(humanActivityType, getHumanActivityDataSuccess, getHumanActivityDataError);
-});
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2014 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:
- Saleh Enam Shohag <saleh.enam@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityPedometerData_cumulativeWalkStepCount_attribute</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-<script src="support/humanactivitymonitor_common.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityPedometerData_cumulativeWalkStepCount_attribute
-//==== LABEL Check if HumanActivityPedometerData::cumulativeWalkStepCount exists, has type double, and is readonly
-//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityPedometerData:cumulativeWalkStepCount A
-//==== SPEC_URL TBD
-//==== PRIORITY P1
-//==== ONLOAD_DELAY 9
-//==== TEST_CRITERIA AE AT ARO
-
-setup({timeout: 9000});
-
-var t = async_test(document.title, {timeout: 9000}), getHumanActivityDataSuccess, getHumanActivityDataError, humanActivityType = "PEDOMETER";
-
-t.step(function () {
- add_result_callback(function () {
- tizen.humanactivitymonitor.stop(humanActivityType);
- });
-
- getHumanActivityDataError = t.step_func(function (error) {
- assert_unreached("getHumanActivityDataError is called" + error.name);
- });
-
- getHumanActivityDataSuccess = t.step_func(function (pedometerInfo) {
- check_readonly(pedometerInfo, "cumulativeWalkStepCount", pedometerInfo.cumulativeWalkStepCount, "double",
- pedometerInfo.cumulativeWalkStepCount + 10);
- t.done();
- });
-
- tizen.humanactivitymonitor.start(humanActivityType);
- tizen.humanactivitymonitor.getHumanActivityData(humanActivityType, getHumanActivityDataSuccess, getHumanActivityDataError);
-});
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2014 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:
- Wahid Dilawar Al-Hakim <wahid.h@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityPedometerData_extend</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityPedometerData_extend
-//==== LABEL Check if HumanActivityPedometerData object is extendable
-//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityPedometerData:HumanActivityPedometerData U
-//==== SPEC_URL TBD
-//==== PRIORITY P3
-//==== ONLOAD_DELAY 90
-//==== TEST_CRITERIA OBX
-
-setup({timeout: 90000});
-
-var t = async_test(document.title, {timeout: 90000}), successCallback, errorCallback, humanActivityType = "PEDOMETER";
-
-t.step(function () {
- add_result_callback(function () {
- tizen.humanactivitymonitor.stop(humanActivityType);
- });
-
- successCallback = t.step_func(function (humanActivityData) {
- check_extensibility(humanActivityData);
- t.done();
- });
-
- errorCallback = t.step_func(function (error) {
- assert_unreached("error callback invoked: name: " + error.name + ", msg: " + error.message);
- });
-
- tizen.humanactivitymonitor.start(humanActivityType);
- tizen.humanactivitymonitor.getHumanActivityData(humanActivityType, successCallback, errorCallback);
-});
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2014 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:
- Wahid Dilawar Al-Hakim <wahid.h@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityPedometerData_notexist</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityPedometerData_notexist
-//==== LABEL Check if interface HumanActivityPedometerData exists, it should not
-//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityPedometerData:HumanActivityPedometerData U
-//==== SPEC_URL TBD
-//==== PRIORITY P3
-//==== TEST_CRITERIA NIO
-
-test(function () {
- check_no_interface_object("HumanActivityPedometerData");
-}, document.title);
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2014 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:
- Saleh Enam Shohag <saleh.enam@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityPedometerData_speed_attribute</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-<script src="support/humanactivitymonitor_common.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityPedometerData_speed_attribute
-//==== LABEL Check if HumanActivityPedometerData::speed exists, has type double, and is readonly
-//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityPedometerData:speed A
-//==== SPEC_URL TBD
-//==== PRIORITY P1
-//==== ONLOAD_DELAY 9
-//==== TEST_CRITERIA AE AT ARO
-
-setup({timeout: 9000});
-
-var t = async_test(document.title, {timeout: 9000}), getHumanActivityDataSuccess, getHumanActivityDataError, humanActivityType = "PEDOMETER";
-
-t.step(function () {
- add_result_callback(function () {
- tizen.humanactivitymonitor.stop(humanActivityType);
- });
-
- getHumanActivityDataError = t.step_func(function (error) {
- assert_unreached("getHumanActivityDataError is called" + error.name);
- });
-
- getHumanActivityDataSuccess = t.step_func(function (pedometerInfo) {
- check_readonly(pedometerInfo, "speed", pedometerInfo.speed, "double", pedometerInfo.speed + 10);
- t.done();
- });
-
- tizen.humanactivitymonitor.start(humanActivityType);
- tizen.humanactivitymonitor.getHumanActivityData(humanActivityType, getHumanActivityDataSuccess, getHumanActivityDataError);
-});
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2014 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:
- Wei Zhang <wei625.zhang@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityPedometerData_stepCountDifferences_attribute</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-<script src="support/humanactivitymonitor_common.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityPedometerData_stepCountDifferences_attribute
-//==== LABEL Check if HumanActivityPedometerData::stepCountDifferences exists, has type double, and is readonly
-//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityPedometerData:stepCountDifferences A
-//==== SPEC_URL TBD
-//==== PRIORITY P1
-//==== ONLOAD_DELAY 9
-//==== TEST_CRITERIA AE AT ARO
-
-setup({timeout: 9000});
-
-var t = async_test(document.title, {timeout: 9000}), getHumanActivityDataSuccess, getHumanActivityDataError, humanActivityType = "PEDOMETER";
-
-t.step(function () {
- add_result_callback(function () {
- tizen.humanactivitymonitor.stop(humanActivityType);
- });
-
- getHumanActivityDataError = t.step_func(function (error) {
- assert_unreached("getHumanActivityDataError is called" + error.name);
- });
-
- getHumanActivityDataSuccess = t.step_func(function (pedometerInfo) {
- check_readonly(pedometerInfo, "stepCountDifferences", pedometerInfo.stepCountDifferences, "array", [10, 500]);
- t.done();
- });
-
- tizen.humanactivitymonitor.start(humanActivityType);
- tizen.humanactivitymonitor.getHumanActivityData(humanActivityType, getHumanActivityDataSuccess, getHumanActivityDataError);
-});
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2014 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:
- Saleh Enam Shohag <saleh.enam@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityPedometerData_stepStatus_attribute</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-<script src="support/humanactivitymonitor_common.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityPedometerData_stepStatus_attribute
-//==== LABEL Check if HumanActivityPedometerData::stepStatus exists, has type string, and is readonly
-//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityPedometerData:stepStatus A
-//==== SPEC_URL TBD
-//==== PRIORITY P1
-//==== ONLOAD_DELAY 9
-//==== TEST_CRITERIA AE AT ARO
-
-setup({timeout: 9000});
-
-var t = async_test(document.title, {timeout: 9000}), getHumanActivityDataSuccess, getHumanActivityDataError, humanActivityType = "PEDOMETER";
-
-t.step(function () {
- add_result_callback(function () {
- tizen.humanactivitymonitor.stop(humanActivityType);
- });
-
- getHumanActivityDataError = t.step_func(function (error) {
- assert_unreached("getHumanActivityDataError is called" + error.name);
- });
-
- getHumanActivityDataSuccess = t.step_func(function (pedometerInfo) {
- check_readonly(pedometerInfo, "stepStatus", pedometerInfo.stepStatus, "string", pedometerInfo.stepStatus + "10");
- t.done();
- });
-
- tizen.humanactivitymonitor.start(humanActivityType);
- tizen.humanactivitymonitor.getHumanActivityData(humanActivityType, getHumanActivityDataSuccess, getHumanActivityDataError);
-});
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2014 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:
- Saleh Enam Shohag <saleh.enam@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityPedometerData_walkingFrequency_attribute</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-<script src="support/humanactivitymonitor_common.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityPedometerData_walkingFrequency_attribute
-//==== LABEL Check if HumanActivityPedometerData::walkingFrequency exists, has type double, and is readonly
-//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityPedometerData:walkingFrequency A
-//==== SPEC_URL TBD
-//==== PRIORITY P1
-//==== ONLOAD_DELAY 9
-//==== TEST_CRITERIA AE AT ARO
-
-setup({timeout: 9000});
-
-var t = async_test(document.title, {timeout: 9000}), getHumanActivityDataSuccess, getHumanActivityDataError, humanActivityType = "PEDOMETER";
-
-t.step(function () {
- add_result_callback(function () {
- tizen.humanactivitymonitor.stop(humanActivityType);
- });
-
- getHumanActivityDataError = t.step_func(function (error) {
- assert_unreached("getHumanActivityDataError is called" + error.name);
- });
-
- getHumanActivityDataSuccess = t.step_func(function (pedometerInfo) {
- check_readonly(pedometerInfo, "walkingFrequency", pedometerInfo.walkingFrequency, "double", pedometerInfo.walkingFrequency + 10);
- t.done();
- });
-
- tizen.humanactivitymonitor.start(humanActivityType);
- tizen.humanactivitymonitor.getHumanActivityData(humanActivityType, getHumanActivityDataSuccess, getHumanActivityDataError);
-});
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2016 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:
- Xiaoyan Qian <xy.qian@samsung.com>
-
--->
-
-<html>
-<head>
-<title>HumanActivityReadRecorderSuccessCallback_notexist</title>
-<script src="support/unitcommon.js"></script>
-</head>
-
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityReadRecorderSuccessCallback_notexist
-//==== LABEL Check if HumanActivityReadRecorderSuccessCallback cannot be called in new expression and as a function or in new expression
-//==== PRIORITY P3
-//==== SPEC Tizen Web API:System:HumanActivityMonitor:HumanActivityReadRecorderSuccessCallback:HumanActivityReadRecorderSuccessCallback U
-//==== SPEC_URL TBD
-//==== TEST_CRITERIA NIO
-
-test(function () {
- check_no_interface_object("HumanActivityReadRecorderSuccessCallback");
-}, document.title);
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2016 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:
- Xiaoyan Qian <xy.qian@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityReadRecorderSuccessCallback_onsuccess</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<!--<button type="button" onclick="stopRecorder()">Click</button>-->
-<script>
-//==== TEST: HumanActivityReadRecorderSuccessCallback_onsuccess
-//==== LABEL Check if HumanActivityReadRecorderSuccessCallback onsuccess is called and if its arguments have proper type
-//==== SPEC Tizen Web API:System:HumanActivityMonitor:HumanActivityReadRecorderSuccessCallback:HumanActivityReadRecorderSuccessCallback U
-//==== SPEC_URL TBD
-//==== PRIORITY P1
-//==== EXECUTION_TYPE manual
-//==== STEP Press run button. Waiting for 10 minutes, then press the Click button.
-//==== EXPECT Pass
-//==== TEST_CRITERIA CBT CBOA
-//==== ONLOAD_DELAY 60
-
-setup({timeout: 60000});
-
-var t = async_test(document.title, {timeout: 60000}), successCallback, errorCallback, date = new Date(), endTime = date.getTime(), startTime = date.setDate(date.getDate() - 1),
- query = {
- startTime: startTime/1000,
- endTime: endTime/1000,
- interval: 10
- };
-t.step(function () {
-
- successCallback = t.step_func(function (humanactivitydata) {
- assert_not_equals(humanactivitydata , null, "Argument should not be null.");
- assert_type(humanactivitydata[0], "object", "Incorrect type.");
- assert_type(humanactivitydata[0].heartRate, "number", "heartRate type check");
- assert_type(humanactivitydata[0].startTime, "number", "startTime type check");
- assert_type(humanactivitydata[0].endTime, "number", "endTime type check");
- assert_not_equals(humanactivitydata[0].heartRate, null, "heartRate should not be null");
- assert_not_equals(humanactivitydata[0].startTime, null, "startTime should not be null");
- assert_not_equals(humanactivitydata[0].endTime, null, "endTime should not be null");
- t.done();
- });
-
- errorCallback = t.step_func(function (error) {
- assert_unreached("Invalid error callback invoked:" + error.name + ": " + error.message);
- });
-
- tizen.humanactivitymonitor.readRecorderData("HRM", query, successCallback);
-
-});
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2014 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:
- Wei Zhang <wei625.zhang@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityRecognitionData_notexist</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityRecognitionData_notexist
-//==== LABEL Check if interface HumanActivityRecognitionData exists, it should not
-//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityRecognitionData:HumanActivityRecognitionData U
-//==== SPEC_URL TBD
-//==== PRIORITY P3
-//==== TEST_CRITERIA NIO
-
-test(function () {
- check_no_interface_object("HumanActivityRecognitionData");
-}, document.title);
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2016 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:
- Xiaoyan Qian <xy.qian@samsung.com>
-
--->
-
-<html>
-<head>
-<title>HumanActivityRecorderData_notexist</title>
-<script src="support/unitcommon.js"></script>
-</head>
-
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityRecorderData_notexist
-//==== LABEL Check if HumanActivityRecorderData cannot be called in new expression and as a function or in new expression
-//==== PRIORITY P3
-//==== SPEC Tizen Web API:System:HumanActivityMonitor:HumanActivityRecorderData:HumanActivityRecorderData U
-//==== SPEC_URL TBD
-//==== TEST_CRITERIA NIO
-
-test(function () {
- check_no_interface_object("HumanActivityRecorderData");
-}, document.title);
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2016 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:
- Xiaoyan Qian <xy.qian@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityRecorderHRMData_endTime_attribute</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityRecorderHRMData_endTime_attribute
-//==== LABEL Check if HumanActivityRecorderHRMData have endTime attribute with proper type, readonly
-//==== SPEC Tizen Web API:System:HumanActivityMonitor:HumanActivityRecorderHRMData:endTime A
-//==== SPEC_URL TBD
-//==== PRIORITY P1
-//==== TEST_CRITERIA AE AT ARO
-
-setup({timeout: 60000});
-
-var t = async_test(document.title, {timeout: 60000}), successCallback, date = new Date(), endTime = date.getTime(), startTime = date.setDate(date.getDate() - 1),
- query = {
- startTime: startTime/1000,
- endTime: endTime/1000,
- interval: 1440
- };
-
-t.step(function () {
-
- successCallback = t.step_func(function (humanactivitydata) {
- assert_greater_than(humanactivitydata.length, 0, "data is not found");
- check_readonly(humanactivitydata[0], "endTime", humanactivitydata[0].endTime, "number", humanactivitydata[0].endTime + 100);
- t.done();
- });
-
- tizen.humanactivitymonitor.readRecorderData("HRM", query, successCallback);
-
-});
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2016 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:
- Xiaoyan Qian <xy.qian@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityRecorderHRMData_heartRate_attribute</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityRecorderHRMData_heartRate_attribute
-//==== LABEL Check if HumanActivityRecorderHRMData have heartRate attribute with proper type, readonly
-//==== SPEC Tizen Web API:System:HumanActivityMonitor:HumanActivityRecorderHRMData:heartRate A
-//==== SPEC_URL TBD
-//==== PRIORITY P1
-//==== TEST_CRITERIA AE AT ARO
-
-setup({timeout: 60000});
-
-var t = async_test(document.title, {timeout: 60000}), successCallback, date = new Date(), endTime = date.getTime(), startTime = date.setDate(date.getDate() - 1),
- query = {
- startTime: startTime/1000,
- endTime: endTime/1000,
- interval: 1440
- };
-
-t.step(function () {
-
- successCallback = t.step_func(function (humanactivitydata) {
- assert_greater_than(humanactivitydata.length, 0, "data is not found");
- check_readonly(humanactivitydata[0], "heartRate", humanactivitydata[0].heartRate, "number", humanactivitydata[0].heartRate + 100);
- t.done();
- });
-
- tizen.humanactivitymonitor.readRecorderData("HRM", query, successCallback);
-
-});
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2016 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:
- Xiaoyan Qian <xy.qian@samsung.com>
-
--->
-
-<html>
-<head>
-<title>HumanActivityRecorderHRMData_notexist</title>
-<script src="support/unitcommon.js"></script>
-</head>
-
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityRecorderHRMData_notexist
-//==== LABEL Check if HumanActivityRecorderHRMData cannot be called in new expression and as a function or in new expression
-//==== PRIORITY P3
-//==== SPEC Tizen Web API:System:HumanActivityMonitor:HumanActivityRecorderHRMData:HumanActivityRecorderHRMData U
-//==== SPEC_URL TBD
-//==== TEST_CRITERIA NIO
-
-test(function () {
- check_no_interface_object("HumanActivityRecorderHRMData");
-}, document.title);
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2016 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:
- Xiaoyan Qian <xy.qian@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityRecorderHRMData_startTime_attribute</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityRecorderHRMData_startTime_attribute
-//==== LABEL Check if HumanActivityRecorderHRMData have startTime attribute with proper type, readonly
-//==== SPEC Tizen Web API:System:HumanActivityMonitor:HumanActivityRecorderHRMData:startTime A
-//==== SPEC_URL TBD
-//==== PRIORITY P1
-//==== TEST_CRITERIA AE AT ARO
-
-setup({timeout: 60000});
-
-var t = async_test(document.title, {timeout: 60000}), successCallback, date = new Date(), endTime = date.getTime(), startTime = date.setDate(date.getDate() - 1),
- query = {
- startTime: startTime/1000,
- endTime: endTime/1000,
- interval: 1440
- };
-
-t.step(function () {
-
- successCallback = t.step_func(function (humanactivitydata) {
- assert_greater_than(humanactivitydata.length, 0, "data is not found");
- check_readonly(humanactivitydata[0], "startTime", humanactivitydata[0].startTime, "number", humanactivitydata[0].startTime + 100);
- t.done();
- });
-
- tizen.humanactivitymonitor.readRecorderData("HRM", query, successCallback);
-
-});
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2016 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:
- Xiaoyan Qian <xy.qian@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityRecorderPedometerData_calorie_attribute</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityRecorderPedometerData_calorie_attribute
-//==== LABEL Check if HumanActivityRecorderPedometerData have calorie attribute with proper type, readonly
-//==== SPEC Tizen Web API:System:HumanActivityMonitor:HumanActivityRecorderPedometerData:calorie A
-//==== SPEC_URL TBD
-//==== PRIORITY P1
-//==== EXECUTION_TYPE manual
-//==== STEP Press run button. Pretend walking with the device.
-//==== EXPECT Pass
-//==== TEST_CRITERIA AE AT ARO
-//==== ONLOAD_DELAY 60
-
-setup({timeout: 90000});
-
-var t = async_test(document.title, {timeout: 90000}), retValue = null, successCallback, date = new Date(), startTime = date.getTime(), endTime = date.setDate(date.getDate() + 1),
- query = {
- startTime: startTime/1000,
- endTime: endTime/1000,
- interval: 1440
- };
-
-t.step(function () {
-
- add_result_callback(function () {
- tizen.humanactivitymonitor.stopRecorder("PEDOMETER");
- });
-
- successCallback = t.step_func(function (humanactivitydata) {
- assert_greater_than(humanactivitydata.length, 0, "data is not found");
- check_readonly(humanactivitydata[0], "calorie", humanactivitydata[0].calorie, "number", humanactivitydata[0].calorie + 100);
- t.done();
- });
-
- tizen.humanactivitymonitor.startRecorder("PEDOMETER");
- setTimeout(function(){tizen.humanactivitymonitor.stopRecorder("PEDOMETER");
- retValue = tizen.humanactivitymonitor.readRecorderData("PEDOMETER", query, successCallback);}, 60000);
-
-});
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2016 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:
- Xiaoyan Qian <xy.qian@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityRecorderPedometerData_distance_attribute</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityRecorderPedometerData_distance_attribute
-//==== LABEL Check if HumanActivityRecorderPedometerData have distance attribute with proper type, readonly
-//==== SPEC Tizen Web API:System:HumanActivityMonitor:HumanActivityRecorderPedometerData:distance A
-//==== SPEC_URL TBD
-//==== PRIORITY P1
-//==== EXECUTION_TYPE manual
-//==== STEP Press run button. Pretend walking with the device.
-//==== EXPECT Pass
-//==== TEST_CRITERIA AE AT ARO
-//==== ONLOAD_DELAY 60
-
-setup({timeout: 90000});
-
-var t = async_test(document.title, {timeout: 90000}), retValue = null, successCallback, date = new Date(), startTime = date.getTime(), endTime = date.setDate(date.getDate() + 1),
- query = {
- startTime: startTime/1000,
- endTime: endTime/1000,
- interval: 1440
- };
-
-t.step(function () {
-
- add_result_callback(function () {
- tizen.humanactivitymonitor.stopRecorder("PEDOMETER");
- });
-
- successCallback = t.step_func(function (humanactivitydata) {
- assert_greater_than(humanactivitydata.length, 0, "data is not found");
- check_readonly(humanactivitydata[0], "distance", humanactivitydata[0].distance, "number", humanactivitydata[0].distance + 100);
- t.done();
- });
-
- tizen.humanactivitymonitor.startRecorder("PEDOMETER");
- setTimeout(function(){tizen.humanactivitymonitor.stopRecorder("PEDOMETER");
- retValue = tizen.humanactivitymonitor.readRecorderData("PEDOMETER", query, successCallback);}, 60000);
-
-});
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2016 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:
- Xiaoyan Qian <xy.qian@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityRecorderPedometerData_endTime_attribute</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityRecorderPedometerData_endTime_attribute
-//==== LABEL Check if HumanActivityRecorderPedometerData have endTime attribute with proper type, readonly
-//==== SPEC Tizen Web API:System:HumanActivityMonitor:HumanActivityRecorderPedometerData:endTime A
-//==== SPEC_URL TBD
-//==== PRIORITY P1
-//==== EXECUTION_TYPE manual
-//==== STEP Press run button. Pretend walking with the device.
-//==== EXPECT Pass
-//==== TEST_CRITERIA AE AT ARO
-//==== ONLOAD_DELAY 60
-
-setup({timeout: 120000});
-
-var t = async_test(document.title, {timeout: 120000}), successCallback, date = new Date(), startTime = date.getTime(), endTime = date.setDate(date.getDate() + 1),
- query = {
- startTime: startTime/1000,
- endTime: endTime/1000,
- interval: 1440
- };
-
-t.step(function () {
-
- add_result_callback(function () {
- tizen.humanactivitymonitor.stopRecorder("PEDOMETER");
- });
-
- successCallback = t.step_func(function (humanactivitydata) {
- assert_greater_than(humanactivitydata.length, 0, "data is not found");
- check_readonly(humanactivitydata[0], "endTime", humanactivitydata[0].endTime, "number", humanactivitydata[0].endTime + 100);
- t.done();
- });
-
- tizen.humanactivitymonitor.startRecorder("PEDOMETER");
- setTimeout(function(){tizen.humanactivitymonitor.stopRecorder("PEDOMETER");
- retValue = tizen.humanactivitymonitor.readRecorderData("PEDOMETER", query, successCallback);}, 60000);
-
-});
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2016 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:
- Xiaoyan Qian <xy.qian@samsung.com>
-
--->
-
-<html>
-<head>
-<title>HumanActivityRecorderPedometerData_notexist</title>
-<script src="support/unitcommon.js"></script>
-</head>
-
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityRecorderPedometerData_notexist
-//==== LABEL Check if HumanActivityRecorderPedometerData cannot be called in new expression and as a function or in new expression
-//==== PRIORITY P3
-//==== SPEC Tizen Web API:System:HumanActivityMonitor:HumanActivityRecorderPedometerData:HumanActivityRecorderPedometerData U
-//==== SPEC_URL TBD
-//==== TEST_CRITERIA NIO
-
-test(function () {
- check_no_interface_object("HumanActivityRecorderPedometerData");
-}, document.title);
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2016 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:
- Xiaoyan Qian <xy.qian@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityRecorderPedometerData_runStepCount_attribute</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityRecorderPedometerData_runStepCount_attribute
-//==== LABEL Check if HumanActivityRecorderPedometerData have runStepCount attribute with proper type, readonly
-//==== SPEC Tizen Web API:System:HumanActivityMonitor:HumanActivityRecorderPedometerData:runStepCount A
-//==== SPEC_URL TBD
-//==== PRIORITY P1
-//==== EXECUTION_TYPE manual
-//==== STEP Press run button. Pretend walking with the device.
-//==== EXPECT Pass
-//==== TEST_CRITERIA AE AT ARO
-//==== ONLOAD_DELAY 60
-
-setup({timeout: 120000});
-
-var t = async_test(document.title, {timeout: 120000}), successCallback, date = new Date(), startTime = date.getTime(), endTime = date.setDate(date.getDate() + 1),
- query = {
- startTime: startTime/1000,
- endTime: endTime/1000,
- interval: 1440
- };
-
-t.step(function () {
-
- add_result_callback(function () {
- tizen.humanactivitymonitor.stopRecorder("PEDOMETER");
- });
-
- successCallback = t.step_func(function (humanactivitydata) {
- assert_greater_than(humanactivitydata.length, 0, "data is not found");
- check_readonly(humanactivitydata[0], "runStepCount", humanactivitydata[0].runStepCount, "number", humanactivitydata[0].runStepCount + 100);
- t.done();
- });
-
- tizen.humanactivitymonitor.startRecorder("PEDOMETER");
- setTimeout(function(){tizen.humanactivitymonitor.stopRecorder("PEDOMETER");
- retValue = tizen.humanactivitymonitor.readRecorderData("PEDOMETER", query, successCallback);}, 60000);
-
-});
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2016 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:
- Xiaoyan Qian <xy.qian@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityRecorderPedometerData_startTime_attribute</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityRecorderPedometerData_startTime_attribute
-//==== LABEL Check if HumanActivityRecorderPedometerData have startTime attribute with proper type, readonly
-//==== SPEC Tizen Web API:System:HumanActivityMonitor:HumanActivityRecorderPedometerData:startTime A
-//==== SPEC_URL TBD
-//==== PRIORITY P1
-//==== EXECUTION_TYPE manual
-//==== STEP Press run button. Pretend walking with the device.
-//==== EXPECT Pass
-//==== TEST_CRITERIA AE AT ARO
-//==== ONLOAD_DELAY 60
-
-setup({timeout: 90000});
-
-var t = async_test(document.title, {timeout: 90000}), retValue = null, successCallback, date = new Date(), startTime = date.getTime(), endTime = date.setDate(date.getDate() + 1),
- query = {
- startTime: startTime/1000,
- endTime: endTime/1000,
- interval: 1440
- };
-
-t.step(function () {
-
- add_result_callback(function () {
- tizen.humanactivitymonitor.stopRecorder("PEDOMETER");
- });
-
- successCallback = t.step_func(function (humanactivitydata) {
- assert_greater_than(humanactivitydata.length, 0, "data is not found");
- check_readonly(humanactivitydata[0], "startTime", humanactivitydata[0].startTime, "number", humanactivitydata[0].startTime + 100);
- t.done();
- });
-
- tizen.humanactivitymonitor.startRecorder("PEDOMETER");
- setTimeout(function(){tizen.humanactivitymonitor.stopRecorder("PEDOMETER");
- retValue = tizen.humanactivitymonitor.readRecorderData("PEDOMETER", query, successCallback);}, 60000);
-
-});
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2016 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:
- Xiaoyan Qian <xy.qian@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityRecorderPedometerData_totalStepCount_attribute</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityRecorderPedometerData_totalStepCount_attribute
-//==== LABEL Check if HumanActivityRecorderPedometerData have totalStepCount attribute with proper type, readonly
-//==== SPEC Tizen Web API:System:HumanActivityMonitor:HumanActivityRecorderPedometerData:totalStepCount A
-//==== SPEC_URL TBD
-//==== PRIORITY P1
-//==== EXECUTION_TYPE manual
-//==== STEP Press run button. Pretend walking with the device.
-//==== EXPECT Pass
-//==== TEST_CRITERIA AE AT ARO
-//==== ONLOAD_DELAY 60
-
-setup({timeout: 90000});
-
-var t = async_test(document.title, {timeout: 90000}), retValue = null, successCallback, date = new Date(), startTime = date.getTime(), endTime = date.setDate(date.getDate() + 1),
- query = {
- startTime: startTime/1000,
- endTime: endTime/1000,
- interval: 1440
- };
-
-t.step(function () {
-
- add_result_callback(function () {
- tizen.humanactivitymonitor.stopRecorder("PEDOMETER");
- });
-
- successCallback = t.step_func(function (humanactivitydata) {
- assert_greater_than(humanactivitydata.length, 0, "data is not found");
- check_readonly(humanactivitydata[0], "totalStepCount", humanactivitydata[0].totalStepCount, "number", humanactivitydata[0].totalStepCount + 100);
- t.done();
- });
-
- tizen.humanactivitymonitor.startRecorder("PEDOMETER");
- setTimeout(function(){tizen.humanactivitymonitor.stopRecorder("PEDOMETER");
- retValue = tizen.humanactivitymonitor.readRecorderData("PEDOMETER", query, successCallback);}, 60000);
-
-});
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2016 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:
- Xiaoyan Qian <xy.qian@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityRecorderPedometerData_walkStepCount_attribute</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityRecorderPedometerData_walkStepCount_attribute
-//==== LABEL Check if HumanActivityRecorderPedometerData have walkStepCount attribute with proper type, readonly
-//==== SPEC Tizen Web API:System:HumanActivityMonitor:HumanActivityRecorderPedometerData:walkStepCount A
-//==== SPEC_URL TBD
-//==== PRIORITY P1
-//==== EXECUTION_TYPE manual
-//==== STEP Press run button. Pretend walking with the device.
-//==== EXPECT Pass
-//==== TEST_CRITERIA AE AT ARO
-//==== ONLOAD_DELAY 60
-
-setup({timeout: 90000});
-
-var t = async_test(document.title, {timeout: 90000}), retValue = null, successCallback, date = new Date(), startTime = date.getTime(), endTime = date.setDate(date.getDate() + 1),
- query = {
- startTime: startTime/1000,
- endTime: endTime/1000,
- interval: 1440
- };
-
-t.step(function () {
-
- add_result_callback(function () {
- tizen.humanactivitymonitor.stopRecorder("PEDOMETER");
- });
-
- successCallback = t.step_func(function (humanactivitydata) {
- assert_greater_than(humanactivitydata.length, 0, "data is not found");
- check_readonly(humanactivitydata[0], "walkStepCount", humanactivitydata[0].walkStepCount, "number", humanactivitydata[0].walkStepCount + 100);
- t.done();
- });
-
- tizen.humanactivitymonitor.startRecorder("PEDOMETER");
- setTimeout(function(){tizen.humanactivitymonitor.stopRecorder("PEDOMETER");
- retValue = tizen.humanactivitymonitor.readRecorderData("PEDOMETER", query, successCallback);}, 60000);
-
-});
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2016 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:
- Xiaoyan Qian <xy.qian@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityRecorderPressureData_average_attribute</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityRecorderPressureData_average_attribute
-//==== LABEL Check if HumanActivityRecorderPressureData have average attribute with proper type, readonly
-//==== SPEC Tizen Web API:System:HumanActivityMonitor:HumanActivityRecorderPressureData:average A
-//==== SPEC_URL TBD
-//==== PRIORITY P1
-//==== TEST_CRITERIA AE AT ARO
-
-setup({timeout: 70000});
-
-var t = async_test(document.title, {timeout: 70000}), successCallback, date = new Date(), endTime = date.getTime(), startTime = date.setDate(date.getDate() - 1),
- query = {
- startTime: startTime/1000,
- endTime: endTime/1000,
- interval: 1440
- };
-
-t.step(function () {
-
- successCallback = t.step_func(function (humanactivitydata) {
- assert_greater_than(humanactivitydata.length, 0, "data is not found");
- check_readonly(humanactivitydata[0], "average", humanactivitydata[0].average, "number", humanactivitydata[0].average + 1);
- t.done();
- });
-
- tizen.humanactivitymonitor.readRecorderData("PRESSURE", query, successCallback);
-
-});
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2016 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:
- Xiaoyan Qian <xy.qian@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityRecorderPressureData_endTime_attribute</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityRecorderPressureData_endTime_attribute
-//==== LABEL Check if HumanActivityRecorderPressureData have endTime attribute with proper type, readonly
-//==== SPEC Tizen Web API:System:HumanActivityMonitor:HumanActivityRecorderPressureData:endTime A
-//==== SPEC_URL TBD
-//==== PRIORITY P1
-//==== TEST_CRITERIA AE AT ARO
-
-setup({timeout: 70000});
-
-var t = async_test(document.title, {timeout: 70000}), successCallback, date = new Date(), endTime = date.getTime(), startTime = date.setDate(date.getDate() - 1),
- query = {
- startTime: startTime/1000,
- endTime: endTime/1000,
- interval: 1440
- };
-
-t.step(function () {
-
- successCallback = t.step_func(function (humanactivitydata) {
- assert_greater_than(humanactivitydata.length, 0, "data is not found");
- check_readonly(humanactivitydata[0], "endTime", humanactivitydata[0].endTime, "number", humanactivitydata[0].endTime + 100);
- t.done();
- });
-
- tizen.humanactivitymonitor.readRecorderData("PRESSURE", query, successCallback);
-
-});
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2016 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:
- Xiaoyan Qian <xy.qian@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityRecorderPressureData_max_attribute</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityRecorderPressureData_max_attribute
-//==== LABEL Check if HumanActivityRecorderPressureData have max attribute with proper type, readonly
-//==== SPEC Tizen Web API:System:HumanActivityMonitor:HumanActivityRecorderPressureData:max A
-//==== SPEC_URL TBD
-//==== PRIORITY P1
-//==== TEST_CRITERIA AE AT ARO
-
-setup({timeout: 70000});
-
-var t = async_test(document.title, {timeout: 70000}), successCallback, date = new Date(), endTime = date.getTime(), startTime = date.setDate(date.getDate() - 1),
- query = {
- startTime: startTime/1000,
- endTime: endTime/1000,
- interval: 1440
- };
-
-t.step(function () {
-
- successCallback = t.step_func(function (humanactivitydata) {
- assert_greater_than(humanactivitydata.length, 0, "data is not found");
- check_readonly(humanactivitydata[0], "max", humanactivitydata[0].max, "number", humanactivitydata[0].max + 1);
- t.done();
- });
-
- tizen.humanactivitymonitor.readRecorderData("PRESSURE", query, successCallback);
-
-});
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2016 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:
- Xiaoyan Qian <xy.qian@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityRecorderPressureData_min_attribute</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityRecorderPressureData_min_attribute
-//==== LABEL Check if HumanActivityRecorderPressureData have min attribute with proper type, readonly
-//==== SPEC Tizen Web API:System:HumanActivityMonitor:HumanActivityRecorderPressureData:min A
-//==== SPEC_URL TBD
-//==== PRIORITY P1
-//==== TEST_CRITERIA AE AT ARO
-
-setup({timeout: 70000});
-
-var t = async_test(document.title, {timeout: 70000}), successCallback, date = new Date(), endTime = date.getTime(), startTime = date.setDate(date.getDate() - 1),
- query = {
- startTime: startTime/1000,
- endTime: endTime/1000,
- interval: 1440
- };
-
-t.step(function () {
-
- successCallback = t.step_func(function (humanactivitydata) {
- assert_greater_than(humanactivitydata.length, 0, "data is not found");
- check_readonly(humanactivitydata[0], "min", humanactivitydata[0].min, "number", humanactivitydata[0].min + 1);
- t.done();
- });
-
- tizen.humanactivitymonitor.readRecorderData("PRESSURE", query, successCallback);
-
-});
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2016 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:
- Xiaoyan Qian <xy.qian@samsung.com>
-
--->
-
-<html>
-<head>
-<title>HumanActivityRecorderPressureData_notexist</title>
-<script src="support/unitcommon.js"></script>
-</head>
-
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityRecorderPressureData_notexist
-//==== LABEL Check if HumanActivityRecorderPressureData cannot be called in new expression and as a function or in new expression
-//==== PRIORITY P3
-//==== SPEC Tizen Web API:System:HumanActivityMonitor:HumanActivityRecorderPressureData:HumanActivityRecorderPressureData U
-//==== SPEC_URL TBD
-//==== TEST_CRITERIA NIO
-
-test(function () {
- check_no_interface_object("HumanActivityRecorderPressureData");
-}, document.title);
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2016 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:
- Xiaoyan Qian <xy.qian@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityRecorderPressureData_startTime_attribute</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityRecorderPressureData_startTime_attribute
-//==== LABEL Check if HumanActivityRecorderPressureData have startTime attribute with proper type, readonly
-//==== SPEC Tizen Web API:System:HumanActivityMonitor:HumanActivityRecorderPressureData:startTime A
-//==== SPEC_URL TBD
-//==== PRIORITY P1
-//==== TEST_CRITERIA AE AT ARO
-
-setup({timeout: 70000});
-
-var t = async_test(document.title, {timeout: 70000}), successCallback, date = new Date(), endTime = date.getTime(), startTime = date.setDate(date.getDate() - 1),
- query = {
- startTime: startTime/1000,
- endTime: endTime/1000,
- interval: 1440
- };
-
-t.step(function () {
-
- successCallback = t.step_func(function (humanactivitydata) {
- assert_greater_than(humanactivitydata.length, 0, "data is not found");
- check_readonly(humanactivitydata[0], "startTime", humanactivitydata[0].startTime, "number", humanactivitydata[0].startTime + 100);
- t.done();
- });
-
- tizen.humanactivitymonitor.readRecorderData("PRESSURE", query, successCallback);
-
-});
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2016 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:
- Xiaoyan Qian <xy.qian@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityRecorderSleepMonitorData_endTime_attribute</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityRecorderSleepMonitorData_endTime_attribute
-//==== LABEL Check if HumanActivityRecorderSleepMonitorData have endTime attribute with proper type, readonly
-//==== SPEC Tizen Web API:System:HumanActivityMonitor:HumanActivityRecorderSleepMonitorData:endTime A
-//==== SPEC_URL TBD
-//==== PRIORITY P1
-//==== TEST_CRITERIA AE AT ARO
-
-setup({timeout: 30000});
-
-var t = async_test(document.title, {timeout: 30000}), successCallback, date = new Date(), endTime = date.getTime(), startTime = date.setDate(date.getDate() - 1),
- query = {
- startTime: startTime/1000,
- endTime: endTime/1000,
- interval: 1440
- };
-
-t.step(function () {
-
- add_result_callback(function () {
- tizen.humanactivitymonitor.stopRecorder("SLEEP_MONITOR");
- });
-
- successCallback = t.step_func(function (humanactivitydata) {
- assert_greater_than(humanactivitydata.length, 0, "data is not found");
- check_readonly(humanactivitydata[0], "endTime", humanactivitydata[0].endTime, "number", humanactivitydata[0].endTime + 100);
- t.done();
- });
-
- tizen.humanactivitymonitor.startRecorder("SLEEP_MONITOR");
- setTimeout(function(){tizen.humanactivitymonitor.stopRecorder("SLEEP_MONITOR");}, 100);
- tizen.humanactivitymonitor.readRecorderData("SLEEP_MONITOR", query, successCallback);
-
-});
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2016 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:
- Xiaoyan Qian <xy.qian@samsung.com>
-
--->
-
-<html>
-<head>
-<title>HumanActivityRecorderSleepMonitorData_notexist</title>
-<script src="support/unitcommon.js"></script>
-</head>
-
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityRecorderSleepMonitorData_notexist
-//==== LABEL Check if HumanActivityRecorderSleepMonitorData cannot be called in new expression and as a function or in new expression
-//==== PRIORITY P3
-//==== SPEC Tizen Web API:System:HumanActivityMonitor:HumanActivityRecorderSleepMonitorData:HumanActivityRecorderSleepMonitorData U
-//==== SPEC_URL TBD
-//==== TEST_CRITERIA NIO
-
-test(function () {
- check_no_interface_object("HumanActivityRecorderSleepMonitorData");
-}, document.title);
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2016 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:
- Xiaoyan Qian <xy.qian@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityRecorderSleepMonitorData_startTime_attribute</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityRecorderSleepMonitorData_startTime_attribute
-//==== LABEL Check if HumanActivityRecorderSleepMonitorData have startTime attribute with proper type, readonly
-//==== SPEC Tizen Web API:System:HumanActivityMonitor:HumanActivityRecorderSleepMonitorData:startTime A
-//==== SPEC_URL TBD
-//==== PRIORITY P1
-//==== TEST_CRITERIA AE AT ARO
-
-setup({timeout: 30000});
-
-var t = async_test(document.title, {timeout: 30000}), successCallback, date = new Date(), endTime = date.getTime(), startTime = date.setDate(date.getDate() - 1),
- query = {
- startTime: startTime/1000,
- endTime: endTime/1000,
- interval: 1440
- };
-
-t.step(function () {
-
- add_result_callback(function () {
- tizen.humanactivitymonitor.stopRecorder("SLEEP_MONITOR");
- });
-
- successCallback = t.step_func(function (humanactivitydata) {
- assert_greater_than(humanactivitydata.length, 0, "data is not found");
- check_readonly(humanactivitydata[0], "startTime", humanactivitydata[0].startTime, "number", humanactivitydata[0].startTime + 100);
- t.done();
- });
-
- tizen.humanactivitymonitor.startRecorder("SLEEP_MONITOR");
- setTimeout(function(){tizen.humanactivitymonitor.stopRecorder("SLEEP_MONITOR");}, 100);
- tizen.humanactivitymonitor.readRecorderData("SLEEP_MONITOR", query, successCallback);
-
-});
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2016 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:
- Xiaoyan Qian <xy.qian@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityRecorderSleepMonitorData_status_attribute</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityRecorderSleepMonitorData_status_attribute
-//==== LABEL Check if HumanActivityRecorderSleepMonitorData have status attribute with proper type, readonly
-//==== SPEC Tizen Web API:System:HumanActivityMonitor:HumanActivityRecorderSleepMonitorData:status A
-//==== SPEC_URL TBD
-//==== PRIORITY P1
-//==== TEST_CRITERIA AE AT ARO AVL
-
-setup({timeout: 30000});
-
-var t = async_test(document.title, {timeout: 30000}), successCallback, date = new Date(), endTime = date.getTime(), startTime = date.setDate(date.getDate() - 1),
- query = {
- startTime: startTime/1000,
- endTime: endTime/1000,
- interval: 1440
- };
-
-t.step(function () {
-
- add_result_callback(function () {
- tizen.humanactivitymonitor.stopRecorder("SLEEP_MONITOR");
- });
-
- successCallback = t.step_func(function (humanactivitydata) {
- assert_greater_than(humanactivitydata.length, 0, "data is not found");
- check_readonly(humanactivitydata[0], "status", humanactivitydata[0].status, "string", null);
- assert_in_array(humanactivitydata[0].status, ["ASLEEP", "AWAKE", "UNKNOWN"], "Incorrect value of status");
- t.done();
- });
-
- tizen.humanactivitymonitor.startRecorder("SLEEP_MONITOR");
- setTimeout(function(){tizen.humanactivitymonitor.stopRecorder("SLEEP_MONITOR");}, 100);
- tizen.humanactivitymonitor.readRecorderData("SLEEP_MONITOR", query, successCallback);
-
-});
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2014 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:
- Wei Zhang <wei625.zhang@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivitySleepMonitorData_notexist</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivitySleepMonitorData_notexist
-//==== LABEL Check if interface HumanActivitySleepMonitorData exists, it should not
-//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivitySleepMonitorData:HumanActivitySleepMonitorData U
-//==== SPEC_URL TBD
-//==== PRIORITY P3
-//==== TEST_CRITERIA NIO
-
-test(function () {
- check_no_interface_object("HumanActivitySleepMonitorData");
-}, document.title);
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2016 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:
- Wei Zhang <wei625.zhang@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivitySleepMonitorData_status_attribute</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivitySleepMonitorData_status_attribute
-//==== LABEL Check if HumanActivitySleepMonitorData::status exists and is readonly
-//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivitySleepMonitorData:status A
-//==== SPEC_URL TBD
-//==== PRIORITY P1
-//==== ONLOAD_DELAY 9
-//==== TEST_CRITERIA AE AT ARO
-
-setup({timeout: 9000});
-
-var t = async_test(document.title, {timeout: 9000}), getHumanActivityDataSuccess, getHumanActivityDataError, humanActivityType = "SLEEP_MONITOR";
-
-t.step(function () {
- add_result_callback(function () {
- tizen.humanactivitymonitor.stop(humanActivityType);
- });
-
- getHumanActivityDataError = t.step_func(function (error) {
- assert_unreached("getHumanActivityDataError is called" + error.name);
- });
-
- getHumanActivityDataSuccess = t.step_func(function (slpInfo) {
- check_readonly(slpInfo, "status", slpInfo.status, "string", "UNKNOWN");
- t.done();
- });
-
- tizen.humanactivitymonitor.start(humanActivityType);
- tizen.humanactivitymonitor.getHumanActivityData(humanActivityType, getHumanActivityDataSuccess, getHumanActivityDataError);
-});
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2016 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:
- Wei Zhang <wei625.zhang@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivitySleepMonitorData_timestamp_attribute</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivitySleepMonitorData_timestamp_attribute
-//==== LABEL Check if HumanActivitySleepMonitorData::timestamp exists, has type long, and is readonly
-//==== SPEC Tizen Web API:TBD:HumanActivityMonitor:HumanActivitySleepMonitorData:timestamp A
-//==== SPEC_URL TBD
-//==== PRIORITY P1
-//==== TEST_CRITERIA AE AT ARO
-
-setup({timeout: 9000});
-
-var t = async_test(document.title, {timeout: 9000}), getHumanActivityDataSuccess, getHumanActivityDataError, humanActivityType = "SLEEP_MONITOR";
-
-t.step(function () {
- add_result_callback(function () {
- tizen.humanactivitymonitor.stop(humanActivityType);
- });
-
- getHumanActivityDataError = t.step_func(function (error) {
- assert_unreached("getHumanActivityDataError is called" + error.name);
- });
-
- getHumanActivityDataSuccess = t.step_func(function (slpInfo) {
- check_readonly(slpInfo, "timestamp", slpInfo.timestamp, "long", slpInfo.timestamp + 10);
- t.done();
- });
-
- tizen.humanactivitymonitor.start(humanActivityType);
- tizen.humanactivitymonitor.getHumanActivityData(humanActivityType, getHumanActivityDataSuccess, getHumanActivityDataError);
-});
-
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-179 path=wearable/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_getHumanActivityData_HumanActivityMonitorSuccessCallback_TypeMismatch.html
-27 atime=1402486842.502028
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2014 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:
- Wei Zhang <wei625.zhang@samsung.com>
-
--->
-<html>
-<head>
-<title>StepDifference_notexist</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: StepDifference_notexist
-//==== LABEL Check if interface StepDifference exists, it should not
-//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:StepDifference:StepDifference U
-//==== SPEC_URL TBD
-//==== PRIORITY P3
-//==== TEST_CRITERIA NIO
-
-test(function () {
- check_no_interface_object("StepDifference");
-}, document.title);
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-/*
-
-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:
- Wei Zhang <wei625.zhang@samsung.com>
-
-*/
-
-SERVICE_NOT_AVAILABLE_ERR = "ServiceNotAvailableError";
-NOT_SUPPORTED_EXCEPTION = "NotSupportedError";
-
-var PEDOMETER_STEP_STATUS = [
- "NOT_MOVING", "WALKING", "RUNNING", "UNKNOWN"
-];
-
-function check_human_activity_pedometer_data(human_activity_data) {
- check_readonly(human_activity_data, "stepStatus", human_activity_data.stepStatus, "string", "dummyValue");
- assert_in_array(human_activity_data.stepStatus, PEDOMETER_STEP_STATUS, "stepStatus has wrong enum value");
- check_readonly(human_activity_data, "speed", human_activity_data.speed, "double", 0.1);
- check_readonly(human_activity_data, "walkingFrequency", human_activity_data.walkingFrequency, "double", 0.1);
- check_readonly(human_activity_data, "cumulativeDistance", human_activity_data.cumulativeDistance, "double", 0.1);
- check_readonly(human_activity_data, "cumulativeCalorie", human_activity_data.cumulativeCalorie, "double", 0.1);
- check_readonly(human_activity_data, "cumulativeTotalStepCount", human_activity_data.cumulativeTotalStepCount, "double", 0.1);
- check_readonly(human_activity_data, "cumulativeWalkStepCount", human_activity_data.cumulativeWalkStepCount, "double", 0.1);
- check_readonly(human_activity_data, "cumulativeRunStepCount", human_activity_data.cumulativeRunStepCount, "double", 0.1);
-}
-
-function check_err_name() {
-}
+++ /dev/null
-/*
-
-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'};
-NOT_SUPPORTED_EXCEPTION = {name: 'NotSupportedError'};
-
-(function () {
- var head_src = document.head.innerHTML;
- if (head_src.search(/\/testharness.js\W/) === -1) {
- document.write('<script language="javascript" src="../resources/testharness.js"></script>\n');
- }
- if (head_src.search(/\/testharnessreport.js\W/) === -1) {
- document.write('<script language="javascript" src="../resources/testharnessreport.js"></script>\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],
- [0, exceptionName],
- [true, exceptionName],
- ["dummyInvalidEnumValue", exceptionName],
- [{ }, exceptionName]
- ];
- if (!isOptional) {
- conversionTable.push([null, 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;
- case 'double':
- assert_equals(typeof (obj), 'number', description);
- 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;
-}
+++ /dev/null
-#!/usr/bin/env python
-
-import os
-import shutil
-import glob
-import time
-import sys
-import subprocess
-from optparse import OptionParser, make_option\r
-import ConfigParser
-
-
-SCRIPT_DIR = os.path.dirname(os.path.abspath(__file__))
-PARAMETERS = None
-ADB_CMD = "adb"
-
-
-def doCMD(cmd):
- # Do not need handle timeout in this short script, let tool do it
- print "-->> \"%s\"" % cmd
- output = []
- cmd_return_code = 1
- cmd_proc = subprocess.Popen(
- cmd, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, shell=True)
-
- while True:
- output_line = cmd_proc.stdout.readline().strip("\r\n")
- cmd_return_code = cmd_proc.poll()
- if output_line == '' and cmd_return_code != None:
- break
- sys.stdout.write("%s\n" % output_line)
- sys.stdout.flush()
- output.append(output_line)
-
- return (cmd_return_code, output)
-
-
-def uninstPKGs():
- action_status = True
- for root, dirs, files in os.walk(SCRIPT_DIR):
- for file in files:
- if file.endswith(".apk"):
- cmd = "%s -s %s uninstall org.xwalk.%s" % (
- ADB_CMD, PARAMETERS.device, os.path.basename(os.path.splitext(file)[0]))
- (return_code, output) = doCMD(cmd)
- for line in output:
- if "Failure" in line:
- action_status = False
- break
- return action_status
-
-
-def instPKGs():
- action_status = True
- for root, dirs, files in os.walk(SCRIPT_DIR):
- for file in files:
- if file.endswith(".apk"):
- cmd = "%s -s %s install %s" % (ADB_CMD,
- PARAMETERS.device, os.path.join(root, file))
- (return_code, output) = doCMD(cmd)
- for line in output:
- if "Failure" in line:
- action_status = False
- break
- return action_status
-
-
-def main():
- try:
- usage = "usage: inst.py -i"
- opts_parser = OptionParser(usage=usage)
- opts_parser.add_option(
- "-s", dest="device", action="store", help="Specify device")
- opts_parser.add_option(
- "-i", dest="binstpkg", action="store_true", help="Install package")
- opts_parser.add_option(
- "-u", dest="buninstpkg", action="store_true", help="Uninstall package")
- global PARAMETERS
- (PARAMETERS, args) = opts_parser.parse_args()
- except Exception, e:
- print "Got wrong option: %s, exit ..." % e
- sys.exit(1)
-
- if not PARAMETERS.device:
- (return_code, output) = doCMD("adb devices")
- for line in output:
- if str.find(line, "\tdevice") != -1:
- PARAMETERS.device = line.split("\t")[0]
- break
-
- if not PARAMETERS.device:
- print "No device found"
- sys.exit(1)
-
- if PARAMETERS.binstpkg and PARAMETERS.buninstpkg:
- print "-i and -u are conflict"
- sys.exit(1)
-
- if PARAMETERS.buninstpkg:
- if not uninstPKGs():
- sys.exit(1)
- else:
- if not instPKGs():
- sys.exit(1)
-
-if __name__ == "__main__":
- main()
- sys.exit(0)
+++ /dev/null
-#!/usr/bin/env python
-
-import os
-import shutil
-import glob
-import time
-import sys
-import subprocess
-import string
-from optparse import OptionParser, make_option\r
-import ConfigParser
-
-
-SCRIPT_DIR = os.path.dirname(os.path.abspath(__file__))
-PKG_NAME = os.path.basename(SCRIPT_DIR)
-PARAMETERS = None
-#XW_ENV = "export DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/5000/dbus/user_bus_socket"
-TCT_CONFIG_FILE = "/opt/tools/TCT_CONFIG"
-tct_parser = ConfigParser.ConfigParser()
-tct_parser.read(TCT_CONFIG_FILE)
-SRC_DIR = tct_parser.get('DEVICE', 'DEVICE_SUITE_TARGET_30')
-PKG_SRC_DIR = "%s/tct/opt/%s" % (SRC_DIR, PKG_NAME)
-EXECUTION_MODE_30 = tct_parser.get('DEVICE', 'DEVICE_EXECUTION_MODE_30')
-ADMIN_USER_30 = tct_parser.get('DEVICE', 'DEVICE_ADMIN_USER_30')
-
-def userCheck():
- global GLOVAL_OPT
- if ADMIN_USER_30 == EXECUTION_MODE_30:
- GLOVAL_OPT="--global"
- else:
- GLOVAL_OPT=""
-
-
-def askpolicyremoving():
- for root, dirs, files in os.walk(SCRIPT_DIR):
- for file in files:
- if file.endswith(".wgt"):
- pkg_id = getPKGID(os.path.basename(os.path.splitext(file)[0]))
-
- print pkg_id
- print (os.getcwd())
- print (os.path.dirname(os.path.realpath(__file__)) )
- if not doRemoteCopy("%s/askpolicy.sh" % SCRIPT_DIR, "%s" % (SRC_DIR)):
- action_status = False
- if PARAMETERS.mode == "SDB":
- cmd = "sdb -s %s shell .%s/askpolicy.sh %s" % (PARAMETERS.device,
- SRC_DIR, pkg_id)
- return doCMD(cmd)
-
-def doCMD(cmd):
- # Do not need handle timeout in this short script, let tool do it
- print "-->> \"%s\"" % cmd
- output = []
- cmd_return_code = 1
- cmd_proc = subprocess.Popen(
- cmd, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, shell=True)
-
- while True:
- output_line = cmd_proc.stdout.readline().strip("\r\n")
- cmd_return_code = cmd_proc.poll()
- if output_line == '' and cmd_return_code != None:
- break
- sys.stdout.write("%s\n" % output_line)
- sys.stdout.flush()
- output.append(output_line)
-
- return (cmd_return_code, output)
-
-
-def updateCMD(cmd=None):
- if "pkgcmd" in cmd:
- cmd = "su - %s -c '%s;%s'" % (PARAMETERS.user, XW_ENV, cmd)
- return cmd
-def getUSERID():
- if PARAMETERS.mode == "SDB":
- cmd = "sdb -s %s shell id -u %s" % (
- PARAMETERS.device, PARAMETERS.user)
- else:
- cmd = "ssh %s \"id -u %s\"" % (
- PARAMETERS.device, PARAMETERS.user )
- return doCMD(cmd)
-
-
-
-
-def getPKGID(pkg_name=None):
- if PARAMETERS.mode == "SDB":
- cmd = "sdb -s %s shell %s" % (
- PARAMETERS.device, updateCMD('pkgcmd -l'))
- else:
- cmd = "ssh %s \"%s\"" % (
- PARAMETERS.device, updateCMD('pkgcmd -l'))
-
- (return_code, output) = doCMD(cmd)
- if return_code != 0:
- return None
-
- test_pkg_id = None
- for line in output:
- if line.find("[" + pkg_name + "]") != -1:
- pkgidIndex = line.split().index("pkgid")
- test_pkg_id = line.split()[pkgidIndex+1].strip("[]")
- break
- return test_pkg_id
-
-
-def doRemoteCMD(cmd=None):
- if PARAMETERS.mode == "SDB":
- cmd = "sdb -s %s shell %s" % (PARAMETERS.device, updateCMD(cmd))
- else:
- cmd = "ssh %s \"%s\"" % (PARAMETERS.device, updateCMD(cmd))
-
- return doCMD(cmd)
-
-
-def doRemoteCopy(src=None, dest=None):
- if PARAMETERS.mode == "SDB":
- cmd_prefix = "sdb -s %s push" % PARAMETERS.device
- cmd = "%s %s %s" % (cmd_prefix, src, dest)
- else:
- cmd = "scp -r %s %s:/%s" % (src, PARAMETERS.device, dest)
-
- (return_code, output) = doCMD(cmd)
- doRemoteCMD("sync")
-
- if return_code != 0:
- return True
- else:
- return False
-
-
-def uninstPKGs():
- action_status = True
- for root, dirs, files in os.walk(SCRIPT_DIR):
- if root.endswith("mediasrc"):
- continue
-
- for file in files:
- if file.endswith(".wgt"):
- pkg_id = getPKGID(os.path.basename(os.path.splitext(file)[0]))
- if not pkg_id:
- action_status = False
- continue
- (return_code, output) = doRemoteCMD(
- "pkgcmd %s -u -t wgt -q -n %s" % (GLOVAL_OPT, pkg_id))
- for line in output:
- if "Failure" in line:
- action_status = False
- break
-
- (return_code, output) = doRemoteCMD(
- "rm -rf %s" % PKG_SRC_DIR)
- if return_code != 0:
- action_status = False
-
- return action_status
-
-
-def instPKGs():
- action_status = True
- (return_code, output) = doRemoteCMD(
- "mkdir -p %s" % PKG_SRC_DIR)
- if return_code != 0:
- action_status = False
- for root, dirs, files in os.walk(SCRIPT_DIR):
- if root.endswith("mediasrc"):
- continue
-
- for file in files:
- if file.endswith(".wgt"):
- if not doRemoteCopy(os.path.join(root, file), "%s/%s" % (SRC_DIR, file)):
- action_status = False
- (return_code, output) = doRemoteCMD(
- "pkgcmd %s -i -t wgt -q -p %s/%s" % (GLOVAL_OPT, SRC_DIR, file))
- doRemoteCMD("rm -rf %s/%s" % (SRC_DIR, file))
- for line in output:
- if "Failure" in line:
- action_status = False
- break
-
- # Do some special copy/delete... steps
- '''
- (return_code, output) = doRemoteCMD(
- "mkdir -p %s/tests" % PKG_SRC_DIR)
- if return_code != 0:
- action_status = False
-
- if not doRemoteCopy("specname/tests", "%s/tests" % PKG_SRC_DIR):
- action_status = False
- '''
-
- return action_status
-
-
-def main():
- try:
- usage = "usage: inst.py -i"
- opts_parser = OptionParser(usage=usage)
- opts_parser.add_option(
- "-m", dest="mode", action="store", help="Specify mode")
- opts_parser.add_option(
- "-s", dest="device", action="store", help="Specify device")
- opts_parser.add_option(
- "-i", dest="binstpkg", action="store_true", help="Install package")
- opts_parser.add_option(
- "-u", dest="buninstpkg", action="store_true", help="Uninstall package")
- opts_parser.add_option(
- "-a", dest="user", action="store", help="User name")
- global PARAMETERS
- (PARAMETERS, args) = opts_parser.parse_args()
- except Exception, e:
- print "Got wrong option: %s, exit ..." % e
- sys.exit(1)
-
- if not PARAMETERS.user:
- PARAMETERS.user = EXECUTION_MODE_30
- if not PARAMETERS.mode:
- PARAMETERS.mode = "SDB"
-
- if PARAMETERS.mode == "SDB":
- if not PARAMETERS.device:
- (return_code, output) = doCMD("sdb devices")
- for line in output:
- if str.find(line, "\tdevice") != -1:
- PARAMETERS.device = line.split("\t")[0]
- break
- else:
- PARAMETERS.mode = "SSH"
-
- if not PARAMETERS.device:
- print "No device provided"
- sys.exit(1)
-
- userCheck()
-
- user_info = getUSERID()
- re_code = user_info[0]
- if re_code == 0 :
- global XW_ENV
- userid = user_info[1][0]
- XW_ENV = "export DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/%s/dbus/user_bus_socket"%str(userid)
- else:
- print "[Error] cmd commands error : %s"%str(user_info[1])
- sys.exit(1)
- if PARAMETERS.binstpkg and PARAMETERS.buninstpkg:
- print "-i and -u are conflict"
- sys.exit(1)
-
- if PARAMETERS.buninstpkg:
- if not uninstPKGs():
- sys.exit(1)
- else:
- if not instPKGs():
- #askpolicyremoving()
- sys.exit(1)
-
-if __name__ == "__main__":
- main()
- sys.exit(0)
+++ /dev/null
-#!/usr/bin/env python
-
-import os
-import shutil
-import glob
-import time
-import sys
-import subprocess
-import string
-from optparse import OptionParser, make_option\r
-import ConfigParser
-
-
-SCRIPT_DIR = os.path.dirname(os.path.abspath(__file__))
-PKG_NAME = os.path.basename(SCRIPT_DIR)
-PARAMETERS = None
-#XW_ENV = "export DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/5000/dbus/user_bus_socket"
-TCT_CONFIG_FILE = "/opt/tools/TCT_CONFIG"
-tct_parser = ConfigParser.ConfigParser()
-tct_parser.read(TCT_CONFIG_FILE)
-SRC_DIR = tct_parser.get('DEVICE', 'DEVICE_SUITE_TARGET_30')
-PKG_SRC_DIR = "%s/tct/opt/%s" % (SRC_DIR, PKG_NAME)
-
-
-def doCMD(cmd):
- # Do not need handle timeout in this short script, let tool do it
- print "-->> \"%s\"" % cmd
- output = []
- cmd_return_code = 1
- cmd_proc = subprocess.Popen(
- cmd, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, shell=True)
-
- while True:
- output_line = cmd_proc.stdout.readline().strip("\r\n")
- cmd_return_code = cmd_proc.poll()
- if output_line == '' and cmd_return_code != None:
- break
- sys.stdout.write("%s\n" % output_line)
- sys.stdout.flush()
- output.append(output_line)
-
- return (cmd_return_code, output)
-
-
-def updateCMD(cmd=None):
- if "pkgcmd" in cmd:
- cmd = "su - %s -c '%s;%s'" % (PARAMETERS.user, XW_ENV, cmd)
- return cmd
-def getUSERID():
- if PARAMETERS.mode == "SDB":
- cmd = "sdb -s %s shell id -u %s" % (
- PARAMETERS.device, PARAMETERS.user)
- else:
- cmd = "ssh %s \"id -u %s\"" % (
- PARAMETERS.device, PARAMETERS.user )
- return doCMD(cmd)
-
-
-
-
-def getPKGID(pkg_name=None):
- if PARAMETERS.mode == "SDB":
- cmd = "sdb -s %s shell %s" % (
- PARAMETERS.device, updateCMD('pkgcmd -l'))
- else:
- cmd = "ssh %s \"%s\"" % (
- PARAMETERS.device, updateCMD('pkgcmd -l'))
-
- (return_code, output) = doCMD(cmd)
- if return_code != 0:
- return None
-
- test_pkg_id = None
- for line in output:
- if line.find("[" + pkg_name + "]") != -1:
- pkgidIndex = line.split().index("pkgid")
- test_pkg_id = line.split()[pkgidIndex+1].strip("[]")
- break
- return test_pkg_id
-
-
-def doRemoteCMD(cmd=None):
- if PARAMETERS.mode == "SDB":
- cmd = "sdb -s %s shell %s" % (PARAMETERS.device, updateCMD(cmd))
- else:
- cmd = "ssh %s \"%s\"" % (PARAMETERS.device, updateCMD(cmd))
-
- return doCMD(cmd)
-
-
-def doRemoteCopy(src=None, dest=None):
- if PARAMETERS.mode == "SDB":
- cmd_prefix = "sdb -s %s push" % PARAMETERS.device
- cmd = "%s %s %s" % (cmd_prefix, src, dest)
- else:
- cmd = "scp -r %s %s:/%s" % (src, PARAMETERS.device, dest)
-
- (return_code, output) = doCMD(cmd)
- doRemoteCMD("sync")
-
- if return_code != 0:
- return True
- else:
- return False
-
-
-def uninstPKGs():
- action_status = True
- for root, dirs, files in os.walk(SCRIPT_DIR):
- if root.endswith("mediasrc"):
- continue
-
- for file in files:
- if file.endswith(".xpk"):
- pkg_id = getPKGID(os.path.basename(os.path.splitext(file)[0]))
- if not pkg_id:
- action_status = False
- continue
- (return_code, output) = doRemoteCMD(
- "pkgcmd -u -t xpk -q -n %s" % pkg_id)
- for line in output:
- if "Failure" in line:
- action_status = False
- break
-
- (return_code, output) = doRemoteCMD(
- "rm -rf %s" % PKG_SRC_DIR)
- if return_code != 0:
- action_status = False
-
- return action_status
-
-
-def instPKGs():
- action_status = True
- (return_code, output) = doRemoteCMD(
- "mkdir -p %s" % PKG_SRC_DIR)
- if return_code != 0:
- action_status = False
- for root, dirs, files in os.walk(SCRIPT_DIR):
- if root.endswith("mediasrc"):
- continue
-
- for file in files:
- if file.endswith(".xpk"):
- if not doRemoteCopy(os.path.join(root, file), "%s/%s" % (SRC_DIR, file)):
- action_status = False
- (return_code, output) = doRemoteCMD(
- "pkgcmd -i -t xpk -q -p %s/%s" % (SRC_DIR, file))
- doRemoteCMD("rm -rf %s/%s" % (SRC_DIR, file))
- for line in output:
- if "Failure" in line:
- action_status = False
- break
-
- # Do some special copy/delete... steps
- '''
- (return_code, output) = doRemoteCMD(
- "mkdir -p %s/tests" % PKG_SRC_DIR)
- if return_code != 0:
- action_status = False
-
- if not doRemoteCopy("specname/tests", "%s/tests" % PKG_SRC_DIR):
- action_status = False
- '''
-
- return action_status
-
-
-def main():
- try:
- usage = "usage: inst.py -i"
- opts_parser = OptionParser(usage=usage)
- opts_parser.add_option(
- "-m", dest="mode", action="store", help="Specify mode")
- opts_parser.add_option(
- "-s", dest="device", action="store", help="Specify device")
- opts_parser.add_option(
- "-i", dest="binstpkg", action="store_true", help="Install package")
- opts_parser.add_option(
- "-u", dest="buninstpkg", action="store_true", help="Uninstall package")
- opts_parser.add_option(
- "-a", dest="user", action="store", help="User name")
- global PARAMETERS
- (PARAMETERS, args) = opts_parser.parse_args()
- except Exception, e:
- print "Got wrong option: %s, exit ..." % e
- sys.exit(1)
-
- if not PARAMETERS.user:
- PARAMETERS.user = "owner"
- if not PARAMETERS.mode:
- PARAMETERS.mode = "SDB"
-
- if PARAMETERS.mode == "SDB":
- if not PARAMETERS.device:
- (return_code, output) = doCMD("sdb devices")
- for line in output:
- if str.find(line, "\tdevice") != -1:
- PARAMETERS.device = line.split("\t")[0]
- break
- else:
- PARAMETERS.mode = "SSH"
-
- if not PARAMETERS.device:
- print "No device provided"
- sys.exit(1)
-
- user_info = getUSERID()
- re_code = user_info[0]
- if re_code == 0 :
- global XW_ENV
- userid = user_info[1][0]
- XW_ENV = "export DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/%s/dbus/user_bus_socket"%str(userid)
- else:
- print "[Error] cmd commands error : %s"%str(user_info[1])
- sys.exit(1)
- if PARAMETERS.binstpkg and PARAMETERS.buninstpkg:
- print "-i and -u are conflict"
- sys.exit(1)
-
- if PARAMETERS.buninstpkg:
- if not uninstPKGs():
- sys.exit(1)
- else:
- if not instPKGs():
- sys.exit(1)
-
-if __name__ == "__main__":
- main()
- sys.exit(0)
+++ /dev/null
-{
- "version": "3.0",
- "name": "tct-humanactivitymonitor-tizen-tests",
- "permissions": ["tabs", "unlimited_storage", "notifications", "http://*/*", "https://*/*"],
- "description": "tct-humanactivitymonitor-tizen-tests",
- "webapimanager": true,
- "file_name": "manifest.json",
- "app": {
- "launch": {
- "local_path": "index.html"
- }
- }
-}
\ No newline at end of file
+++ /dev/null
-#!/usr/bin/env python
-#
-# Copyright (c) 2014 Intel Corporation.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are met:
-#
-# * Redistributions of works must retain the original copyright notice, this
-# list of conditions and the following disclaimer.
-# * Redistributions in binary form must reproduce the original copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution.
-# * Neither the name of Intel Corporation nor the names of its contributors
-# may be used to endorse or promote products derived from this work without
-# specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY INTEL CORPORATION "AS IS"
-# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-# ARE DISCLAIMED. IN NO EVENT SHALL INTEL CORPORATION BE LIABLE FOR ANY DIRECT,
-# INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
-# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
-# OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
-# EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-#
-# Authors:
-# Fan, Yugang <yugang.fan@intel.com>
-
-import os
-import shutil
-import glob
-import time
-import sys
-import stat
-import random
-import json
-import logging
-import zipfile
-import signal
-import subprocess
-from optparse import OptionParser
-
-reload(sys)
-sys.setdefaultencoding('utf8')
-
-TOOL_VERSION = "v0.1"
-VERSION_FILE = "VERSION"
-DEFAULT_CMD_TIMEOUT = 600
-PKG_TYPES = ["apk", "xpk", "wgt", "apk-aio", "cordova-aio", "cordova", "embeddingapi"]
-PKG_MODES = ["shared", "embedded"]
-PKG_ARCHS = ["x86", "arm"]
-PKG_BLACK_LIST = []
-PKG_NAME = None
-BUILD_PARAMETERS = None
-BUILD_ROOT = None
-BUILD_ROOT_SRC = None
-BUILD_ROOT_SRC_PKG = None
-BUILD_ROOT_SRC_PKG_APP = None
-BUILD_ROOT_SRC_SUB_APP = None
-BUILD_ROOT_PKG = None
-BUILD_ROOT_PKG_APP = None
-LOG = None
-LOG_LEVEL = logging.DEBUG
-
-
-class ColorFormatter(logging.Formatter):
-
- def __init__(self, msg):
- logging.Formatter.__init__(self, msg)
-
- def format(self, record):
- red, green, yellow, blue = range(4)
- colors = {'INFO': green, 'DEBUG': blue,
- 'WARNING': yellow, 'ERROR': red}
- msg = record.msg
- if msg[0] == "+":
- msg = "\33[01m" + msg[1:] + "\033[0m"
- elif msg[0] == "=":
- msg = "\33[07m" + msg + "\033[0m"
- levelname = record.levelname
- if levelname in colors:
- msg_color = "\033[0;%dm" % (
- 31 + colors[levelname]) + msg + "\033[0m"
- record.msg = msg_color
-
- return logging.Formatter.format(self, record)
-
-
-def pidExists(pid):
- if pid < 0:
- return False
- try:
- os.kill(pid, 0)
- except OSError:
- return False
- else:
- return True
-
-
-def isWindows():
- return sys.platform == "cygwin" or sys.platform.startswith("win")
-
-
-def killProcesses(ppid=None):
- if isWindows():
- subprocess.check_call("TASKKILL /F /PID %s /T" % ppid)
- else:
- ppid = str(ppid)
- pidgrp = []
-
- def GetChildPids(ppid):
- command = "ps -ef | awk '{if ($3 ==%s) print $2;}'" % str(ppid)
- pids = os.popen(command).read()
- pids = pids.split()
- return pids
-
- pidgrp.extend(GetChildPids(ppid))
- for pid in pidgrp:
- pidgrp.extend(GetChildPids(pid))
-
- pidgrp.insert(0, ppid)
- while len(pidgrp) > 0:
- pid = pidgrp.pop()
- try:
- os.kill(int(pid), signal.SIGKILL)
- return True
- except OSError:
- try:
- os.popen("kill -9 %d" % int(pid))
- return True
- except Exception:
- return False
-
-
-def safelyGetValue(origin_json=None, key=None):
- if origin_json and key and key in origin_json:
- return origin_json[key]
- return None
-
-
-def checkContains(origin_str=None, key_str=None):
- if origin_str.upper().find(key_str.upper()) >= 0:
- return True
- return False
-
-
-def getRandomStr():
- str_pool = list("abcdefghijklmnopqrstuvwxyz1234567890")
- random_str = ""
- for i in range(15):
- index = random.randint(0, len(str_pool) - 1)
- random_str = random_str + str_pool[index]
-
- return random_str
-
-
-def zipDir(dir_path, zip_file):
- try:
- if os.path.exists(zip_file):
- if not doRemove([zip_file]):
- return False
- if not os.path.exists(os.path.dirname(zip_file)):
- os.makedirs(os.path.dirname(zip_file))
- z_file = zipfile.ZipFile(zip_file, "w")
- orig_dir = os.getcwd()
- os.chdir(dir_path)
- for root, dirs, files in os.walk("."):
- for i_file in files:
- LOG.info("zip %s" % os.path.join(root, i_file))
- z_file.write(os.path.join(root, i_file))
- z_file.close()
- os.chdir(orig_dir)
- except Exception as e:
- LOG.error("Fail to pack %s to %s: %s" % (dir_path, zip_file, e))
- return False
- LOG.info("Done to zip %s to %s" % (dir_path, zip_file))
- return True
-
-
-def overwriteCopy(src, dest, symlinks=False, ignore=None):
- if not os.path.exists(dest):
- os.makedirs(dest)
- shutil.copystat(src, dest)
- sub_list = os.listdir(src)
- if ignore:
- excl = ignore(src, sub_list)
- sub_list = [x for x in sub_list if x not in excl]
- for i_sub in sub_list:
- s_path = os.path.join(src, i_sub)
- d_path = os.path.join(dest, i_sub)
- if symlinks and os.path.islink(s_path):
- if os.path.lexists(d_path):
- os.remove(d_path)
- os.symlink(os.readlink(s_path), d_path)
- try:
- s_path_s = os.lstat(s_path)
- s_path_mode = stat.S_IMODE(s_path_s.st_mode)
- os.lchmod(d_path, s_path_mode)
- except Exception:
- pass
- elif os.path.isdir(s_path):
- overwriteCopy(s_path, d_path, symlinks, ignore)
- else:
- shutil.copy2(s_path, d_path)
-
-
-def doCopy(src_item=None, dest_item=None):
- LOG.info("Copying %s to %s" % (src_item, dest_item))
- try:
- if os.path.isdir(src_item):
- overwriteCopy(src_item, dest_item, symlinks=True)
- else:
- if not os.path.exists(os.path.dirname(dest_item)):
- LOG.info("Create non-existent dir: %s" %
- os.path.dirname(dest_item))
- os.makedirs(os.path.dirname(dest_item))
- shutil.copy2(src_item, dest_item)
- except Exception as e:
- LOG.error("Fail to copy file %s: %s" % (src_item, e))
- return False
-
- return True
-
-
-def doRemove(target_file_list=None):
- for i_file in target_file_list:
- LOG.info("Removing %s" % i_file)
- try:
- if os.path.isdir(i_file):
- shutil.rmtree(i_file)
- else:
- os.remove(i_file)
- except Exception as e:
- LOG.error("Fail to remove file %s: %s" % (i_file, e))
- return False
- return True
-
-
-def updateCopylistPrefix(src_default, dest_default, src_sub, dest_sub):
- src_new = ""
- dest_new = ""
- PACK_TOOL_TAG = "PACK-TOOL-ROOT"
-
- if src_sub[0:len(PACK_TOOL_TAG)] == PACK_TOOL_TAG:
- src_new = src_sub.replace(PACK_TOOL_TAG, BUILD_PARAMETERS.pkgpacktools)
- else:
- src_new = os.path.join(src_default, src_sub)
-
- if dest_sub[0:len(PACK_TOOL_TAG)] == PACK_TOOL_TAG:
- dest_new = dest_sub.replace(PACK_TOOL_TAG, BUILD_ROOT)
- else:
- dest_new = os.path.join(dest_default, dest_sub)
-
- return (src_new, dest_new)
-
-
-def buildSRC(src=None, dest=None, build_json=None):
- if not os.path.exists(src):
- LOG.info("+Src dir does not exist, skip build src process ...")
- return True
- if not doCopy(src, dest):
- return False
- if "blacklist" in build_json:
- if build_json["blacklist"].count("") > 0:
- build_json["blacklist"].remove("")
- black_file_list = []
- for i_black in build_json["blacklist"]:
- black_file_list = black_file_list + \
- glob.glob(os.path.join(dest, i_black))
-
- black_file_list = list(set(black_file_list))
- if not doRemove(black_file_list):
- return False
-
- if "copylist" in build_json:
- for i_s_key in build_json["copylist"].keys():
- if i_s_key and build_json["copylist"][i_s_key]:
- (src_updated, dest_updated) = updateCopylistPrefix(
- src, dest, i_s_key, build_json["copylist"][i_s_key])
- if not doCopy(src_updated, dest_updated):
- return False
-
- return True
-
-
-def exitHandler(return_code=1):
- LOG.info("+Cleaning build root folder ...")
- if not BUILD_PARAMETERS.bnotclean and os.path.exists(BUILD_ROOT):
- if not doRemove([BUILD_ROOT]):
- LOG.error("Fail to clean build root, exit ...")
- sys.exit(1)
-
- if return_code == 0:
- LOG.info("================ DONE ================")
- else:
- LOG.error(
- "================ Found Something Wrong !!! ================")
- sys.exit(return_code)
-
-
-def prepareBuildRoot():
- LOG.info("+Preparing build root folder ...")
- global BUILD_ROOT
- global BUILD_ROOT_SRC
- global BUILD_ROOT_SRC_PKG
- global BUILD_ROOT_SRC_PKG_APP
- global BUILD_ROOT_SRC_SUB_APP
- global BUILD_ROOT_PKG
- global BUILD_ROOT_PKG_APP
-
- while True:
- BUILD_ROOT = os.path.join("/tmp", getRandomStr())
- if os.path.exists(BUILD_ROOT):
- continue
- else:
- break
-
- BUILD_ROOT_SRC = os.path.join(BUILD_ROOT, PKG_NAME)
- BUILD_ROOT_SRC_PKG = os.path.join(BUILD_ROOT, "pkg")
- BUILD_ROOT_SRC_PKG_APP = os.path.join(BUILD_ROOT, "pkg-app")
- BUILD_ROOT_SRC_SUB_APP = os.path.join(BUILD_ROOT, "sub-app")
- BUILD_ROOT_PKG = os.path.join(BUILD_ROOT, "pkg", "opt", PKG_NAME)
- BUILD_ROOT_PKG_APP = os.path.join(BUILD_ROOT, "pkg-app", "opt", PKG_NAME)
-
- if not doCopy(BUILD_PARAMETERS.srcdir, BUILD_ROOT_SRC):
- return False
- if not doRemove(
- glob.glob(os.path.join(BUILD_ROOT_SRC, "%s*.zip" % PKG_NAME))):
- return False
-
- return True
-
-
-def doCMD(cmd, time_out=DEFAULT_CMD_TIMEOUT, no_check_return=False):
- LOG.info("Doing CMD: [ %s ]" % cmd)
- pre_time = time.time()
- cmd_proc = subprocess.Popen(args=cmd, shell=True)
- while True:
- cmd_exit_code = cmd_proc.poll()
- elapsed_time = time.time() - pre_time
- if cmd_exit_code is None:
- if elapsed_time >= time_out:
- killProcesses(ppid=cmd_proc.pid)
- LOG.error("Timeout to exe CMD")
- return False
- else:
- if not no_check_return and cmd_exit_code != 0:
- LOG.error("Fail to exe CMD")
- return False
- break
- time.sleep(2)
- return True
-
-
-def doCMDWithOutput(cmd, time_out=DEFAULT_CMD_TIMEOUT):
- LOG.info("Doing CMD: [ %s ]" % cmd)
- pre_time = time.time()
- output = []
- cmd_return_code = 1
- cmd_proc = subprocess.Popen(
- cmd, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, shell=True)
-
- while True:
- output_line = cmd_proc.stdout.readline().strip("\r\n")
- cmd_return_code = cmd_proc.poll()
- elapsed_time = time.time() - pre_time
- if cmd_return_code is None:
- if elapsed_time >= time_out:
- killProcesses(ppid=cmd_proc.pid)
- LOG.error("Timeout to exe CMD")
- return False
- elif output_line == '' and cmd_return_code is not None:
- break
-
- sys.stdout.write("%s\n" % output_line)
- sys.stdout.flush()
- output.append(output_line)
- if cmd_return_code != 0:
- LOG.error("Fail to exe CMD")
-
- return (cmd_return_code, output)
-
-
-def packXPK(build_json=None, app_src=None, app_dest=None, app_name=None):
- pack_tool = os.path.join(BUILD_ROOT, "make_xpk.py")
- if not os.path.exists(pack_tool):
- if not doCopy(
- os.path.join(BUILD_PARAMETERS.pkgpacktools, "make_xpk.py"),
- pack_tool):
- return False
- orig_dir = os.getcwd()
- os.chdir(BUILD_ROOT)
- if os.path.exists("key.file"):
- if not doRemove(["key.file"]):
- os.chdir(orig_dir)
- return False
-
- key_file = safelyGetValue(build_json, "key-file")
- if key_file == "key.file":
- LOG.error(
- "\"key.file\" is reserved name for default key file, "
- "pls change the key file name ...")
- os.chdir(orig_dir)
- return False
- if key_file:
- pack_cmd = "python make_xpk.py %s %s -o %s" % (
- app_src, key_file, os.path.join(app_dest, "%s.xpk" % app_name))
- else:
- pack_cmd = "python make_xpk.py %s key.file -o %s" % (
- app_src, os.path.join(app_dest, "%s.xpk" % app_name))
- if not doCMD(pack_cmd, DEFAULT_CMD_TIMEOUT):
- os.chdir(orig_dir)
- return False
-
- os.chdir(orig_dir)
- return True
-
-
-def packWGT(build_json=None, app_src=None, app_dest=None, app_name=None):
- if not zipDir(app_src, os.path.join(app_dest, "%s.wgt" % app_name)):
- return False
-
- if BUILD_PARAMETERS.signature == True:
- if safelyGetValue(build_json, "sign-flag") == "true":
- if not os.path.exists(os.path.join(BUILD_ROOT, "signing")):
- if not doCopy(
- os.path.join(BUILD_PARAMETERS.pkgpacktools, "signing"),
- os.path.join(BUILD_ROOT, "signing")):
- return False
- signing_cmd = "%s --dist platform %s" % (
- os.path.join(BUILD_ROOT, "signing", "sign-widget.sh"),
- os.path.join(app_dest, "%s.wgt" % app_name))
- if not doCMD(signing_cmd, DEFAULT_CMD_TIMEOUT):
- return False
-
- return True
-
-
-def packAPK(build_json=None, app_src=None, app_dest=None, app_name=None):
- app_name = app_name.replace("-", "_")
-
- if not os.path.exists(os.path.join(BUILD_ROOT, "crosswalk")):
- if not doCopy(
- os.path.join(BUILD_PARAMETERS.pkgpacktools, "crosswalk"),
- os.path.join(BUILD_ROOT, "crosswalk")):
- return False
-
- files = glob.glob(os.path.join(BUILD_ROOT, "crosswalk", "*.apk"))
- if files:
- if not doRemove(files):
- return False
-
- ext_opt = ""
- cmd_opt = ""
- url_opt = ""
- mode_opt = ""
- arch_opt = ""
- icon_opt = ""
-
- common_opts = safelyGetValue(build_json, "apk-common-opts")
- if common_opts is None:
- common_opts = ""
-
- tmp_opt = safelyGetValue(build_json, "apk-ext-opt")
- if tmp_opt:
- ext_opt = "--extensions='%s'" % os.path.join(BUILD_ROOT_SRC, tmp_opt)
-
- tmp_opt = safelyGetValue(build_json, "apk-cmd-opt")
- if tmp_opt:
- cmd_opt = "--xwalk-command-line='%s'" % tmp_opt
-
- tmp_opt = safelyGetValue(build_json, "apk-url-opt")
- if tmp_opt:
- url_opt = "--app-url='%s'" % tmp_opt
-
- tmp_opt = safelyGetValue(build_json, "apk-mode-opt")
- if tmp_opt:
- if tmp_opt in PKG_MODES:
- mode_opt = "--mode=%s" % tmp_opt
- else:
- LOG.error("Got wrong app mode: %s" % tmp_opt)
- return False
- else:
- mode_opt = "--mode=%s" % BUILD_PARAMETERS.pkgmode
-
- tmp_opt = safelyGetValue(build_json, "apk-arch-opt")
- if tmp_opt:
- if tmp_opt in PKG_ARCHS:
- arch_opt = "--arch=%s" % tmp_opt
- else:
- LOG.error("Got wrong app arch: %s" % tmp_opt)
- return False
- else:
- arch_opt = "--arch=%s" % BUILD_PARAMETERS.pkgarch
-
- tmp_opt = safelyGetValue(build_json, "apk-icon-opt")
- if tmp_opt:
- icon_opt = "--icon=%s" % tmp_opt
- elif tmp_opt == "":
- icon_opt = ""
- else:
- icon_opt = "--icon=%s/icon.png" % app_src
-
- if safelyGetValue(build_json, "apk-type") == "MANIFEST":
- pack_cmd = "python make_apk.py --package=org.xwalk.%s " \
- "--manifest=%s/manifest.json %s %s %s %s %s" % (
- app_name, app_src, mode_opt, arch_opt,
- ext_opt, cmd_opt, common_opts)
- elif safelyGetValue(build_json, "apk-type") == "HOSTEDAPP":
- if not url_opt:
- LOG.error(
- "Fail to find the key \"apk-url-opt\" for hosted APP packing")
- return False
- pack_cmd = "python make_apk.py --package=org.xwalk.%s --name=%s %s " \
- "%s %s %s %s %s" % (
- app_name, app_name, mode_opt, arch_opt, ext_opt,
- cmd_opt, url_opt, common_opts)
- else:
- pack_cmd = "python make_apk.py --package=org.xwalk.%s --name=%s " \
- "--app-root=%s --app-local-path=index.html %s %s " \
- "%s %s %s %s" % (
- app_name, app_name, app_src, icon_opt, mode_opt,
- arch_opt, ext_opt, cmd_opt, common_opts)
-
- orig_dir = os.getcwd()
- os.chdir(os.path.join(BUILD_ROOT, "crosswalk"))
- if not doCMD(pack_cmd, DEFAULT_CMD_TIMEOUT):
- os.chdir(orig_dir)
- return False
-
- files = glob.glob(os.path.join(BUILD_ROOT, "crosswalk", "*.apk"))
- if files:
- if not doCopy(files[0], os.path.join(app_dest, "%s.apk" % app_name)):
- os.chdir(orig_dir)
- return False
- else:
- LOG.error("Fail to find the apk file")
- os.chdir(orig_dir)
- return False
-
- os.chdir(orig_dir)
- return True
-
-
-def packCordova(build_json=None, app_src=None, app_dest=None, app_name=None):
- pack_tool = os.path.join(BUILD_ROOT, "cordova")
- app_name = app_name.replace("-", "_")
- if not os.path.exists(pack_tool):
- if not doCopy(
- os.path.join(BUILD_PARAMETERS.pkgpacktools, "cordova"),
- pack_tool):
- return False
-
- plugin_tool = os.path.join(BUILD_ROOT, "cordova_plugins")
- if not os.path.exists(plugin_tool):
- if not doCopy(
- os.path.join(BUILD_PARAMETERS.pkgpacktools, "cordova_plugins"),
- plugin_tool):
- return False
-
- orig_dir = os.getcwd()
- os.chdir(pack_tool)
- pack_cmd = "bin/create %s org.xwalk.%s %s" % (
- app_name, app_name, app_name)
- if not doCMD(pack_cmd, DEFAULT_CMD_TIMEOUT):
- os.chdir(orig_dir)
- return False
-
- os.chdir(os.path.join(pack_tool, app_name))
- plugin_dirs = os.listdir(plugin_tool)
- for i_dir in plugin_dirs:
- i_plugin_dir = os.path.join(plugin_tool, i_dir)
- plugin_install_cmd = "plugman install --platform android --project " \
- "./ --plugin %s" % i_plugin_dir
- if not doCMD(plugin_install_cmd, DEFAULT_CMD_TIMEOUT):
- os.chdir(orig_dir)
- return False
- os.chdir(pack_tool)
-
- if not doCopy(app_src, os.path.join(pack_tool, app_name, "assets", "www")):
- os.chdir(orig_dir)
- return False
- os.chdir(os.path.join(BUILD_ROOT, "cordova", app_name))
- pack_cmd = "./cordova/build"
- if not doCMD(pack_cmd, DEFAULT_CMD_TIMEOUT):
- os.chdir(orig_dir)
- return False
-
- if not doCopy(os.path.join(
- BUILD_ROOT, "cordova", app_name, "bin", "%s-debug.apk" %
- app_name),
- os.path.join(app_dest, "%s.apk" % app_name)):
- os.chdir(orig_dir)
- return False
- os.chdir(orig_dir)
- return True
-
-
-def packEmbeddingAPI(
- build_json=None, app_src=None, app_dest=None, app_name=None):
- app_name = app_name.replace("-", "_")
-
- library_dir_name = safelyGetValue(build_json, "embeddingapi-library-name")
- if not library_dir_name:
- LOG.error("Fail to get embeddingapi-library-name ...")
- return False
-
- new_library_dir_name = "core_library"
- pack_tool = os.path.join(app_src, "..", new_library_dir_name)
-
- if os.path.exists(pack_tool):
- if not doRemove([pack_tool]):
- return False
-
- if not doCopy(
- os.path.join(BUILD_PARAMETERS.pkgpacktools, library_dir_name),
- pack_tool):
- return False
-
- if os.path.exists(os.path.join(pack_tool, "bin", "res", "crunch")):
- if not doRemove([os.path.join(pack_tool, "bin", "res", "crunch")]):
- return False
-
- orig_dir = os.getcwd()
- android_project_path = os.path.join(app_src, "android-project")
- try:
- os.makedirs(android_project_path)
- except Exception as e:
- LOG.error("Fail to create tmp project dir: %s" % e)
- return False
-
- (return_code, output) = doCMDWithOutput("android list target")
- api_level = ""
- for line in output:
- if "API level" in line:
- api_level = line.split(":")[1].strip()
- break
- if not api_level:
- LOG.error("Fail to get Android API Level")
- os.chdir(orig_dir)
- return False
-
- android_project_cmd = "android create project --name %s --target " \
- "android-%s --path %s --package com.%s " \
- "--activity MainActivity" % (
- app_name, api_level, android_project_path, app_name)
- if not doCMD(android_project_cmd):
- os.chdir(orig_dir)
- return False
-
- try:
- update_file = open(
- os.path.join(android_project_path, "project.properties"), "a+")
- update_file.writelines(
- "{0}\n".format(
- "android.library.reference.1=../%s" %
- new_library_dir_name))
- update_file.close()
- except Exception as e:
- LOG.error(
- "Fail to update %s: %s" %
- (os.path.join(
- android_project_path,
- "project.properties"),
- e))
- os.chdir(orig_dir)
- return False
-
- if not doCopy(os.path.join(android_project_path, "build.xml"),
- os.path.join(app_src, "build.xml")):
- os.chdir(orig_dir)
- return False
-
- if not doCopy(
- os.path.join(android_project_path, "project.properties"),
- os.path.join(app_src, "project.properties")):
- os.chdir(orig_dir)
- return False
-
- if not doCopy(
- os.path.join(android_project_path, "local.properties"),
- os.path.join(app_src, "local.properties")):
- os.chdir(orig_dir)
- return False
-
- if not doCopy(
- os.path.join(android_project_path, "local.properties"),
- os.path.join(pack_tool, "local.properties")):
- os.chdir(orig_dir)
- return False
-
- os.chdir(app_src)
- if not doCMD("ant debug"):
- os.chdir(orig_dir)
- return False
-
- if not doCopy(
- os.path.join(app_src, "bin", "%s-debug.apk" % app_name),
- os.path.join(app_dest, "%s.apk" % app_name)):
- os.chdir(orig_dir)
- return False
- os.chdir(orig_dir)
- return True
-
-
-def packAPP(build_json=None, app_src=None, app_dest=None, app_name=None):
- LOG.info("Packing %s(%s)" % (app_name, app_src))
- if not os.path.exists(app_dest):
- try:
- os.makedirs(app_dest)
- except Exception as e:
- LOG.error("Fail to init package install dest dir: %s" % e)
- return False
-
- if checkContains(BUILD_PARAMETERS.pkgtype, "XPK"):
- if not packXPK(build_json, app_src, app_dest, app_name):
- return False
- elif checkContains(BUILD_PARAMETERS.pkgtype, "WGT"):
- if not packWGT(build_json, app_src, app_dest, app_name):
- return False
- elif checkContains(BUILD_PARAMETERS.pkgtype, "APK"):
- if not packAPK(build_json, app_src, app_dest, app_name):
- return False
- elif checkContains(BUILD_PARAMETERS.pkgtype, "CORDOVA"):
- if not packCordova(build_json, app_src, app_dest, app_name):
- return False
- elif checkContains(BUILD_PARAMETERS.pkgtype, "EMBEDDINGAPI"):
- if not packEmbeddingAPI(build_json, app_src, app_dest, app_name):
- return False
- else:
- LOG.error("Got wrong pkg type: %s" % BUILD_PARAMETERS.pkgtype)
- return False
-
- LOG.info("Success to pack APP: %s" % app_name)
- return True
-
-
-def createIndexFile(index_file_path=None, hosted_app=None):
- try:
- if hosted_app:
- index_url = "http://127.0.0.1/opt/%s/webrunner/index.html?" \
- "testsuite=../tests.xml&testprefix=../../.." % PKG_NAME
- else:
- index_url = "opt/%s/webrunner/index.html?testsuite=../tests.xml" \
- "&testprefix=../../.." % PKG_NAME
- html_content = "<!doctype html><head><meta http-equiv='Refresh' " \
- "content='1; url=%s'></head>" % index_url
- index_file = open(index_file_path, "w")
- index_file.write(html_content)
- index_file.close()
- except Exception as e:
- LOG.error("Fail to create index.html for top-app: %s" % e)
- return False
- LOG.info("Success to create index file %s" % index_file_path)
- return True
-
-
-def buildSubAPP(app_dir=None, build_json=None, app_dest_default=None):
- app_dir_inside = safelyGetValue(build_json, "app-dir")
- if app_dir_inside:
- app_dir = app_dir_inside
- LOG.info("+Building sub APP(s) from %s ..." % app_dir)
- app_dir = os.path.join(BUILD_ROOT_SRC, app_dir)
- app_name = safelyGetValue(build_json, "app-name")
- if not app_name:
- app_name = os.path.basename(app_dir)
-
- app_src = os.path.join(BUILD_ROOT_SRC_SUB_APP, app_name)
- if buildSRC(app_dir, app_src, build_json):
- app_dest = safelyGetValue(build_json, "install-path")
- if app_dest:
- app_dest = os.path.join(app_dest_default, app_dest)
- else:
- app_dest = app_dest_default
-
- if safelyGetValue(build_json, "all-apps") == "true":
- app_dirs = os.listdir(app_src)
- apps_num = 0
- for i_app_dir in app_dirs:
- if os.path.isdir(os.path.join(app_src, i_app_dir)):
- i_app_name = os.path.basename(i_app_dir)
- if not packAPP(
- build_json, os.path.join(app_src, i_app_name),
- app_dest, i_app_name):
- return False
- else:
- apps_num = apps_num + 1
- if apps_num > 0:
- LOG.info("Totally packed %d apps in %s" % (apps_num, app_dir))
- return True
- else:
- return packAPP(build_json, app_src, app_dest, app_name)
- return False
-
-
-def buildPKGAPP(build_json=None):
- LOG.info("+Building package APP ...")
- if not doCopy(os.path.join(BUILD_ROOT_SRC, "icon.png"),
- os.path.join(BUILD_ROOT_SRC_PKG_APP, "icon.png")):
- return False
-
- if checkContains(BUILD_PARAMETERS.pkgtype, "XPK"):
- if not doCopy(
- os.path.join(BUILD_ROOT_SRC, "manifest.json"),
- os.path.join(BUILD_ROOT_SRC_PKG_APP, "manifest.json")):
- return False
- elif checkContains(BUILD_PARAMETERS.pkgtype, "WGT"):
- if not doCopy(os.path.join(BUILD_ROOT_SRC, "config.xml"),
- os.path.join(BUILD_ROOT_SRC_PKG_APP, "config.xml")):
- return False
-
- hosted_app = False
- if safelyGetValue(build_json, "hosted-app") == "true":
- hosted_app = True
- if not createIndexFile(
- os.path.join(BUILD_ROOT_SRC_PKG_APP, "index.html"), hosted_app):
- return False
-
- if not hosted_app:
- if "blacklist" not in build_json:
- build_json.update({"blacklist": []})
- build_json["blacklist"].extend(PKG_BLACK_LIST)
- if not buildSRC(BUILD_ROOT_SRC, BUILD_ROOT_PKG_APP, build_json):
- return False
-
- if "subapp-list" in build_json:
- for i_sub_app in build_json["subapp-list"].keys():
- if not buildSubAPP(
- i_sub_app, build_json["subapp-list"][i_sub_app],
- BUILD_ROOT_PKG_APP):
- return False
-
- if not packAPP(
- build_json, BUILD_ROOT_SRC_PKG_APP, BUILD_ROOT_PKG, PKG_NAME):
- return False
-
- return True
-
-
-def buildPKG(build_json=None):
- if "blacklist" not in build_json:
- build_json.update({"blacklist": []})
- build_json["blacklist"].extend(PKG_BLACK_LIST)
- if not buildSRC(BUILD_ROOT_SRC, BUILD_ROOT_PKG, build_json):
- return False
-
- if "subapp-list" in build_json:
- for i_sub_app in build_json["subapp-list"].keys():
- if not buildSubAPP(
- i_sub_app, build_json["subapp-list"][i_sub_app],
- BUILD_ROOT_PKG):
- return False
-
- if "pkg-app" in build_json:
- if not buildPKGAPP(build_json["pkg-app"]):
- return False
-
- return True
-
-
-def main():
- global LOG
- LOG = logging.getLogger("pack-tool")
- LOG.setLevel(LOG_LEVEL)
- stream_handler = logging.StreamHandler()
- stream_handler.setLevel(LOG_LEVEL)
- stream_formatter = ColorFormatter("[%(asctime)s] %(message)s")
- stream_handler.setFormatter(stream_formatter)
- LOG.addHandler(stream_handler)
-
- try:
- usage = "Usage: ./pack.py -t apk -m shared -a x86"
- opts_parser = OptionParser(usage=usage)
- opts_parser.add_option(
- "-c",
- "--cfg",
- dest="pkgcfg",
- help="specify the path of config json file")
- opts_parser.add_option(
- "-t",
- "--type",
- dest="pkgtype",
- help="specify the pkg type, e.g. apk, xpk, wgt ...")
- opts_parser.add_option(
- "-m",
- "--mode",
- dest="pkgmode",
- help="specify the apk mode, e.g. shared, embedded")
- opts_parser.add_option(
- "-a",
- "--arch",
- dest="pkgarch",
- help="specify the apk arch, e.g. x86, arm")
- opts_parser.add_option(
- "-d",
- "--dest",
- dest="destdir",
- help="specify the installation folder for packed package")
- opts_parser.add_option(
- "-s",
- "--src",
- dest="srcdir",
- help="specify the path of pkg resource for packing")
- opts_parser.add_option(
- "--tools",
- dest="pkgpacktools",
- help="specify the parent folder of pack tools")
- opts_parser.add_option(
- "--notclean",
- dest="bnotclean",
- action="store_true",
- help="disable the build root clean after the packing")
- opts_parser.add_option(
- "--sign",
- dest="signature",
- action="store_true",
- help="signature operation will be done when packing wgt")
- opts_parser.add_option(
- "-v",
- "--version",
- dest="bversion",
- action="store_true",
- help="show this tool's version")
- opts_parser.add_option(
- "--pkg-version",
- dest="pkgversion",
- help="specify the pkg version, e.g. 0.0.0.1")
-
- if len(sys.argv) == 1:
- sys.argv.append("-h")
-
- global BUILD_PARAMETERS
- (BUILD_PARAMETERS, args) = opts_parser.parse_args()
- except Exception as e:
- LOG.error("Got wrong options: %s, exit ..." % e)
- sys.exit(1)
-
- if BUILD_PARAMETERS.bversion:
- print "Version: %s" % TOOL_VERSION
- sys.exit(0)
-
- if not BUILD_PARAMETERS.srcdir:
- BUILD_PARAMETERS.srcdir = os.getcwd()
- BUILD_PARAMETERS.srcdir = os.path.expanduser(BUILD_PARAMETERS.srcdir)
-
- if not os.path.exists(
- os.path.join(BUILD_PARAMETERS.srcdir, "..", "..", VERSION_FILE)):
- if not os.path.exists(
- os.path.join(BUILD_PARAMETERS.srcdir, "..", VERSION_FILE)):
- if not os.path.exists(
- os.path.join(BUILD_PARAMETERS.srcdir, VERSION_FILE)):
- LOG.info(
- "Not found pkg version file, try to use option --pkg-version")
- pkg_version_file_path = None
- else:
- pkg_version_file_path = os.path.join(
- BUILD_PARAMETERS.srcdir, VERSION_FILE)
- else:
- pkg_version_file_path = os.path.join(
- BUILD_PARAMETERS.srcdir, "..", VERSION_FILE)
- else:
- pkg_version_file_path = os.path.join(
- BUILD_PARAMETERS.srcdir, "..", "..", VERSION_FILE)
-
- try:
- pkg_main_version = 0
- pkg_release_version = 0
- if BUILD_PARAMETERS.pkgversion:
- LOG.info("Using %s as pkg version " % BUILD_PARAMETERS.pkgversion)
- pkg_main_version = BUILD_PARAMETERS.pkgversion
- else:
- if pkg_version_file_path is not None:
- LOG.info("Using pkg version file: %s" % pkg_version_file_path)
- with open(pkg_version_file_path, "rt") as pkg_version_file:
- pkg_version_raw = pkg_version_file.read()
- pkg_version_file.close()
- pkg_version_json = json.loads(pkg_version_raw)
- pkg_main_version = pkg_version_json["main-version"]
- pkg_release_version = pkg_version_json["release-version"]
- except Exception as e:
- LOG.error("Fail to read pkg version file: %s, exit ..." % e)
- sys.exit(1)
-
- if not BUILD_PARAMETERS.pkgtype:
- LOG.error("No pkg type provided, exit ...")
- sys.exit(1)
- elif not BUILD_PARAMETERS.pkgtype in PKG_TYPES:
- LOG.error("Wrong pkg type, only support: %s, exit ..." %
- PKG_TYPES)
- sys.exit(1)
-
- if BUILD_PARAMETERS.pkgtype == "apk" or \
- BUILD_PARAMETERS.pkgtype == "apk-aio":
- if not BUILD_PARAMETERS.pkgmode:
- LOG.error("No pkg mode option provided, exit ...")
- sys.exit(1)
- elif not BUILD_PARAMETERS.pkgmode in PKG_MODES:
- LOG.error(
- "Wrong pkg mode option provided, only support:%s, exit ..." %
- PKG_MODES)
- sys.exit(1)
-
- if not BUILD_PARAMETERS.pkgarch:
- LOG.error("No pkg arch option provided, exit ...")
- sys.exit(1)
- elif not BUILD_PARAMETERS.pkgarch in PKG_ARCHS:
- LOG.error(
- "Wrong pkg arch option provided, only support:%s, exit ..." %
- PKG_ARCHS)
- sys.exit(1)
-
- if BUILD_PARAMETERS.pkgtype == "apk-aio" or \
- BUILD_PARAMETERS.pkgtype == "cordova-aio":
- if not BUILD_PARAMETERS.destdir or not os.path.exists(
- BUILD_PARAMETERS.destdir):
- LOG.error("No all-in-one installation dest dir found, exit ...")
- sys.exit(1)
-
- elif not BUILD_PARAMETERS.destdir:
- BUILD_PARAMETERS.destdir = BUILD_PARAMETERS.srcdir
- BUILD_PARAMETERS.destdir = os.path.expanduser(BUILD_PARAMETERS.destdir)
-
- if not BUILD_PARAMETERS.pkgpacktools:
- BUILD_PARAMETERS.pkgpacktools = os.path.join(
- BUILD_PARAMETERS.srcdir, "..", "..", "tools")
- BUILD_PARAMETERS.pkgpacktools = os.path.expanduser(
- BUILD_PARAMETERS.pkgpacktools)
-
- config_json = None
- if BUILD_PARAMETERS.pkgcfg:
- config_json_file_path = BUILD_PARAMETERS.pkgcfg
- else:
- config_json_file_path = os.path.join(
- BUILD_PARAMETERS.srcdir, "suite.json")
- try:
- LOG.info("Using config json file: %s" % config_json_file_path)
- with open(config_json_file_path, "rt") as config_json_file:
- config_raw = config_json_file.read()
- config_json_file.close()
- config_json = json.loads(config_raw)
- except Exception as e:
- LOG.error("Fail to read config json file: %s, exit ..." % e)
- sys.exit(1)
-
- global PKG_NAME
- PKG_NAME = safelyGetValue(config_json, "pkg-name")
- if not PKG_NAME:
- PKG_NAME = os.path.basename(BUILD_PARAMETERS.srcdir)
- LOG.warning(
- "Fail to read pkg name from json, "
- "using src dir name as pkg name ...")
-
- LOG.info("================= %s (%s-%s) ================" %
- (PKG_NAME, pkg_main_version, pkg_release_version))
-
- if not safelyGetValue(config_json, "pkg-list"):
- LOG.error("Fail to read pkg-list, exit ...")
- sys.exit(1)
-
- pkg_json = None
- for i_pkg in config_json["pkg-list"].keys():
- i_pkg_list = i_pkg.replace(" ", "").split(",")
- if BUILD_PARAMETERS.pkgtype in i_pkg_list:
- pkg_json = config_json["pkg-list"][i_pkg]
-
- if not pkg_json:
- LOG.error("Fail to read pkg json, exit ...")
- sys.exit(1)
-
- if not prepareBuildRoot():
- exitHandler(1)
-
- if "pkg-blacklist" in config_json:
- PKG_BLACK_LIST.extend(config_json["pkg-blacklist"])
-
- if not buildPKG(pkg_json):
- exitHandler(1)
-
- LOG.info("+Building package ...")
- if BUILD_PARAMETERS.pkgtype == "apk-aio" or \
- BUILD_PARAMETERS.pkgtype == "cordova-aio":
- pkg_file_list = os.listdir(os.path.join(BUILD_ROOT, "pkg"))
- for i_file in pkg_file_list:
- if not doCopy(
- os.path.join(BUILD_ROOT, "pkg", i_file),
- os.path.join(BUILD_PARAMETERS.destdir, i_file)):
- exitHandler(1)
- else:
- pkg_file = os.path.join(
- BUILD_PARAMETERS.destdir,
- "%s-%s.%s.zip" %
- (PKG_NAME,
- pkg_main_version,
- pkg_release_version))
-
-
- if not zipDir(os.path.join(BUILD_ROOT, "pkg"), pkg_file):
- exitHandler(1)
-
-if __name__ == "__main__":
- main()
- exitHandler(0)
+++ /dev/null
-The testharness files come from
-https://github.com/w3c/testharness.js (commit 2486f01bf4c58de1c1b7cb39322af7b55c6c700b)
-without any modification.
-
-These tests are copyright by W3C and/or the author listed in the test
-file. The tests are dual-licensed under the W3C Test Suite License:
-http://www.w3.org/Consortium/Legal/2008/04-testsuite-license
-and the BSD 3-clause License:
-http://www.w3.org/Consortium/Legal/2008/03-bsd-license
-under W3C's test suite licensing policy:
-http://www.w3.org/Consortium/Legal/2008/04-testsuite-copyright
-
+++ /dev/null
-html {
- font-family:DejaVu Sans, Bitstream Vera Sans, Arial, Sans;
-}
-
-#log .warning,
-#log .warning a {
- color: black;
- background: yellow;
-}
-
-#log .error,
-#log .error a {
- color: white;
- background: red;
-}
-
-#log pre {
- border: 1px solid black;
- padding: 1em;
-}
-
-section#summary {
- margin-bottom:1em;
-}
-
-table#results {
- border-collapse:collapse;
- table-layout:fixed;
- width:100%;
-}
-
-table#results th:first-child,
-table#results td:first-child {
- width:4em;
-}
-
-table#results th:last-child,
-table#results td:last-child {
- width:50%;
-}
-
-table#results.assertions th:last-child,
-table#results.assertions td:last-child {
- width:35%;
-}
-
-table#results th {
- padding:0;
- padding-bottom:0.5em;
- border-bottom:medium solid black;
-}
-
-table#results td {
- padding:1em;
- padding-bottom:0.5em;
- border-bottom:thin solid black;
-}
-
-tr.pass > td:first-child {
- color:green;
-}
-
-tr.fail > td:first-child {
- color:red;
-}
-
-tr.timeout > td:first-child {
- color:red;
-}
-
-tr.notrun > td:first-child {
- color:blue;
-}
-
-.pass > td:first-child, .fail > td:first-child, .timeout > td:first-child, .notrun > td:first-child {
- font-variant:small-caps;
-}
-
-table#results span {
- display:block;
-}
-
-table#results span.expected {
- font-family:DejaVu Sans Mono, Bitstream Vera Sans Mono, Monospace;
- white-space:pre;
-}
-
-table#results span.actual {
- font-family:DejaVu Sans Mono, Bitstream Vera Sans Mono, Monospace;
- white-space:pre;
-}
-
-span.ok {
- color:green;
-}
-
-tr.error {
- color:red;
-}
-
-span.timeout {
- color:red;
-}
-
-span.ok, span.timeout, span.error {
- font-variant:small-caps;
-}
\ No newline at end of file
+++ /dev/null
-/*global self*/
-/*jshint latedef: nofunc*/
-/*
-Distributed under both the W3C Test Suite License [1] and the W3C
-3-clause BSD License [2]. To contribute to a W3C Test Suite, see the
-policies and contribution forms [3].
-
-[1] http://www.w3.org/Consortium/Legal/2008/04-testsuite-license
-[2] http://www.w3.org/Consortium/Legal/2008/03-bsd-license
-[3] http://www.w3.org/2004/10/27-testcases
-*/
-
-/* Documentation is in docs/api.md */
-
-(function ()
-{
- var debug = false;
- // default timeout is 10 seconds, test can override if needed
- var settings = {
- output:true,
- harness_timeout:{
- "normal":3600000,
- "long":3600000
- },
- test_timeout:null
- };
-
- var xhtml_ns = "http://www.w3.org/1999/xhtml";
-
- /*
- * TestEnvironment is an abstraction for the environment in which the test
- * harness is used. Each implementation of a test environment has to provide
- * the following interface:
- *
- * interface TestEnvironment {
- * // Invoked after the global 'tests' object has been created and it's
- * // safe to call add_*_callback() to register event handlers.
- * void on_tests_ready();
- *
- * // Invoked after setup() has been called to notify the test environment
- * // of changes to the test harness properties.
- * void on_new_harness_properties(object properties);
- *
- * // Should return a new unique default test name.
- * DOMString next_default_test_name();
- *
- * // Should return the test harness timeout duration in milliseconds.
- * float test_timeout();
- *
- * // Should return the global scope object.
- * object global_scope();
- * };
- */
-
- /*
- * A test environment with a DOM. The global object is 'window'. By default
- * test results are displayed in a table. Any parent windows receive
- * callbacks or messages via postMessage() when test events occur. See
- * apisample11.html and apisample12.html.
- */
- function WindowTestEnvironment() {
- this.name_counter = 0;
- this.window_cache = null;
- this.output_handler = null;
- this.all_loaded = false;
- var this_obj = this;
- on_event(window, 'load', function() {
- this_obj.all_loaded = true;
- });
- }
-
- WindowTestEnvironment.prototype._dispatch = function(selector, callback_args, message_arg) {
- this._forEach_windows(
- function(w, is_same_origin) {
- if (is_same_origin && selector in w) {
- try {
- w[selector].apply(undefined, callback_args);
- } catch (e) {
- if (debug) {
- throw e;
- }
- }
- }
- if (supports_post_message(w) && w !== self) {
- w.postMessage(message_arg, "*");
- }
- });
- };
-
- WindowTestEnvironment.prototype._forEach_windows = function(callback) {
- // Iterate of the the windows [self ... top, opener]. The callback is passed
- // two objects, the first one is the windows object itself, the second one
- // is a boolean indicating whether or not its on the same origin as the
- // current window.
- var cache = this.window_cache;
- if (!cache) {
- cache = [[self, true]];
- var w = self;
- var i = 0;
- var so;
- var origins = location.ancestorOrigins;
- while (w != w.parent) {
- w = w.parent;
- // In WebKit, calls to parent windows' properties that aren't on the same
- // origin cause an error message to be displayed in the error console but
- // don't throw an exception. This is a deviation from the current HTML5
- // spec. See: https://bugs.webkit.org/show_bug.cgi?id=43504
- // The problem with WebKit's behavior is that it pollutes the error console
- // with error messages that can't be caught.
- //
- // This issue can be mitigated by relying on the (for now) proprietary
- // `location.ancestorOrigins` property which returns an ordered list of
- // the origins of enclosing windows. See:
- // http://trac.webkit.org/changeset/113945.
- if (origins) {
- so = (location.origin == origins[i]);
- } else {
- so = is_same_origin(w);
- }
- cache.push([w, so]);
- i++;
- }
- w = window.opener;
- if (w) {
- // window.opener isn't included in the `location.ancestorOrigins` prop.
- // We'll just have to deal with a simple check and an error msg on WebKit
- // browsers in this case.
- cache.push([w, is_same_origin(w)]);
- }
- this.window_cache = cache;
- }
-
- forEach(cache,
- function(a) {
- callback.apply(null, a);
- });
- };
-
- WindowTestEnvironment.prototype.on_tests_ready = function() {
- var output = new Output();
- this.output_handler = output;
-
- var this_obj = this;
- add_start_callback(function (properties) {
- this_obj.output_handler.init(properties);
- this_obj._dispatch("start_callback", [properties],
- { type: "start", properties: properties });
- });
- add_test_state_callback(function(test) {
- this_obj.output_handler.show_status();
- this_obj._dispatch("test_state_callback", [test],
- { type: "test_state", test: test.structured_clone() });
- });
- add_result_callback(function (test) {
- this_obj.output_handler.show_status();
- this_obj._dispatch("result_callback", [test],
- { type: "result", test: test.structured_clone() });
- });
- add_completion_callback(function (tests, harness_status) {
- this_obj.output_handler.show_results(tests, harness_status);
- var cloned_tests = map(tests, function(test) { return test.structured_clone(); });
- this_obj._dispatch("completion_callback", [tests, harness_status],
- { type: "complete", tests: cloned_tests,
- status: harness_status.structured_clone() });
- });
- };
-
- WindowTestEnvironment.prototype.next_default_test_name = function() {
- //Don't use document.title to work around an Opera bug in XHTML documents
- var title = document.getElementsByTagName("title")[0];
- var prefix = (title && title.firstChild && title.firstChild.data) || "Untitled";
- var suffix = this.name_counter > 0 ? " " + this.name_counter : "";
- this.name_counter++;
- return prefix + suffix;
- };
-
- WindowTestEnvironment.prototype.on_new_harness_properties = function(properties) {
- this.output_handler.setup(properties);
- };
-
- WindowTestEnvironment.prototype.add_on_loaded_callback = function(callback) {
- on_event(window, 'load', callback);
- };
-
- WindowTestEnvironment.prototype.test_timeout = function() {
- var metas = document.getElementsByTagName("meta");
- for (var i = 0; i < metas.length; i++) {
- if (metas[i].name == "timeout") {
- if (metas[i].content == "long") {
- return settings.harness_timeout.long;
- }
- break;
- }
- }
- return settings.harness_timeout.normal;
- };
-
- WindowTestEnvironment.prototype.global_scope = function() {
- return window;
- };
-
- /*
- * Base TestEnvironment implementation for a generic web worker.
- *
- * Workers accumulate test results. One or more clients can connect and
- * retrieve results from a worker at any time.
- *
- * WorkerTestEnvironment supports communicating with a client via a
- * MessagePort. The mechanism for determining the appropriate MessagePort
- * for communicating with a client depends on the type of worker and is
- * implemented by the various specializations of WorkerTestEnvironment
- * below.
- *
- * A client document using testharness can use fetch_tests_from_worker() to
- * retrieve results from a worker. See apisample16.html.
- */
- function WorkerTestEnvironment() {
- this.name_counter = 0;
- this.all_loaded = true;
- this.message_list = [];
- this.message_ports = [];
- }
-
- WorkerTestEnvironment.prototype._dispatch = function(message) {
- this.message_list.push(message);
- for (var i = 0; i < this.message_ports.length; ++i)
- {
- this.message_ports[i].postMessage(message);
- }
- };
-
- // The only requirement is that port has a postMessage() method. It doesn't
- // have to be an instance of a MessagePort, and often isn't.
- WorkerTestEnvironment.prototype._add_message_port = function(port) {
- this.message_ports.push(port);
- for (var i = 0; i < this.message_list.length; ++i)
- {
- port.postMessage(this.message_list[i]);
- }
- };
-
- WorkerTestEnvironment.prototype.next_default_test_name = function() {
- var suffix = this.name_counter > 0 ? " " + this.name_counter : "";
- this.name_counter++;
- return "Untitled" + suffix;
- };
-
- WorkerTestEnvironment.prototype.on_new_harness_properties = function() {};
-
- WorkerTestEnvironment.prototype.on_tests_ready = function() {
- var this_obj = this;
- add_start_callback(
- function(properties) {
- this_obj._dispatch({
- type: "start",
- properties: properties,
- });
- });
- add_test_state_callback(
- function(test) {
- this_obj._dispatch({
- type: "test_state",
- test: test.structured_clone()
- });
- });
- add_result_callback(
- function(test) {
- this_obj._dispatch({
- type: "result",
- test: test.structured_clone()
- });
- });
- add_completion_callback(
- function(tests, harness_status) {
- this_obj._dispatch({
- type: "complete",
- tests: map(tests,
- function(test) {
- return test.structured_clone();
- }),
- status: harness_status.structured_clone()
- });
- });
- };
-
- WorkerTestEnvironment.prototype.add_on_loaded_callback = function() {};
-
- WorkerTestEnvironment.prototype.test_timeout = function() {
- // Tests running in a worker don't have a default timeout. I.e. all
- // worker tests behave as if settings.explicit_timeout is true.
- return null;
- };
-
- WorkerTestEnvironment.prototype.global_scope = function() {
- return self;
- };
-
- /*
- * Dedicated web workers.
- * https://html.spec.whatwg.org/multipage/workers.html#dedicatedworkerglobalscope
- *
- * This class is used as the test_environment when testharness is running
- * inside a dedicated worker.
- */
- function DedicatedWorkerTestEnvironment() {
- WorkerTestEnvironment.call(this);
- // self is an instance of DedicatedWorkerGlobalScope which exposes
- // a postMessage() method for communicating via the message channel
- // established when the worker is created.
- this._add_message_port(self);
- }
- DedicatedWorkerTestEnvironment.prototype = Object.create(WorkerTestEnvironment.prototype);
-
- DedicatedWorkerTestEnvironment.prototype.on_tests_ready = function() {
- WorkerTestEnvironment.prototype.on_tests_ready.call(this);
- // In the absence of an onload notification, we a require dedicated
- // workers to explicitly signal when the tests are done.
- tests.wait_for_finish = true;
- };
-
- /*
- * Shared web workers.
- * https://html.spec.whatwg.org/multipage/workers.html#sharedworkerglobalscope
- *
- * This class is used as the test_environment when testharness is running
- * inside a shared web worker.
- */
- function SharedWorkerTestEnvironment() {
- WorkerTestEnvironment.call(this);
- var this_obj = this;
- // Shared workers receive message ports via the 'onconnect' event for
- // each connection.
- self.addEventListener("connect",
- function(message_event) {
- this_obj._add_message_port(message_event.source);
- });
- }
- SharedWorkerTestEnvironment.prototype = Object.create(WorkerTestEnvironment.prototype);
-
- SharedWorkerTestEnvironment.prototype.on_tests_ready = function() {
- WorkerTestEnvironment.prototype.on_tests_ready.call(this);
- // In the absence of an onload notification, we a require shared
- // workers to explicitly signal when the tests are done.
- tests.wait_for_finish = true;
- };
-
- /*
- * Service workers.
- * http://www.w3.org/TR/service-workers/
- *
- * This class is used as the test_environment when testharness is running
- * inside a service worker.
- */
- function ServiceWorkerTestEnvironment() {
- WorkerTestEnvironment.call(this);
- this.all_loaded = false;
- this.on_loaded_callback = null;
- var this_obj = this;
- self.addEventListener("message",
- function(event) {
- if (event.data.type && event.data.type === "connect") {
- this_obj._add_message_port(event.ports[0]);
- event.ports[0].start();
- }
- });
-
- // The oninstall event is received after the service worker script and
- // all imported scripts have been fetched and executed. It's the
- // equivalent of an onload event for a document. All tests should have
- // been added by the time this event is received, thus it's not
- // necessary to wait until the onactivate event.
- on_event(self, "install",
- function(event) {
- this_obj.all_loaded = true;
- if (this_obj.on_loaded_callback) {
- this_obj.on_loaded_callback();
- }
- });
- }
- ServiceWorkerTestEnvironment.prototype = Object.create(WorkerTestEnvironment.prototype);
-
- ServiceWorkerTestEnvironment.prototype.add_on_loaded_callback = function(callback) {
- if (this.all_loaded) {
- callback();
- } else {
- this.on_loaded_callback = callback;
- }
- };
-
- function create_test_environment() {
- if ('document' in self) {
- return new WindowTestEnvironment();
- }
- if ('DedicatedWorkerGlobalScope' in self &&
- self instanceof DedicatedWorkerGlobalScope) {
- return new DedicatedWorkerTestEnvironment();
- }
- if ('SharedWorkerGlobalScope' in self &&
- self instanceof SharedWorkerGlobalScope) {
- return new SharedWorkerTestEnvironment();
- }
- if ('ServiceWorkerGlobalScope' in self &&
- self instanceof ServiceWorkerGlobalScope) {
- return new ServiceWorkerTestEnvironment();
- }
- throw new Error("Unsupported test environment");
- }
-
- var test_environment = create_test_environment();
-
- function is_shared_worker(worker) {
- return 'SharedWorker' in self && worker instanceof SharedWorker;
- }
-
- function is_service_worker(worker) {
- return 'ServiceWorker' in self && worker instanceof ServiceWorker;
- }
-
- /*
- * API functions
- */
-
- function test(func, name, properties)
- {
- var test_name = name ? name : test_environment.next_default_test_name();
- properties = properties ? properties : {};
- var test_obj = new Test(test_name, properties);
- test_obj.step(func, test_obj, test_obj);
- if (test_obj.phase === test_obj.phases.STARTED) {
- test_obj.done();
- }
- }
-
- function async_test(func, name, properties)
- {
- if (typeof func !== "function") {
- properties = name;
- name = func;
- func = null;
- }
- var test_name = name ? name : test_environment.next_default_test_name();
- properties = properties ? properties : {};
- var test_obj = new Test(test_name, properties);
- if (func) {
- test_obj.step(func, test_obj, test_obj);
- }
- return test_obj;
- }
-
- function promise_test(func, name, properties) {
- var test = async_test(name, properties);
- Promise.resolve(test.step(func, test, test))
- .then(
- function() {
- test.done();
- })
- .catch(test.step_func(
- function(value) {
- if (value instanceof AssertionError) {
- throw value;
- }
- assert(false, "promise_test", null,
- "Unhandled rejection with value: ${value}", {value:value});
- }));
- }
-
- function setup(func_or_properties, maybe_properties)
- {
- var func = null;
- var properties = {};
- if (arguments.length === 2) {
- func = func_or_properties;
- properties = maybe_properties;
- } else if (func_or_properties instanceof Function) {
- func = func_or_properties;
- } else {
- properties = func_or_properties;
- }
- tests.setup(func, properties);
- test_environment.on_new_harness_properties(properties);
- }
-
- function done() {
- if (tests.tests.length === 0) {
- tests.set_file_is_test();
- }
- if (tests.file_is_test) {
- tests.tests[0].done();
- }
- tests.end_wait();
- }
-
- function generate_tests(func, args, properties) {
- forEach(args, function(x, i)
- {
- var name = x[0];
- test(function()
- {
- func.apply(this, x.slice(1));
- },
- name,
- Array.isArray(properties) ? properties[i] : properties);
- });
- }
-
- function on_event(object, event, callback)
- {
- object.addEventListener(event, callback, false);
- }
-
- expose(test, 'test');
- expose(async_test, 'async_test');
- expose(promise_test, 'promise_test');
- expose(generate_tests, 'generate_tests');
- expose(setup, 'setup');
- expose(done, 'done');
- expose(on_event, 'on_event');
-
- /*
- * Return a string truncated to the given length, with ... added at the end
- * if it was longer.
- */
- function truncate(s, len)
- {
- if (s.length > len) {
- return s.substring(0, len - 3) + "...";
- }
- return s;
- }
-
- /*
- * Return true if object is probably a Node object.
- */
- function is_node(object)
- {
- // I use duck-typing instead of instanceof, because
- // instanceof doesn't work if the node is from another window (like an
- // iframe's contentWindow):
- // http://www.w3.org/Bugs/Public/show_bug.cgi?id=12295
- if ("nodeType" in object &&
- "nodeName" in object &&
- "nodeValue" in object &&
- "childNodes" in object) {
- try {
- object.nodeType;
- } catch (e) {
- // The object is probably Node.prototype or another prototype
- // object that inherits from it, and not a Node instance.
- return false;
- }
- return true;
- }
- return false;
- }
-
- /*
- * Convert a value to a nice, human-readable string
- */
- function format_value(val, seen)
- {
- if (!seen) {
- seen = [];
- }
- if (typeof val === "object" && val !== null) {
- if (seen.indexOf(val) >= 0) {
- return "[...]";
- }
- seen.push(val);
- }
- if (Array.isArray(val)) {
- return "[" + val.map(function(x) {return format_value(x, seen);}).join(", ") + "]";
- }
-
- switch (typeof val) {
- case "string":
- val = val.replace("\\", "\\\\");
- for (var i = 0; i < 32; i++) {
- var replace = "\\";
- switch (i) {
- case 0: replace += "0"; break;
- case 1: replace += "x01"; break;
- case 2: replace += "x02"; break;
- case 3: replace += "x03"; break;
- case 4: replace += "x04"; break;
- case 5: replace += "x05"; break;
- case 6: replace += "x06"; break;
- case 7: replace += "x07"; break;
- case 8: replace += "b"; break;
- case 9: replace += "t"; break;
- case 10: replace += "n"; break;
- case 11: replace += "v"; break;
- case 12: replace += "f"; break;
- case 13: replace += "r"; break;
- case 14: replace += "x0e"; break;
- case 15: replace += "x0f"; break;
- case 16: replace += "x10"; break;
- case 17: replace += "x11"; break;
- case 18: replace += "x12"; break;
- case 19: replace += "x13"; break;
- case 20: replace += "x14"; break;
- case 21: replace += "x15"; break;
- case 22: replace += "x16"; break;
- case 23: replace += "x17"; break;
- case 24: replace += "x18"; break;
- case 25: replace += "x19"; break;
- case 26: replace += "x1a"; break;
- case 27: replace += "x1b"; break;
- case 28: replace += "x1c"; break;
- case 29: replace += "x1d"; break;
- case 30: replace += "x1e"; break;
- case 31: replace += "x1f"; break;
- }
- val = val.replace(RegExp(String.fromCharCode(i), "g"), replace);
- }
- return '"' + val.replace(/"/g, '\\"') + '"';
- case "boolean":
- case "undefined":
- return String(val);
- case "number":
- // In JavaScript, -0 === 0 and String(-0) == "0", so we have to
- // special-case.
- if (val === -0 && 1/val === -Infinity) {
- return "-0";
- }
- return String(val);
- case "object":
- if (val === null) {
- return "null";
- }
-
- // Special-case Node objects, since those come up a lot in my tests. I
- // ignore namespaces.
- if (is_node(val)) {
- switch (val.nodeType) {
- case Node.ELEMENT_NODE:
- var ret = "<" + val.localName;
- for (var i = 0; i < val.attributes.length; i++) {
- ret += " " + val.attributes[i].name + '="' + val.attributes[i].value + '"';
- }
- ret += ">" + val.innerHTML + "</" + val.localName + ">";
- return "Element node " + truncate(ret, 60);
- case Node.TEXT_NODE:
- return 'Text node "' + truncate(val.data, 60) + '"';
- case Node.PROCESSING_INSTRUCTION_NODE:
- return "ProcessingInstruction node with target " + format_value(truncate(val.target, 60)) + " and data " + format_value(truncate(val.data, 60));
- case Node.COMMENT_NODE:
- return "Comment node <!--" + truncate(val.data, 60) + "-->";
- case Node.DOCUMENT_NODE:
- return "Document node with " + val.childNodes.length + (val.childNodes.length == 1 ? " child" : " children");
- case Node.DOCUMENT_TYPE_NODE:
- return "DocumentType node";
- case Node.DOCUMENT_FRAGMENT_NODE:
- return "DocumentFragment node with " + val.childNodes.length + (val.childNodes.length == 1 ? " child" : " children");
- default:
- return "Node object of unknown type";
- }
- }
-
- /* falls through */
- default:
- return typeof val + ' "' + truncate(String(val), 60) + '"';
- }
- }
- expose(format_value, "format_value");
-
- /*
- * Assertions
- */
-
- function assert_true(actual, description)
- {
- assert(actual === true, "assert_true", description,
- "expected true got ${actual}", {actual:actual});
- }
- expose(assert_true, "assert_true");
-
- function assert_false(actual, description)
- {
- assert(actual === false, "assert_false", description,
- "expected false got ${actual}", {actual:actual});
- }
- expose(assert_false, "assert_false");
-
- function same_value(x, y) {
- if (y !== y) {
- //NaN case
- return x !== x;
- }
- if (x === 0 && y === 0) {
- //Distinguish +0 and -0
- return 1/x === 1/y;
- }
- return x === y;
- }
-
- function assert_equals(actual, expected, description)
- {
- /*
- * Test if two primitives are equal or two objects
- * are the same object
- */
- if (typeof actual != typeof expected) {
- assert(false, "assert_equals", description,
- "expected (" + typeof expected + ") ${expected} but got (" + typeof actual + ") ${actual}",
- {expected:expected, actual:actual});
- return;
- }
- assert(same_value(actual, expected), "assert_equals", description,
- "expected ${expected} but got ${actual}",
- {expected:expected, actual:actual});
- }
- expose(assert_equals, "assert_equals");
-
- function assert_not_equals(actual, expected, description)
- {
- /*
- * Test if two primitives are unequal or two objects
- * are different objects
- */
- assert(!same_value(actual, expected), "assert_not_equals", description,
- "got disallowed value ${actual}",
- {actual:actual});
- }
- expose(assert_not_equals, "assert_not_equals");
-
- function assert_in_array(actual, expected, description)
- {
- assert(expected.indexOf(actual) != -1, "assert_in_array", description,
- "value ${actual} not in array ${expected}",
- {actual:actual, expected:expected});
- }
- expose(assert_in_array, "assert_in_array");
-
- function assert_object_equals(actual, expected, description)
- {
- //This needs to be improved a great deal
- function check_equal(actual, expected, stack)
- {
- stack.push(actual);
-
- var p;
- for (p in actual) {
- assert(expected.hasOwnProperty(p), "assert_object_equals", description,
- "unexpected property ${p}", {p:p});
-
- if (typeof actual[p] === "object" && actual[p] !== null) {
- if (stack.indexOf(actual[p]) === -1) {
- check_equal(actual[p], expected[p], stack);
- }
- } else {
- assert(same_value(actual[p], expected[p]), "assert_object_equals", description,
- "property ${p} expected ${expected} got ${actual}",
- {p:p, expected:expected, actual:actual});
- }
- }
- for (p in expected) {
- assert(actual.hasOwnProperty(p),
- "assert_object_equals", description,
- "expected property ${p} missing", {p:p});
- }
- stack.pop();
- }
- check_equal(actual, expected, []);
- }
- expose(assert_object_equals, "assert_object_equals");
-
- function assert_array_equals(actual, expected, description)
- {
- assert(actual.length === expected.length,
- "assert_array_equals", description,
- "lengths differ, expected ${expected} got ${actual}",
- {expected:expected.length, actual:actual.length});
-
- for (var i = 0; i < actual.length; i++) {
- assert(actual.hasOwnProperty(i) === expected.hasOwnProperty(i),
- "assert_array_equals", description,
- "property ${i}, property expected to be ${expected} but was ${actual}",
- {i:i, expected:expected.hasOwnProperty(i) ? "present" : "missing",
- actual:actual.hasOwnProperty(i) ? "present" : "missing"});
- assert(same_value(expected[i], actual[i]),
- "assert_array_equals", description,
- "property ${i}, expected ${expected} but got ${actual}",
- {i:i, expected:expected[i], actual:actual[i]});
- }
- }
- expose(assert_array_equals, "assert_array_equals");
-
- function assert_approx_equals(actual, expected, epsilon, description)
- {
- /*
- * Test if two primitive numbers are equal withing +/- epsilon
- */
- assert(typeof actual === "number",
- "assert_approx_equals", description,
- "expected a number but got a ${type_actual}",
- {type_actual:typeof actual});
-
- assert(Math.abs(actual - expected) <= epsilon,
- "assert_approx_equals", description,
- "expected ${expected} +/- ${epsilon} but got ${actual}",
- {expected:expected, actual:actual, epsilon:epsilon});
- }
- expose(assert_approx_equals, "assert_approx_equals");
-
- function assert_less_than(actual, expected, description)
- {
- /*
- * Test if a primitive number is less than another
- */
- assert(typeof actual === "number",
- "assert_less_than", description,
- "expected a number but got a ${type_actual}",
- {type_actual:typeof actual});
-
- assert(actual < expected,
- "assert_less_than", description,
- "expected a number less than ${expected} but got ${actual}",
- {expected:expected, actual:actual});
- }
- expose(assert_less_than, "assert_less_than");
-
- function assert_greater_than(actual, expected, description)
- {
- /*
- * Test if a primitive number is greater than another
- */
- assert(typeof actual === "number",
- "assert_greater_than", description,
- "expected a number but got a ${type_actual}",
- {type_actual:typeof actual});
-
- assert(actual > expected,
- "assert_greater_than", description,
- "expected a number greater than ${expected} but got ${actual}",
- {expected:expected, actual:actual});
- }
- expose(assert_greater_than, "assert_greater_than");
-
- function assert_less_than_equal(actual, expected, description)
- {
- /*
- * Test if a primitive number is less than or equal to another
- */
- assert(typeof actual === "number",
- "assert_less_than_equal", description,
- "expected a number but got a ${type_actual}",
- {type_actual:typeof actual});
-
- assert(actual <= expected,
- "assert_less_than", description,
- "expected a number less than or equal to ${expected} but got ${actual}",
- {expected:expected, actual:actual});
- }
- expose(assert_less_than_equal, "assert_less_than_equal");
-
- function assert_greater_than_equal(actual, expected, description)
- {
- /*
- * Test if a primitive number is greater than or equal to another
- */
- assert(typeof actual === "number",
- "assert_greater_than_equal", description,
- "expected a number but got a ${type_actual}",
- {type_actual:typeof actual});
-
- assert(actual >= expected,
- "assert_greater_than_equal", description,
- "expected a number greater than or equal to ${expected} but got ${actual}",
- {expected:expected, actual:actual});
- }
- expose(assert_greater_than_equal, "assert_greater_than_equal");
-
- function assert_regexp_match(actual, expected, description) {
- /*
- * Test if a string (actual) matches a regexp (expected)
- */
- assert(expected.test(actual),
- "assert_regexp_match", description,
- "expected ${expected} but got ${actual}",
- {expected:expected, actual:actual});
- }
- expose(assert_regexp_match, "assert_regexp_match");
-
- function assert_class_string(object, class_string, description) {
- assert_equals({}.toString.call(object), "[object " + class_string + "]",
- description);
- }
- expose(assert_class_string, "assert_class_string");
-
-
- function _assert_own_property(name) {
- return function(object, property_name, description)
- {
- assert(property_name in object,
- name, description,
- "expected property ${p} missing", {p:property_name});
- };
- }
- expose(_assert_own_property("assert_exists"), "assert_exists");
- expose(_assert_own_property("assert_own_property"), "assert_own_property");
-
- function assert_not_exists(object, property_name, description)
- {
- assert(!object.hasOwnProperty(property_name),
- "assert_not_exists", description,
- "unexpected property ${p} found", {p:property_name});
- }
- expose(assert_not_exists, "assert_not_exists");
-
- function _assert_inherits(name) {
- return function (object, property_name, description)
- {
- assert(typeof object === "object",
- name, description,
- "provided value is not an object");
-
- assert("hasOwnProperty" in object,
- name, description,
- "provided value is an object but has no hasOwnProperty method");
-
- assert(!object.hasOwnProperty(property_name),
- name, description,
- "property ${p} found on object expected in prototype chain",
- {p:property_name});
-
- assert(property_name in object,
- name, description,
- "property ${p} not found in prototype chain",
- {p:property_name});
- };
- }
- expose(_assert_inherits("assert_inherits"), "assert_inherits");
- expose(_assert_inherits("assert_idl_attribute"), "assert_idl_attribute");
-
- function assert_readonly(object, property_name, description)
- {
- var initial_value = object[property_name];
- try {
- //Note that this can have side effects in the case where
- //the property has PutForwards
- object[property_name] = initial_value + "a"; //XXX use some other value here?
- assert(same_value(object[property_name], initial_value),
- "assert_readonly", description,
- "changing property ${p} succeeded",
- {p:property_name});
- } finally {
- object[property_name] = initial_value;
- }
- }
- expose(assert_readonly, "assert_readonly");
-
- function assert_throws(code, func, description)
- {
- try {
- func.call(this);
- assert(false, "assert_throws", description,
- "${func} did not throw", {func:func});
- } catch (e) {
- if (e instanceof AssertionError) {
- throw e;
- }
- if (code === null) {
- return;
- }
- if (typeof code === "object") {
- assert(typeof e == "object" && "name" in e && e.name == code.name,
- "assert_throws", description,
- "${func} threw ${actual} (${actual_name}) expected ${expected} (${expected_name})",
- {func:func, actual:e, actual_name:e.name,
- expected:code,
- expected_name:code.name});
- return;
- }
-
- var code_name_map = {
- INDEX_SIZE_ERR: 'IndexSizeError',
- HIERARCHY_REQUEST_ERR: 'HierarchyRequestError',
- WRONG_DOCUMENT_ERR: 'WrongDocumentError',
- INVALID_CHARACTER_ERR: 'InvalidCharacterError',
- NO_MODIFICATION_ALLOWED_ERR: 'NoModificationAllowedError',
- NOT_FOUND_ERR: 'NotFoundError',
- NOT_SUPPORTED_ERR: 'NotSupportedError',
- INVALID_STATE_ERR: 'InvalidStateError',
- SYNTAX_ERR: 'SyntaxError',
- INVALID_MODIFICATION_ERR: 'InvalidModificationError',
- NAMESPACE_ERR: 'NamespaceError',
- INVALID_ACCESS_ERR: 'InvalidAccessError',
- TYPE_MISMATCH_ERR: 'TypeMismatchError',
- SECURITY_ERR: 'SecurityError',
- NETWORK_ERR: 'NetworkError',
- ABORT_ERR: 'AbortError',
- URL_MISMATCH_ERR: 'URLMismatchError',
- QUOTA_EXCEEDED_ERR: 'QuotaExceededError',
- TIMEOUT_ERR: 'TimeoutError',
- INVALID_NODE_TYPE_ERR: 'InvalidNodeTypeError',
- DATA_CLONE_ERR: 'DataCloneError'
- };
-
- var name = code in code_name_map ? code_name_map[code] : code;
-
- var name_code_map = {
- IndexSizeError: 1,
- HierarchyRequestError: 3,
- WrongDocumentError: 4,
- InvalidCharacterError: 5,
- NoModificationAllowedError: 7,
- NotFoundError: 8,
- NotSupportedError: 9,
- InvalidStateError: 11,
- SyntaxError: 12,
- InvalidModificationError: 13,
- NamespaceError: 14,
- InvalidAccessError: 15,
- TypeMismatchError: 17,
- SecurityError: 18,
- NetworkError: 19,
- AbortError: 20,
- URLMismatchError: 21,
- QuotaExceededError: 22,
- TimeoutError: 23,
- InvalidNodeTypeError: 24,
- DataCloneError: 25,
-
- UnknownError: 0,
- ConstraintError: 0,
- DataError: 0,
- TransactionInactiveError: 0,
- ReadOnlyError: 0,
- VersionError: 0
- };
-
- if (!(name in name_code_map)) {
- throw new AssertionError('Test bug: unrecognized DOMException code "' + code + '" passed to assert_throws()');
- }
-
- var required_props = { code: name_code_map[name] };
-
- if (required_props.code === 0 ||
- ("name" in e && e.name !== e.name.toUpperCase() && e.name !== "DOMException")) {
- // New style exception: also test the name property.
- required_props.name = name;
- }
-
- //We'd like to test that e instanceof the appropriate interface,
- //but we can't, because we don't know what window it was created
- //in. It might be an instanceof the appropriate interface on some
- //unknown other window. TODO: Work around this somehow?
-
- assert(typeof e == "object",
- "assert_throws", description,
- "${func} threw ${e} with type ${type}, not an object",
- {func:func, e:e, type:typeof e});
-
- for (var prop in required_props) {
- assert(typeof e == "object" && prop in e && e[prop] == required_props[prop],
- "assert_throws", description,
- "${func} threw ${e} that is not a DOMException " + code + ": property ${prop} is equal to ${actual}, expected ${expected}",
- {func:func, e:e, prop:prop, actual:e[prop], expected:required_props[prop]});
- }
- }
- }
- expose(assert_throws, "assert_throws");
-
- function assert_unreached(description) {
- assert(false, "assert_unreached", description,
- "Reached unreachable code");
- }
- expose(assert_unreached, "assert_unreached");
-
- function assert_any(assert_func, actual, expected_array)
- {
- var args = [].slice.call(arguments, 3);
- var errors = [];
- var passed = false;
- forEach(expected_array,
- function(expected)
- {
- try {
- assert_func.apply(this, [actual, expected].concat(args));
- passed = true;
- } catch (e) {
- errors.push(e.message);
- }
- });
- if (!passed) {
- throw new AssertionError(errors.join("\n\n"));
- }
- }
- expose(assert_any, "assert_any");
-
- function Test(name, properties)
- {
- if (tests.file_is_test && tests.tests.length) {
- throw new Error("Tried to create a test with file_is_test");
- }
- this.name = name;
-
- this.phase = this.phases.INITIAL;
-
- this.status = this.NOTRUN;
- this.timeout_id = null;
- this.index = null;
-
- this.properties = properties;
- var timeout = properties.timeout ? properties.timeout : settings.test_timeout;
- if (timeout !== null) {
- this.timeout_length = timeout * tests.timeout_multiplier;
- } else {
- this.timeout_length = null;
- }
-
- this.message = null;
-
- this.steps = [];
-
- this.cleanup_callbacks = [];
-
- tests.push(this);
- }
-
- Test.statuses = {
- PASS:0,
- FAIL:1,
- TIMEOUT:2,
- NOTRUN:3
- };
-
- Test.prototype = merge({}, Test.statuses);
-
- Test.prototype.phases = {
- INITIAL:0,
- STARTED:1,
- HAS_RESULT:2,
- COMPLETE:3
- };
-
- Test.prototype.structured_clone = function()
- {
- if (!this._structured_clone) {
- var msg = this.message;
- msg = msg ? String(msg) : msg;
- this._structured_clone = merge({
- name:String(this.name),
- properties:merge({}, this.properties),
- }, Test.statuses);
- }
- this._structured_clone.status = this.status;
- this._structured_clone.message = this.message;
- this._structured_clone.index = this.index;
- return this._structured_clone;
- };
-
- Test.prototype.step = function(func, this_obj)
- {
- if (this.phase > this.phases.STARTED) {
- return;
- }
- this.phase = this.phases.STARTED;
- //If we don't get a result before the harness times out that will be a test timout
- this.set_status(this.TIMEOUT, "Test timed out");
-
- tests.started = true;
- tests.notify_test_state(this);
-
- if (this.timeout_id === null) {
- this.set_timeout();
- }
-
- this.steps.push(func);
-
- if (arguments.length === 1) {
- this_obj = this;
- }
-
- try {
- return func.apply(this_obj, Array.prototype.slice.call(arguments, 2));
- } catch (e) {
- if (this.phase >= this.phases.HAS_RESULT) {
- return;
- }
- var message = (typeof e === "object" && e !== null) ? e.message : e;
- if (typeof e.stack != "undefined" && typeof e.message == "string") {
- //Try to make it more informative for some exceptions, at least
- //in Gecko and WebKit. This results in a stack dump instead of
- //just errors like "Cannot read property 'parentNode' of null"
- //or "root is null". Makes it a lot longer, of course.
- message += "(stack: " + e.stack + ")";
- }
- this.set_status(this.FAIL, message);
- this.phase = this.phases.HAS_RESULT;
- this.done();
- }
- };
-
- Test.prototype.step_func = function(func, this_obj)
- {
- var test_this = this;
-
- if (arguments.length === 1) {
- this_obj = test_this;
- }
-
- return function()
- {
- return test_this.step.apply(test_this, [func, this_obj].concat(
- Array.prototype.slice.call(arguments)));
- };
- };
-
- Test.prototype.step_func_done = function(func, this_obj)
- {
- var test_this = this;
-
- if (arguments.length === 1) {
- this_obj = test_this;
- }
-
- return function()
- {
- if (func) {
- test_this.step.apply(test_this, [func, this_obj].concat(
- Array.prototype.slice.call(arguments)));
- }
- test_this.done();
- };
- };
-
- Test.prototype.unreached_func = function(description)
- {
- return this.step_func(function() {
- assert_unreached(description);
- });
- };
-
- Test.prototype.add_cleanup = function(callback) {
- this.cleanup_callbacks.push(callback);
- };
-
- Test.prototype.force_timeout = function() {
- this.set_status(this.TIMEOUT);
- this.phase = this.phases.HAS_RESULT;
- };
-
- Test.prototype.set_timeout = function()
- {
- if (this.timeout_length !== null) {
- var this_obj = this;
- this.timeout_id = setTimeout(function()
- {
- this_obj.timeout();
- }, this.timeout_length);
- }
- };
-
- Test.prototype.set_status = function(status, message)
- {
- this.status = status;
- this.message = message;
- };
-
- Test.prototype.timeout = function()
- {
- this.timeout_id = null;
- this.set_status(this.TIMEOUT, "Test timed out");
- this.phase = this.phases.HAS_RESULT;
- this.done();
- };
-
- Test.prototype.done = function()
- {
- if (this.phase == this.phases.COMPLETE) {
- return;
- }
-
- if (this.phase <= this.phases.STARTED) {
- this.set_status(this.PASS, null);
- }
-
- this.phase = this.phases.COMPLETE;
-
- clearTimeout(this.timeout_id);
- tests.result(this);
- this.cleanup();
- };
-
- Test.prototype.cleanup = function() {
- forEach(this.cleanup_callbacks,
- function(cleanup_callback) {
- cleanup_callback();
- });
- };
-
- /*
- * A RemoteTest object mirrors a Test object on a remote worker. The
- * associated RemoteWorker updates the RemoteTest object in response to
- * received events. In turn, the RemoteTest object replicates these events
- * on the local document. This allows listeners (test result reporting
- * etc..) to transparently handle local and remote events.
- */
- function RemoteTest(clone) {
- var this_obj = this;
- Object.keys(clone).forEach(
- function(key) {
- this_obj[key] = clone[key];
- });
- this.index = null;
- this.phase = this.phases.INITIAL;
- this.update_state_from(clone);
- tests.push(this);
- }
-
- RemoteTest.prototype.structured_clone = function() {
- var clone = {};
- Object.keys(this).forEach(
- function(key) {
- if (typeof(this[key]) === "object") {
- clone[key] = merge({}, this[key]);
- } else {
- clone[key] = this[key];
- }
- });
- clone.phases = merge({}, this.phases);
- return clone;
- };
-
- RemoteTest.prototype.cleanup = function() {};
- RemoteTest.prototype.phases = Test.prototype.phases;
- RemoteTest.prototype.update_state_from = function(clone) {
- this.status = clone.status;
- this.message = clone.message;
- if (this.phase === this.phases.INITIAL) {
- this.phase = this.phases.STARTED;
- }
- };
- RemoteTest.prototype.done = function() {
- this.phase = this.phases.COMPLETE;
- }
-
- /*
- * A RemoteWorker listens for test events from a worker. These events are
- * then used to construct and maintain RemoteTest objects that mirror the
- * tests running on the remote worker.
- */
- function RemoteWorker(worker) {
- this.running = true;
- this.tests = new Array();
-
- var this_obj = this;
- worker.onerror = function(error) { this_obj.worker_error(error); };
-
- var message_port;
-
- if (is_service_worker(worker)) {
- // The ServiceWorker's implicit MessagePort is currently not
- // reliably accessible from the ServiceWorkerGlobalScope due to
- // Blink setting MessageEvent.source to null for messages sent via
- // ServiceWorker.postMessage(). Until that's resolved, create an
- // explicit MessageChannel and pass one end to the worker.
- var message_channel = new MessageChannel();
- message_port = message_channel.port1;
- message_port.start();
- worker.postMessage({type: "connect"}, [message_channel.port2]);
- } else if (is_shared_worker(worker)) {
- message_port = worker.port;
- } else {
- message_port = worker;
- }
-
- // Keeping a reference to the worker until worker_done() is seen
- // prevents the Worker object and its MessageChannel from going away
- // before all the messages are dispatched.
- this.worker = worker;
-
- message_port.onmessage =
- function(message) {
- if (this_obj.running && (message.data.type in this_obj.message_handlers)) {
- this_obj.message_handlers[message.data.type].call(this_obj, message.data);
- }
- };
- }
-
- RemoteWorker.prototype.worker_error = function(error) {
- var message = error.message || String(error);
- var filename = (error.filename ? " " + error.filename: "");
- // FIXME: Display worker error states separately from main document
- // error state.
- this.worker_done({
- status: {
- status: tests.status.ERROR,
- message: "Error in worker" + filename + ": " + message
- }
- });
- error.preventDefault();
- };
-
- RemoteWorker.prototype.test_state = function(data) {
- var remote_test = this.tests[data.test.index];
- if (!remote_test) {
- remote_test = new RemoteTest(data.test);
- this.tests[data.test.index] = remote_test;
- }
- remote_test.update_state_from(data.test);
- tests.notify_test_state(remote_test);
- };
-
- RemoteWorker.prototype.test_done = function(data) {
- var remote_test = this.tests[data.test.index];
- remote_test.update_state_from(data.test);
- remote_test.done();
- tests.result(remote_test);
- };
-
- RemoteWorker.prototype.worker_done = function(data) {
- if (tests.status.status === null &&
- data.status.status !== data.status.OK) {
- tests.status.status = data.status.status;
- tests.status.message = data.status.message;
- }
- this.running = false;
- this.worker = null;
- if (tests.all_done()) {
- tests.complete();
- }
- };
-
- RemoteWorker.prototype.message_handlers = {
- test_state: RemoteWorker.prototype.test_state,
- result: RemoteWorker.prototype.test_done,
- complete: RemoteWorker.prototype.worker_done
- };
-
- /*
- * Harness
- */
-
- function TestsStatus()
- {
- this.status = null;
- this.message = null;
- }
-
- TestsStatus.statuses = {
- OK:0,
- ERROR:1,
- TIMEOUT:2
- };
-
- TestsStatus.prototype = merge({}, TestsStatus.statuses);
-
- TestsStatus.prototype.structured_clone = function()
- {
- if (!this._structured_clone) {
- var msg = this.message;
- msg = msg ? String(msg) : msg;
- this._structured_clone = merge({
- status:this.status,
- message:msg
- }, TestsStatus.statuses);
- }
- return this._structured_clone;
- };
-
- function Tests()
- {
- this.tests = [];
- this.num_pending = 0;
-
- this.phases = {
- INITIAL:0,
- SETUP:1,
- HAVE_TESTS:2,
- HAVE_RESULTS:3,
- COMPLETE:4
- };
- this.phase = this.phases.INITIAL;
-
- this.properties = {};
-
- this.wait_for_finish = false;
- this.processing_callbacks = false;
-
- this.allow_uncaught_exception = false;
-
- this.file_is_test = false;
-
- this.timeout_multiplier = 1;
- this.timeout_length = test_environment.test_timeout();
- this.timeout_id = null;
-
- this.start_callbacks = [];
- this.test_state_callbacks = [];
- this.test_done_callbacks = [];
- this.all_done_callbacks = [];
-
- this.pending_workers = [];
-
- this.status = new TestsStatus();
-
- var this_obj = this;
-
- test_environment.add_on_loaded_callback(function() {
- if (this_obj.all_done()) {
- this_obj.complete();
- }
- });
-
- this.set_timeout();
- }
-
- Tests.prototype.setup = function(func, properties)
- {
- if (this.phase >= this.phases.HAVE_RESULTS) {
- return;
- }
-
- if (this.phase < this.phases.SETUP) {
- this.phase = this.phases.SETUP;
- }
-
- this.properties = properties;
-
- for (var p in properties) {
- if (properties.hasOwnProperty(p)) {
- var value = properties[p];
- if (p == "allow_uncaught_exception") {
- this.allow_uncaught_exception = value;
- } else if (p == "explicit_done" && value) {
- this.wait_for_finish = true;
- } else if (p == "explicit_timeout" && value) {
- this.timeout_length = null;
- if (this.timeout_id)
- {
- clearTimeout(this.timeout_id);
- }
- } else if (p == "timeout_multiplier") {
- this.timeout_multiplier = value;
- }
- }
- }
-
- if (func) {
- try {
- func();
- } catch (e) {
- this.status.status = this.status.ERROR;
- this.status.message = String(e);
- }
- }
- this.set_timeout();
- };
-
- Tests.prototype.set_file_is_test = function() {
- if (this.tests.length > 0) {
- throw new Error("Tried to set file as test after creating a test");
- }
- this.wait_for_finish = true;
- this.file_is_test = true;
- // Create the test, which will add it to the list of tests
- async_test();
- };
-
- Tests.prototype.set_timeout = function() {
- var this_obj = this;
- clearTimeout(this.timeout_id);
- if (this.timeout_length !== null) {
- this.timeout_id = setTimeout(function() {
- this_obj.timeout();
- }, this.timeout_length);
- }
- };
-
- Tests.prototype.timeout = function() {
- if (this.status.status === null) {
- this.status.status = this.status.TIMEOUT;
- }
- this.complete();
- };
-
- Tests.prototype.end_wait = function()
- {
- this.wait_for_finish = false;
- if (this.all_done()) {
- this.complete();
- }
- };
-
- Tests.prototype.push = function(test)
- {
- if (this.phase < this.phases.HAVE_TESTS) {
- this.start();
- }
- this.num_pending++;
- test.index = this.tests.push(test);
- this.notify_test_state(test);
- };
-
- Tests.prototype.notify_test_state = function(test) {
- var this_obj = this;
- forEach(this.test_state_callbacks,
- function(callback) {
- callback(test, this_obj);
- });
- };
-
- Tests.prototype.all_done = function() {
- return (this.tests.length > 0 && test_environment.all_loaded &&
- this.num_pending === 0 && !this.wait_for_finish &&
- !this.processing_callbacks &&
- !this.pending_workers.some(function(w) { return w.running; }));
- };
-
- Tests.prototype.start = function() {
- this.phase = this.phases.HAVE_TESTS;
- this.notify_start();
- };
-
- Tests.prototype.notify_start = function() {
- var this_obj = this;
- forEach (this.start_callbacks,
- function(callback)
- {
- callback(this_obj.properties);
- });
- };
-
- Tests.prototype.result = function(test)
- {
- if (this.phase > this.phases.HAVE_RESULTS) {
- return;
- }
- this.phase = this.phases.HAVE_RESULTS;
- this.num_pending--;
- this.notify_result(test);
- };
-
- Tests.prototype.notify_result = function(test) {
- var this_obj = this;
- this.processing_callbacks = true;
- forEach(this.test_done_callbacks,
- function(callback)
- {
- callback(test, this_obj);
- });
- this.processing_callbacks = false;
- if (this_obj.all_done()) {
- this_obj.complete();
- }
- };
-
- Tests.prototype.complete = function() {
- if (this.phase === this.phases.COMPLETE) {
- return;
- }
- this.phase = this.phases.COMPLETE;
- var this_obj = this;
- this.tests.forEach(
- function(x)
- {
- if (x.phase < x.phases.COMPLETE) {
- this_obj.notify_result(x);
- x.cleanup();
- x.phase = x.phases.COMPLETE;
- }
- }
- );
- this.notify_complete();
- };
-
- Tests.prototype.notify_complete = function() {
- var this_obj = this;
- if (this.status.status === null) {
- this.status.status = this.status.OK;
- }
-
- forEach (this.all_done_callbacks,
- function(callback)
- {
- callback(this_obj.tests, this_obj.status);
- });
- };
-
- Tests.prototype.fetch_tests_from_worker = function(worker) {
- if (this.phase >= this.phases.COMPLETE) {
- return;
- }
-
- this.pending_workers.push(new RemoteWorker(worker));
- };
-
- function fetch_tests_from_worker(port) {
- tests.fetch_tests_from_worker(port);
- }
- expose(fetch_tests_from_worker, 'fetch_tests_from_worker');
-
- function timeout() {
- if (tests.timeout_length === null) {
- tests.timeout();
- }
- }
- expose(timeout, 'timeout');
-
- function add_start_callback(callback) {
- tests.start_callbacks.push(callback);
- }
-
- function add_test_state_callback(callback) {
- tests.test_state_callbacks.push(callback);
- }
-
- function add_result_callback(callback)
- {
- tests.test_done_callbacks.push(callback);
- }
-
- function add_completion_callback(callback)
- {
- tests.all_done_callbacks.push(callback);
- }
-
- expose(add_start_callback, 'add_start_callback');
- expose(add_test_state_callback, 'add_test_state_callback');
- expose(add_result_callback, 'add_result_callback');
- expose(add_completion_callback, 'add_completion_callback');
-
- /*
- * Output listener
- */
-
- function Output() {
- this.output_document = document;
- this.output_node = null;
- this.enabled = settings.output;
- this.phase = this.INITIAL;
- }
-
- Output.prototype.INITIAL = 0;
- Output.prototype.STARTED = 1;
- Output.prototype.HAVE_RESULTS = 2;
- Output.prototype.COMPLETE = 3;
-
- Output.prototype.setup = function(properties) {
- if (this.phase > this.INITIAL) {
- return;
- }
-
- //If output is disabled in testharnessreport.js the test shouldn't be
- //able to override that
- this.enabled = this.enabled && (properties.hasOwnProperty("output") ?
- properties.output : settings.output);
- };
-
- Output.prototype.init = function(properties) {
- if (this.phase >= this.STARTED) {
- return;
- }
- if (properties.output_document) {
- this.output_document = properties.output_document;
- } else {
- this.output_document = document;
- }
- this.phase = this.STARTED;
- };
-
- Output.prototype.resolve_log = function() {
- var output_document;
- if (typeof this.output_document === "function") {
- output_document = this.output_document.apply(undefined);
- } else {
- output_document = this.output_document;
- }
- if (!output_document) {
- return;
- }
- var node = output_document.getElementById("log");
- if (!node) {
- if (!document.body || document.readyState == "loading") {
- return;
- }
- node = output_document.createElement("div");
- node.id = "log";
- output_document.body.appendChild(node);
- }
- this.output_document = output_document;
- this.output_node = node;
- };
-
- Output.prototype.show_status = function() {
- if (this.phase < this.STARTED) {
- this.init();
- }
- if (!this.enabled) {
- return;
- }
- if (this.phase < this.HAVE_RESULTS) {
- this.resolve_log();
- this.phase = this.HAVE_RESULTS;
- }
- var done_count = tests.tests.length - tests.num_pending;
- if (this.output_node) {
- if (done_count < 100 ||
- (done_count < 1000 && done_count % 100 === 0) ||
- done_count % 1000 === 0) {
- this.output_node.textContent = "Running, " +
- done_count + " complete, " +
- tests.num_pending + " remain";
- }
- }
- };
-
- Output.prototype.show_results = function (tests, harness_status) {
- if (this.phase >= this.COMPLETE) {
- return;
- }
- if (!this.enabled) {
- return;
- }
- if (!this.output_node) {
- this.resolve_log();
- }
- this.phase = this.COMPLETE;
-
- var log = this.output_node;
- if (!log) {
- return;
- }
- var output_document = this.output_document;
-
- while (log.lastChild) {
- log.removeChild(log.lastChild);
- }
-
- var script_prefix = null;
- var scripts = document.getElementsByTagName("script");
- for (var i = 0; i < scripts.length; i++) {
- var src;
- if (scripts[i].src) {
- src = scripts[i].src;
- } else if (scripts[i].href) {
- //SVG case
- src = scripts[i].href.baseVal;
- }
-
- var matches = src && src.match(/^(.*\/|)testharness\.js$/);
- if (matches) {
- script_prefix = matches[1];
- break;
- }
- }
-
- if (script_prefix !== null) {
- var stylesheet = output_document.createElementNS(xhtml_ns, "link");
- stylesheet.setAttribute("rel", "stylesheet");
- stylesheet.setAttribute("href", script_prefix + "testharness.css");
- var heads = output_document.getElementsByTagName("head");
- if (heads.length) {
- heads[0].appendChild(stylesheet);
- }
- }
-
- var status_text_harness = {};
- status_text_harness[harness_status.OK] = "OK";
- status_text_harness[harness_status.ERROR] = "Error";
- status_text_harness[harness_status.TIMEOUT] = "Timeout";
-
- var status_text = {};
- status_text[Test.prototype.PASS] = "Pass";
- status_text[Test.prototype.FAIL] = "Fail";
- status_text[Test.prototype.TIMEOUT] = "Timeout";
- status_text[Test.prototype.NOTRUN] = "Not Run";
-
- var status_number = {};
- forEach(tests,
- function(test) {
- var status = status_text[test.status];
- if (status_number.hasOwnProperty(status)) {
- status_number[status] += 1;
- } else {
- status_number[status] = 1;
- }
- });
-
- function status_class(status)
- {
- return status.replace(/\s/g, '').toLowerCase();
- }
-
- var summary_template = ["section", {"id":"summary"},
- ["h2", {}, "Summary"],
- function()
- {
-
- var status = status_text_harness[harness_status.status];
- var rv = [["section", {},
- ["p", {},
- "Harness status: ",
- ["span", {"class":status_class(status)},
- status
- ],
- ]
- ]];
-
- if (harness_status.status === harness_status.ERROR) {
- rv[0].push(["pre", {}, harness_status.message]);
- }
- return rv;
- },
- ["p", {}, "Found ${num_tests} tests"],
- function() {
- var rv = [["div", {}]];
- var i = 0;
- while (status_text.hasOwnProperty(i)) {
- if (status_number.hasOwnProperty(status_text[i])) {
- var status = status_text[i];
- rv[0].push(["div", {"class":status_class(status)},
- ["label", {},
- ["input", {type:"checkbox", checked:"checked"}],
- status_number[status] + " " + status]]);
- }
- i++;
- }
- return rv;
- },
- ];
-
- log.appendChild(render(summary_template, {num_tests:tests.length}, output_document));
-
- forEach(output_document.querySelectorAll("section#summary label"),
- function(element)
- {
- on_event(element, "click",
- function(e)
- {
- if (output_document.getElementById("results") === null) {
- e.preventDefault();
- return;
- }
- var result_class = element.parentNode.getAttribute("class");
- var style_element = output_document.querySelector("style#hide-" + result_class);
- var input_element = element.querySelector("input");
- if (!style_element && !input_element.checked) {
- style_element = output_document.createElementNS(xhtml_ns, "style");
- style_element.id = "hide-" + result_class;
- style_element.textContent = "table#results > tbody > tr."+result_class+"{display:none}";
- output_document.body.appendChild(style_element);
- } else if (style_element && input_element.checked) {
- style_element.parentNode.removeChild(style_element);
- }
- });
- });
-
- // This use of innerHTML plus manual escaping is not recommended in
- // general, but is necessary here for performance. Using textContent
- // on each individual <td> adds tens of seconds of execution time for
- // large test suites (tens of thousands of tests).
- function escape_html(s)
- {
- return s.replace(/\&/g, "&")
- .replace(/</g, "<")
- .replace(/"/g, """)
- .replace(/'/g, "'");
- }
-
- function has_assertions()
- {
- for (var i = 0; i < tests.length; i++) {
- if (tests[i].properties.hasOwnProperty("assert")) {
- return true;
- }
- }
- return false;
- }
-
- function get_assertion(test)
- {
- if (test.properties.hasOwnProperty("assert")) {
- if (Array.isArray(test.properties.assert)) {
- return test.properties.assert.join(' ');
- }
- return test.properties.assert;
- }
- return '';
- }
-
- log.appendChild(document.createElementNS(xhtml_ns, "section"));
- var assertions = has_assertions();
- var html = "<h2>Details</h2><table id='results' " + (assertions ? "class='assertions'" : "" ) + ">" +
- "<thead><tr><th>Result</th><th>Test Name</th>" +
- (assertions ? "<th>Assertion</th>" : "") +
- "<th>Message</th></tr></thead>" +
- "<tbody>";
- for (var i = 0; i < tests.length; i++) {
- html += '<tr class="' +
- escape_html(status_class(status_text[tests[i].status])) +
- '"><td>' +
- escape_html(status_text[tests[i].status]) +
- "</td><td>" +
- escape_html(tests[i].name) +
- "</td><td>" +
- (assertions ? escape_html(get_assertion(tests[i])) + "</td><td>" : "") +
- escape_html(tests[i].message ? tests[i].message : " ") +
- "</td></tr>";
- }
- html += "</tbody></table>";
- try {
- log.lastChild.innerHTML = html;
- } catch (e) {
- log.appendChild(document.createElementNS(xhtml_ns, "p"))
- .textContent = "Setting innerHTML for the log threw an exception.";
- log.appendChild(document.createElementNS(xhtml_ns, "pre"))
- .textContent = html;
- }
- };
-
- /*
- * Template code
- *
- * A template is just a javascript structure. An element is represented as:
- *
- * [tag_name, {attr_name:attr_value}, child1, child2]
- *
- * the children can either be strings (which act like text nodes), other templates or
- * functions (see below)
- *
- * A text node is represented as
- *
- * ["{text}", value]
- *
- * String values have a simple substitution syntax; ${foo} represents a variable foo.
- *
- * It is possible to embed logic in templates by using a function in a place where a
- * node would usually go. The function must either return part of a template or null.
- *
- * In cases where a set of nodes are required as output rather than a single node
- * with children it is possible to just use a list
- * [node1, node2, node3]
- *
- * Usage:
- *
- * render(template, substitutions) - take a template and an object mapping
- * variable names to parameters and return either a DOM node or a list of DOM nodes
- *
- * substitute(template, substitutions) - take a template and variable mapping object,
- * make the variable substitutions and return the substituted template
- *
- */
-
- function is_single_node(template)
- {
- return typeof template[0] === "string";
- }
-
- function substitute(template, substitutions)
- {
- if (typeof template === "function") {
- var replacement = template(substitutions);
- if (!replacement) {
- return null;
- }
-
- return substitute(replacement, substitutions);
- }
-
- if (is_single_node(template)) {
- return substitute_single(template, substitutions);
- }
-
- return filter(map(template, function(x) {
- return substitute(x, substitutions);
- }), function(x) {return x !== null;});
- }
-
- function substitute_single(template, substitutions)
- {
- var substitution_re = /\$\{([^ }]*)\}/g;
-
- function do_substitution(input) {
- var components = input.split(substitution_re);
- var rv = [];
- for (var i = 0; i < components.length; i += 2) {
- rv.push(components[i]);
- if (components[i + 1]) {
- rv.push(String(substitutions[components[i + 1]]));
- }
- }
- return rv;
- }
-
- function substitute_attrs(attrs, rv)
- {
- rv[1] = {};
- for (var name in template[1]) {
- if (attrs.hasOwnProperty(name)) {
- var new_name = do_substitution(name).join("");
- var new_value = do_substitution(attrs[name]).join("");
- rv[1][new_name] = new_value;
- }
- }
- }
-
- function substitute_children(children, rv)
- {
- for (var i = 0; i < children.length; i++) {
- if (children[i] instanceof Object) {
- var replacement = substitute(children[i], substitutions);
- if (replacement !== null) {
- if (is_single_node(replacement)) {
- rv.push(replacement);
- } else {
- extend(rv, replacement);
- }
- }
- } else {
- extend(rv, do_substitution(String(children[i])));
- }
- }
- return rv;
- }
-
- var rv = [];
- rv.push(do_substitution(String(template[0])).join(""));
-
- if (template[0] === "{text}") {
- substitute_children(template.slice(1), rv);
- } else {
- substitute_attrs(template[1], rv);
- substitute_children(template.slice(2), rv);
- }
-
- return rv;
- }
-
- function make_dom_single(template, doc)
- {
- var output_document = doc || document;
- var element;
- if (template[0] === "{text}") {
- element = output_document.createTextNode("");
- for (var i = 1; i < template.length; i++) {
- element.data += template[i];
- }
- } else {
- element = output_document.createElementNS(xhtml_ns, template[0]);
- for (var name in template[1]) {
- if (template[1].hasOwnProperty(name)) {
- element.setAttribute(name, template[1][name]);
- }
- }
- for (var i = 2; i < template.length; i++) {
- if (template[i] instanceof Object) {
- var sub_element = make_dom(template[i]);
- element.appendChild(sub_element);
- } else {
- var text_node = output_document.createTextNode(template[i]);
- element.appendChild(text_node);
- }
- }
- }
-
- return element;
- }
-
- function make_dom(template, substitutions, output_document)
- {
- if (is_single_node(template)) {
- return make_dom_single(template, output_document);
- }
-
- return map(template, function(x) {
- return make_dom_single(x, output_document);
- });
- }
-
- function render(template, substitutions, output_document)
- {
- return make_dom(substitute(template, substitutions), output_document);
- }
-
- /*
- * Utility funcions
- */
- function assert(expected_true, function_name, description, error, substitutions)
- {
- if (tests.tests.length === 0) {
- tests.set_file_is_test();
- }
- if (expected_true !== true) {
- var msg = make_message(function_name, description,
- error, substitutions);
- throw new AssertionError(msg);
- }
- }
-
- function AssertionError(message)
- {
- this.message = message;
- }
-
- AssertionError.prototype.toString = function() {
- return this.message;
- };
-
- function make_message(function_name, description, error, substitutions)
- {
- for (var p in substitutions) {
- if (substitutions.hasOwnProperty(p)) {
- substitutions[p] = format_value(substitutions[p]);
- }
- }
- var node_form = substitute(["{text}", "${function_name}: ${description}" + error],
- merge({function_name:function_name,
- description:(description?description + " ":"")},
- substitutions));
- return node_form.slice(1).join("");
- }
-
- function filter(array, callable, thisObj) {
- var rv = [];
- for (var i = 0; i < array.length; i++) {
- if (array.hasOwnProperty(i)) {
- var pass = callable.call(thisObj, array[i], i, array);
- if (pass) {
- rv.push(array[i]);
- }
- }
- }
- return rv;
- }
-
- function map(array, callable, thisObj)
- {
- var rv = [];
- rv.length = array.length;
- for (var i = 0; i < array.length; i++) {
- if (array.hasOwnProperty(i)) {
- rv[i] = callable.call(thisObj, array[i], i, array);
- }
- }
- return rv;
- }
-
- function extend(array, items)
- {
- Array.prototype.push.apply(array, items);
- }
-
- function forEach (array, callback, thisObj)
- {
- for (var i = 0; i < array.length; i++) {
- if (array.hasOwnProperty(i)) {
- callback.call(thisObj, array[i], i, array);
- }
- }
- }
-
- function merge(a,b)
- {
- var rv = {};
- var p;
- for (p in a) {
- rv[p] = a[p];
- }
- for (p in b) {
- rv[p] = b[p];
- }
- return rv;
- }
-
- function expose(object, name)
- {
- var components = name.split(".");
- var target = test_environment.global_scope();
- for (var i = 0; i < components.length - 1; i++) {
- if (!(components[i] in target)) {
- target[components[i]] = {};
- }
- target = target[components[i]];
- }
- target[components[components.length - 1]] = object;
- }
-
- function is_same_origin(w) {
- try {
- 'random_prop' in w;
- return true;
- } catch (e) {
- return false;
- }
- }
-
- function supports_post_message(w)
- {
- var supports;
- var type;
- // Given IE implements postMessage across nested iframes but not across
- // windows or tabs, you can't infer cross-origin communication from the presence
- // of postMessage on the current window object only.
- //
- // Touching the postMessage prop on a window can throw if the window is
- // not from the same origin AND post message is not supported in that
- // browser. So just doing an existence test here won't do, you also need
- // to wrap it in a try..cacth block.
- try {
- type = typeof w.postMessage;
- if (type === "function") {
- supports = true;
- }
-
- // IE8 supports postMessage, but implements it as a host object which
- // returns "object" as its `typeof`.
- else if (type === "object") {
- supports = true;
- }
-
- // This is the case where postMessage isn't supported AND accessing a
- // window property across origins does NOT throw (e.g. old Safari browser).
- else {
- supports = false;
- }
- } catch (e) {
- // This is the case where postMessage isn't supported AND accessing a
- // window property across origins throws (e.g. old Firefox browser).
- supports = false;
- }
- return supports;
- }
-
- /**
- * Setup globals
- */
-
- var tests = new Tests();
-
- addEventListener("error", function(e) {
- if (tests.file_is_test) {
- var test = tests.tests[0];
- if (test.phase >= test.phases.HAS_RESULT) {
- return;
- }
- var message = e.message;
- test.set_status(test.FAIL, message);
- test.phase = test.phases.HAS_RESULT;
- test.done();
- done();
- } else if (!tests.allow_uncaught_exception) {
- tests.status.status = tests.status.ERROR;
- tests.status.message = e.message;
- }
- });
-
- test_environment.on_tests_ready();
-
-})();
-// vim: set expandtab shiftwidth=4 tabstop=4:
+++ /dev/null
-/*global add_completion_callback, setup */
-/*
- * This file is intended for vendors to implement
- * code needed to integrate testharness.js tests with their own test systems.
- *
- * The default implementation extracts metadata from the tests and validates
- * it against the cached version that should be present in the test source
- * file. If the cache is not found or is out of sync, source code suitable for
- * caching the metadata is optionally generated.
- *
- * The cached metadata is present for extraction by test processing tools that
- * are unable to execute javascript.
- *
- * Metadata is attached to tests via the properties parameter in the test
- * constructor. See testharness.js for details.
- *
- * Typically test system integration will attach callbacks when each test has
- * run, using add_result_callback(callback(test)), or when the whole test file
- * has completed, using
- * add_completion_callback(callback(tests, harness_status)).
- *
- * For more documentation about the callback functions and the
- * parameters they are called with see testharness.js
- */
-
-
-
-var metadata_generator = {
-
- currentMetadata: {},
- cachedMetadata: false,
- metadataProperties: ['help', 'assert', 'author'],
-
- error: function(message) {
- var messageElement = document.createElement('p');
- messageElement.setAttribute('class', 'error');
- this.appendText(messageElement, message);
-
- var summary = document.getElementById('summary');
- if (summary) {
- summary.parentNode.insertBefore(messageElement, summary);
- }
- else {
- document.body.appendChild(messageElement);
- }
- },
-
- /**
- * Ensure property value has contact information
- */
- validateContact: function(test, propertyName) {
- var result = true;
- var value = test.properties[propertyName];
- var values = Array.isArray(value) ? value : [value];
- for (var index = 0; index < values.length; index++) {
- value = values[index];
- var re = /(\S+)(\s*)<(.*)>(.*)/;
- if (! re.test(value)) {
- re = /(\S+)(\s+)(http[s]?:\/\/)(.*)/;
- if (! re.test(value)) {
- this.error('Metadata property "' + propertyName +
- '" for test: "' + test.name +
- '" must have name and contact information ' +
- '("name <email>" or "name http(s)://")');
- result = false;
- }
- }
- }
- return result;
- },
-
- /**
- * Extract metadata from test object
- */
- extractFromTest: function(test) {
- var testMetadata = {};
- // filter out metadata from other properties in test
- for (var metaIndex = 0; metaIndex < this.metadataProperties.length;
- metaIndex++) {
- var meta = this.metadataProperties[metaIndex];
- if (test.properties.hasOwnProperty(meta)) {
- if ('author' == meta) {
- this.validateContact(test, meta);
- }
- testMetadata[meta] = test.properties[meta];
- }
- }
- return testMetadata;
- },
-
- /**
- * Compare cached metadata to extracted metadata
- */
- validateCache: function() {
- for (var testName in this.currentMetadata) {
- if (! this.cachedMetadata.hasOwnProperty(testName)) {
- return false;
- }
- var testMetadata = this.currentMetadata[testName];
- var cachedTestMetadata = this.cachedMetadata[testName];
- delete this.cachedMetadata[testName];
-
- for (var metaIndex = 0; metaIndex < this.metadataProperties.length;
- metaIndex++) {
- var meta = this.metadataProperties[metaIndex];
- if (cachedTestMetadata.hasOwnProperty(meta) &&
- testMetadata.hasOwnProperty(meta)) {
- if (Array.isArray(cachedTestMetadata[meta])) {
- if (! Array.isArray(testMetadata[meta])) {
- return false;
- }
- if (cachedTestMetadata[meta].length ==
- testMetadata[meta].length) {
- for (var index = 0;
- index < cachedTestMetadata[meta].length;
- index++) {
- if (cachedTestMetadata[meta][index] !=
- testMetadata[meta][index]) {
- return false;
- }
- }
- }
- else {
- return false;
- }
- }
- else {
- if (Array.isArray(testMetadata[meta])) {
- return false;
- }
- if (cachedTestMetadata[meta] != testMetadata[meta]) {
- return false;
- }
- }
- }
- else if (cachedTestMetadata.hasOwnProperty(meta) ||
- testMetadata.hasOwnProperty(meta)) {
- return false;
- }
- }
- }
- for (var testName in this.cachedMetadata) {
- return false;
- }
- return true;
- },
-
- appendText: function(elemement, text) {
- elemement.appendChild(document.createTextNode(text));
- },
-
- jsonifyArray: function(arrayValue, indent) {
- var output = '[';
-
- if (1 == arrayValue.length) {
- output += JSON.stringify(arrayValue[0]);
- }
- else {
- for (var index = 0; index < arrayValue.length; index++) {
- if (0 < index) {
- output += ',\n ' + indent;
- }
- output += JSON.stringify(arrayValue[index]);
- }
- }
- output += ']';
- return output;
- },
-
- jsonifyObject: function(objectValue, indent) {
- var output = '{';
- var value;
-
- var count = 0;
- for (var property in objectValue) {
- ++count;
- if (Array.isArray(objectValue[property]) ||
- ('object' == typeof(value))) {
- ++count;
- }
- }
- if (1 == count) {
- for (var property in objectValue) {
- output += ' "' + property + '": ' +
- JSON.stringify(objectValue[property]) +
- ' ';
- }
- }
- else {
- var first = true;
- for (var property in objectValue) {
- if (! first) {
- output += ',';
- }
- first = false;
- output += '\n ' + indent + '"' + property + '": ';
- value = objectValue[property];
- if (Array.isArray(value)) {
- output += this.jsonifyArray(value, indent +
- ' '.substr(0, 5 + property.length));
- }
- else if ('object' == typeof(value)) {
- output += this.jsonifyObject(value, indent + ' ');
- }
- else {
- output += JSON.stringify(value);
- }
- }
- if (1 < output.length) {
- output += '\n' + indent;
- }
- }
- output += '}';
- return output;
- },
-
- /**
- * Generate javascript source code for captured metadata
- * Metadata is in pretty-printed JSON format
- */
- generateSource: function() {
- var source =
- '<script id="metadata_cache">/*\n' +
- this.jsonifyObject(this.currentMetadata, '') + '\n' +
- '*/</script>\n';
- return source;
- },
-
- /**
- * Add element containing metadata source code
- */
- addSourceElement: function(event) {
- var sourceWrapper = document.createElement('div');
- sourceWrapper.setAttribute('id', 'metadata_source');
-
- var instructions = document.createElement('p');
- if (this.cachedMetadata) {
- this.appendText(instructions,
- 'Replace the existing <script id="metadata_cache"> element ' +
- 'in the test\'s <head> with the following:');
- }
- else {
- this.appendText(instructions,
- 'Copy the following into the <head> element of the test ' +
- 'or the test\'s metadata sidecar file:');
- }
- sourceWrapper.appendChild(instructions);
-
- var sourceElement = document.createElement('pre');
- this.appendText(sourceElement, this.generateSource());
-
- sourceWrapper.appendChild(sourceElement);
-
- var messageElement = document.getElementById('metadata_issue');
- messageElement.parentNode.insertBefore(sourceWrapper,
- messageElement.nextSibling);
- messageElement.parentNode.removeChild(messageElement);
-
- (event.preventDefault) ? event.preventDefault() :
- event.returnValue = false;
- },
-
- /**
- * Extract the metadata cache from the cache element if present
- */
- getCachedMetadata: function() {
- var cacheElement = document.getElementById('metadata_cache');
-
- if (cacheElement) {
- var cacheText = cacheElement.firstChild.nodeValue;
- var openBrace = cacheText.indexOf('{');
- var closeBrace = cacheText.lastIndexOf('}');
- if ((-1 < openBrace) && (-1 < closeBrace)) {
- cacheText = cacheText.slice(openBrace, closeBrace + 1);
- try {
- this.cachedMetadata = JSON.parse(cacheText);
- }
- catch (exc) {
- this.cachedMetadata = 'Invalid JSON in Cached metadata. ';
- }
- }
- else {
- this.cachedMetadata = 'Metadata not found in cache element. ';
- }
- }
- },
-
- /**
- * Main entry point, extract metadata from tests, compare to cached version
- * if present.
- * If cache not present or differs from extrated metadata, generate an error
- */
- process: function(tests) {
- for (var index = 0; index < tests.length; index++) {
- var test = tests[index];
- if (this.currentMetadata.hasOwnProperty(test.name)) {
- this.error('Duplicate test name: ' + test.name);
- }
- else {
- this.currentMetadata[test.name] = this.extractFromTest(test);
- }
- }
-
- this.getCachedMetadata();
-
- var message = null;
- var messageClass = 'warning';
- var showSource = false;
-
- if (0 === tests.length) {
- if (this.cachedMetadata) {
- message = 'Cached metadata present but no tests. ';
- }
- }
- else if (1 === tests.length) {
- if (this.cachedMetadata) {
- message = 'Single test files should not have cached metadata. ';
- }
- else {
- var testMetadata = this.currentMetadata[tests[0].name];
- for (var meta in testMetadata) {
- if (testMetadata.hasOwnProperty(meta)) {
- message = 'Single tests should not have metadata. ' +
- 'Move metadata to <head>. ';
- break;
- }
- }
- }
- }
- else {
- if (this.cachedMetadata) {
- messageClass = 'error';
- if ('string' == typeof(this.cachedMetadata)) {
- message = this.cachedMetadata;
- showSource = true;
- }
- else if (! this.validateCache()) {
- message = 'Cached metadata out of sync. ';
- showSource = true;
- }
- }
- }
-
- if (message) {
- var messageElement = document.createElement('p');
- messageElement.setAttribute('id', 'metadata_issue');
- messageElement.setAttribute('class', messageClass);
- this.appendText(messageElement, message);
-
- if (showSource) {
- var link = document.createElement('a');
- this.appendText(link, 'Click for source code.');
- link.setAttribute('href', '#');
- link.setAttribute('onclick',
- 'metadata_generator.addSourceElement(event)');
- messageElement.appendChild(link);
- }
-
- var summary = document.getElementById('summary');
- if (summary) {
- summary.parentNode.insertBefore(messageElement, summary);
- }
- else {
- var log = document.getElementById('log');
- if (log) {
- log.appendChild(messageElement);
- }
- }
- }
- },
-
- setup: function() {
- add_completion_callback(
- function (tests, harness_status) {
- metadata_generator.process(tests, harness_status);
- });
- }
-};
-
-metadata_generator.setup();
-
-/* If the parent window has a testharness_properties object,
- * we use this to provide the test settings. This is used by the
- * default in-browser runner to configure the timeout and the
- * rendering of results
- */
-try {
- if (window.opener && "testharness_properties" in window.opener) {
- /* If we pass the testharness_properties object as-is here without
- * JSON stringifying and reparsing it, IE fails & emits the message
- * "Could not complete the operation due to error 80700019".
- */
- setup(JSON.parse(JSON.stringify(window.opener.testharness_properties)));
- }
-} catch (e) {
-}
-// vim: set expandtab shiftwidth=4 tabstop=4:
+++ /dev/null
-/*
-
-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('<script language="javascript" src="../resources/testharness.js"></script>\n');
- }
- if (head_src.search(/\/testharnessreport.js\W/) === -1) {
- document.write('<script language="javascript" src="../resources/testharnessreport.js"></script>\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;
-}
+++ /dev/null
-{
- "pkg-blacklist": [
- "config.xml",
- "pack.py",
- "testcase.xsl",
- "testresult.xsl",
- "tests.css",
- "icon.png",
- "manifest.json",
- "suite.json",
- "inst.*"
- ],
- "pkg-list": {
- "apk,cordova": {
- "blacklist": [
- "*"
- ],
- "copylist": {
- "inst.apk.py": "inst.py",
- "tests.full.xml": "tests.full.xml",
- "tests.xml": "tests.xml"
- },
- "pkg-app": {
- "sign-flag": "true"
- }
- },
- "apk-aio, cordova-aio": {
- "blacklist": []
- },
- "wgt": {
- "blacklist": [
- "*"
- ],
- "copylist": {
- "inst.wgt.py": "inst.py",
- "tests.full.xml": "tests.full.xml",
- "tests.xml": "tests.xml"
- },
- "pkg-app": {
- "sign-flag": "true"
- }
- },
- "xpk": {
- "blacklist": [
- "*"
- ],
- "copylist": {
- "inst.xpk.py": "inst.py",
- "askpolicy.sh": "askpolicy.sh",
- "tests.full.xml": "tests.full.xml",
- "tests.xml": "tests.xml"
- },
- "pkg-app": {
- "blacklist": [],
- "sign-flag": "true"
- }
- }
- },
- "pkg-name": "tct-humanactivitymonitor-tizen-tests"
-}
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
- <xsl:output method="html" version="1.0" encoding="UTF-8" indent="yes"/>
- <xsl:template match="/">
- <html>
- <STYLE type="text/css">
- @import "tests.css";
- </STYLE>
- <head>
- <script type="text/javascript" src="jquery.min.js"/>
- </head>
- <body>
- <div id="testcasepage">
- <div id="title">
- <table>
- <tr>
- <td>
- <h1>Test Cases</h1>
- </td>
- </tr>
- </table>
- </div>
- <div id="suites">
- <a name="contents"/>
- <table>
- <tr>
- <th>Test Suite</th>
- <th>Total</th>
- <th>Auto</th>
- <th>Manual</th>
- </tr>
- <tr>
- <td>
- Total
- </td>
- <td>
- <xsl:value-of select="count(test_definition/suite/set//testcase)"/>
- </td>
- <td>
- <xsl:value-of select="count(test_definition/suite/set//testcase[@execution_type = 'auto'])"/>
- </td>
- <td>
- <xsl:value-of select="count(test_definition/suite/set//testcase[@execution_type != 'auto'])"/>
- </td>
- </tr>
- <xsl:for-each select="test_definition/suite">
- <tr>
- <td>
- <a>
- <xsl:attribute name="href">
- #<xsl:value-of select="@name"/>
- </xsl:attribute>
- <xsl:value-of select="@name"/>
- </a>
- </td>
- <td>
- <xsl:value-of select="count(set//testcase)"/>
- </td>
- <td>
- <xsl:value-of select="count(set/testcase[@execution_type = 'auto'])"/>
- </td>
- <td>
- <xsl:value-of select="count(set/testcase[@execution_type != 'auto'])"/>
- </td>
- </tr>
- </xsl:for-each>
- </table>
- </div>
- <div id="title">
- <table>
- <tr>
- <td class="title">
- <h1>Detailed Test Cases</h1>
- </td>
- </tr>
- </table>
- </div>
- <div id="cases">
- <xsl:for-each select="test_definition/suite">
- <xsl:sort select="@name"/>
- <div id="btc">
- <a href="#contents">Back to Contents</a>
- </div>
- <div id="suite_title">
- Test Suite:
- <xsl:value-of select="@name"/>
- <a><xsl:attribute name="name"><xsl:value-of select="@name"/></xsl:attribute></a>
- </div>
- <table>
- <tr>
- <th>Case_ID</th>
- <th>Purpose</th>
- <th>Type</th>
- <th>Component</th>
- <th>Execution Type</th>
- <th>Description</th>
- <th>Specification</th>
- </tr>
- <xsl:for-each select=".//set">
- <xsl:sort select="@name"/>
- <tr>
- <td colspan="7">
- Test Set:
- <xsl:value-of select="@name"/>
- </td>
- </tr>
- <xsl:for-each select=".//testcase">
- <!-- xsl:sort select="@id" /> -->
- <tr>
- <td>
- <xsl:value-of select="@id"/>
- </td>
- <td>
- <xsl:value-of select="@purpose"/>
- </td>
- <td>
- <xsl:value-of select="@type"/>
- </td>
- <td>
- <xsl:value-of select="@component"/>
- </td>
- <td>
- <xsl:value-of select="@execution_type"/>
- </td>
- <td>
- <p>
- Pre_condition:
- <xsl:value-of select=".//description/pre_condition"/>
- </p>
- <p>
- Post_condition:
- <xsl:value-of select=".//description/post_condition"/>
- </p>
- <p>
- Test Script Entry:
- <xsl:value-of select=".//description/test_script_entry"/>
- </p>
- <p>
- Steps:
- <p/>
- <xsl:for-each select=".//description/steps/step"><xsl:sort select="@order"/>
- Step
- <xsl:value-of select="@order"/>
- :
- <xsl:value-of select="./step_desc"/>
- ;
- <p/>
- Expected Result:
- <xsl:value-of select="./expected"/>
- <p/>
- </xsl:for-each>
- </p>
- </td>
- <td>
- <xsl:for-each select=".//specs/spec"><b>[Spec_Assertion]:</b><br/>
- [Category]:
- <xsl:value-of select="./spec_assertion/@category"/>
- <br/>
- [Section]:
- <xsl:value-of select="./spec_assertion/@section"/>
- <br/>
- [Specification]:
- <xsl:value-of select="./spec_assertion/@specification"/>
- <br/>
- [Interface]:
- <xsl:value-of select="./spec_assertion/@interface"/>
- <br/>
- <xsl:choose><xsl:when test="./spec_assertion/@element_name">
- [<xsl:value-of select="./spec_assertion/@element_type"/>]:
- <xsl:value-of select="./spec_assertion/@element_name"/>
- <br/>
- </xsl:when></xsl:choose>
- [URL]:
- <xsl:value-of select="./spec_url"/>
- <br/>
- [Statement]:
- <xsl:value-of select="./spec_statement"/>
- <br/>
- </xsl:for-each>
- </td>
- </tr>
- </xsl:for-each>
- </xsl:for-each>
- </table>
- </xsl:for-each>
- </div>
- </div>
- <div id="goTopBtn">
- <img border="0" src="./back_top.png"/>
- </div>
- <script type="text/javascript" src="application.js"/>
- <script language="javascript" type="text/javascript">
- $(document).ready(function(){
- goTopEx();
- });
- </script>
- </body>
- </html>
- </xsl:template>
-</xsl:stylesheet>
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
- <xsl:output method="html" version="1.0" encoding="UTF-8" indent="yes"/>
- <xsl:template match="/">
- <html>
- <STYLE type="text/css">
- @import "tests.css";
- </STYLE>
- <head>
- <script type="text/javascript" src="jquery.min.js"/>
- </head>
- <body>
- <div id="testcasepage">
- <div id="title">
- <table>
- <tr>
- <td>
- <h1>Test Report</h1>
- </td>
- </tr>
- </table>
- </div>
- <div id="device">
- <table>
- <tr>
- <th colspan="2">Device Information</th>
- </tr>
- <tr>
- <td>Device Name</td>
- <td>
- <xsl:choose>
- <xsl:when test="test_definition/environment/@device_name">
- <xsl:if test="test_definition/environment/@device_name = ''">
- N/A
- </xsl:if>
- <xsl:value-of select="test_definition/environment/@device_name"/>
- </xsl:when>
- <xsl:otherwise>
- N/A
- </xsl:otherwise>
- </xsl:choose>
- </td>
- </tr>
- <tr>
- <td>Device Model</td>
- <td>
- <xsl:choose>
- <xsl:when test="test_definition/environment/@device_model">
- <xsl:if test="test_definition/environment/@device_model = ''">
- N/A
- </xsl:if>
- <xsl:value-of select="test_definition/environment/@device_model"/>
- </xsl:when>
- <xsl:otherwise>
- N/A
- </xsl:otherwise>
- </xsl:choose>
- </td>
- </tr>
- <tr>
- <td>OS Version</td>
- <td>
- <xsl:choose>
- <xsl:when test="test_definition/environment/@os_version">
- <xsl:if test="test_definition/environment/@os_version = ''">
- N/A
- </xsl:if>
- <xsl:value-of select="test_definition/environment/@os_version"/>
- </xsl:when>
- <xsl:otherwise>
- N/A
- </xsl:otherwise>
- </xsl:choose>
- </td>
- </tr>
- <tr>
- <td>Device ID</td>
- <td>
- <xsl:choose>
- <xsl:when test="test_definition/environment/@device_id">
- <xsl:if test="test_definition/environment/@device_id = ''">
- N/A
- </xsl:if>
- <xsl:value-of select="test_definition/environment/@device_id"/>
- </xsl:when>
- <xsl:otherwise>
- N/A
- </xsl:otherwise>
- </xsl:choose>
- </td>
- </tr>
- <tr>
- <td>Firmware Version</td>
- <td>
- <xsl:choose>
- <xsl:when test="test_definition/environment/@firmware_version">
- <xsl:if test="test_definition/environment/@firmware_version = ''">
- N/A
- </xsl:if>
- <xsl:value-of select="test_definition/environment/@firmware_version"/>
- </xsl:when>
- <xsl:otherwise>
- N/A
- </xsl:otherwise>
- </xsl:choose>
- </td>
- </tr>
- <tr>
- <td>Build ID</td>
- <td>
- <xsl:choose>
- <xsl:when test="test_definition/environment/@build_id">
- <xsl:if test="test_definition/environment/@build_id = ''">
- N/A
- </xsl:if>
- <xsl:value-of select="test_definition/environment/@build_id"/>
- </xsl:when>
- <xsl:otherwise>
- N/A
- </xsl:otherwise>
- </xsl:choose>
- </td>
- </tr>
- <tr>
- <td>Screen Size</td>
- <td>
- <xsl:choose>
- <xsl:when test="test_definition/environment/@screen_size">
- <xsl:if test="test_definition/environment/@screen_size = ''">
- N/A
- </xsl:if>
- <xsl:value-of select="test_definition/environment/@screen_size"/>
- </xsl:when>
- <xsl:otherwise>
- N/A
- </xsl:otherwise>
- </xsl:choose>
- </td>
- </tr>
- <tr>
- <td>Resolution</td>
- <td>
- <xsl:choose>
- <xsl:when test="test_definition/environment/@resolution">
- <xsl:if test="test_definition/environment/@resolution = ''">
- N/A
- </xsl:if>
- <xsl:value-of select="test_definition/environment/@resolution"/>
- </xsl:when>
- <xsl:otherwise>
- N/A
- </xsl:otherwise>
- </xsl:choose>
- </td>
- </tr>
- <tr>
- <td>Host Info</td>
- <td>
- <xsl:choose>
- <xsl:when test="test_definition/environment/@host">
- <xsl:if test="test_definition/environment/@host = ''">
- N/A
- </xsl:if>
- <xsl:value-of select="test_definition/environment/@host"/>
- </xsl:when>
- <xsl:otherwise>
- N/A
- </xsl:otherwise>
- </xsl:choose>
- </td>
- </tr>
- <tr>
- <td>CTS Version</td>
- <td>
- <xsl:choose>
- <xsl:when test="test_definition/environment/@cts_version">
- <xsl:if test="test_definition/environment/@cts_version = ''">
- N/A
- </xsl:if>
- <xsl:value-of select="test_definition/environment/@cts_version"/>
- </xsl:when>
- <xsl:otherwise>
- N/A
- </xsl:otherwise>
- </xsl:choose>
- </td>
- </tr>
- <tr>
- <td>Others</td>
- <td>
- <xsl:if test="test_definition/environment/other = ''">
- N/A
- </xsl:if>
- <xsl:call-template name="br-replace">
- <xsl:with-param name="word" select="test_definition/environment/other"/>
- </xsl:call-template>
- </td>
- </tr>
- </table>
- </div>
- <div id="summary">
- <table>
- <tr>
- <th colspan="2">Test Summary</th>
- </tr>
- <tr>
- <td>Test Plan Name</td>
- <td>
- <xsl:value-of select="test_definition/summary/@test_plan_name"/>
- </td>
- </tr>
- <tr>
- <td>Tests Total</td>
- <td>
- <xsl:value-of select="count(test_definition//suite/set/testcase)"/>
- </td>
- </tr>
- <tr>
- <td>Test Passed</td>
- <td>
- <xsl:value-of select="count(test_definition//suite/set/testcase[@result = 'PASS'])"/>
- </td>
- </tr>
- <tr>
- <td>Test Failed</td>
- <td>
- <xsl:value-of select="count(test_definition//suite/set/testcase[@result = 'FAIL'])"/>
- </td>
- </tr>
- <tr>
- <td>Test Block</td>
- <td>
- <xsl:value-of select="count(test_definition//suite/set/testcase[@result = 'BLOCK'])"/>
- </td>
- </tr>
- <tr>
- <td>Test Not Run</td>
- <td>
- <xsl:value-of select="count(test_definition//suite/set/testcase) - count(test_definition//suite/set/testcase[@result = 'PASS']) - count(test_definition//suite/set/testcase[@result = 'FAIL']) - count(test_definition//suite/set/testcase[@result = 'BLOCK'])"/>
- </td>
- </tr>
- <tr>
- <td>Start time</td>
- <td>
- <xsl:value-of select="test_definition/summary/start_at"/>
- </td>
- </tr>
- <tr>
- <td>End time</td>
- <td>
- <xsl:value-of select="test_definition/summary/end_at"/>
- </td>
- </tr>
- </table>
- </div>
- <div id="suite_summary">
- <div id="title">
- <a name="contents"/>
- <table>
- <tr>
- <td class="title">
- <h1>Test Summary by Suite</h1>
- </td>
- </tr>
- </table>
- </div>
- <table>
- <tr>
- <th>Suite</th>
- <th>Passed</th>
- <th>Failed</th>
- <th>Blocked</th>
- <th>Not Run</th>
- <th>Total</th>
- </tr>
- <xsl:for-each select="test_definition/suite">
- <xsl:sort select="@name"/>
- <tr>
- <td>
- <a>
- <xsl:attribute name="href">
- #<xsl:value-of select="@name"/>
- </xsl:attribute>
- <xsl:value-of select="@name"/>
- </a>
- </td>
- <td>
- <xsl:value-of select="count(set//testcase[@result = 'PASS'])"/>
- </td>
- <td>
- <xsl:value-of select="count(set//testcase[@result = 'FAIL'])"/>
- </td>
- <td>
- <xsl:value-of select="count(set//testcase[@result = 'BLOCK'])"/>
- </td>
- <td>
- <xsl:value-of select="count(set//testcase) - count(set//testcase[@result = 'PASS']) - count(set//testcase[@result = 'FAIL']) - count(set//testcase[@result = 'BLOCK'])"/>
- </td>
- <td>
- <xsl:value-of select="count(set//testcase)"/>
- </td>
- </tr>
- </xsl:for-each>
- </table>
- </div>
- <div id="fail_cases">
- <div id="title">
- <table>
- <tr>
- <td class="title">
- <h1 align="center">
- Test Failures (
- <xsl:value-of select="count(test_definition/suite/set//testcase[@result = 'FAIL'])"/>
- )
- </h1>
- </td>
- </tr>
- </table>
- </div>
- <xsl:for-each select="test_definition/suite">
- <xsl:sort select="@name"/>
- <div id="btc">
- <a href="#contents">Back to Contents</a>
- </div>
- <div id="suite_title">
- Test Suite:
- <xsl:value-of select="@name"/>
- <a><xsl:attribute name="name"><xsl:value-of select="@name"/></xsl:attribute></a>
- </div>
- <table>
- <tr>
- <th>Case_ID</th>
- <th>Purpose</th>
- <th>Result</th>
- <th>Stdout</th>
- </tr>
- <xsl:for-each select=".//set">
- <xsl:sort select="@name"/>
- <tr>
- <td colspan="4">
- Test Set:
- <xsl:value-of select="@name"/>
- </td>
- </tr>
- <xsl:for-each select=".//testcase">
- <xsl:sort select="@id"/>
- <xsl:choose>
- <xsl:when test="@result">
- <xsl:if test="@result = 'FAIL'">
- <tr>
- <td>
- <xsl:value-of select="@id"/>
- </td>
- <td>
- <xsl:value-of select="@purpose"/>
- </td>
- <td class="red_rate">
- <xsl:value-of select="@result"/>
- </td>
- <td>
- <xsl:value-of select=".//result_info/stdout"/>
- <xsl:if test=".//result_info/stdout = ''">
- N/A
- </xsl:if>
- </td>
- </tr>
- </xsl:if>
- </xsl:when>
- </xsl:choose>
- </xsl:for-each>
- </xsl:for-each>
- </table>
- </xsl:for-each>
- </div>
- <div id="cases">
- <div id="title">
- <table>
- <tr>
- <td class="title">
- <h1 align="center">Detailed Test Results</h1>
- </td>
- </tr>
- </table>
- </div>
- <xsl:for-each select="test_definition/suite">
- <xsl:sort select="@name"/>
- <div id="btc">
- <a href="#contents">Back to Contents</a>
- </div>
- <div id="suite_title">
- Test Suite:
- <xsl:value-of select="@name"/>
- <a><xsl:attribute name="name"><xsl:value-of select="@name"/></xsl:attribute></a>
- </div>
- <table>
- <tr>
- <th>Case_ID</th>
- <th>Purpose</th>
- <th>Result</th>
- <th>Stdout</th>
- </tr>
- <xsl:for-each select=".//set">
- <xsl:sort select="@name"/>
- <tr>
- <td colspan="4">
- Test Set:
- <xsl:value-of select="@name"/>
- </td>
- </tr>
- <xsl:for-each select=".//testcase">
- <xsl:sort select="@id"/>
- <tr>
- <td>
- <xsl:value-of select="@id"/>
- </td>
- <td>
- <xsl:value-of select="@purpose"/>
- </td>
- <xsl:choose>
- <xsl:when test="@result">
- <xsl:if test="@result = 'FAIL'">
- <td class="red_rate">
- <xsl:value-of select="@result"/>
- </td>
- </xsl:if>
- <xsl:if test="@result = 'PASS'">
- <td class="green_rate">
- <xsl:value-of select="@result"/>
- </td>
- </xsl:if>
- <xsl:if test="@result = 'BLOCK' ">
- <td>
- BLOCK
- </td>
- </xsl:if>
- <xsl:if test="@result != 'BLOCK' and @result != 'FAIL' and @result != 'PASS' ">
- <td>
- Not Run
- </td>
- </xsl:if>
- </xsl:when>
- <xsl:otherwise>
- <td>
- </td>
- </xsl:otherwise>
- </xsl:choose>
- <td>
- <xsl:value-of select=".//result_info/stdout"/>
- <xsl:if test=".//result_info/stdout = ''">
- N/A
- </xsl:if>
- </td>
- </tr>
- </xsl:for-each>
- </xsl:for-each>
- </table>
- </xsl:for-each>
- </div>
- </div>
- <div id="goTopBtn">
- <img border="0" src="./back_top.png"/>
- </div>
- <script type="text/javascript" src="application.js"/>
- <script language="javascript" type="text/javascript">
- $(document).ready(function(){
- goTopEx();
- });
- </script>
- </body>
- </html>
- </xsl:template>
- <xsl:template name="br-replace">
- <xsl:param name="word"/>
- <xsl:variable name="cr">
- <xsl:text>
- </xsl:text>
- </xsl:variable>
- <xsl:choose>
- <xsl:when test="contains($word,$cr)">
- <xsl:value-of select="substring-before($word,$cr)"/>
- <br/>
- <xsl:call-template name="br-replace">
- <xsl:with-param name="word" select="substring-after($word,$cr)"/>
- </xsl:call-template>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="$word"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-</xsl:stylesheet>
+++ /dev/null
-@charset "UTF-8";\r
-/* CSS Document */\r
-#testcasepage div,\r
-#testcasepage h1,\r
-#testcasepage p,\r
-#testcasepage table,\r
-#testcasepage tr,\r
-#testcasepage th,\r
-#testcasepage td {\r
- margin: 0;\r
- padding: 0;\r
- border: 0;\r
- font-weight: inherit;\r
- font-style: inherit;\r
- font-size: 0.96em;\r
- font-family: arial;\r
- vertical-align: baseline;\r
-}\r
-\r
-#testcasepage p {\r
- text-align: left;\r
-}\r
-\r
-#suite_title {\r
- text-align: left;\r
-}\r
-\r
-#btc {\r
- text-align: right;\r
-}\r
-\r
-#testcasepage table {\r
- border-collapse: separate;\r
- border-spacing: 0;\r
- margin-bottom: 1.4em;\r
- vertical-align: middle;\r
-}\r
-\r
-#testcasepage th,\r
-#testcasepage td {\r
- text-align: left;\r
- font-weight: normal;\r
- padding: 4px 10px 4px 5px;\r
- vertical-align: middle;\r
-}\r
-\r
-#cases table {\r
- width: 101%;\r
-}\r
-\r
-#fail_cases table {\r
- width: 101%;\r
-}\r
-\r
-#title table {\r
- width: 101%;\r
-}\r
-\r
-#device table {\r
- width: 50%;\r
-}\r
-\r
-#summary table {\r
- width: 50%;\r
-}\r
-\r
-#testcasepage th {\r
- border-bottom: 1px solid #000;\r
- background-color: #AAAAAA;\r
- border-left: 1px solid #000;\r
- border-top: 1px solid #000;\r
- color: #000;\r
- font-weight: bold;\r
- vertical-align: bottom;\r
-}\r
-\r
-#testcasepage th:last-child,\r
-#testcasepage td:last-child {\r
- border-right: 1px solid #000;\r
-}\r
-\r
-#testcasepage td {\r
- border-left: 1px solid;\r
- font-weight: normal;\r
- border-bottom: 1px solid;\r
-}\r
-\r
-#testcasepage td.yellow_rate {\r
- background-color: #ffcc00;\r
-}\r
-\r
-#testcasepage td.green_rate {\r
- background-color: #33cc33;\r
-}\r
-\r
-#testcasepage td.dgreen_rate {\r
- background-color: #339933;\r
-}\r
-\r
-#testcasepage td.red_rate {\r
- background-color: #FF3333;\r
-}\r
-\r
-#title table,\r
-#title tr,\r
-#title td {\r
- border-left: none;\r
- border-bottom: none;\r
- text-align: center;\r
-}\r
-\r
-#title td:last-child {\r
- border-right: none;\r
-}\r
-\r
-#testcasepage h1 {\r
- font-size: 2em;\r
- font-family: Arial, sans-serif;\r
- font-weight: bold;\r
- line-height: 1;\r
- color: #000;\r
- margin-bottom: 0.75em;\r
- padding-top: 0.25em;\r
- font-weight: bold;\r
-}\r
-\r
-#goTopBtn {\r
- right: 0px;\r
- bottom: 0px;\r
- position: fixed; +position: absolute;\r
- top: expression(parseInt(document.body.scrollTop) + document.body.clientHeight - 40);\r
-}\r
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>
-<?xml-stylesheet type="text/xsl" href="./testcase.xsl"?>
-<test_definition>
- <suite name="tct-humanactivitymonitor-tizen-tests" extension="crosswalk" category="Tizen Web Device APIs">
- <set name="HumanActivityMonitor" type="js">
- <testcase purpose="Check if interface HumanActivityData exists, it should not" type="compliance" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P3" id="HumanActivityData_notexist">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityData_notexist.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityData" usage="true" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if interface StepDifference exists, it should not" type="compliance" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P3" id="StepDifference_notexist">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/StepDifference_notexist.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="StepDifference" usage="true" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if interface HumanActivityAccumulativePedometerData exists, it should not" type="compliance" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P3" id="HumanActivityAccumulativePedometerData_notexist">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityAccumulativePedometerData_notexist.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityAccumulativePedometerData" usage="true" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if interface HumanActivityHRMData exists, it should not" type="compliance" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P3" id="HumanActivityHRMData_notexist">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityHRMData_notexist.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityHRMData" usage="true" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if interface HumanActivityGPSInfo exists, it should not" type="compliance" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P3" id="HumanActivityGPSInfo_notexist">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityGPSInfo_notexist.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityGPSInfo" usage="true" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if interface HumanActivityGPSInfoArray exists, it should not" type="compliance" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P3" id="HumanActivityGPSInfoArray_notexist">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityGPSInfoArray_notexist.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityGPSInfoArray" usage="true" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if interface HumanActivityRecognitionData exists, it should not" type="compliance" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P3" id="HumanActivityRecognitionData_notexist">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityRecognitionData_notexist.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityRecognitionData" usage="true" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if interface HumanActivitySleepMonitorData exists, it should not" type="compliance" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P3" id="HumanActivitySleepMonitorData_notexist">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivitySleepMonitorData_notexist.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivitySleepMonitorData" usage="true" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if interface HumanActivityMonitorManagerObject exists, it should not" type="compliance" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P3" id="HumanActivityMonitorManagerObject_notexist">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManagerObject_notexist.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityMonitorManagerObject U" usage="true" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if HumanActivityMonitorManager is extendable" type="compliance" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P3" id="HumanActivityMonitorManager_extend">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_extend.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityMonitorManager" usage="true" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if HumanActivityMonitorManager::getHumanActivityData() method exists" type="compliance" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P0" id="HumanActivityMonitorManager_getHumanActivityData_exist">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_getHumanActivityData_exist.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="getHumanActivityData" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if humanactivitymonitor exists in tizen" type="compliance" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P3" id="HumanActivityMonitorManager_in_tizen">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_in_tizen.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityMonitorManager" usage="true" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if interface HumanActivityMonitorManager exists, it should not" type="compliance" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P3" id="HumanActivityMonitorManager_notexist">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_notexist.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityMonitorManager" usage="true" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if method HumanActivityMonitorManager::start() exists" type="compliance" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P0" id="HumanActivityMonitorManager_start_exist">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_start_exist.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="start" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if HumanActivityMonitorManager::start() throws exception when type and successCallback are missing" type="compliance" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P2" id="HumanActivityMonitorManager_start_misarg">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_start_misarg.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="start" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if HumanActivityMonitorManager::stop() method exists" type="compliance" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P0" id="HumanActivityMonitorManager_stop_exist">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_stop_exist.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="stop" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if HumanActivityMonitorManager::stop() throws exception when type is missing" type="compliance" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P2" id="HumanActivityMonitorManager_stop_misarg">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_stop_misarg.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="stop" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if HumanActivityMonitorSuccessCallback does not exist" type="compliance" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P3" id="HumanActivityMonitorSuccessCallback_notexist">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorSuccessCallback_notexist.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityMonitorSuccessCallback U" usage="true" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if HumanActivityMonitorManager::start() with incorrect option argument throws exception" type="compliance" onload_delay="30" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P2" id="HumanActivityMonitorManager_start_option_TypeMismatch">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_start_option_TypeMismatch.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="start" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if HumanActivityMonitorManager::start() with incorrect successCallback argument throws exception" type="compliance" onload_delay="30" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P2" id="HumanActivityMonitorManager_start_changedCallback_TypeMismatch">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_start_changedCallback_TypeMismatch.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="start" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if HumanActivityMonitorManager::start() method throws exception when HumanActivityMonitorSuccessCallback is invalid" type="compliance" onload_delay="30" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P2" id="HumanActivityMonitorManager_start_changedCallback_invalid_cb">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_start_changedCallback_invalid_cb.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="start" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if readRecorderData throw NotSupportedError called with not supported human activity recorder type" type="compliance" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" priority="P2" id="HumanActivityMonitorManager_readRecorderData_NotSupportedError">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_readRecorderData_NotSupportedError.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="readRecorderData" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if readRecorderData throws exception when errorCallback is incorrect" type="compliance" onload_delay="30" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" priority="P2" id="HumanActivityMonitorManager_readRecorderData_errorCallback_TypeMismatch">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_readRecorderData_errorCallback_TypeMismatch.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="readRecorderData" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if readRecorderData throws exception when error callback is invalid" type="compliance" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" priority="P2" id="HumanActivityMonitorManager_readRecorderData_errorCallback_invalid_cb">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_readRecorderData_errorCallback_invalid_cb.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="readRecorderData" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if readRecorderData exists" type="compliance" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" priority="P0" id="HumanActivityMonitorManager_readRecorderData_exist">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_readRecorderData_exist.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="readRecorderData" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if HumanActivityMonitorManager::readRecorderData() called with missing non-optional argument throws an exception" type="compliance" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" priority="P1" id="HumanActivityMonitorManager_readRecorderData_misarg">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_readRecorderData_misarg.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="readRecorderData" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if readRecorderData throws exception when query is incorrect" type="compliance" onload_delay="30" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" priority="P2" id="HumanActivityMonitorManager_readRecorderData_query_TypeMismatch">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_readRecorderData_query_TypeMismatch.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="readRecorderData" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if readRecorderData throws exception when successCallback is incorrect" type="compliance" onload_delay="30" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" priority="P2" id="HumanActivityMonitorManager_readRecorderData_successCallback_TypeMismatch">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_readRecorderData_successCallback_TypeMismatch.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="readRecorderData" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if readRecorderData throws exception when success callback is invalid" type="compliance" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" priority="P2" id="HumanActivityMonitorManager_readRecorderData_successCallback_invalid_cb">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_readRecorderData_successCallback_invalid_cb.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="readRecorderData" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if readRecorderData without optional arguments works properly for PRESSURE HumanActivity type" type="compliance" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="manual" onload_delay="150" priority="P1" id="HumanActivityMonitorManager_readRecorderData_type_PRESSURE">
- <description>
- <steps>
- <step order="1">
- <step_desc>Waiting for 1 minutes for the callback.</step_desc>
- <expected>Pass should be shown in the page after 1 minutes.</expected>
- </step>
- </steps>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_readRecorderData_type_PRESSURE.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="readRecorderData" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if HumanActivityMonitorManager::startRecorder() throw NotSupportedError called with not supported human activity recorder type" type="compliance" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" priority="P1" id="HumanActivityMonitorManager_startRecorder_NotSupportedError">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_startRecorder_NotSupportedError.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="startRecorder" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if startRecorder exists" type="compliance" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" priority="P0" id="HumanActivityMonitorManager_startRecorder_exist">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_startRecorder_exist.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="startRecorder" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if HumanActivityMonitorManager::startRecorder() called with missing non-optional argument throws an exception" type="compliance" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" priority="P1" id="HumanActivityMonitorManager_startRecorder_misarg">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_startRecorder_misarg.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="startRecorder" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if method HumanActivityMonitorManager::startRecorder() works properly for PRESSURE HumanActivity type" type="compliance" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" priority="P1" id="HumanActivityMonitorManager_startRecorder_type_PRESSURE">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_startRecorder_type_PRESSURE.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="startRecorder" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if HumanActivityMonitorManager::stopRecorder() throw NotSupportedError called with not supported human activity recorder type" type="compliance" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" priority="P2" id="HumanActivityMonitorManager_stopRecorder_NotSupportedError">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_stopRecorder_NotSupportedError.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="stopRecorder" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if stopRecorder exists" type="compliance" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" priority="P0" id="HumanActivityMonitorManager_stopRecorder_exist">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_stopRecorder_exist.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="stopRecorder" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if HumanActivityMonitorManager::stopRecorder() called with missing non-optional argument throws an exception" type="compliance" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" priority="P1" id="HumanActivityMonitorManager_stopRecorder_misarg">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_stopRecorder_misarg.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="stopRecorder" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if method HumanActivityMonitorManager::stopRecorder() works properly for PRESSURE HumanActivity type" type="compliance" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" priority="P1" id="HumanActivityMonitorManager_stopRecorder_type_PRESSURE">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_stopRecorder_type_PRESSURE.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="stopRecorder" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if HumanActivityReadRecorderSuccessCallback cannot be called in new expression and as a function or in new expression" type="compliance" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" priority="P3" id="HumanActivityReadRecorderSuccessCallback_notexist">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityReadRecorderSuccessCallback_notexist.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityReadRecorderSuccessCallback" usage="true" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if HumanActivityRecorderData cannot be called in new expression and as a function or in new expression" type="compliance" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" priority="P3" id="HumanActivityRecorderData_notexist">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityRecorderData_notexist.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityRecorderData" usage="true" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if HumanActivityRecorderPressureData have average attribute with proper type, readonly" type="compliance" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="manual" onload_delay="90" priority="P1" id="HumanActivityRecorderPressureData_average_attribute">
- <description>
- <pre_condition>Before run this tc, run HumanActivityMonitorManager_readRecorderData_type_PRESSURE.html first, because we should wait at least 1 minute to get the recorded data after start recorder. But if you tested that TC already, you can run this TC now.</pre_condition>
- <steps>
- <step order="1">
- <step_desc>Waiting for 1 minutes for the callback.</step_desc>
- <expected>Pass should be shown in the page after 1 minutes.</expected>
- </step>
- </steps>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityRecorderPressureData_average_attribute.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityRecorderPressureData" element_type="attribute" element_name="average" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if HumanActivityRecorderPressureData have endTime attribute with proper type, readonly" type="compliance" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="manual" onload_delay="90" priority="P1" id="HumanActivityRecorderPressureData_endTime_attribute">
- <description>
- <pre_condition>Before run this tc, run HumanActivityMonitorManager_readRecorderData_type_PRESSURE.html first, because we should wait at least 1 minute to get the recorded data after start recorder. But if you tested that TC already, you can run this TC now.</pre_condition>
- <steps>
- <step order="1">
- <step_desc>Waiting for 1 minutes for the callback.</step_desc>
- <expected>Pass should be shown in the page after 1 minutes.</expected>
- </step>
- </steps>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityRecorderPressureData_endTime_attribute.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityRecorderPressureData" element_type="attribute" element_name="endTime" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if HumanActivityRecorderPressureData have max attribute with proper type, readonly" type="compliance" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="manual" onload_delay="90" priority="P1" id="HumanActivityRecorderPressureData_max_attribute">
- <description>
- <pre_condition>Before run this tc, run HumanActivityMonitorManager_readRecorderData_type_PRESSURE.html first, because we should wait at least 1 minute to get the recorded data after start recorder. But if you tested that TC already, you can run this TC now.</pre_condition>
- <steps>
- <step order="1">
- <step_desc>Waiting for 1 minutes for the callback.</step_desc>
- <expected>Pass should be shown in the page after 1 minutes.</expected>
- </step>
- </steps>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityRecorderPressureData_max_attribute.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityRecorderPressureData" element_type="attribute" element_name="max" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if HumanActivityRecorderPressureData have min attribute with proper type, readonly" type="compliance" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="manual" onload_delay="90" priority="P1" id="HumanActivityRecorderPressureData_min_attribute">
- <description>
- <pre_condition>Before run this tc, run HumanActivityMonitorManager_readRecorderData_type_PRESSURE.html first, because we should wait at least 1 minute to get the recorded data after start recorder. But if you tested that TC already, you can run this TC now.</pre_condition>
- <steps>
- <step order="1">
- <step_desc>Waiting for 1 minutes for the callback.</step_desc>
- <expected>Pass should be shown in the page after 1 minutes.</expected>
- </step>
- </steps>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityRecorderPressureData_min_attribute.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityRecorderPressureData" element_type="attribute" element_name="min" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if HumanActivityRecorderPressureData cannot be called in new expression and as a function or in new expression" type="compliance" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" priority="P3" id="HumanActivityRecorderPressureData_notexist">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityRecorderPressureData_notexist.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityRecorderPressureData" usage="true" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if HumanActivityRecorderPressureData have startTime attribute with proper type, readonly" type="compliance" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="manual" onload_delay="90" priority="P1" id="HumanActivityRecorderPressureData_startTime_attribute">
- <description>
- <pre_condition>Before run this tc, run HumanActivityMonitorManager_readRecorderData_type_PRESSURE.html first, because we should wait at least 1 minute to get the recorded data after start recorder. But if you tested that TC already, you can run this TC now.</pre_condition>
- <steps>
- <step order="1">
- <step_desc>Waiting for 1 minutes for the callback.</step_desc>
- <expected>Pass should be shown in the page after 1 minutes.</expected>
- </step>
- </steps>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityRecorderPressureData_startTime_attribute.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityRecorderPressureData" element_type="attribute" element_name="startTime" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- </set>
- <set name="HumanActivityMonitor_with_activity_recognition">
- <capabilities>
- <capability name="http://tizen.org/feature/sensor.activity_recognition"/>
- </capabilities>
- <testcase purpose="Check if the method addActivityRecognitionListener of HumanActivityMonitorManager returns proper value" type="compliance" onload_delay="60" status="approved" component="Tizen Device APIs/HumanActivityMonitor/HumanActivityMonitorManager" execution_type="manual" priority="P1" id="HumanActivityMonitorManager_addActivityRecognitionListener_STATIONARY">
- <description>
- <steps>
- <step order="1">
- <step_desc>Press run button, then keep the device stationary</step_desc>
- <expected>Pass</expected>
- </step>
- </steps>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_addActivityRecognitionListener_STATIONARY.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="addActivityRecognitionListener M" element_type="method" element_name="addActivityRecognitionListener" specification="HumanActivityMonitorManager" section="HumanActivityMonitor" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitormanager.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if the method addActivityRecognitionListener of HumanActivityMonitorManager returns proper value" type="compliance" onload_delay="60" status="approved" component="Tizen Device APIs/HumanActivityMonitor/HumanActivityMonitorManager" execution_type="manual" priority="P1" id="HumanActivityMonitorManager_addActivityRecognitionListener_WALKING">
- <description>
- <steps>
- <step order="1">
- <step_desc>Press run button. Pretend walking with the device.</step_desc>
- <expected>Pass</expected>
- </step>
- </steps>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_addActivityRecognitionListener_WALKING.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="addActivityRecognitionListener M" element_type="method" element_name="addActivityRecognitionListener" specification="HumanActivityMonitorManager" section="HumanActivityMonitor" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitormanager.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if the method addActivityRecognitionListener of HumanActivityMonitorManager throws TypeMismatchError when invalid type value is assigned for errorCallback parameter" type="compliance" status="approved" component="Tizen Device APIs/HumanActivityMonitor/HumanActivityMonitorManager" execution_type="auto" priority="P2" id="HumanActivityMonitorManager_addActivityRecognitionListener_errorCallback_TypeMismatch">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_addActivityRecognitionListener_errorCallback_TypeMismatch .html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="addActivityRecognitionListener M" element_type="method" element_name="addActivityRecognitionListener" specification="HumanActivityMonitorManager" section="HumanActivityMonitor" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitormanager.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if the method addActivityRecognitionListener of HumanActivityMonitorManager exist" type="compliance" status="approved" component="Tizen Device APIs/HumanActivityMonitor/HumanActivityMonitorManager" execution_type="auto" priority="P1" id="HumanActivityMonitorManager_addActivityRecognitionListener_exist">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_addActivityRecognitionListener_exist.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="addActivityRecognitionListener M" element_type="method" element_name="addActivityRecognitionListener" specification="HumanActivityMonitorManager" section="HumanActivityMonitor" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitormanager.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if the method addActivityRecognitionListener of HumanActivityMonitorManager throws TypeMismatchError when invalid value is assigned for type parameter" type="compliance" status="approved" component="Tizen Device APIs/HumanActivityMonitor/HumanActivityMonitorManager" execution_type="auto" priority="P2" id="HumanActivityMonitorManager_addActivityRecognitionListener_type_TypeMismatch">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_addActivityRecognitionListener_listener_TypeMismatch.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="addActivityRecognitionListener M" element_type="method" element_name="addActivityRecognitionListener" specification="HumanActivityMonitorManager" section="HumanActivityMonitor" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitormanager.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if the method addActivityRecognitionListener of HumanActivityMonitorManager throws TypeMismatchError when no param assigned" type="compliance" status="approved" component="Tizen Device APIs/HumanActivityMonitor/HumanActivityMonitorManager" execution_type="auto" priority="P2" id="HumanActivityMonitorManager_addActivityRecognitionListener_misarg">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_addActivityRecognitionListener_misarg.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="addActivityRecognitionListener M" element_type="method" element_name="addActivityRecognitionListener" specification="HumanActivityMonitorManager" section="HumanActivityMonitor" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitormanager.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if the method addActivityRecognitionListener of HumanActivityMonitorManager throws TypeMismatchError when invalid type value is assigned for listener parameter" type="compliance" status="approved" component="Tizen Device APIs/HumanActivityMonitor/HumanActivityMonitorManager" execution_type="auto" priority="P2" id="HumanActivityMonitorManager_addActivityRecognitionListener_listener_TypeMismatch">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_addActivityRecognitionListener_type_TypeMismatch.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="addActivityRecognitionListener M" element_type="method" element_name="addActivityRecognitionListener" specification="HumanActivityMonitorManager" section="HumanActivityMonitor" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitormanager.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if the method addActivityRecognitionListener of HumanActivityMonitorManager returns proper value with errorcallback assigned" type="compliance" onload_delay="60" status="approved" component="Tizen Device APIs/HumanActivityMonitor/HumanActivityMonitorManager" execution_type="manual" priority="P1" id="HumanActivityMonitorManager_addActivityRecognitionListener_with_errorCallback">
- <description>
- <steps>
- <step order="1">
- <step_desc>Press run button, then keep the device stationary</step_desc>
- <expected>Pass</expected>
- </step>
- </steps>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_addActivityRecognitionListener_with_errorCallback.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="addActivityRecognitionListener M" element_type="method" element_name="addActivityRecognitionListener" specification="HumanActivityMonitorManager" section="HumanActivityMonitor" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitormanager.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if the method addActivityRecognitionListener of HumanActivityMonitorManager returns proper value with errorcallback null assigned" type="compliance" onload_delay="60" status="approved" component="Tizen Device APIs/HumanActivityMonitor/HumanActivityMonitorManager" execution_type="manual" priority="P1" id="HumanActivityMonitorManager_addActivityRecognitionListener_with_errorCallback_null">
- <description>
- <steps>
- <step order="1">
- <step_desc>Press run button, then keep the device stationary</step_desc>
- <expected>Pass</expected>
- </step>
- </steps>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_addActivityRecognitionListener_with_errorCallback_null.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="addActivityRecognitionListener M" element_type="method" element_name="addActivityRecognitionListener" specification="HumanActivityMonitorManager" section="HumanActivityMonitor" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitormanager.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if the method removeActivityRecognitionListener of HumanActivityMonitorManager returns proper value" type="compliance" onload_delay="20" status="approved" component="Tizen Device APIs/TBD/HumanActivityMonitor" execution_type="manual" priority="P1" id="HumanActivityMonitorManager_removeActivityRecognitionListener_STATIONARY">
- <description>
- <steps>
- <step order="1">
- <step_desc>Press run button, then pretend walking with the device for 15 seconds</step_desc>
- <expected>Pass</expected>
- </step>
- </steps>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_removeActivityRecognitionListener.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="removeActivityRecognitionListener" specification="HumanActivityMonitor" section="TBD" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if the method removeActivityRecognitionListener of HumanActivityMonitorManager exist" type="compliance" status="approved" component="Tizen Device APIs/HumanActivityMonitor/HumanActivityMonitorManager" execution_type="auto" priority="P1" id="HumanActivityMonitorManager_removeActivityRecognitionListener_exist">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_removeActivityRecognitionListener_exist.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="removeActivityRecognitionListener M" element_type="method" element_name="removeActivityRecognitionListener" specification="HumanActivityMonitorManager" section="HumanActivityMonitor" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitormanager.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if the method removeActivityRecognitionListener of HumanActivityMonitorManager ignores invalid id" type="compliance" onload_delay="3" status="approved" component="Tizen Device APIs/HumanActivityMonitor/HumanActivityMonitorManager" execution_type="auto" priority="P2" id="HumanActivityMonitorManager_removeActivityRecognitionListener_invalid_id">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_removeActivityRecognitionListener_invalid_id.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="removeActivityRecognitionListener M" element_type="method" element_name="removeActivityRecognitionListener" specification="HumanActivityMonitorManager" section="HumanActivityMonitor" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitormanager.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if the method removeActivityRecognitionListener of HumanActivityMonitorManager ignores invalid id when no param assigned (undefined converted to 0)" type="compliance" status="approved" component="Tizen Device APIs/HumanActivityMonitor/HumanActivityMonitorManager" execution_type="auto" priority="P2" id="HumanActivityMonitorManager_removeActivityRecognitionListener_misarg">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_removeActivityRecognitionListener_misarg.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="removeActivityRecognitionListener M" element_type="method" element_name="removeActivityRecognitionListener" specification="HumanActivityMonitorManager" section="HumanActivityMonitor" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitormanager.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if the method removeActivityRecognitionListener of HumanActivityMonitorManager returns proper value with errorcallback assigned" type="compliance" onload_delay="20" status="approved" component="Tizen Device APIs/TBD/HumanActivityMonitor" execution_type="manual" priority="P1" id="HumanActivityMonitorManager_removeActivityRecognitionListener_STATIONARY">
- <description>
- <steps>
- <step order="1">
- <step_desc>Press run button, then pretend walking with the device for 15 seconds</step_desc>
- <expected>Pass</expected>
- </step>
- </steps>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_removeActivityRecognitionListener_with_errorCallback.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="removeActivityRecognitionListener" specification="HumanActivityMonitor" section="TBD" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if the method removeActivityRecognitionListener of HumanActivityMonitorManager returns proper value with errorcallback null assigned" type="compliance" onload_delay="20" status="approved" component="Tizen Device APIs/TBD/HumanActivityMonitor" execution_type="manual" priority="P1" id="HumanActivityMonitorManager_removeActivityRecognitionListener_STATIONARY">
- <description>
- <steps>
- <step order="1">
- <step_desc>Press run button, then pretend walking with the device for 15 seconds</step_desc>
- <expected>Pass</expected>
- </step>
- </steps>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_removeActivityRecognitionListener_with_errorCallback_null.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="removeActivityRecognitionListener" specification="HumanActivityMonitor" section="TBD" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- </set>
- <set name="HumanActivityMonitor_with_pedometer">
- <capabilities>
- <capability name="http://tizen.org/feature/sensor.pedometer"/>
- </capabilities>
- <testcase purpose="Check if method getHumanActivityData of HumanActivityMonitorManager returns properly value" type="compliance" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P1" id="HumanActivityMonitorManager_getHumanActivityData">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_getHumanActivityData.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="getHumanActivityData" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if HumanActivityMonitorManager::getHumanActivityData() with incorrect errorCallback argument throws exception" type="compliance" onload_delay="30" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P2" id="HumanActivityMonitorManager_getHumanActivityData_errorCallback_TypeMismatch">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_getHumanActivityData_errorCallback_TypeMismatch.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="getHumanActivityData" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if HumanActivityMonitorManager::getHumanActivityData() method throws exception when errorCallback is invalid" type="compliance" onload_delay="30" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P2" id="HumanActivityMonitorManager_getHumanActivityData_errorCallback_invalid_cb">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_getHumanActivityData_errorCallback_invalid_cb.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="getHumanActivityData" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check exception in error callback of HumanActivityMonitorManager::getHumanActivityData() method" type="compliance" onload_delay="30" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P2" id="HumanActivityMonitorManager_getHumanActivityData_errorCallback_invoked">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_getHumanActivityData_errorCallback_invoked.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="getHumanActivityData" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if HumanActivityMonitorManager::getHumanActivityData() throws exception when successCallback is missing" type="compliance" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P2" id="HumanActivityMonitorManager_getHumanActivityData_misarg">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_getHumanActivityData_misarg.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="getHumanActivityData" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if HumanActivityMonitorManager::getHumanActivityData() with incorrect successCallback argument throws exception" type="compliance" onload_delay="30" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P2" id="HumanActivityMonitorManager_getHumanActivityData_successCallback_TypeMismatch">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_getHumanActivityData_successCallback_TypeMismatch.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="getHumanActivityData" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if HumanActivityMonitorManager::getHumanActivityData() method throws exception when successCallback is invalid" type="compliance" onload_delay="30" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P2" id="HumanActivityMonitorManager_getHumanActivityData_successCallback_invalid_cb">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_getHumanActivityData_successCallback_invalid_cb.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="getHumanActivityData" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if HumanActivityMonitorManager::getHumanActivityData() method works properly" type="compliance" onload_delay="30" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P1" id="HumanActivityMonitorManager_getHumanActivityData_type_PEDOMETER">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_getHumanActivityData_type_PEDOMETER.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="getHumanActivityData" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if HumanActivityMonitorManager::getHumanActivityData() method works properly with optional argument" type="compliance" onload_delay="30" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P1" id="HumanActivityMonitorManager_getHumanActivityData_with_errorCallback">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_getHumanActivityData_with_errorCallback.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="getHumanActivityData" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if HumanActivityMonitorManager::start() with incorrect successCallback argument throws exception" type="compliance" onload_delay="30" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P2" id="HumanActivityMonitorManager_start_changedCallback_TypeMismatch">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_start_changedCallback_TypeMismatch.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="start" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if HumanActivityMonitorManager::start() with incorrect errorCallback argument throws exception" type="compliance" onload_delay="30" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P2" id="HumanActivityMonitorManager_start_errorCallback_TypeMismatch">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_start_errorCallback_TypeMismatch.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="start" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if HumanActivityMonitorManager::start() method throws exception when HumanActivityMonitorSuccessCallback is invalid" type="compliance" onload_delay="30" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P2" id="HumanActivityMonitorManager_start_changedCallback_invalid_cb">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_start_changedCallback_invalid_cb.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="start" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if HumanActivityMonitorManager::start() method throws exception when ErrorCallback is invalid" type="compliance" onload_delay="30" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P2" id="HumanActivityMonitorManager_start_errorCallback_invalid_cb">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_start_errorCallback_invalid_cb.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="start" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if method HumanActivityMonitorManager::start() works properly for PEDOMETER" type="compliance" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P1" id="HumanActivityMonitorManager_start_type_PEDOMETER">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_start_type_PEDOMETER.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="start" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if HumanActivityMonitorManager::stop() method works properly" type="compliance" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P1" id="HumanActivityMonitorManager_stop_type_PEDOMETER">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_stop_type_PEDOMETER.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="stop" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Test whether HumanActivityMonitorSuccessCallback::onsuccess() is called with argument of proper type" type="compliance" onload_delay="90" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P1" id="HumanActivityMonitorSuccessCallback_onsuccess">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorSuccessCallback_onsuccess.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityMonitorSuccessCallback" element_type="method" element_name="onsuccess" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if HumanActivityPedometerData::cumulativeCalorie exists, has type double, and is readonly" type="compliance" onload_delay="9" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P1" id="HumanActivityPedometerData_cumulativeCalorie_attribute">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityPedometerData_cumulativeCalorie_attribute.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityPedometerData" element_type="attribute" element_name="cumulativeCalorie" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if HumanActivityPedometerData::cumulativeDistance exists, has type double, and is readonly" type="compliance" onload_delay="9" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P1" id="HumanActivityPedometerData_cumulativeDistance_attribute">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityPedometerData_cumulativeDistance_attribute.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityPedometerData" element_type="attribute" element_name="cumulativeDistance" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if HumanActivityPedometerData::cumulativeRunStepCount exists, has type double, and is readonly" type="compliance" onload_delay="9" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P1" id="HumanActivityPedometerData_cumulativeRunStepCount_attribute">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityPedometerData_cumulativeRunStepCount_attribute.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityPedometerData" element_type="attribute" element_name="cumulativeRunStepCount" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if HumanActivityPedometerData::cumulativeTotalStepCount exists, has type double, and is readonly" type="compliance" onload_delay="9" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P1" id="HumanActivityPedometerData_cumulativeTotalStepCount_attribute">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityPedometerData_cumulativeTotalStepCount_attribute.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityPedometerData" element_type="attribute" element_name="cumulativeTotalStepCount" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if HumanActivityPedometerData::cumulativeWalkStepCount exists, has type double, and is readonly" type="compliance" onload_delay="9" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P1" id="HumanActivityPedometerData_cumulativeWalkStepCount_attribute">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityPedometerData_cumulativeWalkStepCount_attribute.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityPedometerData" element_type="attribute" element_name="cumulativeWalkStepCount" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if HumanActivityPedometerData::stepCountDifferences exists, has type double, and is readonly" type="compliance" onload_delay="9" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P1" id="HumanActivityPedometerData_stepCountDifferences_attribute">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityPedometerData_stepCountDifferences_attribute.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityPedometerData" element_type="attribute" element_name="stepCountDifferences" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if HumanActivityPedometerData object is extendable" type="compliance" onload_delay="90" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P3" id="HumanActivityPedometerData_extend">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityPedometerData_extend.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityPedometerData" usage="true" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if HumanActivityPedometerData::speed exists, has type double, and is readonly" type="compliance" onload_delay="9" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P1" id="HumanActivityPedometerData_speed_attribute">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityPedometerData_speed_attribute.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityPedometerData" element_type="attribute" element_name="speed" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if HumanActivityPedometerData::stepStatus exists, has type string, and is readonly" type="compliance" onload_delay="9" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P1" id="HumanActivityPedometerData_stepStatus_attribute">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityPedometerData_stepStatus_attribute.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityPedometerData" element_type="attribute" element_name="stepStatus" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if HumanActivityPedometerData::walkingFrequency exists, has type double, and is readonly" type="compliance" onload_delay="9" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P1" id="HumanActivityPedometerData_walkingFrequency_attribute">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityPedometerData_walkingFrequency_attribute.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityPedometerData" element_type="attribute" element_name="walkingFrequency" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if interface HumanActivityPedometerData exists, it should not" type="compliance" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P3" id="HumanActivityPedometerData_notexist">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityPedometerData_notexist.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityPedometerData" usage="true" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if interface HumanActivityAccumulativePedometerInfo exists, it should not" type="compliance" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P3" id="HumanActivityAccumulativePedometerInfo_notexist">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityAccumulativePedometerInfo_notexist.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityAccumulativePedometerInfo" usage="true" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if HumanActivityMonitorManager::setAccumulativePedometerListener() with incorrect changeCallback argument throws exception" type="compliance" onload_delay="30" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P2" id="HumanActivityMonitorManager_setAccumulativePedometerListener_changeCallback_TypeMismatch">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_setAccumulativePedometerListener_changeCallback_TypeMismatch.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="setAccumulativePedometerListener" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if HumanActivityMonitorManager::setAccumulativePedometerListener() with incorrect changeCallback argument throws exception" type="compliance" onload_delay="30" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P2" id="HumanActivityMonitorManager_setAccumulativePedometerListener_changeCallback_TypeMismatch">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_setAccumulativePedometerListener_changeCallback_TypeMismatch.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="setAccumulativePedometerListener" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if HumanActivityMonitorManager::setAccumulativePedometerListener() method throws exception when changeCallback is invalid" type="compliance" onload_delay="30" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P2" id="HumanActivityMonitorManager_setAccumulativePedometerListener_changeCallback_invalid_cb">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_setAccumulativePedometerListener_changeCallback_invalid_cb.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="setAccumulativePedometerListener" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if method HumanActivityMonitorManager::setAccumulativePedometerListener() exists" type="compliance" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P0" id="HumanActivityMonitorManager_setAccumulativePedometerListener_exist">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_setAccumulativePedometerListener_exist.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="setAccumulativePedometerListener" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if HumanActivityMonitorManager::setAccumulativePedometerListener() throws exception when changeCallback is missing" type="compliance" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P2" id="HumanActivityMonitorManager_setAccumulativePedometerListener_misarg">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_setAccumulativePedometerListener_misarg.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="setAccumulativePedometerListener" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if HumanActivityMonitorManager::unsetAccumulativePedometerListener() method works properly" type="compliance" onload_delay="30" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P1" id="HumanActivityMonitorManager_unsetAccumulativePedometerListener">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_unsetAccumulativePedometerListener.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="humanactivitymonitor" element_type="method" element_name="unsetAccumulativePedometerListener" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if HumanActivityMonitorManager::unsetAccumulativePedometerListener() method exists" type="compliance" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P0" id="HumanActivityMonitorManager_unsetAccumulativePedometerListener_exist">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_unsetAccumulativePedometerListener_exist.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="unsetAccumulativePedometerListener" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if HumanActivityMonitorManager::unsetAccumulativePedometerListener() method with extra argument" type="compliance" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P1" id="HumanActivityMonitorManager_unsetAccumulativePedometerListener_extra_argument">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_unsetAccumulativePedometerListener_extra_argument.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="unsetAccumulativePedometerListener" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if the specifies the pedometer user's current movement type is NOT_MOVING" type="compliance" onload_delay="60" status="approved" component="Tizen Device APIs/HumanActivityMonitor/HumanActivityMonitorManager" execution_type="manual" priority="P1" id="HumanActivityMonitorManager_getHumanActivityData_stepStatus_NOT_MOVING">
- <description>
- <steps>
- <step order="1">
- <step_desc>Press run button, then keep the device stationary.</step_desc>
- <expected>Pass</expected>
- </step>
- </steps>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_getHumanActivityData_stepStatus_NOT_MOVING.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="addActivityRecognitionListener M" element_type="method" element_name="addActivityRecognitionListener" specification="HumanActivityMonitorManager" section="HumanActivityMonitor" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitormanager.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if the specifies the pedometer user's current movement type is WALKING" type="compliance" onload_delay="60" status="approved" component="Tizen Device APIs/HumanActivityMonitor/HumanActivityMonitorManager" execution_type="manual" priority="P1" id="HumanActivityMonitorManager_getHumanActivityData_stepStatus_WALKING">
- <description>
- <steps>
- <step order="1">
- <step_desc>Press run button. Pretend walking with the device.</step_desc>
- <expected>Pass</expected>
- </step>
- </steps>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_getHumanActivityData_stepStatus_WALKING.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="getHumanActivityData M" element_type="method" element_name="getHumanActivityData" specification="HumanActivityMonitorManager" section="HumanActivityMonitor" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitormanager.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if the specifies the pedometer user's current movement type is RUNNING" type="compliance" onload_delay="60" status="approved" component="Tizen Device APIs/HumanActivityMonitor/HumanActivityMonitorManager" execution_type="manual" priority="P1" id="HumanActivityMonitorManager_getHumanActivityData_stepStatus_RUNNING">
- <description>
- <steps>
- <step order="1">
- <step_desc>Press run button. Pretend running with the device.</step_desc>
- <expected>Pass</expected>
- </step>
- </steps>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_getHumanActivityData_stepStatus_RUNNING.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="addActivityRecognitionListener M" element_type="method" element_name="addActivityRecognitionListener" specification="HumanActivityMonitorManager" section="HumanActivityMonitor" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitormanager.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if the specifies the pedometer user's current movement type is UNKNOWN" type="compliance" onload_delay="60" status="approved" component="Tizen Device APIs/HumanActivityMonitor/HumanActivityMonitorManager" execution_type="manual" priority="P1" id="HumanActivityMonitorManager_getHumanActivityData_stepStatus_UNKNOWN">
- <description>
- <steps>
- <step order="1">
- <step_desc>Press run button, press Power key to keep the device LCS off, then Pretend walking with the device.</step_desc>
- <expected>Pass</expected>
- </step>
- </steps>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_getHumanActivityData_stepStatus_UNKNOWN.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="addActivityRecognitionListener M" element_type="method" element_name="addActivityRecognitionListener" specification="HumanActivityMonitorManager" section="HumanActivityMonitor" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitormanager.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if readRecorderData can be called with empty object as query argument" type="compliance" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="manual" onload_delay="60" priority="P1" id="HumanActivityMonitorManager_readRecorderData_query_empty">
- <description>
- <steps>
- <step order="1">
- <step_desc>Press run button. Pretend walking with the device.</step_desc>
- <expected>Pass</expected>
- </step>
- </steps>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_readRecorderData_query_empty.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="readRecorderData" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if readRecorderData without optional arguments works properly for PEDOMETER HumanActivity type" type="compliance" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="manual" onload_delay="60" priority="P1" id="HumanActivityMonitorManager_readRecorderData_type_PEDOMETER">
- <description>
- <steps>
- <step order="1">
- <step_desc>Press run button. Pretend walking with the device.</step_desc>
- <expected>Pass</expected>
- </step>
- </steps>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_readRecorderData_type_PEDOMETER.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="readRecorderData" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if readRecorderData with optional arguments works properly" type="compliance" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="manual" onload_delay="60" priority="P1" id="HumanActivityMonitorManager_readRecorderData_with_errorCallback">
- <description>
- <steps>
- <step order="1">
- <step_desc>Press run button. Pretend walking with the device.</step_desc>
- <expected>Pass</expected>
- </step>
- </steps>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_readRecorderData_with_errorCallback.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="readRecorderData" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if HumanActivityMonitorManager::startRecorder() can be called with empty object as option argument" type="compliance" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" priority="P1" id="HumanActivityMonitorManager_startRecorder_option_empty">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_startRecorder_option_empty.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="startRecorder" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if method HumanActivityMonitorManager::startRecorder() works properly for PEDOMETER HumanActivity type" type="compliance" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" priority="P1" id="HumanActivityMonitorManager_startRecorder_type_PEDOMETER">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_startRecorder_type_PEDOMETER.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="startRecorder" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if method HumanActivityMonitorManager::stopRecorder() works properly for PEDOMETER HumanActivity type" type="compliance" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" priority="P1" id="HumanActivityMonitorManager_stopRecorder_type_PEDOMETER">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_stopRecorder_type_PEDOMETER.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="stopRecorder" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if HumanActivityRecorderPedometerData have calorie attribute with proper type, readonly" type="compliance" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="manual" onload_delay="60" priority="P1" id="HumanActivityRecorderPedometerData_calorie_attribute">
- <description>
- <steps>
- <step order="1">
- <step_desc>Press run button. Pretend walking with the device.</step_desc>
- <expected>Pass</expected>
- </step>
- </steps>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityRecorderPedometerData_calorie_attribute.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityRecorderPedometerData" element_type="attribute" element_name="calorie" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if HumanActivityRecorderPedometerData have distance attribute with proper type, readonly" type="compliance" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="manual" onload_delay="60" priority="P1" id="HumanActivityRecorderPedometerData_distance_attribute">
- <description>
- <steps>
- <step order="1">
- <step_desc>Press run button. Pretend walking with the device.</step_desc>
- <expected>Pass</expected>
- </step>
- </steps>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityRecorderPedometerData_distance_attribute.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityRecorderPedometerData" element_type="attribute" element_name="distance" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if HumanActivityRecorderPedometerData have endTime attribute with proper type, readonly" type="compliance" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="manual" onload_delay="60" priority="P1" id="HumanActivityRecorderPedometerData_endTime_attribute">
- <description>
- <steps>
- <step order="1">
- <step_desc>Press run button. Pretend walking with the device.</step_desc>
- <expected>Pass</expected>
- </step>
- </steps>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityRecorderPedometerData_endTime_attribute.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityRecorderPedometerData" element_type="attribute" element_name="endTime" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if HumanActivityRecorderPedometerData cannot be called in new expression and as a function or in new expression" type="compliance" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" priority="P3" id="HumanActivityRecorderPedometerData_notexist">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityRecorderPedometerData_notexist.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityRecorderPedometerData" usage="true" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if HumanActivityRecorderPedometerData have runStepCount attribute with proper type, readonly" type="compliance" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="manual" onload_delay="60" priority="P1" id="HumanActivityRecorderPedometerData_runStepCount_attribute">
- <description>
- <steps>
- <step order="1">
- <step_desc>Press run button. Pretend walking with the device.</step_desc>
- <expected>Pass</expected>
- </step>
- </steps>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityRecorderPedometerData_runStepCount_attribute.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityRecorderPedometerData" element_type="attribute" element_name="runStepCount" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if HumanActivityRecorderPedometerData have startTime attribute with proper type, readonly" type="compliance" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="manual" onload_delay="60" priority="P1" id="HumanActivityRecorderPedometerData_startTime_attribute">
- <description>
- <steps>
- <step order="1">
- <step_desc>Press run button. Pretend walking with the device.</step_desc>
- <expected>Pass</expected>
- </step>
- </steps>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityRecorderPedometerData_startTime_attribute.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityRecorderPedometerData" element_type="attribute" element_name="startTime" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if HumanActivityRecorderPedometerData have totalStepCount attribute with proper type, readonly" type="compliance" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="manual" onload_delay="60" priority="P1" id="HumanActivityRecorderPedometerData_totalStepCount_attribute">
- <description>
- <steps>
- <step order="1">
- <step_desc>Press run button. Pretend walking with the device.</step_desc>
- <expected>Pass</expected>
- </step>
- </steps>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityRecorderPedometerData_totalStepCount_attribute.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityRecorderPedometerData" element_type="attribute" element_name="totalStepCount" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if HumanActivityRecorderPedometerData have walkStepCount attribute with proper type, readonly" type="compliance" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="manual" onload_delay="60" priority="P1" id="HumanActivityRecorderPedometerData_walkStepCount_attribute">
- <description>
- <steps>
- <step order="1">
- <step_desc>Press run button. Pretend walking with the device.</step_desc>
- <expected>Pass</expected>
- </step>
- </steps>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityRecorderPedometerData_walkStepCount_attribute.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityRecorderPedometerData" element_type="attribute" element_name="walkStepCount" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- </set>
- <set name="HumanActivityMonitor_with_wrist_up">
- <capabilities>
- <capability name="http://tizen.org/feature/sensor.wrist_up"/>
- </capabilities>
- <testcase purpose="Check if method HumanActivityMonitorManager::start() works properly for WRIST_UP" type="compliance" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P1" id="HumanActivityMonitorManager_start_type_WRIST_UP">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_start_type_WRIST_UP.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="start" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if HumanActivityMonitorManager::stop() method with WRIST_UP works properly" type="compliance" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P1" id="HumanActivityMonitorManager_stop_type_WRIST_UP">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_stop_type_WRIST_UP.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="stop" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- </set>
- <set name="HumanActivityMonitor_heart_rate_monitor">
- <capabilities>
- <capability name="http://tizen.org/feature/sensor.heart_rate_monitor"/>
- </capabilities>
- <testcase purpose="Check if HumanActivityMonitorManager::getHumanActivityData() method works properly for HumanActivityType HRM" type="compliance" onload_delay="30" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P1" id="HumanActivityMonitorManager_getHumanActivityData_type_HRM">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_getHumanActivityData_type_HRM.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="getHumanActivityData" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if method HumanActivityMonitorManager::start() works properly for HRM HumanActivity type" type="compliance" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P1" id="HumanActivityMonitorManager_start_type_HRM">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_start_type_HRM.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="start" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if HumanActivityMonitorManager::stop() method works properly for HumanActivity type HRM" type="compliance" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P1" id="HumanActivityMonitorManager_stop_type_HRM">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_stop_type_HRM.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="stop" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if HumanActivityHRMData::heartRate exists, has type long, and is readonly " type="compliance" onload_delay="9 " status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P1 " id="HumanActivityHRMData_heartRate_attribute">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityHRMData_heartRate_attribute.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityGPSInfo" element_type="attribute" element_name="heartRate" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if HumanActivityHRMData::rRInterval exists, has type long, and is readonly " type="compliance" onload_delay="9 " status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P1 " id="HumanActivityHRMData_rRInterval_attribute">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityHRMData_rRInterval_attribute.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityGPSInfo" element_type="attribute" element_name="rRInterval" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if method HumanActivityMonitorOption::callbackInterval works properly for HRM HumanActivity type" type="compliance" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P1" id="HumanActivityMonitorOption_callbackInterval_type_HRM">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorOption_callbackInterval_type_HRM.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityMonitorOption" element_type="attribute" element_name="callbackInterval" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if method HumanActivityMonitorOption::callbackInterval() works properly when set to null" type="compliance" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P1" id="HumanActivityMonitorOption_callbackInterval_type_HRM_default">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorOption_callbackInterval_type_HRM_default.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityMonitorOption" element_type="attribute" element_name="callbackInterval" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if readRecorderData without optional arguments works properly for HRM HumanActivity type" type="compliance" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type=""manual" onload_delay="1500" priority="P1" id="HumanActivityMonitorManager_readRecorderData_type_HRM">
- <description>
- <steps>
- <step order="1">
- <step_desc>Waiting for 10 minutes for the callback.</step_desc>
- <expected>Pass should be shown in the page after 10 minutes.</expected>
- </step>
- </steps>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_readRecorderData_type_HRM.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="readRecorderData" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if method HumanActivityMonitorManager::startRecorder() works properly for HRM HumanActivity type" type="compliance" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" priority="P1" id="HumanActivityMonitorManager_startRecorder_type_HRM">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_startRecorder_type_HRM.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="startRecorder" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if method HumanActivityMonitorManager::startRecorder() works properly with optional argument" type="compliance" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" priority="P1" id="HumanActivityMonitorManager_startRecorder_with_option">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_startRecorder_with_option.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="startRecorder" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if method HumanActivityMonitorManager::stopRecorder() works properly for HRM HumanActivity type" type="compliance" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" priority="P1" id="HumanActivityMonitorManager_stopRecorder_type_HRM">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_stopRecorder_type_HRM.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="stopRecorder" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if HumanActivityReadRecorderSuccessCallback onsuccess is called and if its arguments have proper type" type="compliance" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="manual" onload_delay="60" priority="P1" id="HumanActivityReadRecorderSuccessCallback_onsuccess">
- <description>
- <pre_condition>Before run this tc, run HumanActivityMonitorManager_readRecorderData_type_HRM.html first, because we should wait at least 10 minutes to get the recorded data after start recorder. But if you tested that TC already, you can run this TC now.</pre_condition>
- <steps>
- <step order="1">
- <step_desc>Waiting for 10 minutes for the callback.</step_desc>
- <expected>Pass should be shown in the page after 10 minutes.</expected>
- </step>
- </steps>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityReadRecorderSuccessCallback_onsuccess.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityReadRecorderSuccessCallback" usage="true" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if HumanActivityRecorderHRMData have endTime attribute with proper type, readonly" type="compliance" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="manual" onload_delay="60" priority="P1" id="HumanActivityRecorderHRMData_endTime_attribute">
- <description>
- <pre_condition>Before run this tc, run HumanActivityMonitorManager_readRecorderData_type_HRM.html first, because we should wait at least 10 minutes to get the recorded data after start recorder. But if you tested that TC already, you can run this TC now.</pre_condition>
- <steps>
- <step order="1">
- <step_desc>Waiting for 10 minutes for the callback.</step_desc>
- <expected>Pass should be shown in the page after 10 minutes.</expected>
- </step>
- </steps>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityRecorderHRMData_endTime_attribute.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityRecorderHRMData" element_type="attribute" element_name="endTime" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if HumanActivityRecorderHRMData have heartRate attribute with proper type, readonly" type="compliance" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="manual" onload_delay="60" priority="P1" id="HumanActivityRecorderHRMData_heartRate_attribute">
- <description>
- <pre_condition>Before run this tc, run HumanActivityMonitorManager_readRecorderData_type_HRM.html first, because we should wait at least 10 minutes to get the recorded data after start recorder. But if you tested that TC already, you can run this TC now.</pre_condition>
- <steps>
- <step order="1">
- <step_desc>Waiting for 10 minutes for the callback.</step_desc>
- <expected>Pass should be shown in the page after 10 minutes.</expected>
- </step>
- </steps>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityRecorderHRMData_heartRate_attribute.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityRecorderHRMData" element_type="attribute" element_name="heartRate" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if HumanActivityRecorderHRMData cannot be called in new expression and as a function or in new expression" type="compliance" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" priority="P3" id="HumanActivityRecorderHRMData_notexist">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityRecorderHRMData_notexist.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityRecorderHRMData" usage="true" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if HumanActivityRecorderHRMData have startTime attribute with proper type, readonly" type="compliance" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="manual" onload_delay="60" priority="P1" id="HumanActivityRecorderHRMData_startTime_attribute">
- <description>
- <pre_condition>Before run this tc, run HumanActivityMonitorManager_readRecorderData_type_HRM.html first, because we should wait at least 10 minutes to get the recorded data after start recorder. But if you tested that TC already, you can run this TC now.</pre_condition>
- <steps>
- <step order="1">
- <step_desc>Waiting for 10 minutes for the callback.</step_desc>
- <expected>Pass should be shown in the page after 10 minutes.</expected>
- </step>
- </steps>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityRecorderHRMData_startTime_attribute.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityRecorderHRMData" element_type="attribute" element_name="startTime" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- </set>
- <set name="HumanActivityMonitor_location_batch">
- <capabilities>
- <capability name="http://tizen.org/feature/location.batch"/>
- </capabilities>
- <testcase purpose="Check if method HumanActivityMonitorManager::start() works properly for GPS HumanActivity type with optional argument" type="compliance" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P1" id="HumanActivityMonitorManager_start_with_option">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_start_with_option.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="start" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if method HumanActivityMonitorManager::start() works properly for GPS HumanActivity type" type="compliance" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P1" id="HumanActivityMonitorManager_start_type_GPS">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_start_type_GPS.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="start" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if HumanActivityMonitorManager::start() can be called with empty object as option argument" type="compliance" onload_delay="30" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P1" id="HumanActivityMonitorManager_start_option_empty">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_start_option_empty.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="start" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if HumanActivityMonitorManager::stop() method works properly for HumanActivity type GPS" type="compliance" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P1" id="HumanActivityMonitorManager_stop_type_GPS">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_stop_type_GPS.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="stop" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if HumanActivityGPSInfo::altitude exists, has type double, and is readonly " type="compliance" onload_delay="9 " status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P1 " id="HumanActivityGPSInfo_altitude_attribute">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityGPSInfo_altitude_attribute.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityGPSInfo" element_type="attribute" element_name="altitude" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if HumanActivityGPSInfo::errorRange exists, has type long, and is readonly " type="compliance" onload_delay="9 " status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P1 " id="HumanActivityGPSInfo_errorRange_attribute">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityGPSInfo_errorRange_attribute.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityGPSInfo" element_type="attribute" element_name="errorRange" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if HumanActivityGPSInfo::latitude exists, has type double, and is readonly " type="compliance" onload_delay="9 " status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P1 " id="HumanActivityGPSInfo_latitude_attribute">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityGPSInfo_latitude_attribute.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityGPSInfo" element_type="attribute" element_name="latitude" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if HumanActivityGPSInfo::longitude exists, has type double, and is readonly " type="compliance" onload_delay="9 " status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P1 " id="HumanActivityGPSInfo_longitude_attribute">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityGPSInfo_longitude_attribute.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityGPSInfo" element_type="attribute" element_name="longitude" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if HumanActivityGPSInfo::speed exists, has type double, and is readonly " type="compliance" onload_delay="9 " status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P1 " id="HumanActivityGPSInfo_speed_attribute">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityGPSInfo_speed_attribute.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityGPSInfo" element_type="attribute" element_name="speed" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if HumanActivityGPSInfo::speed exists, has type long, and is readonly " type="compliance" onload_delay="9 " status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P1 " id="HumanActivityGPSInfo_timestamp_attribute">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityGPSInfo_timestamp_attribute.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityGPSInfo" element_type="attribute" element_name="speed" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if method HumanActivityMonitorOption::callbackInterval works properly for GPS HumanActivity type" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="manual" priority="P1" id="HumanActivityMonitorOption_callbackInterval_type_GPS" onload_delay="300">
- <description>
- <steps>
- <step order="1">
- <step_desc>Wait 155 seconds for the callback</step_desc>
- <expected>Pass should be shown in the page after 155 seconds</expected>
- </step>
- </steps>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorOption_callbackInterval_type_GPS.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityMonitorOption" element_type="attribute" element_name="callbackInterval" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if method HumanActivityMonitorOption::callbackInterval works properly when set to null" type="compliance" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="manual" priority="P1" id="HumanActivityMonitorOption_callbackInterval_type_GPS_default">
- <description>
- <steps>
- <step order="1">
- <step_desc>Wait 150 seconds for the callback</step_desc>
- <expected>Pass should be shown in the page after 150 seconds</expected>
- </step>
- </steps>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorOption_callbackInterval_type_GPS_default.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityMonitorOption" element_type="attribute" element_name="callbackInterval" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if method HumanActivityMonitorOption::sampleInterval works properly for GPS HumanActivity type" type="compliance" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="manual" priority="P1" id="HumanActivityMonitorOption_sampleInterval_type_GPS">
- <description>
- <steps>
- <step order="1">
- <step_desc>Wait 120 seconds for the callback</step_desc>
- <expected>Pass should be shown in the page after 120 seconds</expected>
- </step>
- </steps>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorOption_sampleInterval_type_GPS.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityMonitorOption" element_type="attribute" element_name="sampleInterval" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if method HumanActivityMonitorOption::sampleInterval works properly when set to null" type="compliance" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="manual" priority="P1" id="HumanActivityMonitorOption_sampleInterval_type_GPS_default">
- <description>
- <steps>
- <step order="1">
- <step_desc>Wait 120 seconds for the callback</step_desc>
- <expected>Pass should be shown in the page after 120 seconds</expected>
- </step>
- </steps>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorOption_sampleInterval_type_GPS_default.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityMonitorOption" element_type="attribute" element_name="sampleInterval" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check exception in error callback of HumanActivityMonitorManager::start() method" type="compliance" onload_delay="30" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="manual" priority="P2" id="HumanActivityMonitorManager_start_errorCallback_invoked">
- <description>
- <steps>
- <step order="1">
- <step_desc>Please set the GPS function to disabled in the location settings</step_desc>
- <expected>Pass should be shown in the page after GPS off</expected>
- </step>
- </steps>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_start_errorCallback_invoked.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="start" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- </set>
- <set name="HumanActivityMonitor_sleep_monitor">
- <capabilities>
- <capability name="http://tizen.org/feature/sensor.sleep_monitor"/>
- </capabilities>
- <testcase purpose="Check if method HumanActivityMonitorManager::start() works properly for SLEEP_MONITOR" type="compliance" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P1" id="HumanActivityMonitorManager_start_type_SLEEP_MONITOR">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_start_type_SLEEP_MONITOR.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="start" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if HumanActivityMonitorManager::stop() method with SLEEP_MONITOR works properly" type="compliance" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P1" id="HumanActivityMonitorManager_stop_type_SLEEP_MONITOR">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_stop_type_SLEEP_MONITOR.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="stop" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if HumanActivitySleepMonitorData::status exists and is readonly " type="compliance" onload_delay="9 " status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P1 " id="HumanActivitySleepMonitorData_status_attribute">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivitySleepMonitorData_status_attribute.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivitySleepMonitorData" element_type="attribute" element_name="status" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if HumanActivitySleepMonitorData::timestamp exists, has type long, and is readonly" type="compliance" onload_delay="9 " status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P1 " id="HumanActivitySleepMonitorData_timestamp_attribute">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivitySleepMonitorData_timestamp_attribute.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivitySleepMonitorData" element_type="attribute" element_name="timestamp" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if readRecorderData without optional arguments works properly for SLEEP_MONITOR HumanActivity type" type="compliance" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" priority="P1" id="HumanActivityMonitorManager_readRecorderData_type_SLEEP_MONITOR">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_readRecorderData_type_SLEEP_MONITOR.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="readRecorderData" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if method HumanActivityMonitorManager::startRecorder() works properly for SLEEP_MONITOR HumanActivity type" type="compliance" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" priority="P1" id="HumanActivityMonitorManager_startRecorder_type_SLEEP_MONITOR">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_startRecorder_type_SLEEP_MONITOR.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="startRecorder" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if method HumanActivityMonitorManager::stopRecorder () works properly for SLEEP_MONITOR HumanActivity type" type="compliance" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" priority="P1" id="HumanActivityMonitorManager_stopRecorder_type_SLEEP_MONITOR">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_stopRecorder_type_SLEEP_MONITOR.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="stopRecorder" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if HumanActivityRecorderSleepMonitorData have endTime attribute with proper type, readonly" type="compliance" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" priority="P1" id="HumanActivityRecorderSleepMonitorData_endTime_attribute">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityRecorderSleepMonitorData_endTime_attribute.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityRecorderSleepMonitorData" element_type="attribute" element_name="endTime" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if HumanActivityRecorderSleepMonitorData cannot be called in new expression and as a function or in new expression" type="compliance" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" priority="P3" id="HumanActivityRecorderSleepMonitorData_notexist">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityRecorderSleepMonitorData_notexist.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityRecorderSleepMonitorData" usage="true" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if HumanActivityRecorderSleepMonitorData have startTime attribute with proper type, readonly" type="compliance" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" priority="P1" id="HumanActivityRecorderSleepMonitorData_startTime_attribute">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityRecorderSleepMonitorData_startTime_attribute.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityRecorderSleepMonitorData" element_type="attribute" element_name="startTime" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if HumanActivityRecorderSleepMonitorData have status attribute with proper type, readonly" type="compliance" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" priority="P1" id="HumanActivityRecorderSleepMonitorData_status_attribute">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityRecorderSleepMonitorData_status_attribute.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityRecorderSleepMonitorData" element_type="attribute" element_name="status" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- </set>
- </suite>
-</test_definition>
\ No newline at end of file
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>
-<?xml-stylesheet type="text/xsl" href="./testcase.xsl"?>
-<test_definition>
- <suite category="Tizen Web Device APIs" extension="crosswalk" name="tct-humanactivitymonitor-tizen-tests">
- <set name="HumanActivityMonitor" type="js">
- <capabilities>
- <capability name="http://tizen.org/feature/humanactivitymonitor"/>
- </capabilities>
- <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityData_notexist" priority="P3" purpose="Check if interface HumanActivityData exists, it should not">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityData_notexist.html</test_script_entry>
- </description>
- </testcase>
- <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="StepDifference_notexist" priority="P3" purpose="Check if interface StepDifference exists, it should not">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/StepDifference_notexist.html</test_script_entry>
- </description>
- </testcase>
- <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityAccumulativePedometerData_notexist" priority="P3" purpose="Check if interface HumanActivityAccumulativePedometerData exists, it should not">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityAccumulativePedometerData_notexist.html</test_script_entry>
- </description>
- </testcase>
- <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityHRMData_notexist" priority="P3" purpose="Check if interface HumanActivityHRMData exists, it should not">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityHRMData_notexist.html</test_script_entry>
- </description>
- </testcase>
- <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityGPSInfo_notexist" priority="P3" purpose="Check if interface HumanActivityGPSInfo exists, it should not">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityGPSInfo_notexist.html</test_script_entry>
- </description>
- </testcase>
- <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityGPSInfoArray_notexist" priority="P3" purpose="Check if interface HumanActivityGPSInfoArray exists, it should not">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityGPSInfoArray_notexist.html</test_script_entry>
- </description>
- </testcase>
- <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityRecognitionData_notexist" priority="P3" purpose="Check if interface HumanActivityRecognitionData exists, it should not">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityRecognitionData_notexist.html</test_script_entry>
- </description>
- </testcase>
- <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivitySleepMonitorData_notexist" priority="P3" purpose="Check if interface HumanActivitySleepMonitorData exists, it should not">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivitySleepMonitorData_notexist.html</test_script_entry>
- </description>
- </testcase>
- <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManagerObject_notexist" priority="P3" purpose="Check if interface HumanActivityMonitorManagerObject exists, it should not">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManagerObject_notexist.html</test_script_entry>
- </description>
- </testcase>
- <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_extend" priority="P3" purpose="Check if HumanActivityMonitorManager is extendable">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_extend.html</test_script_entry>
- </description>
- </testcase>
- <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_getHumanActivityData_exist" priority="P0" purpose="Check if HumanActivityMonitorManager::getHumanActivityData() method exists">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_getHumanActivityData_exist.html</test_script_entry>
- </description>
- </testcase>
- <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_in_tizen" priority="P3" purpose="Check if humanactivitymonitor exists in tizen">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_in_tizen.html</test_script_entry>
- </description>
- </testcase>
- <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_notexist" priority="P3" purpose="Check if interface HumanActivityMonitorManager exists, it should not">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_notexist.html</test_script_entry>
- </description>
- </testcase>
- <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_start_exist" priority="P0" purpose="Check if method HumanActivityMonitorManager::start() exists">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_start_exist.html</test_script_entry>
- </description>
- </testcase>
- <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_start_misarg" priority="P2" purpose="Check if HumanActivityMonitorManager::start() throws exception when type and successCallback are missing">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_start_misarg.html</test_script_entry>
- </description>
- </testcase>
- <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_stop_exist" priority="P0" purpose="Check if HumanActivityMonitorManager::stop() method exists">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_stop_exist.html</test_script_entry>
- </description>
- </testcase>
- <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_stop_misarg" priority="P2" purpose="Check if HumanActivityMonitorManager::stop() throws exception when type is missing">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_stop_misarg.html</test_script_entry>
- </description>
- </testcase>
- <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorSuccessCallback_notexist" priority="P3" purpose="Check if HumanActivityMonitorSuccessCallback does not exist">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorSuccessCallback_notexist.html</test_script_entry>
- </description>
- </testcase>
- <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_start_option_TypeMismatch" onload_delay="30" purpose="Check if HumanActivityMonitorManager::start() with incorrect option argument throws exception">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_start_option_TypeMismatch.html</test_script_entry>
- </description>
- </testcase>
- <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_start_changedCallback_TypeMismatch" onload_delay="30" purpose="Check if HumanActivityMonitorManager::start() with incorrect successCallback argument throws exception">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_start_changedCallback_TypeMismatch.html</test_script_entry>
- </description>
- </testcase>
- <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_start_changedCallback_invalid_cb" onload_delay="30" purpose="Check if HumanActivityMonitorManager::start() method throws exception when HumanActivityMonitorSuccessCallback is invalid">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_start_changedCallback_invalid_cb.html</test_script_entry>
- </description>
- </testcase>
- <testcase purpose="Check if readRecorderData throw NotSupportedError called with not supported human activity recorder type" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_readRecorderData_NotSupportedError">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_readRecorderData_NotSupportedError.html</test_script_entry>
- </description>
- </testcase>
- <testcase purpose="Check if readRecorderData throws exception when errorCallback is incorrect" onload_delay="30" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_readRecorderData_errorCallback_TypeMismatch">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_readRecorderData_errorCallback_TypeMismatch.html</test_script_entry>
- </description>
- </testcase>
- <testcase purpose="Check if readRecorderData throws exception when error callback is invalid" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_readRecorderData_errorCallback_invalid_cb">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_readRecorderData_errorCallback_invalid_cb.html</test_script_entry>
- </description>
- </testcase>
- <testcase purpose="Check if readRecorderData exists" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_readRecorderData_exist">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_readRecorderData_exist.html</test_script_entry>
- </description>
- </testcase>
- <testcase purpose="Check if HumanActivityMonitorManager::readRecorderData() called with missing non-optional argument throws an exception" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_readRecorderData_misarg">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_readRecorderData_misarg.html</test_script_entry>
- </description>
- </testcase>
- <testcase purpose="Check if readRecorderData throws exception when query is incorrect" onload_delay="30" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_readRecorderData_query_TypeMismatch">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_readRecorderData_query_TypeMismatch.html</test_script_entry>
- </description>
- </testcase>
- <testcase purpose="Check if readRecorderData throws exception when successCallback is incorrect" onload_delay="30" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_readRecorderData_successCallback_TypeMismatch">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_readRecorderData_successCallback_TypeMismatch.html</test_script_entry>
- </description>
- </testcase>
- <testcase purpose="Check if readRecorderData throws exception when success callback is invalid" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_readRecorderData_successCallback_invalid_cb">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_readRecorderData_successCallback_invalid_cb.html</test_script_entry>
- </description>
- </testcase>
- <testcase purpose="Check if readRecorderData without optional arguments works properly for PRESSURE HumanActivity type" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="manual" onload_delay="150" id="HumanActivityMonitorManager_readRecorderData_type_PRESSURE">
- <description>
- <steps>
- <step order="1">
- <step_desc>Waiting for 1 minutes for the callback.</step_desc>
- <expected>Pass should be shown in the page after 1 minutes.</expected>
- </step>
- </steps>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_readRecorderData_type_PRESSURE.html</test_script_entry>
- </description>
- </testcase>
- <testcase purpose="Check if HumanActivityMonitorManager::startRecorder() throw NotSupportedError called with not supported human activity recorder type" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_startRecorder_NotSupportedError">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_startRecorder_NotSupportedError.html</test_script_entry>
- </description>
- </testcase>
- <testcase purpose="Check if startRecorder exists" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_startRecorder_exist">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_startRecorder_exist.html</test_script_entry>
- </description>
- </testcase>
- <testcase purpose="Check if HumanActivityMonitorManager::startRecorder() called with missing non-optional argument throws an exception" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_startRecorder_misarg">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_startRecorder_misarg.html</test_script_entry>
- </description>
- </testcase>
- <testcase purpose="Check if method HumanActivityMonitorManager::startRecorder() works properly for PRESSURE HumanActivity type" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_startRecorder_type_PRESSURE">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_startRecorder_type_PRESSURE.html</test_script_entry>
- </description>
- </testcase>
- <testcase purpose="Check if HumanActivityMonitorManager::stopRecorder() throw NotSupportedError called with not supported human activity recorder type" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_stopRecorder_NotSupportedError">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_stopRecorder_NotSupportedError.html</test_script_entry>
- </description>
- </testcase>
- <testcase purpose="Check if stopRecorder exists" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_stopRecorder_exist">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_stopRecorder_exist.html</test_script_entry>
- </description>
- </testcase>
- <testcase purpose="Check if HumanActivityMonitorManager::stopRecorder() called with missing non-optional argument throws an exception" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_stopRecorder_misarg">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_stopRecorder_misarg.html</test_script_entry>
- </description>
- </testcase>
- <testcase purpose="Check if method HumanActivityMonitorManager::stopRecorder() works properly for PRESSURE HumanActivity type" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_stopRecorder_type_PRESSURE">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_stopRecorder_type_PRESSURE.html</test_script_entry>
- </description>
- </testcase>
- <testcase purpose="Check if HumanActivityReadRecorderSuccessCallback cannot be called in new expression and as a function or in new expression" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" id="HumanActivityReadRecorderSuccessCallback_notexist">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityReadRecorderSuccessCallback_notexist.html</test_script_entry>
- </description>
- </testcase>
- <testcase purpose="Check if HumanActivityRecorderData cannot be called in new expression and as a function or in new expression" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" id="HumanActivityRecorderData_notexist">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityRecorderData_notexist.html</test_script_entry>
- </description>
- </testcase>
- <testcase purpose="Check if HumanActivityRecorderPressureData have average attribute with proper type, readonly" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="manual" onload_delay="90" id="HumanActivityRecorderPressureData_average_attribute">
- <description>
- <pre_condition>Before run this tc, run HumanActivityMonitorManager_readRecorderData_type_PRESSURE.html first, because we should wait at least 1 minute to get the recorded data after start recorder. But if you tested that TC already, you can run this TC now.</pre_condition>
- <steps>
- <step order="1">
- <step_desc>Waiting for 1 minutes for the callback.</step_desc>
- <expected>Pass should be shown in the page after 1 minutes.</expected>
- </step>
- </steps>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityRecorderPressureData_average_attribute.html</test_script_entry>
- </description>
- </testcase>
- <testcase purpose="Check if HumanActivityRecorderPressureData have endTime attribute with proper type, readonly" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="manual" onload_delay="90" id="HumanActivityRecorderPressureData_endTime_attribute">
- <description>
- <pre_condition>Before run this tc, run HumanActivityMonitorManager_readRecorderData_type_PRESSURE.html first, because we should wait at least 1 minute to get the recorded data after start recorder. But if you tested that TC already, you can run this TC now.</pre_condition>
- <steps>
- <step order="1">
- <step_desc>Waiting for 1 minutes for the callback.</step_desc>
- <expected>Pass should be shown in the page after 1 minutes.</expected>
- </step>
- </steps>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityRecorderPressureData_endTime_attribute.html</test_script_entry>
- </description>
- </testcase>
- <testcase purpose="Check if HumanActivityRecorderPressureData have max attribute with proper type, readonly" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="manual" onload_delay="90" id="HumanActivityRecorderPressureData_max_attribute">
- <description>
- <pre_condition>Before run this tc, run HumanActivityMonitorManager_readRecorderData_type_PRESSURE.html first, because we should wait at least 1 minute to get the recorded data after start recorder. But if you tested that TC already, you can run this TC now.</pre_condition>
- <steps>
- <step order="1">
- <step_desc>Waiting for 1 minutes for the callback.</step_desc>
- <expected>Pass should be shown in the page after 1 minutes.</expected>
- </step>
- </steps>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityRecorderPressureData_max_attribute.html</test_script_entry>
- </description>
- </testcase>
- <testcase purpose="Check if HumanActivityRecorderPressureData have min attribute with proper type, readonly" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="manual" onload_delay="90" id="HumanActivityRecorderPressureData_min_attribute">
- <description>
- <pre_condition>Before run this tc, run HumanActivityMonitorManager_readRecorderData_type_PRESSURE.html first, because we should wait at least 1 minute to get the recorded data after start recorder. But if you tested that TC already, you can run this TC now.</pre_condition>
- <steps>
- <step order="1">
- <step_desc>Waiting for 1 minutes for the callback.</step_desc>
- <expected>Pass should be shown in the page after 1 minutes.</expected>
- </step>
- </steps>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityRecorderPressureData_min_attribute.html</test_script_entry>
- </description>
- </testcase>
- <testcase purpose="Check if HumanActivityRecorderPressureData cannot be called in new expression and as a function or in new expression" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" id="HumanActivityRecorderPressureData_notexist">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityRecorderPressureData_notexist.html</test_script_entry>
- </description>
- </testcase>
- <testcase purpose="Check if HumanActivityRecorderPressureData have startTime attribute with proper type, readonly" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="manual" onload_delay="90" id="HumanActivityRecorderPressureData_startTime_attribute">
- <description>
- <pre_condition>Before run this tc, run HumanActivityMonitorManager_readRecorderData_type_PRESSURE.html first, because we should wait at least 1 minute to get the recorded data after start recorder. But if you tested that TC already, you can run this TC now.</pre_condition>
- <steps>
- <step order="1">
- <step_desc>Waiting for 1 minutes for the callback.</step_desc>
- <expected>Pass should be shown in the page after 1 minutes.</expected>
- </step>
- </steps>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityRecorderPressureData_startTime_attribute.html</test_script_entry>
- </description>
- </testcase>
- </set>
- <set name="HumanActivityMonitor_with_activity_recognition">
- <capabilities>
- <capability name="http://tizen.org/feature/sensor.activity_recognition"/>
- </capabilities>
- <testcase purpose="Check if the method addActivityRecognitionListener of HumanActivityMonitorManager returns proper value" onload_delay="60" component="Tizen Device APIs/HumanActivityMonitor/HumanActivityMonitorManager" execution_type="manual" priority="P1" id="HumanActivityMonitorManager_addActivityRecognitionListener_STATIONARY">
- <description>
- <steps>
- <step order="1">
- <step_desc>Press run button, then keep the device stationary</step_desc>
- <expected>Pass</expected>
- </step>
- </steps>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_addActivityRecognitionListener_STATIONARY.html</test_script_entry>
- </description>
- </testcase>
- <testcase purpose="Check if the method addActivityRecognitionListener of HumanActivityMonitorManager returns proper value" onload_delay="60" component="Tizen Device APIs/HumanActivityMonitor/HumanActivityMonitorManager" execution_type="manual" priority="P1" id="HumanActivityMonitorManager_addActivityRecognitionListener_WALKING">
- <description>
- <steps>
- <step order="1">
- <step_desc>Press run button. Pretend walking with the device.</step_desc>
- <expected>Pass</expected>
- </step>
- </steps>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_addActivityRecognitionListener_WALKING.html</test_script_entry>
- </description>
- </testcase>
- <testcase purpose="Check if the method addActivityRecognitionListener of HumanActivityMonitorManager throws TypeMismatchError when invalid type value is assigned for errorCallback parameter" component="Tizen Device APIs/HumanActivityMonitor/HumanActivityMonitorManager" execution_type="auto" priority="P2" id="HumanActivityMonitorManager_addActivityRecognitionListener_errorCallback_TypeMismatch">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_addActivityRecognitionListener_errorCallback_TypeMismatch.html</test_script_entry>
- </description>
- </testcase>
- <testcase purpose="Check if the method addActivityRecognitionListener of HumanActivityMonitorManager exist" component="Tizen Device APIs/HumanActivityMonitor/HumanActivityMonitorManager" execution_type="auto" priority="P1" id="HumanActivityMonitorManager_addActivityRecognitionListener_exist">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_addActivityRecognitionListener_exist.html</test_script_entry>
- </description>
- </testcase>
- <testcase purpose="Check if the method addActivityRecognitionListener of HumanActivityMonitorManager throws TypeMismatchError when invalid value is assigned for type parameter" component="Tizen Device APIs/HumanActivityMonitor/HumanActivityMonitorManager" execution_type="auto" priority="P2" id="HumanActivityMonitorManager_addActivityRecognitionListener_type_TypeMismatch">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_addActivityRecognitionListener_listener_TypeMismatch.html</test_script_entry>
- </description>
- </testcase>
- <testcase purpose="Check if the method addActivityRecognitionListener of HumanActivityMonitorManager throws TypeMismatchError when no param assigned" component="Tizen Device APIs/HumanActivityMonitor/HumanActivityMonitorManager" execution_type="auto" priority="P2" id="HumanActivityMonitorManager_addActivityRecognitionListener_misarg">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_addActivityRecognitionListener_misarg.html</test_script_entry>
- </description>
- </testcase>
- <testcase purpose="Check if the method addActivityRecognitionListener of HumanActivityMonitorManager throws TypeMismatchError when invalid type value is assigned for listener parameter" component="Tizen Device APIs/HumanActivityMonitor/HumanActivityMonitorManager" execution_type="auto" priority="P2" id="HumanActivityMonitorManager_addActivityRecognitionListener_listener_TypeMismatch">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_addActivityRecognitionListener_type_TypeMismatch.html</test_script_entry>
- </description>
- </testcase>
- <testcase purpose="Check if the method addActivityRecognitionListener of HumanActivityMonitorManager returns proper value with errorcallback assigned" onload_delay="60" component="Tizen Device APIs/HumanActivityMonitor/HumanActivityMonitorManager" execution_type="manual" priority="P1" id="HumanActivityMonitorManager_addActivityRecognitionListener_with_errorCallback">
- <description>
- <steps>
- <step order="1">
- <step_desc>Press run button, then keep the device stationary</step_desc>
- <expected>Pass</expected>
- </step>
- </steps>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_addActivityRecognitionListener_with_errorCallback.html</test_script_entry>
- </description>
- </testcase>
- <testcase purpose="Check if the method addActivityRecognitionListener of HumanActivityMonitorManager returns proper value with errorcallback null assigned" onload_delay="60" component="Tizen Device APIs/HumanActivityMonitor/HumanActivityMonitorManager" execution_type="manual" priority="P1" id="HumanActivityMonitorManager_addActivityRecognitionListener_with_errorCallback_null">
- <description>
- <steps>
- <step order="1">
- <step_desc>Press run button, then keep the device stationary</step_desc>
- <expected>Pass</expected>
- </step>
- </steps>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_addActivityRecognitionListener_with_errorCallback_null.html</test_script_entry>
- </description>
- </testcase>
- <testcase purpose="Check if the method removeActivityRecognitionListener of HumanActivityMonitorManager returns proper value" onload_delay="20" component="Tizen Device APIs/TBD/HumanActivityMonitor" execution_type="manual" priority="P1" id="HumanActivityMonitorManager_removeActivityRecognitionListener_STATIONARY">
- <description>
- <steps>
- <step order="1">
- <step_desc>Press run button, then pretend walking with the device for 15 seconds</step_desc>
- <expected>Pass</expected>
- </step>
- </steps>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_removeActivityRecognitionListener.html</test_script_entry>
- </description>
- </testcase>
- <testcase purpose="Check if the method removeActivityRecognitionListener of HumanActivityMonitorManager exist" component="Tizen Device APIs/HumanActivityMonitor/HumanActivityMonitorManager" execution_type="auto" priority="P1" id="HumanActivityMonitorManager_removeActivityRecognitionListener_exist">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_removeActivityRecognitionListener_exist.html</test_script_entry>
- </description>
- </testcase>
- <testcase purpose="Check if the method removeActivityRecognitionListener of HumanActivityMonitorManager ignores invalid id" onload_delay="3" component="Tizen Device APIs/HumanActivityMonitor/HumanActivityMonitorManager" execution_type="auto" priority="P2" id="HumanActivityMonitorManager_removeActivityRecognitionListener_invalid_id">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_removeActivityRecognitionListener_invalid_id.html</test_script_entry>
- </description>
- </testcase>
- <testcase purpose="Check if the method removeActivityRecognitionListener of HumanActivityMonitorManager ignores invalid id when no param assigned (undefined converted to 0)" component="Tizen Device APIs/HumanActivityMonitor/HumanActivityMonitorManager" execution_type="auto" priority="P2" id="HumanActivityMonitorManager_removeActivityRecognitionListener_misarg">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_removeActivityRecognitionListener_misarg.html</test_script_entry>
- </description>
- </testcase>
- <testcase purpose="Check if the method removeActivityRecognitionListener of HumanActivityMonitorManager returns proper value with errorcallback assigned" onload_delay="20" component="Tizen Device APIs/TBD/HumanActivityMonitor" execution_type="manual" priority="P1" id="HumanActivityMonitorManager_removeActivityRecognitionListener_STATIONARY">
- <description>
- <steps>
- <step order="1">
- <step_desc>Press run button, then pretend walking with the device for 15 seconds</step_desc>
- <expected>Pass</expected>
- </step>
- </steps>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_removeActivityRecognitionListener_with_errorCallback.html</test_script_entry>
- </description>
- </testcase>
- <testcase purpose="Check if the method removeActivityRecognitionListener of HumanActivityMonitorManager returns proper value with errorcallback null assigned" onload_delay="20" component="Tizen Device APIs/TBD/HumanActivityMonitor" execution_type="manual" priority="P1" id="HumanActivityMonitorManager_removeActivityRecognitionListener_STATIONARY">
- <description>
- <steps>
- <step order="1">
- <step_desc>Press run button, then pretend walking with the device for 15 seconds</step_desc>
- <expected>Pass</expected>
- </step>
- </steps>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_removeActivityRecognitionListener_with_errorCallback_null.html</test_script_entry>
- </description>
- </testcase>
- </set>
- <set name="HumanActivityMonitor_with_pedometer">
- <capabilities>
- <capability name="http://tizen.org/feature/sensor.pedometer"/>
- </capabilities>
- <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_getHumanActivityData" priority="P1" purpose="Check if method getHumanActivityData of HumanActivityMonitorManager returns properly value">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_getHumanActivityData.html</test_script_entry>
- </description>
- </testcase>
- <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_getHumanActivityData_errorCallback_TypeMismatch" onload_delay="30" priority="P2" purpose="Check if HumanActivityMonitorManager::getHumanActivityData() with incorrect errorCallback argument throws exception">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_getHumanActivityData_errorCallback_TypeMismatch.html</test_script_entry>
- </description>
- </testcase>
- <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_getHumanActivityData_errorCallback_invalid_cb" onload_delay="30" priority="P2" purpose="Check if HumanActivityMonitorManager::getHumanActivityData() method throws exception when errorCallback is invalid">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_getHumanActivityData_errorCallback_invalid_cb.html</test_script_entry>
- </description>
- </testcase>
- <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_getHumanActivityData_errorCallback_invoked" onload_delay="30" priority="P2" purpose="Check exception in error callback of HumanActivityMonitorManager::getHumanActivityData() method">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_getHumanActivityData_errorCallback_invoked.html</test_script_entry>
- </description>
- </testcase>
- <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_getHumanActivityData_misarg" priority="P2" purpose="Check if HumanActivityMonitorManager::getHumanActivityData() throws exception when successCallback is missing">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_getHumanActivityData_misarg.html</test_script_entry>
- </description>
- </testcase>
- <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_getHumanActivityData_successCallback_TypeMismatch" onload_delay="30" priority="P2" purpose="Check if HumanActivityMonitorManager::getHumanActivityData() with incorrect successCallback argument throws exception">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_getHumanActivityData_successCallback_TypeMismatch.html</test_script_entry>
- </description>
- </testcase>
- <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_getHumanActivityData_successCallback_invalid_cb" onload_delay="30" priority="P2" purpose="Check if HumanActivityMonitorManager::getHumanActivityData() method throws exception when successCallback is invalid">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_getHumanActivityData_successCallback_invalid_cb.html</test_script_entry>
- </description>
- </testcase>
- <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_getHumanActivityData_type_PEDOMETER" onload_delay="30" priority="P1" purpose="Check if HumanActivityMonitorManager::getHumanActivityData() method works properly">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_getHumanActivityData_type_PEDOMETER.html</test_script_entry>
- </description>
- </testcase>
- <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_getHumanActivityData_with_errorCallback" onload_delay="30" priority="P1" purpose="Check if HumanActivityMonitorManager::getHumanActivityData() method works properly with optional argument">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_getHumanActivityData_with_errorCallback.html</test_script_entry>
- </description>
- </testcase>
- <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_start_changedCallback_TypeMismatch" onload_delay="30" priority="P2" purpose="Check if HumanActivityMonitorManager::start() with incorrect successCallback argument throws exception">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_start_changedCallback_TypeMismatch.html</test_script_entry>
- </description>
- </testcase>
- <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_start_errorCallback_TypeMismatch" onload_delay="30" priority="P2" purpose="Check if HumanActivityMonitorManager::start() with incorrect errorCallback argument throws exception">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_start_errorCallback_TypeMismatch.html</test_script_entry>
- </description>
- </testcase>
- <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_start_type_PEDOMETER" priority="P1" purpose="Check if method HumanActivityMonitorManager::start() works properly for PEDOMETER">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_start_type_PEDOMETER.html</test_script_entry>
- </description>
- </testcase>
- <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_start_changedCallback_invalid_cb" onload_delay="30" purpose="Check if HumanActivityMonitorManager::start() method throws exception when HumanActivityMonitorSuccessCallback is invalid">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_start_changedCallback_invalid_cb.html</test_script_entry>
- </description>
- </testcase>
- <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_start_errorCallback_invalid_cb" onload_delay="30" purpose="Check if HumanActivityMonitorManager::start() method throws exception when ErrorCallback is invalid">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_start_errorCallback_invalid_cb.html</test_script_entry>
- </description>
- </testcase>
- <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_stop_type_PEDOMETER" priority="P1" purpose="Check if HumanActivityMonitorManager::stop() method works properly">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_stop_type_PEDOMETER.html</test_script_entry>
- </description>
- </testcase>
- <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityPedometerData_cumulativeCalorie_attribute" onload_delay="9" priority="P1" purpose="Check if HumanActivityPedometerData::cumulativeCalorie exists, has type double, and is readonly">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityPedometerData_cumulativeCalorie_attribute.html</test_script_entry>
- </description>
- </testcase>
- <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityPedometerData_cumulativeDistance_attribute" onload_delay="9" priority="P1" purpose="Check if HumanActivityPedometerData::cumulativeDistance exists, has type double, and is readonly">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityPedometerData_cumulativeDistance_attribute.html</test_script_entry>
- </description>
- </testcase>
- <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityPedometerData_cumulativeRunStepCount_attribute" onload_delay="9" priority="P1" purpose="Check if HumanActivityPedometerData::cumulativeRunStepCount exists, has type double, and is readonly">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityPedometerData_cumulativeRunStepCount_attribute.html</test_script_entry>
- </description>
- </testcase>
- <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityPedometerData_cumulativeTotalStepCount_attribute" onload_delay="9" priority="P1" purpose="Check if HumanActivityPedometerData::cumulativeTotalStepCount exists, has type double, and is readonly">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityPedometerData_cumulativeTotalStepCount_attribute.html</test_script_entry>
- </description>
- </testcase>
- <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityPedometerData_cumulativeWalkStepCount_attribute" onload_delay="9" priority="P1" purpose="Check if HumanActivityPedometerData::cumulativeWalkStepCount exists, has type double, and is readonly">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityPedometerData_cumulativeWalkStepCount_attribute.html</test_script_entry>
- </description>
- </testcase>
- <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityPedometerData_stepCountDifferences_attribute" onload_delay="9" priority="P1" purpose="Check if HumanActivityPedometerData::stepCountDifferences exists, has type double, and is readonly">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityPedometerData_stepCountDifferences_attribute.html</test_script_entry>
- </description>
- </testcase>
- <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityPedometerData_extend" onload_delay="90" priority="P3" purpose="Check if HumanActivityPedometerData object is extendable">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityPedometerData_extend.html</test_script_entry>
- </description>
- </testcase>
- <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityPedometerData_speed_attribute" onload_delay="9" priority="P1" purpose="Check if HumanActivityPedometerData::speed exists, has type double, and is readonly">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityPedometerData_speed_attribute.html</test_script_entry>
- </description>
- </testcase>
- <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityPedometerData_stepStatus_attribute" onload_delay="9" priority="P1" purpose="Check if HumanActivityPedometerData::stepStatus exists, has type string, and is readonly">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityPedometerData_stepStatus_attribute.html</test_script_entry>
- </description>
- </testcase>
- <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityPedometerData_walkingFrequency_attribute" onload_delay="9" priority="P1" purpose="Check if HumanActivityPedometerData::walkingFrequency exists, has type double, and is readonly">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityPedometerData_walkingFrequency_attribute.html</test_script_entry>
- </description>
- </testcase>
- <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityPedometerData_notexist" priority="P3" purpose="Check if interface HumanActivityPedometerData exists, it should not">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityPedometerData_notexist.html</test_script_entry>
- </description>
- </testcase>
- <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityAccumulativePedometerInfo_notexist" priority="P3" purpose="Check if interface HumanActivityAccumulativePedometerInfo exists, it should not">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityAccumulativePedometerInfo_notexist.html</test_script_entry>
- </description>
- </testcase>
- <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_setAccumulativePedometerListener_changeCallback_TypeMismatch" onload_delay="30" priority="P2" purpose="Check if HumanActivityMonitorManager::setAccumulativePedometerListener() with incorrect changeCallback argument throws exception">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_setAccumulativePedometerListener_changeCallback_TypeMismatch.html</test_script_entry>
- </description>
- </testcase>
- <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_setAccumulativePedometerListener_changeCallback_TypeMismatch" onload_delay="30" priority="P2" purpose="Check if HumanActivityMonitorManager::setAccumulativePedometerListener() with incorrect changeCallback argument throws exception">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_setAccumulativePedometerListener_changeCallback_TypeMismatch.html</test_script_entry>
- </description>
- </testcase>
- <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_setAccumulativePedometerListener_changeCallback_invalid_cb" onload_delay="30" priority="P2" purpose="Check if HumanActivityMonitorManager::setAccumulativePedometerListener() method throws exception when changeCallback is invalid">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_setAccumulativePedometerListener_changeCallback_invalid_cb.html</test_script_entry>
- </description>
- </testcase>
- <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_setAccumulativePedometerListener_exist" priority="P0" purpose="Check if method HumanActivityMonitorManager::setAccumulativePedometerListener() exists">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_setAccumulativePedometerListener_exist.html</test_script_entry>
- </description>
- </testcase>
- <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_setAccumulativePedometerListener_misarg" priority="P2" purpose="Check if HumanActivityMonitorManager::setAccumulativePedometerListener() throws exception when changeCallback is missing">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_setAccumulativePedometerListener_misarg.html</test_script_entry>
- </description>
- </testcase>
- <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_unsetAccumulativePedometerListener" onload_delay="30" priority="P1" purpose="Check if HumanActivityMonitorManager::unsetAccumulativePedometerListener() method works properly">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_unsetAccumulativePedometerListener.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion category="Tizen Device API Specifications" element_name="unsetAccumulativePedometerListener" element_type="method" interface="humanactivitymonitor" section="Sensor" specification="HumanActivityMonitor"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_unsetAccumulativePedometerListener_exist" priority="P0" purpose="Check if HumanActivityMonitorManager::unsetAccumulativePedometerListener() method exists">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_unsetAccumulativePedometerListener_exist.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion category="Tizen Device API Specifications" element_name="unsetAccumulativePedometerListener" element_type="method" interface="HumanActivityMonitorManager" section="Sensor" specification="HumanActivityMonitor"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_unsetAccumulativePedometerListener_extra_argument" priority="P1" purpose="Check if HumanActivityMonitorManager::unsetAccumulativePedometerListener() method with extra argument">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_unsetAccumulativePedometerListener_extra_argument.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion category="Tizen Device API Specifications" element_name="unsetAccumulativePedometerListener" element_type="method" interface="HumanActivityMonitorManager" section="Sensor" specification="HumanActivityMonitor"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if the specifies the pedometer user's current movement type is NOT_MOVING" onload_delay="60" component="Tizen Device APIs/HumanActivityMonitor/HumanActivityMonitorManager" execution_type="manual" priority="P1" id="HumanActivityMonitorManager_getHumanActivityData_stepStatus_NOT_MOVING">
- <description>
- <steps>
- <step order="1">
- <step_desc>Press run button, then keep the device stationary.</step_desc>
- <expected>Pass</expected>
- </step>
- </steps>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_getHumanActivityData_stepStatus_NOT_MOVING.html</test_script_entry>
- </description>
- </testcase>
- <testcase purpose="Check if the specifies the pedometer user's current movement type is WALKING" onload_delay="60" component="Tizen Device APIs/HumanActivityMonitor/HumanActivityMonitorManager" execution_type="manual" priority="P1" id="HumanActivityMonitorManager_getHumanActivityData_stepStatus_WALKING">
- <description>
- <steps>
- <step order="1">
- <step_desc>Press run button. Pretend walking with the device.</step_desc>
- <expected>Pass</expected>
- </step>
- </steps>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_getHumanActivityData_stepStatus_WALKING.html</test_script_entry>
- </description>
- </testcase>
- <testcase purpose="Check if the specifies the pedometer user's current movement type is RUNNING" onload_delay="60" component="Tizen Device APIs/HumanActivityMonitor/HumanActivityMonitorManager" execution_type="manual" priority="P1" id="HumanActivityMonitorManager_getHumanActivityData_stepStatus_RUNNING">
- <description>
- <steps>
- <step order="1">
- <step_desc>Press run button. Pretend running with the device.</step_desc>
- <expected>Pass</expected>
- </step>
- </steps>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_getHumanActivityData_stepStatus_RUNNING.html</test_script_entry>
- </description>
- </testcase>
- <testcase purpose="Check if readRecorderData can be called with empty object as query argument" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="manual" onload_delay="60" id="HumanActivityMonitorManager_readRecorderData_query_empty">
- <description>
- <steps>
- <step order="1">
- <step_desc>Press run button. Pretend walking with the device.</step_desc>
- <expected>Pass</expected>
- </step>
- </steps>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_readRecorderData_query_empty.html</test_script_entry>
- </description>
- </testcase>
- <testcase purpose="Check if readRecorderData without optional arguments works properly for PEDOMETER HumanActivity type" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="manual" onload_delay="60" id="HumanActivityMonitorManager_readRecorderData_type_PEDOMETER">
- <description>
- <steps>
- <step order="1">
- <step_desc>Press run button. Pretend walking with the device.</step_desc>
- <expected>Pass</expected>
- </step>
- </steps>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_readRecorderData_type_PEDOMETER.html</test_script_entry>
- </description>
- </testcase>
- <testcase purpose="Check if readRecorderData with optional arguments works properly" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="manual" onload_delay="60" id="HumanActivityMonitorManager_readRecorderData_with_errorCallback">
- <description>
- <steps>
- <step order="1">
- <step_desc>Press run button. Pretend walking with the device.</step_desc>
- <expected>Pass</expected>
- </step>
- </steps>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_readRecorderData_with_errorCallback.html</test_script_entry>
- </description>
- </testcase>
- <testcase purpose="Check if HumanActivityMonitorManager::startRecorder() can be called with empty object as option argument" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_startRecorder_option_empty">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_startRecorder_option_empty.html</test_script_entry>
- </description>
- </testcase>
- <testcase purpose="Check if method HumanActivityMonitorManager::startRecorder() works properly for PEDOMETER HumanActivity type" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_startRecorder_type_PEDOMETER">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_startRecorder_type_PEDOMETER.html</test_script_entry>
- </description>
- </testcase>
- <testcase purpose="Check if method HumanActivityMonitorManager::stopRecorder() works properly for PEDOMETER HumanActivity type" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_stopRecorder_type_PEDOMETER">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_stopRecorder_type_PEDOMETER.html</test_script_entry>
- </description>
- </testcase>
- <testcase purpose="Check if HumanActivityRecorderPedometerData have calorie attribute with proper type, readonly" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="manual" onload_delay="60" id="HumanActivityRecorderPedometerData_calorie_attribute">
- <description>
- <steps>
- <step order="1">
- <step_desc>Press run button. Pretend walking with the device.</step_desc>
- <expected>Pass</expected>
- </step>
- </steps>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityRecorderPedometerData_calorie_attribute.html</test_script_entry>
- </description>
- </testcase>
- <testcase purpose="Check if HumanActivityRecorderPedometerData have distance attribute with proper type, readonly" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="manual" onload_delay="60" id="HumanActivityRecorderPedometerData_distance_attribute">
- <description>
- <steps>
- <step order="1">
- <step_desc>Press run button. Pretend walking with the device.</step_desc>
- <expected>Pass</expected>
- </step>
- </steps>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityRecorderPedometerData_distance_attribute.html</test_script_entry>
- </description>
- </testcase>
- <testcase purpose="Check if HumanActivityRecorderPedometerData have endTime attribute with proper type, readonly" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="manual" onload_delay="60" id="HumanActivityRecorderPedometerData_endTime_attribute">
- <description>
- <steps>
- <step order="1">
- <step_desc>Press run button. Pretend walking with the device.</step_desc>
- <expected>Pass</expected>
- </step>
- </steps>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityRecorderPedometerData_endTime_attribute.html</test_script_entry>
- </description>
- </testcase>
- <testcase purpose="Check if HumanActivityRecorderPedometerData cannot be called in new expression and as a function or in new expression" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" id="HumanActivityRecorderPedometerData_notexist">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityRecorderPedometerData_notexist.html</test_script_entry>
- </description>
- </testcase>
- <testcase purpose="Check if HumanActivityRecorderPedometerData have runStepCount attribute with proper type, readonly" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="manual" onload_delay="60" id="HumanActivityRecorderPedometerData_runStepCount_attribute">
- <description>
- <steps>
- <step order="1">
- <step_desc>Press run button. Pretend walking with the device.</step_desc>
- <expected>Pass</expected>
- </step>
- </steps>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityRecorderPedometerData_runStepCount_attribute.html</test_script_entry>
- </description>
- </testcase>
- <testcase purpose="Check if HumanActivityRecorderPedometerData have startTime attribute with proper type, readonly" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="manual" onload_delay="60" id="HumanActivityRecorderPedometerData_startTime_attribute">
- <description>
- <steps>
- <step order="1">
- <step_desc>Press run button. Pretend walking with the device.</step_desc>
- <expected>Pass</expected>
- </step>
- </steps>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityRecorderPedometerData_startTime_attribute.html</test_script_entry>
- </description>
- </testcase>
- <testcase purpose="Check if HumanActivityRecorderPedometerData have totalStepCount attribute with proper type, readonly" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="manual" onload_delay="60" id="HumanActivityRecorderPedometerData_totalStepCount_attribute">
- <description>
- <steps>
- <step order="1">
- <step_desc>Press run button. Pretend walking with the device.</step_desc>
- <expected>Pass</expected>
- </step>
- </steps>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityRecorderPedometerData_totalStepCount_attribute.html</test_script_entry>
- </description>
- </testcase>
- <testcase purpose="Check if HumanActivityRecorderPedometerData have walkStepCount attribute with proper type, readonly" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="manual" onload_delay="60" id="HumanActivityRecorderPedometerData_walkStepCount_attribute">
- <description>
- <steps>
- <step order="1">
- <step_desc>Press run button. Pretend walking with the device.</step_desc>
- <expected>Pass</expected>
- </step>
- </steps>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityRecorderPedometerData_walkStepCount_attribute.html</test_script_entry>
- </description>
- </testcase>
- </set>
- <set name="HumanActivityMonitor_with_wrist_up">
- <capabilities>
- <capability name="http://tizen.org/feature/sensor.wrist_up"/>
- </capabilities>
- <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_start_type_WRIST_UP" priority="P1" purpose="Check if method HumanActivityMonitorManager::start() works properly for WRIST_UP">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_start_type_WRIST_UP.html</test_script_entry>
- </description>
- </testcase>
- <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_stop_type_WRIST_UP" priority="P1" purpose="Check if HumanActivityMonitorManager::stop() method with WRIST_UP works properly">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_stop_type_WRIST_UP.html</test_script_entry>
- </description>
- </testcase>
- </set>
- <set name="HumanActivityMonitor_heart_rate_monitor">
- <capabilities>
- <capability name="http://tizen.org/feature/sensor.heart_rate_monitor"/>
- </capabilities>
- <testcase purpose="Check if HumanActivityMonitorManager::getHumanActivityData() method works properly for HumanActivityType HRM" onload_delay="30" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_getHumanActivityData_type_HRM">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_getHumanActivityData_type_HRM.html</test_script_entry>
- </description>
- </testcase>
- <testcase purpose="Check if method HumanActivityMonitorManager::start() works properly for HRM HumanActivity type" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_start_type_HRM">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_start_type_HRM.html</test_script_entry>
- </description>
- </testcase>
- <testcase purpose="Check if HumanActivityMonitorManager::stop() method works properly for HumanActivity type HRM" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_stop_type_HRM">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_stop_type_HRM.html</test_script_entry>
- </description>
- </testcase>
- <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityHRMData_heartRate_attribute" ondelay="9" purpose="Check if HumanActivityHRMData heartRate attribute">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityHRMData_heartRate_attribute.html</test_script_entry>
- </description>
- </testcase>
- <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityHRMData_rRInterval_attribute" ondelay="9" purpose="Check if HumanActivityHRMData rRInterval attribute">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityHRMData_rRInterval_attribute.html</test_script_entry>
- </description>
- </testcase>
- <!-- <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorOption_callbackInterval_type_HRM" purpose="Check if method HumanActivityMonitorOption::callbackInterval works properly for HRM HumanActivity type">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorOption_callbackInterval_type_HRM.html</test_script_entry>
- </description>
- </testcase>
- <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorOption_callbackInterval_type_HRM_default" purpose="Check if method HumanActivityMonitorOption::callbackInterval works properly when set to null">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorOption_callbackInterval_type_HRM_default.html</test_script_entry>
- </description>
- </testcase> -->
- <testcase purpose="Check if readRecorderData without optional arguments works properly for HRM HumanActivity type" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="manual" onload_delay="1500" id="HumanActivityMonitorManager_readRecorderData_type_HRM">
- <description>
- <steps>
- <step order="1">
- <step_desc>Waiting for 10 minutes for the callback.</step_desc>
- <expected>Pass should be shown in the page after 10 minutes.</expected>
- </step>
- </steps>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_readRecorderData_type_HRM.html</test_script_entry>
- </description>
- </testcase>
- <testcase purpose="Check if method HumanActivityMonitorManager::startRecorder() works properly for HRM HumanActivity type" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_startRecorder_type_HRM">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_startRecorder_type_HRM.html</test_script_entry>
- </description>
- </testcase>
- <testcase purpose="Check if method HumanActivityMonitorManager::startRecorder() works properly with optional argument" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_startRecorder_with_option">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_startRecorder_with_option.html</test_script_entry>
- </description>
- </testcase>
- <testcase purpose="Check if method HumanActivityMonitorManager::stopRecorder() works properly for HRM HumanActivity type" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_stopRecorder_type_HRM">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_stopRecorder_type_HRM.html</test_script_entry>
- </description>
- </testcase>
- <testcase purpose="Check if HumanActivityReadRecorderSuccessCallback onsuccess is called and if its arguments have proper type" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="manual" onload_delay="60" id="HumanActivityReadRecorderSuccessCallback_onsuccess">
- <description>
- <pre_condition>Before run this tc, run HumanActivityMonitorManager_readRecorderData_type_HRM.html first, because we should wait at least 10 minutes to get the recorded data after start recorder. But if you tested that TC already, you can run this TC now.</pre_condition>
- <steps>
- <step order="1">
- <step_desc>Waiting for 10 minutes for the callback.</step_desc>
- <expected>Pass should be shown in the page after 10 minutes.</expected>
- </step>
- </steps>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityReadRecorderSuccessCallback_onsuccess.html</test_script_entry>
- </description>
- </testcase>
- <testcase purpose="Check if HumanActivityRecorderHRMData have endTime attribute with proper type, readonly" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="manual" onload_delay="60" id="HumanActivityRecorderHRMData_endTime_attribute">
- <description>
- <pre_condition>Before run this tc, run HumanActivityMonitorManager_readRecorderData_type_HRM.html first, because we should wait at least 10 minutes to get the recorded data after start recorder. But if you tested that TC already, you can run this TC now.</pre_condition>
- <steps>
- <step order="1">
- <step_desc>Waiting for 10 minutes for the callback.</step_desc>
- <expected>Pass should be shown in the page after 10 minutes.</expected>
- </step>
- </steps>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityRecorderHRMData_endTime_attribute.html</test_script_entry>
- </description>
- </testcase>
- <testcase purpose="Check if HumanActivityRecorderHRMData have heartRate attribute with proper type, readonly" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="manual" onload_delay="60" id="HumanActivityRecorderHRMData_heartRate_attribute">
- <description>
- <pre_condition>Before run this tc, run HumanActivityMonitorManager_readRecorderData_type_HRM.html first, because we should wait at least 10 minutes to get the recorded data after start recorder. But if you tested that TC already, you can run this TC now.</pre_condition>
- <steps>
- <step order="1">
- <step_desc>Waiting for 10 minutes for the callback.</step_desc>
- <expected>Pass should be shown in the page after 10 minutes.</expected>
- </step>
- </steps>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityRecorderHRMData_heartRate_attribute.html</test_script_entry>
- </description>
- </testcase>
- <testcase purpose="Check if HumanActivityRecorderHRMData cannot be called in new expression and as a function or in new expression" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" id="HumanActivityRecorderHRMData_notexist">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityRecorderHRMData_notexist.html</test_script_entry>
- </description>
- </testcase>
- <testcase purpose="Check if HumanActivityRecorderHRMData have startTime attribute with proper type, readonly" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="manual" onload_delay="60" id="HumanActivityRecorderHRMData_startTime_attribute">
- <description>
- <pre_condition>Before run this tc, run HumanActivityMonitorManager_readRecorderData_type_HRM.html first, because we should wait at least 10 minutes to get the recorded data after start recorder. But if you tested that TC already, you can run this TC now.</pre_condition>
- <steps>
- <step order="1">
- <step_desc>Waiting for 10 minutes for the callback.</step_desc>
- <expected>Pass should be shown in the page after 10 minutes.</expected>
- </step>
- </steps>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityRecorderHRMData_startTime_attribute.html</test_script_entry>
- </description>
- </testcase>
- </set>
- <set name="HumanActivityMonitor_location_batch">
- <capabilities>
- <capability name="http://tizen.org/feature/location.batch"/>
- </capabilities>
- <testcase purpose="Check if method HumanActivityMonitorManager::start() works properly for GPS HumanActivity type with optional argument" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_start_with_option">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_start_with_option.html</test_script_entry>
- </description>
- </testcase>
- <testcase purpose="Check if method HumanActivityMonitorManager::start() works properly for GPS HumanActivity type" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_start_type_GPS">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_start_type_GPS.html</test_script_entry>
- </description>
- </testcase>
- <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_start_option_empty" onload_delay="30" purpose="Check if HumanActivityMonitorManager::start() can be called with empty object as option argument">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_start_option_empty.html</test_script_entry>
- </description>
- </testcase>
- <testcase purpose="Check if HumanActivityMonitorManager::stop() method works properly for HumanActivity type GPS" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_stop_type_GPS">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_stop_type_GPS.html</test_script_entry>
- </description>
- </testcase>
- <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityGPSInfo_altitude_attribute" purpose="Check if HumanActivityGPSInfo altitude attribute">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityGPSInfo_altitude_attribute.html</test_script_entry>
- </description>
- </testcase>
- <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityGPSInfo_errorRange_attribute" purpose="Check if HumanActivityGPSInfo errorRange attribute">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityGPSInfo_errorRange_attribute.html</test_script_entry>
- </description>
- </testcase>
- <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityGPSInfo_latitude_attribute" purpose="Check if HumanActivityGPSInfo latitude attribute">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityGPSInfo_latitude_attribute.html</test_script_entry>
- </description>
- </testcase>
- <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityGPSInfo_longitude_attribute" purpose="Check if HumanActivityGPSInfo longitude attribute">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityGPSInfo_longitude_attribute.html</test_script_entry>
- </description>
- </testcase>
- <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityGPSInfo_speed_attribute" purpose="Check if HumanActivityGPSInfo speed attribute">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityGPSInfo_speed_attribute.html</test_script_entry>
- </description>
- </testcase>
- <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityGPSInfo_timestamp_attribute" purpose="Check if HumanActivityGPSInfo timestamp attribute">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityGPSInfo_timestamp_attribute.html</test_script_entry>
- </description>
- </testcase>
- <testcase purpose="Check if method HumanActivityMonitorOption::callbackInterval works properly for GPS HumanActivity type" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="manual" priority="P1" id="HumanActivityMonitorOption_callbackInterval_type_GPS" onload_delay="300">
- <description>
- <steps>
- <step order="1">
- <step_desc>Wait 155 seconds for the callback</step_desc>
- <expected>Pass should be shown in the page after 155 seconds</expected>
- </step>
- </steps>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorOption_callbackInterval_type_GPS.html</test_script_entry>
- </description>
- </testcase>
- <testcase purpose="Check if method HumanActivityMonitorOption::callbackInterval works properly when set to null" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="manual" priority="P1" id="HumanActivityMonitorOption_callbackInterval_type_GPS_default" onload_delay="300">
- <description>
- <steps>
- <step order="1">
- <step_desc>Wait 150 seconds for the callback</step_desc>
- <expected>Pass should be shown in the page after 150 seconds</expected>
- </step>
- </steps>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorOption_callbackInterval_type_GPS_default.html</test_script_entry>
- </description>
- </testcase>
- <testcase purpose="Check if method HumanActivityMonitorOption::sampleInterval works properly for GPS HumanActivity type" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="manual" priority="P1" id="HumanActivityMonitorOption_sampleInterval_type_GPS" onload_delay="300">
- <description>
- <steps>
- <step order="1">
- <step_desc>Wait 120 seconds for the callback</step_desc>
- <expected>Pass should be shown in the page after 120 seconds</expected>
- </step>
- </steps>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorOption_sampleInterval_type_GPS.html</test_script_entry>
- </description>
- </testcase>
- <testcase purpose="Check if method HumanActivityMonitorOption::sampleInterval works properly when set to null" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="manual" priority="P1" id="HumanActivityMonitorOption_sampleInterval_type_GPS_default" onload_delay="300" >
- <description>
- <steps>
- <step order="1">
- <step_desc>Wait 120 seconds for the callback</step_desc>
- <expected>Pass should be shown in the page after 120 seconds</expected>
- </step>
- </steps>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorOption_sampleInterval_type_GPS_default.html</test_script_entry>
- </description>
- </testcase>
- <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="manual" id="HumanActivityMonitorManager_start_errorCallback_invoked" onload_delay="30" priority="P2" purpose="Check exception in error callback of HumanActivityMonitorManager::start() method">
- <description>
- <steps>
- <step order="1">
- <step_desc>Please set the GPS function to disabled in the location settings</step_desc>
- <expected>Pass should be shown in the page after GPS off</expected>
- </step>
- </steps>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_start_errorCallback_invoked.html</test_script_entry>
- </description>
- </testcase>
- </set>
- <set name="HumanActivityMonitor_sleep_monitor">
- <capabilities>
- <capability name="http://tizen.org/feature/sensor.sleep_monitor"/>
- </capabilities>
- <testcase purpose="Check if method HumanActivityMonitorManager::start() works properly for SLEEP_MONITOR HumanActivity type" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_start_type_SLEEP_MONITOR">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_start_type_SLEEP_MONITOR.html</test_script_entry>
- </description>
- </testcase>
- <testcase purpose="Check if HumanActivityMonitorManager::stop() method works properly for HumanActivity type SLEEP_MONITOR" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_stop_type_SLEEP_MONITOR">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_stop_type_HRM.html</test_script_entry>
- </description>
- </testcase>
- <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivitySleepMonitorData_status_attribute" purpose="Check if HumanActivitySleepMonitorData::status exists and is readonly">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivitySleepMonitorData_status_attribute.html</test_script_entry>
- </description>
- </testcase>
- <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivitySleepMonitorData_timestamp_attribute" purpose="Check if HumanActivitySleepMonitorData::timestamp exists, has type long, and is readonly">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivitySleepMonitorData_timestamp_attribute.html</test_script_entry>
- </description>
- </testcase>
- <testcase purpose="Check if readRecorderData without optional arguments works properly for SLEEP_MONITOR HumanActivity type" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_readRecorderData_type_SLEEP_MONITOR">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_readRecorderData_type_SLEEP_MONITOR.html</test_script_entry>
- </description>
- </testcase>
- <testcase purpose="Check if method HumanActivityMonitorManager::startRecorder() works properly for SLEEP_MONITOR HumanActivity type" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_startRecorder_type_SLEEP_MONITOR">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_startRecorder_type_SLEEP_MONITOR.html</test_script_entry>
- </description>
- </testcase>
- <testcase purpose="Check if method HumanActivityMonitorManager::stopRecorder () works properly for SLEEP_MONITOR HumanActivity type" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_stopRecorder_type_SLEEP_MONITOR">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_stopRecorder_type_SLEEP_MONITOR.html</test_script_entry>
- </description>
- </testcase>
- <testcase purpose="Check if HumanActivityRecorderSleepMonitorData have endTime attribute with proper type, readonly" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" id="HumanActivityRecorderSleepMonitorData_endTime_attribute">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityRecorderSleepMonitorData_endTime_attribute.html</test_script_entry>
- </description>
- </testcase>
- <testcase purpose="Check if HumanActivityRecorderSleepMonitorData cannot be called in new expression and as a function or in new expression" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" id="HumanActivityRecorderSleepMonitorData_notexist">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityRecorderSleepMonitorData_notexist.html</test_script_entry>
- </description>
- </testcase>
- <testcase purpose="Check if HumanActivityRecorderSleepMonitorData have startTime attribute with proper type, readonly" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" id="HumanActivityRecorderSleepMonitorData_startTime_attribute">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityRecorderSleepMonitorData_startTime_attribute.html</test_script_entry>
- </description>
- </testcase>
- <testcase purpose="Check if HumanActivityRecorderSleepMonitorData have status attribute with proper type, readonly" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" id="HumanActivityRecorderSleepMonitorData_status_attribute">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityRecorderSleepMonitorData_status_attribute.html</test_script_entry>
- </description>
- </testcase>
- </set>
- <set name="HumanActivityMonitor" type="js">
- <capabilities>
- <capability name="http://tizen.org/feature/platform.core.cpu.arch.armv7"/>
- </capabilities>
- <testcase purpose="Check if the specifies the pedometer user's current movement type is UNKNOWN" onload_delay="60" component="Tizen Device APIs/HumanActivityMonitor/HumanActivityMonitorManager" execution_type="manual" priority="P1" id="HumanActivityMonitorManager_getHumanActivityData_stepStatus_UNKNOWN">
- <description>
- <steps>
- <step order="1">
- <step_desc>Press run button, press Power key to keep the device LCS off, then Pretend walking with the device.</step_desc>
- <expected>Pass</expected>
- </step>
- </steps>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_getHumanActivityData_stepStatus_UNKNOWN.html</test_script_entry>
- </description>
- </testcase>
- </set>
- </suite>
-</test_definition>
+++ /dev/null
-<!doctype html>
-<!--
-Copyright (c) 2013 Intel Corporation.
-
-Redistribution and use in source and binary forms, with or without modification,
-are permitted provided that the following conditions are met:
-
-* Redistributions of works must retain the original copyright notice, this list
- of conditions and the following disclaimer.
-* Redistributions in binary form must reproduce the original copyright notice,
- this list of conditions and the following disclaimer in the documentation
- and/or other materials provided with the distribution.
-* Neither the name of Intel Corporation nor the names of its contributors
- may be used to endorse or promote products derived from this work without
- specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY INTEL CORPORATION "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL INTEL CORPORATION BE LIABLE FOR ANY DIRECT,
-INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
-BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
-OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
-EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-Authors:
- Wang, Jing <jing.j.wang@intel.com>
-
--->
-
-<head>
-<meta name="viewport" content="width=device-width">
-<script src="jquery-1.10.2.min.js"></script>
-<style type="text/css">
-html {
- font-family:DejaVu Sans, Bitstream Vera Sans, Arial, Sans;
-}
-
-body {
- background-color: white;
-}
-
-table#browse {
- border-collapse:collapse;
- table-layout:fixed;width:85%;
-}
-
-table#browse th:first-child,table#browse td:first-child {width:35%;}
-
-table#browse th:last-child,table#browse td:last-child {width:25%;}
-
-table#browse th {
- padding:0;
- padding-bottom:0.5em;
- text-align:left;
- border-bottom:medium solid black;
-}
-table#browse td {
- padding:1em;
- padding-bottom:0.5em;
- border-bottom:thin solid black;
-}
-div#navbar{
- box-sizing: border-box;
- width: 99%;
- border: 0px;
- text-align: left;
- background: slateblue;
- color: white;
-}
-div#footbar{
- width: 99%;
- border: 0px;
- text-align: left;
-}
-textarea#testinfo{
- width: 99%;
- font-size: 0.8em;
-}
-input{
- font-size: 1.2em;
- padding-top: 0.1em;
- padding-bottom: 0.1em;
-}
-
-#btnPrev,#btnNext{
- width: 8%;
-}
-#btnExit,#btnRun,#btnSave,#btnBack,#btnPass,#btnFail,#btnBlock{
- width: 16%;
- font-weight: bold;
-}
-
-#btnPass { color: green;}
-#btnFail { color: red;}
-#btnBlock { color: orange;}
-#labBatch{ font-size: 0.5em;}
-#textTest { width: 53%; }
-#title { font-size: 1.4em; font-weight: bold;}
-#frmTest { border: none;}
-.listhide { display: none;}
-.short{
- padding-left: 1em;
-}
-</style>
-</head>
-
-<body>
-<div id="navbar" class="batchhide">
- <span class="short listhide suitehide"><input type="button" id="btnBack" value="Back"/></span>
- <span class="short listhide suitehide">
- <input type="button" id="btnPrev" value="<"/>
- <input type="text" id="textTest" readonly />
- <input type="button" id="btnNext" value=">"/>
- </span>
- <span class="short tchide"> <input type="button" id="btnExit" value="Exit"/></span>
- <span id="title" class="short tchide">Open Web Test</span>
-</div>
-<div id="divSum"> </div>
-<div width="99%" class="batchhide">
- <textarea class="listhide suitehide" id="testinfo" rows=4 disabled>
- </textarea>
-</div>
-<div id="footbar" class="batchhide">
- <span class="short"><input type="button" id="btnRun" value="Run"/></span>
- <span class="short listhide tchide"><input type="button" id="btnSave" value="Save"/></span>
- <span class="short listhide suitehide"><input type="button" id="btnPass" value="PASS"/></span>
- <span class="short listhide suitehide"><input type="button" id="btnFail" value="FAIL"/></span>
- <span class="short listhide suitehide"><input type="button" id="btnBlock" value="BLOCK"/></span>
-</div>
-<iframe width="100%" id="frmTest" allowFullScreen="true" mozAllowFullScreen="true" webkitAllowFullscreen="true" src="">
-</iframe>
-<script src="testrunner.js"> </script>
-</body>
-</html>
+++ /dev/null
-/*! jQuery v1.10.2 | (c) 2005, 2013 jQuery Foundation, Inc. | jquery.org/license
-//@ sourceMappingURL=jquery-1.10.2.min.map
-*/
-(function(e,t){var n,r,i=typeof t,o=e.location,a=e.document,s=a.documentElement,l=e.jQuery,u=e.$,c={},p=[],f="1.10.2",d=p.concat,h=p.push,g=p.slice,m=p.indexOf,y=c.toString,v=c.hasOwnProperty,b=f.trim,x=function(e,t){return new x.fn.init(e,t,r)},w=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,T=/\S+/g,C=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,N=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,k=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,E=/^[\],:{}\s]*$/,S=/(?:^|:|,)(?:\s*\[)+/g,A=/\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g,j=/"[^"\\\r\n]*"|true|false|null|-?(?:\d+\.|)\d+(?:[eE][+-]?\d+|)/g,D=/^-ms-/,L=/-([\da-z])/gi,H=function(e,t){return t.toUpperCase()},q=function(e){(a.addEventListener||"load"===e.type||"complete"===a.readyState)&&(_(),x.ready())},_=function(){a.addEventListener?(a.removeEventListener("DOMContentLoaded",q,!1),e.removeEventListener("load",q,!1)):(a.detachEvent("onreadystatechange",q),e.detachEvent("onload",q))};x.fn=x.prototype={jquery:f,constructor:x,init:function(e,n,r){var i,o;if(!e)return this;if("string"==typeof e){if(i="<"===e.charAt(0)&&">"===e.charAt(e.length-1)&&e.length>=3?[null,e,null]:N.exec(e),!i||!i[1]&&n)return!n||n.jquery?(n||r).find(e):this.constructor(n).find(e);if(i[1]){if(n=n instanceof x?n[0]:n,x.merge(this,x.parseHTML(i[1],n&&n.nodeType?n.ownerDocument||n:a,!0)),k.test(i[1])&&x.isPlainObject(n))for(i in n)x.isFunction(this[i])?this[i](n[i]):this.attr(i,n[i]);return this}if(o=a.getElementById(i[2]),o&&o.parentNode){if(o.id!==i[2])return r.find(e);this.length=1,this[0]=o}return this.context=a,this.selector=e,this}return e.nodeType?(this.context=this[0]=e,this.length=1,this):x.isFunction(e)?r.ready(e):(e.selector!==t&&(this.selector=e.selector,this.context=e.context),x.makeArray(e,this))},selector:"",length:0,toArray:function(){return g.call(this)},get:function(e){return null==e?this.toArray():0>e?this[this.length+e]:this[e]},pushStack:function(e){var t=x.merge(this.constructor(),e);return t.prevObject=this,t.context=this.context,t},each:function(e,t){return x.each(this,e,t)},ready:function(e){return x.ready.promise().done(e),this},slice:function(){return this.pushStack(g.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(0>e?t:0);return this.pushStack(n>=0&&t>n?[this[n]]:[])},map:function(e){return this.pushStack(x.map(this,function(t,n){return e.call(t,n,t)}))},end:function(){return this.prevObject||this.constructor(null)},push:h,sort:[].sort,splice:[].splice},x.fn.init.prototype=x.fn,x.extend=x.fn.extend=function(){var e,n,r,i,o,a,s=arguments[0]||{},l=1,u=arguments.length,c=!1;for("boolean"==typeof s&&(c=s,s=arguments[1]||{},l=2),"object"==typeof s||x.isFunction(s)||(s={}),u===l&&(s=this,--l);u>l;l++)if(null!=(o=arguments[l]))for(i in o)e=s[i],r=o[i],s!==r&&(c&&r&&(x.isPlainObject(r)||(n=x.isArray(r)))?(n?(n=!1,a=e&&x.isArray(e)?e:[]):a=e&&x.isPlainObject(e)?e:{},s[i]=x.extend(c,a,r)):r!==t&&(s[i]=r));return s},x.extend({expando:"jQuery"+(f+Math.random()).replace(/\D/g,""),noConflict:function(t){return e.$===x&&(e.$=u),t&&e.jQuery===x&&(e.jQuery=l),x},isReady:!1,readyWait:1,holdReady:function(e){e?x.readyWait++:x.ready(!0)},ready:function(e){if(e===!0?!--x.readyWait:!x.isReady){if(!a.body)return setTimeout(x.ready);x.isReady=!0,e!==!0&&--x.readyWait>0||(n.resolveWith(a,[x]),x.fn.trigger&&x(a).trigger("ready").off("ready"))}},isFunction:function(e){return"function"===x.type(e)},isArray:Array.isArray||function(e){return"array"===x.type(e)},isWindow:function(e){return null!=e&&e==e.window},isNumeric:function(e){return!isNaN(parseFloat(e))&&isFinite(e)},type:function(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?c[y.call(e)]||"object":typeof e},isPlainObject:function(e){var n;if(!e||"object"!==x.type(e)||e.nodeType||x.isWindow(e))return!1;try{if(e.constructor&&!v.call(e,"constructor")&&!v.call(e.constructor.prototype,"isPrototypeOf"))return!1}catch(r){return!1}if(x.support.ownLast)for(n in e)return v.call(e,n);for(n in e);return n===t||v.call(e,n)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},error:function(e){throw Error(e)},parseHTML:function(e,t,n){if(!e||"string"!=typeof e)return null;"boolean"==typeof t&&(n=t,t=!1),t=t||a;var r=k.exec(e),i=!n&&[];return r?[t.createElement(r[1])]:(r=x.buildFragment([e],t,i),i&&x(i).remove(),x.merge([],r.childNodes))},parseJSON:function(n){return e.JSON&&e.JSON.parse?e.JSON.parse(n):null===n?n:"string"==typeof n&&(n=x.trim(n),n&&E.test(n.replace(A,"@").replace(j,"]").replace(S,"")))?Function("return "+n)():(x.error("Invalid JSON: "+n),t)},parseXML:function(n){var r,i;if(!n||"string"!=typeof n)return null;try{e.DOMParser?(i=new DOMParser,r=i.parseFromString(n,"text/xml")):(r=new ActiveXObject("Microsoft.XMLDOM"),r.async="false",r.loadXML(n))}catch(o){r=t}return r&&r.documentElement&&!r.getElementsByTagName("parsererror").length||x.error("Invalid XML: "+n),r},noop:function(){},globalEval:function(t){t&&x.trim(t)&&(e.execScript||function(t){e.eval.call(e,t)})(t)},camelCase:function(e){return e.replace(D,"ms-").replace(L,H)},nodeName:function(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()},each:function(e,t,n){var r,i=0,o=e.length,a=M(e);if(n){if(a){for(;o>i;i++)if(r=t.apply(e[i],n),r===!1)break}else for(i in e)if(r=t.apply(e[i],n),r===!1)break}else if(a){for(;o>i;i++)if(r=t.call(e[i],i,e[i]),r===!1)break}else for(i in e)if(r=t.call(e[i],i,e[i]),r===!1)break;return e},trim:b&&!b.call("\ufeff\u00a0")?function(e){return null==e?"":b.call(e)}:function(e){return null==e?"":(e+"").replace(C,"")},makeArray:function(e,t){var n=t||[];return null!=e&&(M(Object(e))?x.merge(n,"string"==typeof e?[e]:e):h.call(n,e)),n},inArray:function(e,t,n){var r;if(t){if(m)return m.call(t,e,n);for(r=t.length,n=n?0>n?Math.max(0,r+n):n:0;r>n;n++)if(n in t&&t[n]===e)return n}return-1},merge:function(e,n){var r=n.length,i=e.length,o=0;if("number"==typeof r)for(;r>o;o++)e[i++]=n[o];else while(n[o]!==t)e[i++]=n[o++];return e.length=i,e},grep:function(e,t,n){var r,i=[],o=0,a=e.length;for(n=!!n;a>o;o++)r=!!t(e[o],o),n!==r&&i.push(e[o]);return i},map:function(e,t,n){var r,i=0,o=e.length,a=M(e),s=[];if(a)for(;o>i;i++)r=t(e[i],i,n),null!=r&&(s[s.length]=r);else for(i in e)r=t(e[i],i,n),null!=r&&(s[s.length]=r);return d.apply([],s)},guid:1,proxy:function(e,n){var r,i,o;return"string"==typeof n&&(o=e[n],n=e,e=o),x.isFunction(e)?(r=g.call(arguments,2),i=function(){return e.apply(n||this,r.concat(g.call(arguments)))},i.guid=e.guid=e.guid||x.guid++,i):t},access:function(e,n,r,i,o,a,s){var l=0,u=e.length,c=null==r;if("object"===x.type(r)){o=!0;for(l in r)x.access(e,n,l,r[l],!0,a,s)}else if(i!==t&&(o=!0,x.isFunction(i)||(s=!0),c&&(s?(n.call(e,i),n=null):(c=n,n=function(e,t,n){return c.call(x(e),n)})),n))for(;u>l;l++)n(e[l],r,s?i:i.call(e[l],l,n(e[l],r)));return o?e:c?n.call(e):u?n(e[0],r):a},now:function(){return(new Date).getTime()},swap:function(e,t,n,r){var i,o,a={};for(o in t)a[o]=e.style[o],e.style[o]=t[o];i=n.apply(e,r||[]);for(o in t)e.style[o]=a[o];return i}}),x.ready.promise=function(t){if(!n)if(n=x.Deferred(),"complete"===a.readyState)setTimeout(x.ready);else if(a.addEventListener)a.addEventListener("DOMContentLoaded",q,!1),e.addEventListener("load",q,!1);else{a.attachEvent("onreadystatechange",q),e.attachEvent("onload",q);var r=!1;try{r=null==e.frameElement&&a.documentElement}catch(i){}r&&r.doScroll&&function o(){if(!x.isReady){try{r.doScroll("left")}catch(e){return setTimeout(o,50)}_(),x.ready()}}()}return n.promise(t)},x.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(e,t){c["[object "+t+"]"]=t.toLowerCase()});function M(e){var t=e.length,n=x.type(e);return x.isWindow(e)?!1:1===e.nodeType&&t?!0:"array"===n||"function"!==n&&(0===t||"number"==typeof t&&t>0&&t-1 in e)}r=x(a),function(e,t){var n,r,i,o,a,s,l,u,c,p,f,d,h,g,m,y,v,b="sizzle"+-new Date,w=e.document,T=0,C=0,N=st(),k=st(),E=st(),S=!1,A=function(e,t){return e===t?(S=!0,0):0},j=typeof t,D=1<<31,L={}.hasOwnProperty,H=[],q=H.pop,_=H.push,M=H.push,O=H.slice,F=H.indexOf||function(e){var t=0,n=this.length;for(;n>t;t++)if(this[t]===e)return t;return-1},B="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",P="[\\x20\\t\\r\\n\\f]",R="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",W=R.replace("w","w#"),$="\\["+P+"*("+R+")"+P+"*(?:([*^$|!~]?=)"+P+"*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|("+W+")|)|)"+P+"*\\]",I=":("+R+")(?:\\(((['\"])((?:\\\\.|[^\\\\])*?)\\3|((?:\\\\.|[^\\\\()[\\]]|"+$.replace(3,8)+")*)|.*)\\)|)",z=RegExp("^"+P+"+|((?:^|[^\\\\])(?:\\\\.)*)"+P+"+$","g"),X=RegExp("^"+P+"*,"+P+"*"),U=RegExp("^"+P+"*([>+~]|"+P+")"+P+"*"),V=RegExp(P+"*[+~]"),Y=RegExp("="+P+"*([^\\]'\"]*)"+P+"*\\]","g"),J=RegExp(I),G=RegExp("^"+W+"$"),Q={ID:RegExp("^#("+R+")"),CLASS:RegExp("^\\.("+R+")"),TAG:RegExp("^("+R.replace("w","w*")+")"),ATTR:RegExp("^"+$),PSEUDO:RegExp("^"+I),CHILD:RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+P+"*(even|odd|(([+-]|)(\\d*)n|)"+P+"*(?:([+-]|)"+P+"*(\\d+)|))"+P+"*\\)|)","i"),bool:RegExp("^(?:"+B+")$","i"),needsContext:RegExp("^"+P+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+P+"*((?:-\\d)?\\d*)"+P+"*\\)|)(?=[^-]|$)","i")},K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,et=/^(?:input|select|textarea|button)$/i,tt=/^h\d$/i,nt=/'|\\/g,rt=RegExp("\\\\([\\da-f]{1,6}"+P+"?|("+P+")|.)","ig"),it=function(e,t,n){var r="0x"+t-65536;return r!==r||n?t:0>r?String.fromCharCode(r+65536):String.fromCharCode(55296|r>>10,56320|1023&r)};try{M.apply(H=O.call(w.childNodes),w.childNodes),H[w.childNodes.length].nodeType}catch(ot){M={apply:H.length?function(e,t){_.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function at(e,t,n,i){var o,a,s,l,u,c,d,m,y,x;if((t?t.ownerDocument||t:w)!==f&&p(t),t=t||f,n=n||[],!e||"string"!=typeof e)return n;if(1!==(l=t.nodeType)&&9!==l)return[];if(h&&!i){if(o=Z.exec(e))if(s=o[1]){if(9===l){if(a=t.getElementById(s),!a||!a.parentNode)return n;if(a.id===s)return n.push(a),n}else if(t.ownerDocument&&(a=t.ownerDocument.getElementById(s))&&v(t,a)&&a.id===s)return n.push(a),n}else{if(o[2])return M.apply(n,t.getElementsByTagName(e)),n;if((s=o[3])&&r.getElementsByClassName&&t.getElementsByClassName)return M.apply(n,t.getElementsByClassName(s)),n}if(r.qsa&&(!g||!g.test(e))){if(m=d=b,y=t,x=9===l&&e,1===l&&"object"!==t.nodeName.toLowerCase()){c=mt(e),(d=t.getAttribute("id"))?m=d.replace(nt,"\\$&"):t.setAttribute("id",m),m="[id='"+m+"'] ",u=c.length;while(u--)c[u]=m+yt(c[u]);y=V.test(e)&&t.parentNode||t,x=c.join(",")}if(x)try{return M.apply(n,y.querySelectorAll(x)),n}catch(T){}finally{d||t.removeAttribute("id")}}}return kt(e.replace(z,"$1"),t,n,i)}function st(){var e=[];function t(n,r){return e.push(n+=" ")>o.cacheLength&&delete t[e.shift()],t[n]=r}return t}function lt(e){return e[b]=!0,e}function ut(e){var t=f.createElement("div");try{return!!e(t)}catch(n){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function ct(e,t){var n=e.split("|"),r=e.length;while(r--)o.attrHandle[n[r]]=t}function pt(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&(~t.sourceIndex||D)-(~e.sourceIndex||D);if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function ft(e){return function(t){var n=t.nodeName.toLowerCase();return"input"===n&&t.type===e}}function dt(e){return function(t){var n=t.nodeName.toLowerCase();return("input"===n||"button"===n)&&t.type===e}}function ht(e){return lt(function(t){return t=+t,lt(function(n,r){var i,o=e([],n.length,t),a=o.length;while(a--)n[i=o[a]]&&(n[i]=!(r[i]=n[i]))})})}s=at.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return t?"HTML"!==t.nodeName:!1},r=at.support={},p=at.setDocument=function(e){var n=e?e.ownerDocument||e:w,i=n.defaultView;return n!==f&&9===n.nodeType&&n.documentElement?(f=n,d=n.documentElement,h=!s(n),i&&i.attachEvent&&i!==i.top&&i.attachEvent("onbeforeunload",function(){p()}),r.attributes=ut(function(e){return e.className="i",!e.getAttribute("className")}),r.getElementsByTagName=ut(function(e){return e.appendChild(n.createComment("")),!e.getElementsByTagName("*").length}),r.getElementsByClassName=ut(function(e){return e.innerHTML="<div class='a'></div><div class='a i'></div>",e.firstChild.className="i",2===e.getElementsByClassName("i").length}),r.getById=ut(function(e){return d.appendChild(e).id=b,!n.getElementsByName||!n.getElementsByName(b).length}),r.getById?(o.find.ID=function(e,t){if(typeof t.getElementById!==j&&h){var n=t.getElementById(e);return n&&n.parentNode?[n]:[]}},o.filter.ID=function(e){var t=e.replace(rt,it);return function(e){return e.getAttribute("id")===t}}):(delete o.find.ID,o.filter.ID=function(e){var t=e.replace(rt,it);return function(e){var n=typeof e.getAttributeNode!==j&&e.getAttributeNode("id");return n&&n.value===t}}),o.find.TAG=r.getElementsByTagName?function(e,n){return typeof n.getElementsByTagName!==j?n.getElementsByTagName(e):t}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},o.find.CLASS=r.getElementsByClassName&&function(e,n){return typeof n.getElementsByClassName!==j&&h?n.getElementsByClassName(e):t},m=[],g=[],(r.qsa=K.test(n.querySelectorAll))&&(ut(function(e){e.innerHTML="<select><option selected=''></option></select>",e.querySelectorAll("[selected]").length||g.push("\\["+P+"*(?:value|"+B+")"),e.querySelectorAll(":checked").length||g.push(":checked")}),ut(function(e){var t=n.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("t",""),e.querySelectorAll("[t^='']").length&&g.push("[*^$]="+P+"*(?:''|\"\")"),e.querySelectorAll(":enabled").length||g.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),g.push(",.*:")})),(r.matchesSelector=K.test(y=d.webkitMatchesSelector||d.mozMatchesSelector||d.oMatchesSelector||d.msMatchesSelector))&&ut(function(e){r.disconnectedMatch=y.call(e,"div"),y.call(e,"[s!='']:x"),m.push("!=",I)}),g=g.length&&RegExp(g.join("|")),m=m.length&&RegExp(m.join("|")),v=K.test(d.contains)||d.compareDocumentPosition?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},A=d.compareDocumentPosition?function(e,t){if(e===t)return S=!0,0;var i=t.compareDocumentPosition&&e.compareDocumentPosition&&e.compareDocumentPosition(t);return i?1&i||!r.sortDetached&&t.compareDocumentPosition(e)===i?e===n||v(w,e)?-1:t===n||v(w,t)?1:c?F.call(c,e)-F.call(c,t):0:4&i?-1:1:e.compareDocumentPosition?-1:1}:function(e,t){var r,i=0,o=e.parentNode,a=t.parentNode,s=[e],l=[t];if(e===t)return S=!0,0;if(!o||!a)return e===n?-1:t===n?1:o?-1:a?1:c?F.call(c,e)-F.call(c,t):0;if(o===a)return pt(e,t);r=e;while(r=r.parentNode)s.unshift(r);r=t;while(r=r.parentNode)l.unshift(r);while(s[i]===l[i])i++;return i?pt(s[i],l[i]):s[i]===w?-1:l[i]===w?1:0},n):f},at.matches=function(e,t){return at(e,null,null,t)},at.matchesSelector=function(e,t){if((e.ownerDocument||e)!==f&&p(e),t=t.replace(Y,"='$1']"),!(!r.matchesSelector||!h||m&&m.test(t)||g&&g.test(t)))try{var n=y.call(e,t);if(n||r.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(i){}return at(t,f,null,[e]).length>0},at.contains=function(e,t){return(e.ownerDocument||e)!==f&&p(e),v(e,t)},at.attr=function(e,n){(e.ownerDocument||e)!==f&&p(e);var i=o.attrHandle[n.toLowerCase()],a=i&&L.call(o.attrHandle,n.toLowerCase())?i(e,n,!h):t;return a===t?r.attributes||!h?e.getAttribute(n):(a=e.getAttributeNode(n))&&a.specified?a.value:null:a},at.error=function(e){throw Error("Syntax error, unrecognized expression: "+e)},at.uniqueSort=function(e){var t,n=[],i=0,o=0;if(S=!r.detectDuplicates,c=!r.sortStable&&e.slice(0),e.sort(A),S){while(t=e[o++])t===e[o]&&(i=n.push(o));while(i--)e.splice(n[i],1)}return e},a=at.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(1===i||9===i||11===i){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=a(e)}else if(3===i||4===i)return e.nodeValue}else for(;t=e[r];r++)n+=a(t);return n},o=at.selectors={cacheLength:50,createPseudo:lt,match:Q,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(rt,it),e[3]=(e[4]||e[5]||"").replace(rt,it),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||at.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&at.error(e[0]),e},PSEUDO:function(e){var n,r=!e[5]&&e[2];return Q.CHILD.test(e[0])?null:(e[3]&&e[4]!==t?e[2]=e[4]:r&&J.test(r)&&(n=mt(r,!0))&&(n=r.indexOf(")",r.length-n)-r.length)&&(e[0]=e[0].slice(0,n),e[2]=r.slice(0,n)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(rt,it).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=N[e+" "];return t||(t=RegExp("(^|"+P+")"+e+"("+P+"|$)"))&&N(e,function(e){return t.test("string"==typeof e.className&&e.className||typeof e.getAttribute!==j&&e.getAttribute("class")||"")})},ATTR:function(e,t,n){return function(r){var i=at.attr(r,e);return null==i?"!="===t:t?(i+="","="===t?i===n:"!="===t?i!==n:"^="===t?n&&0===i.indexOf(n):"*="===t?n&&i.indexOf(n)>-1:"$="===t?n&&i.slice(-n.length)===n:"~="===t?(" "+i+" ").indexOf(n)>-1:"|="===t?i===n||i.slice(0,n.length+1)===n+"-":!1):!0}},CHILD:function(e,t,n,r,i){var o="nth"!==e.slice(0,3),a="last"!==e.slice(-4),s="of-type"===t;return 1===r&&0===i?function(e){return!!e.parentNode}:function(t,n,l){var u,c,p,f,d,h,g=o!==a?"nextSibling":"previousSibling",m=t.parentNode,y=s&&t.nodeName.toLowerCase(),v=!l&&!s;if(m){if(o){while(g){p=t;while(p=p[g])if(s?p.nodeName.toLowerCase()===y:1===p.nodeType)return!1;h=g="only"===e&&!h&&"nextSibling"}return!0}if(h=[a?m.firstChild:m.lastChild],a&&v){c=m[b]||(m[b]={}),u=c[e]||[],d=u[0]===T&&u[1],f=u[0]===T&&u[2],p=d&&m.childNodes[d];while(p=++d&&p&&p[g]||(f=d=0)||h.pop())if(1===p.nodeType&&++f&&p===t){c[e]=[T,d,f];break}}else if(v&&(u=(t[b]||(t[b]={}))[e])&&u[0]===T)f=u[1];else while(p=++d&&p&&p[g]||(f=d=0)||h.pop())if((s?p.nodeName.toLowerCase()===y:1===p.nodeType)&&++f&&(v&&((p[b]||(p[b]={}))[e]=[T,f]),p===t))break;return f-=i,f===r||0===f%r&&f/r>=0}}},PSEUDO:function(e,t){var n,r=o.pseudos[e]||o.setFilters[e.toLowerCase()]||at.error("unsupported pseudo: "+e);return r[b]?r(t):r.length>1?(n=[e,e,"",t],o.setFilters.hasOwnProperty(e.toLowerCase())?lt(function(e,n){var i,o=r(e,t),a=o.length;while(a--)i=F.call(e,o[a]),e[i]=!(n[i]=o[a])}):function(e){return r(e,0,n)}):r}},pseudos:{not:lt(function(e){var t=[],n=[],r=l(e.replace(z,"$1"));return r[b]?lt(function(e,t,n,i){var o,a=r(e,null,i,[]),s=e.length;while(s--)(o=a[s])&&(e[s]=!(t[s]=o))}):function(e,i,o){return t[0]=e,r(t,null,o,n),!n.pop()}}),has:lt(function(e){return function(t){return at(e,t).length>0}}),contains:lt(function(e){return function(t){return(t.textContent||t.innerText||a(t)).indexOf(e)>-1}}),lang:lt(function(e){return G.test(e||"")||at.error("unsupported lang: "+e),e=e.replace(rt,it).toLowerCase(),function(t){var n;do if(n=h?t.lang:t.getAttribute("xml:lang")||t.getAttribute("lang"))return n=n.toLowerCase(),n===e||0===n.indexOf(e+"-");while((t=t.parentNode)&&1===t.nodeType);return!1}}),target:function(t){var n=e.location&&e.location.hash;return n&&n.slice(1)===t.id},root:function(e){return e===d},focus:function(e){return e===f.activeElement&&(!f.hasFocus||f.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:function(e){return e.disabled===!1},disabled:function(e){return e.disabled===!0},checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,e.selected===!0},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeName>"@"||3===e.nodeType||4===e.nodeType)return!1;return!0},parent:function(e){return!o.pseudos.empty(e)},header:function(e){return tt.test(e.nodeName)},input:function(e){return et.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||t.toLowerCase()===e.type)},first:ht(function(){return[0]}),last:ht(function(e,t){return[t-1]}),eq:ht(function(e,t,n){return[0>n?n+t:n]}),even:ht(function(e,t){var n=0;for(;t>n;n+=2)e.push(n);return e}),odd:ht(function(e,t){var n=1;for(;t>n;n+=2)e.push(n);return e}),lt:ht(function(e,t,n){var r=0>n?n+t:n;for(;--r>=0;)e.push(r);return e}),gt:ht(function(e,t,n){var r=0>n?n+t:n;for(;t>++r;)e.push(r);return e})}},o.pseudos.nth=o.pseudos.eq;for(n in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})o.pseudos[n]=ft(n);for(n in{submit:!0,reset:!0})o.pseudos[n]=dt(n);function gt(){}gt.prototype=o.filters=o.pseudos,o.setFilters=new gt;function mt(e,t){var n,r,i,a,s,l,u,c=k[e+" "];if(c)return t?0:c.slice(0);s=e,l=[],u=o.preFilter;while(s){(!n||(r=X.exec(s)))&&(r&&(s=s.slice(r[0].length)||s),l.push(i=[])),n=!1,(r=U.exec(s))&&(n=r.shift(),i.push({value:n,type:r[0].replace(z," ")}),s=s.slice(n.length));for(a in o.filter)!(r=Q[a].exec(s))||u[a]&&!(r=u[a](r))||(n=r.shift(),i.push({value:n,type:a,matches:r}),s=s.slice(n.length));if(!n)break}return t?s.length:s?at.error(e):k(e,l).slice(0)}function yt(e){var t=0,n=e.length,r="";for(;n>t;t++)r+=e[t].value;return r}function vt(e,t,n){var r=t.dir,o=n&&"parentNode"===r,a=C++;return t.first?function(t,n,i){while(t=t[r])if(1===t.nodeType||o)return e(t,n,i)}:function(t,n,s){var l,u,c,p=T+" "+a;if(s){while(t=t[r])if((1===t.nodeType||o)&&e(t,n,s))return!0}else while(t=t[r])if(1===t.nodeType||o)if(c=t[b]||(t[b]={}),(u=c[r])&&u[0]===p){if((l=u[1])===!0||l===i)return l===!0}else if(u=c[r]=[p],u[1]=e(t,n,s)||i,u[1]===!0)return!0}}function bt(e){return e.length>1?function(t,n,r){var i=e.length;while(i--)if(!e[i](t,n,r))return!1;return!0}:e[0]}function xt(e,t,n,r,i){var o,a=[],s=0,l=e.length,u=null!=t;for(;l>s;s++)(o=e[s])&&(!n||n(o,r,i))&&(a.push(o),u&&t.push(s));return a}function wt(e,t,n,r,i,o){return r&&!r[b]&&(r=wt(r)),i&&!i[b]&&(i=wt(i,o)),lt(function(o,a,s,l){var u,c,p,f=[],d=[],h=a.length,g=o||Nt(t||"*",s.nodeType?[s]:s,[]),m=!e||!o&&t?g:xt(g,f,e,s,l),y=n?i||(o?e:h||r)?[]:a:m;if(n&&n(m,y,s,l),r){u=xt(y,d),r(u,[],s,l),c=u.length;while(c--)(p=u[c])&&(y[d[c]]=!(m[d[c]]=p))}if(o){if(i||e){if(i){u=[],c=y.length;while(c--)(p=y[c])&&u.push(m[c]=p);i(null,y=[],u,l)}c=y.length;while(c--)(p=y[c])&&(u=i?F.call(o,p):f[c])>-1&&(o[u]=!(a[u]=p))}}else y=xt(y===a?y.splice(h,y.length):y),i?i(null,a,y,l):M.apply(a,y)})}function Tt(e){var t,n,r,i=e.length,a=o.relative[e[0].type],s=a||o.relative[" "],l=a?1:0,c=vt(function(e){return e===t},s,!0),p=vt(function(e){return F.call(t,e)>-1},s,!0),f=[function(e,n,r){return!a&&(r||n!==u)||((t=n).nodeType?c(e,n,r):p(e,n,r))}];for(;i>l;l++)if(n=o.relative[e[l].type])f=[vt(bt(f),n)];else{if(n=o.filter[e[l].type].apply(null,e[l].matches),n[b]){for(r=++l;i>r;r++)if(o.relative[e[r].type])break;return wt(l>1&&bt(f),l>1&&yt(e.slice(0,l-1).concat({value:" "===e[l-2].type?"*":""})).replace(z,"$1"),n,r>l&&Tt(e.slice(l,r)),i>r&&Tt(e=e.slice(r)),i>r&&yt(e))}f.push(n)}return bt(f)}function Ct(e,t){var n=0,r=t.length>0,a=e.length>0,s=function(s,l,c,p,d){var h,g,m,y=[],v=0,b="0",x=s&&[],w=null!=d,C=u,N=s||a&&o.find.TAG("*",d&&l.parentNode||l),k=T+=null==C?1:Math.random()||.1;for(w&&(u=l!==f&&l,i=n);null!=(h=N[b]);b++){if(a&&h){g=0;while(m=e[g++])if(m(h,l,c)){p.push(h);break}w&&(T=k,i=++n)}r&&((h=!m&&h)&&v--,s&&x.push(h))}if(v+=b,r&&b!==v){g=0;while(m=t[g++])m(x,y,l,c);if(s){if(v>0)while(b--)x[b]||y[b]||(y[b]=q.call(p));y=xt(y)}M.apply(p,y),w&&!s&&y.length>0&&v+t.length>1&&at.uniqueSort(p)}return w&&(T=k,u=C),x};return r?lt(s):s}l=at.compile=function(e,t){var n,r=[],i=[],o=E[e+" "];if(!o){t||(t=mt(e)),n=t.length;while(n--)o=Tt(t[n]),o[b]?r.push(o):i.push(o);o=E(e,Ct(i,r))}return o};function Nt(e,t,n){var r=0,i=t.length;for(;i>r;r++)at(e,t[r],n);return n}function kt(e,t,n,i){var a,s,u,c,p,f=mt(e);if(!i&&1===f.length){if(s=f[0]=f[0].slice(0),s.length>2&&"ID"===(u=s[0]).type&&r.getById&&9===t.nodeType&&h&&o.relative[s[1].type]){if(t=(o.find.ID(u.matches[0].replace(rt,it),t)||[])[0],!t)return n;e=e.slice(s.shift().value.length)}a=Q.needsContext.test(e)?0:s.length;while(a--){if(u=s[a],o.relative[c=u.type])break;if((p=o.find[c])&&(i=p(u.matches[0].replace(rt,it),V.test(s[0].type)&&t.parentNode||t))){if(s.splice(a,1),e=i.length&&yt(s),!e)return M.apply(n,i),n;break}}}return l(e,f)(i,t,!h,n,V.test(e)),n}r.sortStable=b.split("").sort(A).join("")===b,r.detectDuplicates=S,p(),r.sortDetached=ut(function(e){return 1&e.compareDocumentPosition(f.createElement("div"))}),ut(function(e){return e.innerHTML="<a href='#'></a>","#"===e.firstChild.getAttribute("href")})||ct("type|href|height|width",function(e,n,r){return r?t:e.getAttribute(n,"type"===n.toLowerCase()?1:2)}),r.attributes&&ut(function(e){return e.innerHTML="<input/>",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||ct("value",function(e,n,r){return r||"input"!==e.nodeName.toLowerCase()?t:e.defaultValue}),ut(function(e){return null==e.getAttribute("disabled")})||ct(B,function(e,n,r){var i;return r?t:(i=e.getAttributeNode(n))&&i.specified?i.value:e[n]===!0?n.toLowerCase():null}),x.find=at,x.expr=at.selectors,x.expr[":"]=x.expr.pseudos,x.unique=at.uniqueSort,x.text=at.getText,x.isXMLDoc=at.isXML,x.contains=at.contains}(e);var O={};function F(e){var t=O[e]={};return x.each(e.match(T)||[],function(e,n){t[n]=!0}),t}x.Callbacks=function(e){e="string"==typeof e?O[e]||F(e):x.extend({},e);var n,r,i,o,a,s,l=[],u=!e.once&&[],c=function(t){for(r=e.memory&&t,i=!0,a=s||0,s=0,o=l.length,n=!0;l&&o>a;a++)if(l[a].apply(t[0],t[1])===!1&&e.stopOnFalse){r=!1;break}n=!1,l&&(u?u.length&&c(u.shift()):r?l=[]:p.disable())},p={add:function(){if(l){var t=l.length;(function i(t){x.each(t,function(t,n){var r=x.type(n);"function"===r?e.unique&&p.has(n)||l.push(n):n&&n.length&&"string"!==r&&i(n)})})(arguments),n?o=l.length:r&&(s=t,c(r))}return this},remove:function(){return l&&x.each(arguments,function(e,t){var r;while((r=x.inArray(t,l,r))>-1)l.splice(r,1),n&&(o>=r&&o--,a>=r&&a--)}),this},has:function(e){return e?x.inArray(e,l)>-1:!(!l||!l.length)},empty:function(){return l=[],o=0,this},disable:function(){return l=u=r=t,this},disabled:function(){return!l},lock:function(){return u=t,r||p.disable(),this},locked:function(){return!u},fireWith:function(e,t){return!l||i&&!u||(t=t||[],t=[e,t.slice?t.slice():t],n?u.push(t):c(t)),this},fire:function(){return p.fireWith(this,arguments),this},fired:function(){return!!i}};return p},x.extend({Deferred:function(e){var t=[["resolve","done",x.Callbacks("once memory"),"resolved"],["reject","fail",x.Callbacks("once memory"),"rejected"],["notify","progress",x.Callbacks("memory")]],n="pending",r={state:function(){return n},always:function(){return i.done(arguments).fail(arguments),this},then:function(){var e=arguments;return x.Deferred(function(n){x.each(t,function(t,o){var a=o[0],s=x.isFunction(e[t])&&e[t];i[o[1]](function(){var e=s&&s.apply(this,arguments);e&&x.isFunction(e.promise)?e.promise().done(n.resolve).fail(n.reject).progress(n.notify):n[a+"With"](this===r?n.promise():this,s?[e]:arguments)})}),e=null}).promise()},promise:function(e){return null!=e?x.extend(e,r):r}},i={};return r.pipe=r.then,x.each(t,function(e,o){var a=o[2],s=o[3];r[o[1]]=a.add,s&&a.add(function(){n=s},t[1^e][2].disable,t[2][2].lock),i[o[0]]=function(){return i[o[0]+"With"](this===i?r:this,arguments),this},i[o[0]+"With"]=a.fireWith}),r.promise(i),e&&e.call(i,i),i},when:function(e){var t=0,n=g.call(arguments),r=n.length,i=1!==r||e&&x.isFunction(e.promise)?r:0,o=1===i?e:x.Deferred(),a=function(e,t,n){return function(r){t[e]=this,n[e]=arguments.length>1?g.call(arguments):r,n===s?o.notifyWith(t,n):--i||o.resolveWith(t,n)}},s,l,u;if(r>1)for(s=Array(r),l=Array(r),u=Array(r);r>t;t++)n[t]&&x.isFunction(n[t].promise)?n[t].promise().done(a(t,u,n)).fail(o.reject).progress(a(t,l,s)):--i;return i||o.resolveWith(u,n),o.promise()}}),x.support=function(t){var n,r,o,s,l,u,c,p,f,d=a.createElement("div");if(d.setAttribute("className","t"),d.innerHTML=" <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",n=d.getElementsByTagName("*")||[],r=d.getElementsByTagName("a")[0],!r||!r.style||!n.length)return t;s=a.createElement("select"),u=s.appendChild(a.createElement("option")),o=d.getElementsByTagName("input")[0],r.style.cssText="top:1px;float:left;opacity:.5",t.getSetAttribute="t"!==d.className,t.leadingWhitespace=3===d.firstChild.nodeType,t.tbody=!d.getElementsByTagName("tbody").length,t.htmlSerialize=!!d.getElementsByTagName("link").length,t.style=/top/.test(r.getAttribute("style")),t.hrefNormalized="/a"===r.getAttribute("href"),t.opacity=/^0.5/.test(r.style.opacity),t.cssFloat=!!r.style.cssFloat,t.checkOn=!!o.value,t.optSelected=u.selected,t.enctype=!!a.createElement("form").enctype,t.html5Clone="<:nav></:nav>"!==a.createElement("nav").cloneNode(!0).outerHTML,t.inlineBlockNeedsLayout=!1,t.shrinkWrapBlocks=!1,t.pixelPosition=!1,t.deleteExpando=!0,t.noCloneEvent=!0,t.reliableMarginRight=!0,t.boxSizingReliable=!0,o.checked=!0,t.noCloneChecked=o.cloneNode(!0).checked,s.disabled=!0,t.optDisabled=!u.disabled;try{delete d.test}catch(h){t.deleteExpando=!1}o=a.createElement("input"),o.setAttribute("value",""),t.input=""===o.getAttribute("value"),o.value="t",o.setAttribute("type","radio"),t.radioValue="t"===o.value,o.setAttribute("checked","t"),o.setAttribute("name","t"),l=a.createDocumentFragment(),l.appendChild(o),t.appendChecked=o.checked,t.checkClone=l.cloneNode(!0).cloneNode(!0).lastChild.checked,d.attachEvent&&(d.attachEvent("onclick",function(){t.noCloneEvent=!1}),d.cloneNode(!0).click());for(f in{submit:!0,change:!0,focusin:!0})d.setAttribute(c="on"+f,"t"),t[f+"Bubbles"]=c in e||d.attributes[c].expando===!1;d.style.backgroundClip="content-box",d.cloneNode(!0).style.backgroundClip="",t.clearCloneStyle="content-box"===d.style.backgroundClip;for(f in x(t))break;return t.ownLast="0"!==f,x(function(){var n,r,o,s="padding:0;margin:0;border:0;display:block;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;",l=a.getElementsByTagName("body")[0];l&&(n=a.createElement("div"),n.style.cssText="border:0;width:0;height:0;position:absolute;top:0;left:-9999px;margin-top:1px",l.appendChild(n).appendChild(d),d.innerHTML="<table><tr><td></td><td>t</td></tr></table>",o=d.getElementsByTagName("td"),o[0].style.cssText="padding:0;margin:0;border:0;display:none",p=0===o[0].offsetHeight,o[0].style.display="",o[1].style.display="none",t.reliableHiddenOffsets=p&&0===o[0].offsetHeight,d.innerHTML="",d.style.cssText="box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;",x.swap(l,null!=l.style.zoom?{zoom:1}:{},function(){t.boxSizing=4===d.offsetWidth}),e.getComputedStyle&&(t.pixelPosition="1%"!==(e.getComputedStyle(d,null)||{}).top,t.boxSizingReliable="4px"===(e.getComputedStyle(d,null)||{width:"4px"}).width,r=d.appendChild(a.createElement("div")),r.style.cssText=d.style.cssText=s,r.style.marginRight=r.style.width="0",d.style.width="1px",t.reliableMarginRight=!parseFloat((e.getComputedStyle(r,null)||{}).marginRight)),typeof d.style.zoom!==i&&(d.innerHTML="",d.style.cssText=s+"width:1px;padding:1px;display:inline;zoom:1",t.inlineBlockNeedsLayout=3===d.offsetWidth,d.style.display="block",d.innerHTML="<div></div>",d.firstChild.style.width="5px",t.shrinkWrapBlocks=3!==d.offsetWidth,t.inlineBlockNeedsLayout&&(l.style.zoom=1)),l.removeChild(n),n=d=o=r=null)}),n=s=l=u=r=o=null,t
-}({});var B=/(?:\{[\s\S]*\}|\[[\s\S]*\])$/,P=/([A-Z])/g;function R(e,n,r,i){if(x.acceptData(e)){var o,a,s=x.expando,l=e.nodeType,u=l?x.cache:e,c=l?e[s]:e[s]&&s;if(c&&u[c]&&(i||u[c].data)||r!==t||"string"!=typeof n)return c||(c=l?e[s]=p.pop()||x.guid++:s),u[c]||(u[c]=l?{}:{toJSON:x.noop}),("object"==typeof n||"function"==typeof n)&&(i?u[c]=x.extend(u[c],n):u[c].data=x.extend(u[c].data,n)),a=u[c],i||(a.data||(a.data={}),a=a.data),r!==t&&(a[x.camelCase(n)]=r),"string"==typeof n?(o=a[n],null==o&&(o=a[x.camelCase(n)])):o=a,o}}function W(e,t,n){if(x.acceptData(e)){var r,i,o=e.nodeType,a=o?x.cache:e,s=o?e[x.expando]:x.expando;if(a[s]){if(t&&(r=n?a[s]:a[s].data)){x.isArray(t)?t=t.concat(x.map(t,x.camelCase)):t in r?t=[t]:(t=x.camelCase(t),t=t in r?[t]:t.split(" ")),i=t.length;while(i--)delete r[t[i]];if(n?!I(r):!x.isEmptyObject(r))return}(n||(delete a[s].data,I(a[s])))&&(o?x.cleanData([e],!0):x.support.deleteExpando||a!=a.window?delete a[s]:a[s]=null)}}}x.extend({cache:{},noData:{applet:!0,embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"},hasData:function(e){return e=e.nodeType?x.cache[e[x.expando]]:e[x.expando],!!e&&!I(e)},data:function(e,t,n){return R(e,t,n)},removeData:function(e,t){return W(e,t)},_data:function(e,t,n){return R(e,t,n,!0)},_removeData:function(e,t){return W(e,t,!0)},acceptData:function(e){if(e.nodeType&&1!==e.nodeType&&9!==e.nodeType)return!1;var t=e.nodeName&&x.noData[e.nodeName.toLowerCase()];return!t||t!==!0&&e.getAttribute("classid")===t}}),x.fn.extend({data:function(e,n){var r,i,o=null,a=0,s=this[0];if(e===t){if(this.length&&(o=x.data(s),1===s.nodeType&&!x._data(s,"parsedAttrs"))){for(r=s.attributes;r.length>a;a++)i=r[a].name,0===i.indexOf("data-")&&(i=x.camelCase(i.slice(5)),$(s,i,o[i]));x._data(s,"parsedAttrs",!0)}return o}return"object"==typeof e?this.each(function(){x.data(this,e)}):arguments.length>1?this.each(function(){x.data(this,e,n)}):s?$(s,e,x.data(s,e)):null},removeData:function(e){return this.each(function(){x.removeData(this,e)})}});function $(e,n,r){if(r===t&&1===e.nodeType){var i="data-"+n.replace(P,"-$1").toLowerCase();if(r=e.getAttribute(i),"string"==typeof r){try{r="true"===r?!0:"false"===r?!1:"null"===r?null:+r+""===r?+r:B.test(r)?x.parseJSON(r):r}catch(o){}x.data(e,n,r)}else r=t}return r}function I(e){var t;for(t in e)if(("data"!==t||!x.isEmptyObject(e[t]))&&"toJSON"!==t)return!1;return!0}x.extend({queue:function(e,n,r){var i;return e?(n=(n||"fx")+"queue",i=x._data(e,n),r&&(!i||x.isArray(r)?i=x._data(e,n,x.makeArray(r)):i.push(r)),i||[]):t},dequeue:function(e,t){t=t||"fx";var n=x.queue(e,t),r=n.length,i=n.shift(),o=x._queueHooks(e,t),a=function(){x.dequeue(e,t)};"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,a,o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return x._data(e,n)||x._data(e,n,{empty:x.Callbacks("once memory").add(function(){x._removeData(e,t+"queue"),x._removeData(e,n)})})}}),x.fn.extend({queue:function(e,n){var r=2;return"string"!=typeof e&&(n=e,e="fx",r--),r>arguments.length?x.queue(this[0],e):n===t?this:this.each(function(){var t=x.queue(this,e,n);x._queueHooks(this,e),"fx"===e&&"inprogress"!==t[0]&&x.dequeue(this,e)})},dequeue:function(e){return this.each(function(){x.dequeue(this,e)})},delay:function(e,t){return e=x.fx?x.fx.speeds[e]||e:e,t=t||"fx",this.queue(t,function(t,n){var r=setTimeout(t,e);n.stop=function(){clearTimeout(r)}})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,n){var r,i=1,o=x.Deferred(),a=this,s=this.length,l=function(){--i||o.resolveWith(a,[a])};"string"!=typeof e&&(n=e,e=t),e=e||"fx";while(s--)r=x._data(a[s],e+"queueHooks"),r&&r.empty&&(i++,r.empty.add(l));return l(),o.promise(n)}});var z,X,U=/[\t\r\n\f]/g,V=/\r/g,Y=/^(?:input|select|textarea|button|object)$/i,J=/^(?:a|area)$/i,G=/^(?:checked|selected)$/i,Q=x.support.getSetAttribute,K=x.support.input;x.fn.extend({attr:function(e,t){return x.access(this,x.attr,e,t,arguments.length>1)},removeAttr:function(e){return this.each(function(){x.removeAttr(this,e)})},prop:function(e,t){return x.access(this,x.prop,e,t,arguments.length>1)},removeProp:function(e){return e=x.propFix[e]||e,this.each(function(){try{this[e]=t,delete this[e]}catch(n){}})},addClass:function(e){var t,n,r,i,o,a=0,s=this.length,l="string"==typeof e&&e;if(x.isFunction(e))return this.each(function(t){x(this).addClass(e.call(this,t,this.className))});if(l)for(t=(e||"").match(T)||[];s>a;a++)if(n=this[a],r=1===n.nodeType&&(n.className?(" "+n.className+" ").replace(U," "):" ")){o=0;while(i=t[o++])0>r.indexOf(" "+i+" ")&&(r+=i+" ");n.className=x.trim(r)}return this},removeClass:function(e){var t,n,r,i,o,a=0,s=this.length,l=0===arguments.length||"string"==typeof e&&e;if(x.isFunction(e))return this.each(function(t){x(this).removeClass(e.call(this,t,this.className))});if(l)for(t=(e||"").match(T)||[];s>a;a++)if(n=this[a],r=1===n.nodeType&&(n.className?(" "+n.className+" ").replace(U," "):"")){o=0;while(i=t[o++])while(r.indexOf(" "+i+" ")>=0)r=r.replace(" "+i+" "," ");n.className=e?x.trim(r):""}return this},toggleClass:function(e,t){var n=typeof e;return"boolean"==typeof t&&"string"===n?t?this.addClass(e):this.removeClass(e):x.isFunction(e)?this.each(function(n){x(this).toggleClass(e.call(this,n,this.className,t),t)}):this.each(function(){if("string"===n){var t,r=0,o=x(this),a=e.match(T)||[];while(t=a[r++])o.hasClass(t)?o.removeClass(t):o.addClass(t)}else(n===i||"boolean"===n)&&(this.className&&x._data(this,"__className__",this.className),this.className=this.className||e===!1?"":x._data(this,"__className__")||"")})},hasClass:function(e){var t=" "+e+" ",n=0,r=this.length;for(;r>n;n++)if(1===this[n].nodeType&&(" "+this[n].className+" ").replace(U," ").indexOf(t)>=0)return!0;return!1},val:function(e){var n,r,i,o=this[0];{if(arguments.length)return i=x.isFunction(e),this.each(function(n){var o;1===this.nodeType&&(o=i?e.call(this,n,x(this).val()):e,null==o?o="":"number"==typeof o?o+="":x.isArray(o)&&(o=x.map(o,function(e){return null==e?"":e+""})),r=x.valHooks[this.type]||x.valHooks[this.nodeName.toLowerCase()],r&&"set"in r&&r.set(this,o,"value")!==t||(this.value=o))});if(o)return r=x.valHooks[o.type]||x.valHooks[o.nodeName.toLowerCase()],r&&"get"in r&&(n=r.get(o,"value"))!==t?n:(n=o.value,"string"==typeof n?n.replace(V,""):null==n?"":n)}}}),x.extend({valHooks:{option:{get:function(e){var t=x.find.attr(e,"value");return null!=t?t:e.text}},select:{get:function(e){var t,n,r=e.options,i=e.selectedIndex,o="select-one"===e.type||0>i,a=o?null:[],s=o?i+1:r.length,l=0>i?s:o?i:0;for(;s>l;l++)if(n=r[l],!(!n.selected&&l!==i||(x.support.optDisabled?n.disabled:null!==n.getAttribute("disabled"))||n.parentNode.disabled&&x.nodeName(n.parentNode,"optgroup"))){if(t=x(n).val(),o)return t;a.push(t)}return a},set:function(e,t){var n,r,i=e.options,o=x.makeArray(t),a=i.length;while(a--)r=i[a],(r.selected=x.inArray(x(r).val(),o)>=0)&&(n=!0);return n||(e.selectedIndex=-1),o}}},attr:function(e,n,r){var o,a,s=e.nodeType;if(e&&3!==s&&8!==s&&2!==s)return typeof e.getAttribute===i?x.prop(e,n,r):(1===s&&x.isXMLDoc(e)||(n=n.toLowerCase(),o=x.attrHooks[n]||(x.expr.match.bool.test(n)?X:z)),r===t?o&&"get"in o&&null!==(a=o.get(e,n))?a:(a=x.find.attr(e,n),null==a?t:a):null!==r?o&&"set"in o&&(a=o.set(e,r,n))!==t?a:(e.setAttribute(n,r+""),r):(x.removeAttr(e,n),t))},removeAttr:function(e,t){var n,r,i=0,o=t&&t.match(T);if(o&&1===e.nodeType)while(n=o[i++])r=x.propFix[n]||n,x.expr.match.bool.test(n)?K&&Q||!G.test(n)?e[r]=!1:e[x.camelCase("default-"+n)]=e[r]=!1:x.attr(e,n,""),e.removeAttribute(Q?n:r)},attrHooks:{type:{set:function(e,t){if(!x.support.radioValue&&"radio"===t&&x.nodeName(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},propFix:{"for":"htmlFor","class":"className"},prop:function(e,n,r){var i,o,a,s=e.nodeType;if(e&&3!==s&&8!==s&&2!==s)return a=1!==s||!x.isXMLDoc(e),a&&(n=x.propFix[n]||n,o=x.propHooks[n]),r!==t?o&&"set"in o&&(i=o.set(e,r,n))!==t?i:e[n]=r:o&&"get"in o&&null!==(i=o.get(e,n))?i:e[n]},propHooks:{tabIndex:{get:function(e){var t=x.find.attr(e,"tabindex");return t?parseInt(t,10):Y.test(e.nodeName)||J.test(e.nodeName)&&e.href?0:-1}}}}),X={set:function(e,t,n){return t===!1?x.removeAttr(e,n):K&&Q||!G.test(n)?e.setAttribute(!Q&&x.propFix[n]||n,n):e[x.camelCase("default-"+n)]=e[n]=!0,n}},x.each(x.expr.match.bool.source.match(/\w+/g),function(e,n){var r=x.expr.attrHandle[n]||x.find.attr;x.expr.attrHandle[n]=K&&Q||!G.test(n)?function(e,n,i){var o=x.expr.attrHandle[n],a=i?t:(x.expr.attrHandle[n]=t)!=r(e,n,i)?n.toLowerCase():null;return x.expr.attrHandle[n]=o,a}:function(e,n,r){return r?t:e[x.camelCase("default-"+n)]?n.toLowerCase():null}}),K&&Q||(x.attrHooks.value={set:function(e,n,r){return x.nodeName(e,"input")?(e.defaultValue=n,t):z&&z.set(e,n,r)}}),Q||(z={set:function(e,n,r){var i=e.getAttributeNode(r);return i||e.setAttributeNode(i=e.ownerDocument.createAttribute(r)),i.value=n+="","value"===r||n===e.getAttribute(r)?n:t}},x.expr.attrHandle.id=x.expr.attrHandle.name=x.expr.attrHandle.coords=function(e,n,r){var i;return r?t:(i=e.getAttributeNode(n))&&""!==i.value?i.value:null},x.valHooks.button={get:function(e,n){var r=e.getAttributeNode(n);return r&&r.specified?r.value:t},set:z.set},x.attrHooks.contenteditable={set:function(e,t,n){z.set(e,""===t?!1:t,n)}},x.each(["width","height"],function(e,n){x.attrHooks[n]={set:function(e,r){return""===r?(e.setAttribute(n,"auto"),r):t}}})),x.support.hrefNormalized||x.each(["href","src"],function(e,t){x.propHooks[t]={get:function(e){return e.getAttribute(t,4)}}}),x.support.style||(x.attrHooks.style={get:function(e){return e.style.cssText||t},set:function(e,t){return e.style.cssText=t+""}}),x.support.optSelected||(x.propHooks.selected={get:function(e){var t=e.parentNode;return t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex),null}}),x.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){x.propFix[this.toLowerCase()]=this}),x.support.enctype||(x.propFix.enctype="encoding"),x.each(["radio","checkbox"],function(){x.valHooks[this]={set:function(e,n){return x.isArray(n)?e.checked=x.inArray(x(e).val(),n)>=0:t}},x.support.checkOn||(x.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})});var Z=/^(?:input|select|textarea)$/i,et=/^key/,tt=/^(?:mouse|contextmenu)|click/,nt=/^(?:focusinfocus|focusoutblur)$/,rt=/^([^.]*)(?:\.(.+)|)$/;function it(){return!0}function ot(){return!1}function at(){try{return a.activeElement}catch(e){}}x.event={global:{},add:function(e,n,r,o,a){var s,l,u,c,p,f,d,h,g,m,y,v=x._data(e);if(v){r.handler&&(c=r,r=c.handler,a=c.selector),r.guid||(r.guid=x.guid++),(l=v.events)||(l=v.events={}),(f=v.handle)||(f=v.handle=function(e){return typeof x===i||e&&x.event.triggered===e.type?t:x.event.dispatch.apply(f.elem,arguments)},f.elem=e),n=(n||"").match(T)||[""],u=n.length;while(u--)s=rt.exec(n[u])||[],g=y=s[1],m=(s[2]||"").split(".").sort(),g&&(p=x.event.special[g]||{},g=(a?p.delegateType:p.bindType)||g,p=x.event.special[g]||{},d=x.extend({type:g,origType:y,data:o,handler:r,guid:r.guid,selector:a,needsContext:a&&x.expr.match.needsContext.test(a),namespace:m.join(".")},c),(h=l[g])||(h=l[g]=[],h.delegateCount=0,p.setup&&p.setup.call(e,o,m,f)!==!1||(e.addEventListener?e.addEventListener(g,f,!1):e.attachEvent&&e.attachEvent("on"+g,f))),p.add&&(p.add.call(e,d),d.handler.guid||(d.handler.guid=r.guid)),a?h.splice(h.delegateCount++,0,d):h.push(d),x.event.global[g]=!0);e=null}},remove:function(e,t,n,r,i){var o,a,s,l,u,c,p,f,d,h,g,m=x.hasData(e)&&x._data(e);if(m&&(c=m.events)){t=(t||"").match(T)||[""],u=t.length;while(u--)if(s=rt.exec(t[u])||[],d=g=s[1],h=(s[2]||"").split(".").sort(),d){p=x.event.special[d]||{},d=(r?p.delegateType:p.bindType)||d,f=c[d]||[],s=s[2]&&RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),l=o=f.length;while(o--)a=f[o],!i&&g!==a.origType||n&&n.guid!==a.guid||s&&!s.test(a.namespace)||r&&r!==a.selector&&("**"!==r||!a.selector)||(f.splice(o,1),a.selector&&f.delegateCount--,p.remove&&p.remove.call(e,a));l&&!f.length&&(p.teardown&&p.teardown.call(e,h,m.handle)!==!1||x.removeEvent(e,d,m.handle),delete c[d])}else for(d in c)x.event.remove(e,d+t[u],n,r,!0);x.isEmptyObject(c)&&(delete m.handle,x._removeData(e,"events"))}},trigger:function(n,r,i,o){var s,l,u,c,p,f,d,h=[i||a],g=v.call(n,"type")?n.type:n,m=v.call(n,"namespace")?n.namespace.split("."):[];if(u=f=i=i||a,3!==i.nodeType&&8!==i.nodeType&&!nt.test(g+x.event.triggered)&&(g.indexOf(".")>=0&&(m=g.split("."),g=m.shift(),m.sort()),l=0>g.indexOf(":")&&"on"+g,n=n[x.expando]?n:new x.Event(g,"object"==typeof n&&n),n.isTrigger=o?2:3,n.namespace=m.join("."),n.namespace_re=n.namespace?RegExp("(^|\\.)"+m.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,n.result=t,n.target||(n.target=i),r=null==r?[n]:x.makeArray(r,[n]),p=x.event.special[g]||{},o||!p.trigger||p.trigger.apply(i,r)!==!1)){if(!o&&!p.noBubble&&!x.isWindow(i)){for(c=p.delegateType||g,nt.test(c+g)||(u=u.parentNode);u;u=u.parentNode)h.push(u),f=u;f===(i.ownerDocument||a)&&h.push(f.defaultView||f.parentWindow||e)}d=0;while((u=h[d++])&&!n.isPropagationStopped())n.type=d>1?c:p.bindType||g,s=(x._data(u,"events")||{})[n.type]&&x._data(u,"handle"),s&&s.apply(u,r),s=l&&u[l],s&&x.acceptData(u)&&s.apply&&s.apply(u,r)===!1&&n.preventDefault();if(n.type=g,!o&&!n.isDefaultPrevented()&&(!p._default||p._default.apply(h.pop(),r)===!1)&&x.acceptData(i)&&l&&i[g]&&!x.isWindow(i)){f=i[l],f&&(i[l]=null),x.event.triggered=g;try{i[g]()}catch(y){}x.event.triggered=t,f&&(i[l]=f)}return n.result}},dispatch:function(e){e=x.event.fix(e);var n,r,i,o,a,s=[],l=g.call(arguments),u=(x._data(this,"events")||{})[e.type]||[],c=x.event.special[e.type]||{};if(l[0]=e,e.delegateTarget=this,!c.preDispatch||c.preDispatch.call(this,e)!==!1){s=x.event.handlers.call(this,e,u),n=0;while((o=s[n++])&&!e.isPropagationStopped()){e.currentTarget=o.elem,a=0;while((i=o.handlers[a++])&&!e.isImmediatePropagationStopped())(!e.namespace_re||e.namespace_re.test(i.namespace))&&(e.handleObj=i,e.data=i.data,r=((x.event.special[i.origType]||{}).handle||i.handler).apply(o.elem,l),r!==t&&(e.result=r)===!1&&(e.preventDefault(),e.stopPropagation()))}return c.postDispatch&&c.postDispatch.call(this,e),e.result}},handlers:function(e,n){var r,i,o,a,s=[],l=n.delegateCount,u=e.target;if(l&&u.nodeType&&(!e.button||"click"!==e.type))for(;u!=this;u=u.parentNode||this)if(1===u.nodeType&&(u.disabled!==!0||"click"!==e.type)){for(o=[],a=0;l>a;a++)i=n[a],r=i.selector+" ",o[r]===t&&(o[r]=i.needsContext?x(r,this).index(u)>=0:x.find(r,this,null,[u]).length),o[r]&&o.push(i);o.length&&s.push({elem:u,handlers:o})}return n.length>l&&s.push({elem:this,handlers:n.slice(l)}),s},fix:function(e){if(e[x.expando])return e;var t,n,r,i=e.type,o=e,s=this.fixHooks[i];s||(this.fixHooks[i]=s=tt.test(i)?this.mouseHooks:et.test(i)?this.keyHooks:{}),r=s.props?this.props.concat(s.props):this.props,e=new x.Event(o),t=r.length;while(t--)n=r[t],e[n]=o[n];return e.target||(e.target=o.srcElement||a),3===e.target.nodeType&&(e.target=e.target.parentNode),e.metaKey=!!e.metaKey,s.filter?s.filter(e,o):e},props:"altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(e,t){return null==e.which&&(e.which=null!=t.charCode?t.charCode:t.keyCode),e}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(e,n){var r,i,o,s=n.button,l=n.fromElement;return null==e.pageX&&null!=n.clientX&&(i=e.target.ownerDocument||a,o=i.documentElement,r=i.body,e.pageX=n.clientX+(o&&o.scrollLeft||r&&r.scrollLeft||0)-(o&&o.clientLeft||r&&r.clientLeft||0),e.pageY=n.clientY+(o&&o.scrollTop||r&&r.scrollTop||0)-(o&&o.clientTop||r&&r.clientTop||0)),!e.relatedTarget&&l&&(e.relatedTarget=l===e.target?n.toElement:l),e.which||s===t||(e.which=1&s?1:2&s?3:4&s?2:0),e}},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==at()&&this.focus)try{return this.focus(),!1}catch(e){}},delegateType:"focusin"},blur:{trigger:function(){return this===at()&&this.blur?(this.blur(),!1):t},delegateType:"focusout"},click:{trigger:function(){return x.nodeName(this,"input")&&"checkbox"===this.type&&this.click?(this.click(),!1):t},_default:function(e){return x.nodeName(e.target,"a")}},beforeunload:{postDispatch:function(e){e.result!==t&&(e.originalEvent.returnValue=e.result)}}},simulate:function(e,t,n,r){var i=x.extend(new x.Event,n,{type:e,isSimulated:!0,originalEvent:{}});r?x.event.trigger(i,null,t):x.event.dispatch.call(t,i),i.isDefaultPrevented()&&n.preventDefault()}},x.removeEvent=a.removeEventListener?function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n,!1)}:function(e,t,n){var r="on"+t;e.detachEvent&&(typeof e[r]===i&&(e[r]=null),e.detachEvent(r,n))},x.Event=function(e,n){return this instanceof x.Event?(e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||e.returnValue===!1||e.getPreventDefault&&e.getPreventDefault()?it:ot):this.type=e,n&&x.extend(this,n),this.timeStamp=e&&e.timeStamp||x.now(),this[x.expando]=!0,t):new x.Event(e,n)},x.Event.prototype={isDefaultPrevented:ot,isPropagationStopped:ot,isImmediatePropagationStopped:ot,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=it,e&&(e.preventDefault?e.preventDefault():e.returnValue=!1)},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=it,e&&(e.stopPropagation&&e.stopPropagation(),e.cancelBubble=!0)},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=it,this.stopPropagation()}},x.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(e,t){x.event.special[e]={delegateType:t,bindType:t,handle:function(e){var n,r=this,i=e.relatedTarget,o=e.handleObj;return(!i||i!==r&&!x.contains(r,i))&&(e.type=o.origType,n=o.handler.apply(this,arguments),e.type=t),n}}}),x.support.submitBubbles||(x.event.special.submit={setup:function(){return x.nodeName(this,"form")?!1:(x.event.add(this,"click._submit keypress._submit",function(e){var n=e.target,r=x.nodeName(n,"input")||x.nodeName(n,"button")?n.form:t;r&&!x._data(r,"submitBubbles")&&(x.event.add(r,"submit._submit",function(e){e._submit_bubble=!0}),x._data(r,"submitBubbles",!0))}),t)},postDispatch:function(e){e._submit_bubble&&(delete e._submit_bubble,this.parentNode&&!e.isTrigger&&x.event.simulate("submit",this.parentNode,e,!0))},teardown:function(){return x.nodeName(this,"form")?!1:(x.event.remove(this,"._submit"),t)}}),x.support.changeBubbles||(x.event.special.change={setup:function(){return Z.test(this.nodeName)?(("checkbox"===this.type||"radio"===this.type)&&(x.event.add(this,"propertychange._change",function(e){"checked"===e.originalEvent.propertyName&&(this._just_changed=!0)}),x.event.add(this,"click._change",function(e){this._just_changed&&!e.isTrigger&&(this._just_changed=!1),x.event.simulate("change",this,e,!0)})),!1):(x.event.add(this,"beforeactivate._change",function(e){var t=e.target;Z.test(t.nodeName)&&!x._data(t,"changeBubbles")&&(x.event.add(t,"change._change",function(e){!this.parentNode||e.isSimulated||e.isTrigger||x.event.simulate("change",this.parentNode,e,!0)}),x._data(t,"changeBubbles",!0))}),t)},handle:function(e){var n=e.target;return this!==n||e.isSimulated||e.isTrigger||"radio"!==n.type&&"checkbox"!==n.type?e.handleObj.handler.apply(this,arguments):t},teardown:function(){return x.event.remove(this,"._change"),!Z.test(this.nodeName)}}),x.support.focusinBubbles||x.each({focus:"focusin",blur:"focusout"},function(e,t){var n=0,r=function(e){x.event.simulate(t,e.target,x.event.fix(e),!0)};x.event.special[t]={setup:function(){0===n++&&a.addEventListener(e,r,!0)},teardown:function(){0===--n&&a.removeEventListener(e,r,!0)}}}),x.fn.extend({on:function(e,n,r,i,o){var a,s;if("object"==typeof e){"string"!=typeof n&&(r=r||n,n=t);for(a in e)this.on(a,n,r,e[a],o);return this}if(null==r&&null==i?(i=n,r=n=t):null==i&&("string"==typeof n?(i=r,r=t):(i=r,r=n,n=t)),i===!1)i=ot;else if(!i)return this;return 1===o&&(s=i,i=function(e){return x().off(e),s.apply(this,arguments)},i.guid=s.guid||(s.guid=x.guid++)),this.each(function(){x.event.add(this,e,i,r,n)})},one:function(e,t,n,r){return this.on(e,t,n,r,1)},off:function(e,n,r){var i,o;if(e&&e.preventDefault&&e.handleObj)return i=e.handleObj,x(e.delegateTarget).off(i.namespace?i.origType+"."+i.namespace:i.origType,i.selector,i.handler),this;if("object"==typeof e){for(o in e)this.off(o,n,e[o]);return this}return(n===!1||"function"==typeof n)&&(r=n,n=t),r===!1&&(r=ot),this.each(function(){x.event.remove(this,e,r,n)})},trigger:function(e,t){return this.each(function(){x.event.trigger(e,t,this)})},triggerHandler:function(e,n){var r=this[0];return r?x.event.trigger(e,n,r,!0):t}});var st=/^.[^:#\[\.,]*$/,lt=/^(?:parents|prev(?:Until|All))/,ut=x.expr.match.needsContext,ct={children:!0,contents:!0,next:!0,prev:!0};x.fn.extend({find:function(e){var t,n=[],r=this,i=r.length;if("string"!=typeof e)return this.pushStack(x(e).filter(function(){for(t=0;i>t;t++)if(x.contains(r[t],this))return!0}));for(t=0;i>t;t++)x.find(e,r[t],n);return n=this.pushStack(i>1?x.unique(n):n),n.selector=this.selector?this.selector+" "+e:e,n},has:function(e){var t,n=x(e,this),r=n.length;return this.filter(function(){for(t=0;r>t;t++)if(x.contains(this,n[t]))return!0})},not:function(e){return this.pushStack(ft(this,e||[],!0))},filter:function(e){return this.pushStack(ft(this,e||[],!1))},is:function(e){return!!ft(this,"string"==typeof e&&ut.test(e)?x(e):e||[],!1).length},closest:function(e,t){var n,r=0,i=this.length,o=[],a=ut.test(e)||"string"!=typeof e?x(e,t||this.context):0;for(;i>r;r++)for(n=this[r];n&&n!==t;n=n.parentNode)if(11>n.nodeType&&(a?a.index(n)>-1:1===n.nodeType&&x.find.matchesSelector(n,e))){n=o.push(n);break}return this.pushStack(o.length>1?x.unique(o):o)},index:function(e){return e?"string"==typeof e?x.inArray(this[0],x(e)):x.inArray(e.jquery?e[0]:e,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){var n="string"==typeof e?x(e,t):x.makeArray(e&&e.nodeType?[e]:e),r=x.merge(this.get(),n);return this.pushStack(x.unique(r))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}});function pt(e,t){do e=e[t];while(e&&1!==e.nodeType);return e}x.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return x.dir(e,"parentNode")},parentsUntil:function(e,t,n){return x.dir(e,"parentNode",n)},next:function(e){return pt(e,"nextSibling")},prev:function(e){return pt(e,"previousSibling")},nextAll:function(e){return x.dir(e,"nextSibling")},prevAll:function(e){return x.dir(e,"previousSibling")},nextUntil:function(e,t,n){return x.dir(e,"nextSibling",n)},prevUntil:function(e,t,n){return x.dir(e,"previousSibling",n)},siblings:function(e){return x.sibling((e.parentNode||{}).firstChild,e)},children:function(e){return x.sibling(e.firstChild)},contents:function(e){return x.nodeName(e,"iframe")?e.contentDocument||e.contentWindow.document:x.merge([],e.childNodes)}},function(e,t){x.fn[e]=function(n,r){var i=x.map(this,t,n);return"Until"!==e.slice(-5)&&(r=n),r&&"string"==typeof r&&(i=x.filter(r,i)),this.length>1&&(ct[e]||(i=x.unique(i)),lt.test(e)&&(i=i.reverse())),this.pushStack(i)}}),x.extend({filter:function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?x.find.matchesSelector(r,e)?[r]:[]:x.find.matches(e,x.grep(t,function(e){return 1===e.nodeType}))},dir:function(e,n,r){var i=[],o=e[n];while(o&&9!==o.nodeType&&(r===t||1!==o.nodeType||!x(o).is(r)))1===o.nodeType&&i.push(o),o=o[n];return i},sibling:function(e,t){var n=[];for(;e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n}});function ft(e,t,n){if(x.isFunction(t))return x.grep(e,function(e,r){return!!t.call(e,r,e)!==n});if(t.nodeType)return x.grep(e,function(e){return e===t!==n});if("string"==typeof t){if(st.test(t))return x.filter(t,e,n);t=x.filter(t,e)}return x.grep(e,function(e){return x.inArray(e,t)>=0!==n})}function dt(e){var t=ht.split("|"),n=e.createDocumentFragment();if(n.createElement)while(t.length)n.createElement(t.pop());return n}var ht="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",gt=/ jQuery\d+="(?:null|\d+)"/g,mt=RegExp("<(?:"+ht+")[\\s/>]","i"),yt=/^\s+/,vt=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,bt=/<([\w:]+)/,xt=/<tbody/i,wt=/<|&#?\w+;/,Tt=/<(?:script|style|link)/i,Ct=/^(?:checkbox|radio)$/i,Nt=/checked\s*(?:[^=]|=\s*.checked.)/i,kt=/^$|\/(?:java|ecma)script/i,Et=/^true\/(.*)/,St=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,At={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],area:[1,"<map>","</map>"],param:[1,"<object>","</object>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:x.support.htmlSerialize?[0,"",""]:[1,"X<div>","</div>"]},jt=dt(a),Dt=jt.appendChild(a.createElement("div"));At.optgroup=At.option,At.tbody=At.tfoot=At.colgroup=At.caption=At.thead,At.th=At.td,x.fn.extend({text:function(e){return x.access(this,function(e){return e===t?x.text(this):this.empty().append((this[0]&&this[0].ownerDocument||a).createTextNode(e))},null,e,arguments.length)},append:function(){return this.domManip(arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Lt(this,e);t.appendChild(e)}})},prepend:function(){return this.domManip(arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Lt(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return this.domManip(arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return this.domManip(arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},remove:function(e,t){var n,r=e?x.filter(e,this):this,i=0;for(;null!=(n=r[i]);i++)t||1!==n.nodeType||x.cleanData(Ft(n)),n.parentNode&&(t&&x.contains(n.ownerDocument,n)&&_t(Ft(n,"script")),n.parentNode.removeChild(n));return this},empty:function(){var e,t=0;for(;null!=(e=this[t]);t++){1===e.nodeType&&x.cleanData(Ft(e,!1));while(e.firstChild)e.removeChild(e.firstChild);e.options&&x.nodeName(e,"select")&&(e.options.length=0)}return this},clone:function(e,t){return e=null==e?!1:e,t=null==t?e:t,this.map(function(){return x.clone(this,e,t)})},html:function(e){return x.access(this,function(e){var n=this[0]||{},r=0,i=this.length;if(e===t)return 1===n.nodeType?n.innerHTML.replace(gt,""):t;if(!("string"!=typeof e||Tt.test(e)||!x.support.htmlSerialize&&mt.test(e)||!x.support.leadingWhitespace&&yt.test(e)||At[(bt.exec(e)||["",""])[1].toLowerCase()])){e=e.replace(vt,"<$1></$2>");try{for(;i>r;r++)n=this[r]||{},1===n.nodeType&&(x.cleanData(Ft(n,!1)),n.innerHTML=e);n=0}catch(o){}}n&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var e=x.map(this,function(e){return[e.nextSibling,e.parentNode]}),t=0;return this.domManip(arguments,function(n){var r=e[t++],i=e[t++];i&&(r&&r.parentNode!==i&&(r=this.nextSibling),x(this).remove(),i.insertBefore(n,r))},!0),t?this:this.remove()},detach:function(e){return this.remove(e,!0)},domManip:function(e,t,n){e=d.apply([],e);var r,i,o,a,s,l,u=0,c=this.length,p=this,f=c-1,h=e[0],g=x.isFunction(h);if(g||!(1>=c||"string"!=typeof h||x.support.checkClone)&&Nt.test(h))return this.each(function(r){var i=p.eq(r);g&&(e[0]=h.call(this,r,i.html())),i.domManip(e,t,n)});if(c&&(l=x.buildFragment(e,this[0].ownerDocument,!1,!n&&this),r=l.firstChild,1===l.childNodes.length&&(l=r),r)){for(a=x.map(Ft(l,"script"),Ht),o=a.length;c>u;u++)i=l,u!==f&&(i=x.clone(i,!0,!0),o&&x.merge(a,Ft(i,"script"))),t.call(this[u],i,u);if(o)for(s=a[a.length-1].ownerDocument,x.map(a,qt),u=0;o>u;u++)i=a[u],kt.test(i.type||"")&&!x._data(i,"globalEval")&&x.contains(s,i)&&(i.src?x._evalUrl(i.src):x.globalEval((i.text||i.textContent||i.innerHTML||"").replace(St,"")));l=r=null}return this}});function Lt(e,t){return x.nodeName(e,"table")&&x.nodeName(1===t.nodeType?t:t.firstChild,"tr")?e.getElementsByTagName("tbody")[0]||e.appendChild(e.ownerDocument.createElement("tbody")):e}function Ht(e){return e.type=(null!==x.find.attr(e,"type"))+"/"+e.type,e}function qt(e){var t=Et.exec(e.type);return t?e.type=t[1]:e.removeAttribute("type"),e}function _t(e,t){var n,r=0;for(;null!=(n=e[r]);r++)x._data(n,"globalEval",!t||x._data(t[r],"globalEval"))}function Mt(e,t){if(1===t.nodeType&&x.hasData(e)){var n,r,i,o=x._data(e),a=x._data(t,o),s=o.events;if(s){delete a.handle,a.events={};for(n in s)for(r=0,i=s[n].length;i>r;r++)x.event.add(t,n,s[n][r])}a.data&&(a.data=x.extend({},a.data))}}function Ot(e,t){var n,r,i;if(1===t.nodeType){if(n=t.nodeName.toLowerCase(),!x.support.noCloneEvent&&t[x.expando]){i=x._data(t);for(r in i.events)x.removeEvent(t,r,i.handle);t.removeAttribute(x.expando)}"script"===n&&t.text!==e.text?(Ht(t).text=e.text,qt(t)):"object"===n?(t.parentNode&&(t.outerHTML=e.outerHTML),x.support.html5Clone&&e.innerHTML&&!x.trim(t.innerHTML)&&(t.innerHTML=e.innerHTML)):"input"===n&&Ct.test(e.type)?(t.defaultChecked=t.checked=e.checked,t.value!==e.value&&(t.value=e.value)):"option"===n?t.defaultSelected=t.selected=e.defaultSelected:("input"===n||"textarea"===n)&&(t.defaultValue=e.defaultValue)}}x.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,t){x.fn[e]=function(e){var n,r=0,i=[],o=x(e),a=o.length-1;for(;a>=r;r++)n=r===a?this:this.clone(!0),x(o[r])[t](n),h.apply(i,n.get());return this.pushStack(i)}});function Ft(e,n){var r,o,a=0,s=typeof e.getElementsByTagName!==i?e.getElementsByTagName(n||"*"):typeof e.querySelectorAll!==i?e.querySelectorAll(n||"*"):t;if(!s)for(s=[],r=e.childNodes||e;null!=(o=r[a]);a++)!n||x.nodeName(o,n)?s.push(o):x.merge(s,Ft(o,n));return n===t||n&&x.nodeName(e,n)?x.merge([e],s):s}function Bt(e){Ct.test(e.type)&&(e.defaultChecked=e.checked)}x.extend({clone:function(e,t,n){var r,i,o,a,s,l=x.contains(e.ownerDocument,e);if(x.support.html5Clone||x.isXMLDoc(e)||!mt.test("<"+e.nodeName+">")?o=e.cloneNode(!0):(Dt.innerHTML=e.outerHTML,Dt.removeChild(o=Dt.firstChild)),!(x.support.noCloneEvent&&x.support.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||x.isXMLDoc(e)))for(r=Ft(o),s=Ft(e),a=0;null!=(i=s[a]);++a)r[a]&&Ot(i,r[a]);if(t)if(n)for(s=s||Ft(e),r=r||Ft(o),a=0;null!=(i=s[a]);a++)Mt(i,r[a]);else Mt(e,o);return r=Ft(o,"script"),r.length>0&&_t(r,!l&&Ft(e,"script")),r=s=i=null,o},buildFragment:function(e,t,n,r){var i,o,a,s,l,u,c,p=e.length,f=dt(t),d=[],h=0;for(;p>h;h++)if(o=e[h],o||0===o)if("object"===x.type(o))x.merge(d,o.nodeType?[o]:o);else if(wt.test(o)){s=s||f.appendChild(t.createElement("div")),l=(bt.exec(o)||["",""])[1].toLowerCase(),c=At[l]||At._default,s.innerHTML=c[1]+o.replace(vt,"<$1></$2>")+c[2],i=c[0];while(i--)s=s.lastChild;if(!x.support.leadingWhitespace&&yt.test(o)&&d.push(t.createTextNode(yt.exec(o)[0])),!x.support.tbody){o="table"!==l||xt.test(o)?"<table>"!==c[1]||xt.test(o)?0:s:s.firstChild,i=o&&o.childNodes.length;while(i--)x.nodeName(u=o.childNodes[i],"tbody")&&!u.childNodes.length&&o.removeChild(u)}x.merge(d,s.childNodes),s.textContent="";while(s.firstChild)s.removeChild(s.firstChild);s=f.lastChild}else d.push(t.createTextNode(o));s&&f.removeChild(s),x.support.appendChecked||x.grep(Ft(d,"input"),Bt),h=0;while(o=d[h++])if((!r||-1===x.inArray(o,r))&&(a=x.contains(o.ownerDocument,o),s=Ft(f.appendChild(o),"script"),a&&_t(s),n)){i=0;while(o=s[i++])kt.test(o.type||"")&&n.push(o)}return s=null,f},cleanData:function(e,t){var n,r,o,a,s=0,l=x.expando,u=x.cache,c=x.support.deleteExpando,f=x.event.special;for(;null!=(n=e[s]);s++)if((t||x.acceptData(n))&&(o=n[l],a=o&&u[o])){if(a.events)for(r in a.events)f[r]?x.event.remove(n,r):x.removeEvent(n,r,a.handle);
-u[o]&&(delete u[o],c?delete n[l]:typeof n.removeAttribute!==i?n.removeAttribute(l):n[l]=null,p.push(o))}},_evalUrl:function(e){return x.ajax({url:e,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0})}}),x.fn.extend({wrapAll:function(e){if(x.isFunction(e))return this.each(function(t){x(this).wrapAll(e.call(this,t))});if(this[0]){var t=x(e,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstChild&&1===e.firstChild.nodeType)e=e.firstChild;return e}).append(this)}return this},wrapInner:function(e){return x.isFunction(e)?this.each(function(t){x(this).wrapInner(e.call(this,t))}):this.each(function(){var t=x(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=x.isFunction(e);return this.each(function(n){x(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(){return this.parent().each(function(){x.nodeName(this,"body")||x(this).replaceWith(this.childNodes)}).end()}});var Pt,Rt,Wt,$t=/alpha\([^)]*\)/i,It=/opacity\s*=\s*([^)]*)/,zt=/^(top|right|bottom|left)$/,Xt=/^(none|table(?!-c[ea]).+)/,Ut=/^margin/,Vt=RegExp("^("+w+")(.*)$","i"),Yt=RegExp("^("+w+")(?!px)[a-z%]+$","i"),Jt=RegExp("^([+-])=("+w+")","i"),Gt={BODY:"block"},Qt={position:"absolute",visibility:"hidden",display:"block"},Kt={letterSpacing:0,fontWeight:400},Zt=["Top","Right","Bottom","Left"],en=["Webkit","O","Moz","ms"];function tn(e,t){if(t in e)return t;var n=t.charAt(0).toUpperCase()+t.slice(1),r=t,i=en.length;while(i--)if(t=en[i]+n,t in e)return t;return r}function nn(e,t){return e=t||e,"none"===x.css(e,"display")||!x.contains(e.ownerDocument,e)}function rn(e,t){var n,r,i,o=[],a=0,s=e.length;for(;s>a;a++)r=e[a],r.style&&(o[a]=x._data(r,"olddisplay"),n=r.style.display,t?(o[a]||"none"!==n||(r.style.display=""),""===r.style.display&&nn(r)&&(o[a]=x._data(r,"olddisplay",ln(r.nodeName)))):o[a]||(i=nn(r),(n&&"none"!==n||!i)&&x._data(r,"olddisplay",i?n:x.css(r,"display"))));for(a=0;s>a;a++)r=e[a],r.style&&(t&&"none"!==r.style.display&&""!==r.style.display||(r.style.display=t?o[a]||"":"none"));return e}x.fn.extend({css:function(e,n){return x.access(this,function(e,n,r){var i,o,a={},s=0;if(x.isArray(n)){for(o=Rt(e),i=n.length;i>s;s++)a[n[s]]=x.css(e,n[s],!1,o);return a}return r!==t?x.style(e,n,r):x.css(e,n)},e,n,arguments.length>1)},show:function(){return rn(this,!0)},hide:function(){return rn(this)},toggle:function(e){return"boolean"==typeof e?e?this.show():this.hide():this.each(function(){nn(this)?x(this).show():x(this).hide()})}}),x.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=Wt(e,"opacity");return""===n?"1":n}}}},cssNumber:{columnCount:!0,fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":x.support.cssFloat?"cssFloat":"styleFloat"},style:function(e,n,r,i){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var o,a,s,l=x.camelCase(n),u=e.style;if(n=x.cssProps[l]||(x.cssProps[l]=tn(u,l)),s=x.cssHooks[n]||x.cssHooks[l],r===t)return s&&"get"in s&&(o=s.get(e,!1,i))!==t?o:u[n];if(a=typeof r,"string"===a&&(o=Jt.exec(r))&&(r=(o[1]+1)*o[2]+parseFloat(x.css(e,n)),a="number"),!(null==r||"number"===a&&isNaN(r)||("number"!==a||x.cssNumber[l]||(r+="px"),x.support.clearCloneStyle||""!==r||0!==n.indexOf("background")||(u[n]="inherit"),s&&"set"in s&&(r=s.set(e,r,i))===t)))try{u[n]=r}catch(c){}}},css:function(e,n,r,i){var o,a,s,l=x.camelCase(n);return n=x.cssProps[l]||(x.cssProps[l]=tn(e.style,l)),s=x.cssHooks[n]||x.cssHooks[l],s&&"get"in s&&(a=s.get(e,!0,r)),a===t&&(a=Wt(e,n,i)),"normal"===a&&n in Kt&&(a=Kt[n]),""===r||r?(o=parseFloat(a),r===!0||x.isNumeric(o)?o||0:a):a}}),e.getComputedStyle?(Rt=function(t){return e.getComputedStyle(t,null)},Wt=function(e,n,r){var i,o,a,s=r||Rt(e),l=s?s.getPropertyValue(n)||s[n]:t,u=e.style;return s&&(""!==l||x.contains(e.ownerDocument,e)||(l=x.style(e,n)),Yt.test(l)&&Ut.test(n)&&(i=u.width,o=u.minWidth,a=u.maxWidth,u.minWidth=u.maxWidth=u.width=l,l=s.width,u.width=i,u.minWidth=o,u.maxWidth=a)),l}):a.documentElement.currentStyle&&(Rt=function(e){return e.currentStyle},Wt=function(e,n,r){var i,o,a,s=r||Rt(e),l=s?s[n]:t,u=e.style;return null==l&&u&&u[n]&&(l=u[n]),Yt.test(l)&&!zt.test(n)&&(i=u.left,o=e.runtimeStyle,a=o&&o.left,a&&(o.left=e.currentStyle.left),u.left="fontSize"===n?"1em":l,l=u.pixelLeft+"px",u.left=i,a&&(o.left=a)),""===l?"auto":l});function on(e,t,n){var r=Vt.exec(t);return r?Math.max(0,r[1]-(n||0))+(r[2]||"px"):t}function an(e,t,n,r,i){var o=n===(r?"border":"content")?4:"width"===t?1:0,a=0;for(;4>o;o+=2)"margin"===n&&(a+=x.css(e,n+Zt[o],!0,i)),r?("content"===n&&(a-=x.css(e,"padding"+Zt[o],!0,i)),"margin"!==n&&(a-=x.css(e,"border"+Zt[o]+"Width",!0,i))):(a+=x.css(e,"padding"+Zt[o],!0,i),"padding"!==n&&(a+=x.css(e,"border"+Zt[o]+"Width",!0,i)));return a}function sn(e,t,n){var r=!0,i="width"===t?e.offsetWidth:e.offsetHeight,o=Rt(e),a=x.support.boxSizing&&"border-box"===x.css(e,"boxSizing",!1,o);if(0>=i||null==i){if(i=Wt(e,t,o),(0>i||null==i)&&(i=e.style[t]),Yt.test(i))return i;r=a&&(x.support.boxSizingReliable||i===e.style[t]),i=parseFloat(i)||0}return i+an(e,t,n||(a?"border":"content"),r,o)+"px"}function ln(e){var t=a,n=Gt[e];return n||(n=un(e,t),"none"!==n&&n||(Pt=(Pt||x("<iframe frameborder='0' width='0' height='0'/>").css("cssText","display:block !important")).appendTo(t.documentElement),t=(Pt[0].contentWindow||Pt[0].contentDocument).document,t.write("<!doctype html><html><body>"),t.close(),n=un(e,t),Pt.detach()),Gt[e]=n),n}function un(e,t){var n=x(t.createElement(e)).appendTo(t.body),r=x.css(n[0],"display");return n.remove(),r}x.each(["height","width"],function(e,n){x.cssHooks[n]={get:function(e,r,i){return r?0===e.offsetWidth&&Xt.test(x.css(e,"display"))?x.swap(e,Qt,function(){return sn(e,n,i)}):sn(e,n,i):t},set:function(e,t,r){var i=r&&Rt(e);return on(e,t,r?an(e,n,r,x.support.boxSizing&&"border-box"===x.css(e,"boxSizing",!1,i),i):0)}}}),x.support.opacity||(x.cssHooks.opacity={get:function(e,t){return It.test((t&&e.currentStyle?e.currentStyle.filter:e.style.filter)||"")?.01*parseFloat(RegExp.$1)+"":t?"1":""},set:function(e,t){var n=e.style,r=e.currentStyle,i=x.isNumeric(t)?"alpha(opacity="+100*t+")":"",o=r&&r.filter||n.filter||"";n.zoom=1,(t>=1||""===t)&&""===x.trim(o.replace($t,""))&&n.removeAttribute&&(n.removeAttribute("filter"),""===t||r&&!r.filter)||(n.filter=$t.test(o)?o.replace($t,i):o+" "+i)}}),x(function(){x.support.reliableMarginRight||(x.cssHooks.marginRight={get:function(e,n){return n?x.swap(e,{display:"inline-block"},Wt,[e,"marginRight"]):t}}),!x.support.pixelPosition&&x.fn.position&&x.each(["top","left"],function(e,n){x.cssHooks[n]={get:function(e,r){return r?(r=Wt(e,n),Yt.test(r)?x(e).position()[n]+"px":r):t}}})}),x.expr&&x.expr.filters&&(x.expr.filters.hidden=function(e){return 0>=e.offsetWidth&&0>=e.offsetHeight||!x.support.reliableHiddenOffsets&&"none"===(e.style&&e.style.display||x.css(e,"display"))},x.expr.filters.visible=function(e){return!x.expr.filters.hidden(e)}),x.each({margin:"",padding:"",border:"Width"},function(e,t){x.cssHooks[e+t]={expand:function(n){var r=0,i={},o="string"==typeof n?n.split(" "):[n];for(;4>r;r++)i[e+Zt[r]+t]=o[r]||o[r-2]||o[0];return i}},Ut.test(e)||(x.cssHooks[e+t].set=on)});var cn=/%20/g,pn=/\[\]$/,fn=/\r?\n/g,dn=/^(?:submit|button|image|reset|file)$/i,hn=/^(?:input|select|textarea|keygen)/i;x.fn.extend({serialize:function(){return x.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=x.prop(this,"elements");return e?x.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!x(this).is(":disabled")&&hn.test(this.nodeName)&&!dn.test(e)&&(this.checked||!Ct.test(e))}).map(function(e,t){var n=x(this).val();return null==n?null:x.isArray(n)?x.map(n,function(e){return{name:t.name,value:e.replace(fn,"\r\n")}}):{name:t.name,value:n.replace(fn,"\r\n")}}).get()}}),x.param=function(e,n){var r,i=[],o=function(e,t){t=x.isFunction(t)?t():null==t?"":t,i[i.length]=encodeURIComponent(e)+"="+encodeURIComponent(t)};if(n===t&&(n=x.ajaxSettings&&x.ajaxSettings.traditional),x.isArray(e)||e.jquery&&!x.isPlainObject(e))x.each(e,function(){o(this.name,this.value)});else for(r in e)gn(r,e[r],n,o);return i.join("&").replace(cn,"+")};function gn(e,t,n,r){var i;if(x.isArray(t))x.each(t,function(t,i){n||pn.test(e)?r(e,i):gn(e+"["+("object"==typeof i?t:"")+"]",i,n,r)});else if(n||"object"!==x.type(t))r(e,t);else for(i in t)gn(e+"["+i+"]",t[i],n,r)}x.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(e,t){x.fn[t]=function(e,n){return arguments.length>0?this.on(t,null,e,n):this.trigger(t)}}),x.fn.extend({hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)},bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)}});var mn,yn,vn=x.now(),bn=/\?/,xn=/#.*$/,wn=/([?&])_=[^&]*/,Tn=/^(.*?):[ \t]*([^\r\n]*)\r?$/gm,Cn=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Nn=/^(?:GET|HEAD)$/,kn=/^\/\//,En=/^([\w.+-]+:)(?:\/\/([^\/?#:]*)(?::(\d+)|)|)/,Sn=x.fn.load,An={},jn={},Dn="*/".concat("*");try{yn=o.href}catch(Ln){yn=a.createElement("a"),yn.href="",yn=yn.href}mn=En.exec(yn.toLowerCase())||[];function Hn(e){return function(t,n){"string"!=typeof t&&(n=t,t="*");var r,i=0,o=t.toLowerCase().match(T)||[];if(x.isFunction(n))while(r=o[i++])"+"===r[0]?(r=r.slice(1)||"*",(e[r]=e[r]||[]).unshift(n)):(e[r]=e[r]||[]).push(n)}}function qn(e,n,r,i){var o={},a=e===jn;function s(l){var u;return o[l]=!0,x.each(e[l]||[],function(e,l){var c=l(n,r,i);return"string"!=typeof c||a||o[c]?a?!(u=c):t:(n.dataTypes.unshift(c),s(c),!1)}),u}return s(n.dataTypes[0])||!o["*"]&&s("*")}function _n(e,n){var r,i,o=x.ajaxSettings.flatOptions||{};for(i in n)n[i]!==t&&((o[i]?e:r||(r={}))[i]=n[i]);return r&&x.extend(!0,e,r),e}x.fn.load=function(e,n,r){if("string"!=typeof e&&Sn)return Sn.apply(this,arguments);var i,o,a,s=this,l=e.indexOf(" ");return l>=0&&(i=e.slice(l,e.length),e=e.slice(0,l)),x.isFunction(n)?(r=n,n=t):n&&"object"==typeof n&&(a="POST"),s.length>0&&x.ajax({url:e,type:a,dataType:"html",data:n}).done(function(e){o=arguments,s.html(i?x("<div>").append(x.parseHTML(e)).find(i):e)}).complete(r&&function(e,t){s.each(r,o||[e.responseText,t,e])}),this},x.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){x.fn[t]=function(e){return this.on(t,e)}}),x.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:yn,type:"GET",isLocal:Cn.test(mn[1]),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Dn,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":x.parseJSON,"text xml":x.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?_n(_n(e,x.ajaxSettings),t):_n(x.ajaxSettings,e)},ajaxPrefilter:Hn(An),ajaxTransport:Hn(jn),ajax:function(e,n){"object"==typeof e&&(n=e,e=t),n=n||{};var r,i,o,a,s,l,u,c,p=x.ajaxSetup({},n),f=p.context||p,d=p.context&&(f.nodeType||f.jquery)?x(f):x.event,h=x.Deferred(),g=x.Callbacks("once memory"),m=p.statusCode||{},y={},v={},b=0,w="canceled",C={readyState:0,getResponseHeader:function(e){var t;if(2===b){if(!c){c={};while(t=Tn.exec(a))c[t[1].toLowerCase()]=t[2]}t=c[e.toLowerCase()]}return null==t?null:t},getAllResponseHeaders:function(){return 2===b?a:null},setRequestHeader:function(e,t){var n=e.toLowerCase();return b||(e=v[n]=v[n]||e,y[e]=t),this},overrideMimeType:function(e){return b||(p.mimeType=e),this},statusCode:function(e){var t;if(e)if(2>b)for(t in e)m[t]=[m[t],e[t]];else C.always(e[C.status]);return this},abort:function(e){var t=e||w;return u&&u.abort(t),k(0,t),this}};if(h.promise(C).complete=g.add,C.success=C.done,C.error=C.fail,p.url=((e||p.url||yn)+"").replace(xn,"").replace(kn,mn[1]+"//"),p.type=n.method||n.type||p.method||p.type,p.dataTypes=x.trim(p.dataType||"*").toLowerCase().match(T)||[""],null==p.crossDomain&&(r=En.exec(p.url.toLowerCase()),p.crossDomain=!(!r||r[1]===mn[1]&&r[2]===mn[2]&&(r[3]||("http:"===r[1]?"80":"443"))===(mn[3]||("http:"===mn[1]?"80":"443")))),p.data&&p.processData&&"string"!=typeof p.data&&(p.data=x.param(p.data,p.traditional)),qn(An,p,n,C),2===b)return C;l=p.global,l&&0===x.active++&&x.event.trigger("ajaxStart"),p.type=p.type.toUpperCase(),p.hasContent=!Nn.test(p.type),o=p.url,p.hasContent||(p.data&&(o=p.url+=(bn.test(o)?"&":"?")+p.data,delete p.data),p.cache===!1&&(p.url=wn.test(o)?o.replace(wn,"$1_="+vn++):o+(bn.test(o)?"&":"?")+"_="+vn++)),p.ifModified&&(x.lastModified[o]&&C.setRequestHeader("If-Modified-Since",x.lastModified[o]),x.etag[o]&&C.setRequestHeader("If-None-Match",x.etag[o])),(p.data&&p.hasContent&&p.contentType!==!1||n.contentType)&&C.setRequestHeader("Content-Type",p.contentType),C.setRequestHeader("Accept",p.dataTypes[0]&&p.accepts[p.dataTypes[0]]?p.accepts[p.dataTypes[0]]+("*"!==p.dataTypes[0]?", "+Dn+"; q=0.01":""):p.accepts["*"]);for(i in p.headers)C.setRequestHeader(i,p.headers[i]);if(p.beforeSend&&(p.beforeSend.call(f,C,p)===!1||2===b))return C.abort();w="abort";for(i in{success:1,error:1,complete:1})C[i](p[i]);if(u=qn(jn,p,n,C)){C.readyState=1,l&&d.trigger("ajaxSend",[C,p]),p.async&&p.timeout>0&&(s=setTimeout(function(){C.abort("timeout")},p.timeout));try{b=1,u.send(y,k)}catch(N){if(!(2>b))throw N;k(-1,N)}}else k(-1,"No Transport");function k(e,n,r,i){var c,y,v,w,T,N=n;2!==b&&(b=2,s&&clearTimeout(s),u=t,a=i||"",C.readyState=e>0?4:0,c=e>=200&&300>e||304===e,r&&(w=Mn(p,C,r)),w=On(p,w,C,c),c?(p.ifModified&&(T=C.getResponseHeader("Last-Modified"),T&&(x.lastModified[o]=T),T=C.getResponseHeader("etag"),T&&(x.etag[o]=T)),204===e||"HEAD"===p.type?N="nocontent":304===e?N="notmodified":(N=w.state,y=w.data,v=w.error,c=!v)):(v=N,(e||!N)&&(N="error",0>e&&(e=0))),C.status=e,C.statusText=(n||N)+"",c?h.resolveWith(f,[y,N,C]):h.rejectWith(f,[C,N,v]),C.statusCode(m),m=t,l&&d.trigger(c?"ajaxSuccess":"ajaxError",[C,p,c?y:v]),g.fireWith(f,[C,N]),l&&(d.trigger("ajaxComplete",[C,p]),--x.active||x.event.trigger("ajaxStop")))}return C},getJSON:function(e,t,n){return x.get(e,t,n,"json")},getScript:function(e,n){return x.get(e,t,n,"script")}}),x.each(["get","post"],function(e,n){x[n]=function(e,r,i,o){return x.isFunction(r)&&(o=o||i,i=r,r=t),x.ajax({url:e,type:n,dataType:o,data:r,success:i})}});function Mn(e,n,r){var i,o,a,s,l=e.contents,u=e.dataTypes;while("*"===u[0])u.shift(),o===t&&(o=e.mimeType||n.getResponseHeader("Content-Type"));if(o)for(s in l)if(l[s]&&l[s].test(o)){u.unshift(s);break}if(u[0]in r)a=u[0];else{for(s in r){if(!u[0]||e.converters[s+" "+u[0]]){a=s;break}i||(i=s)}a=a||i}return a?(a!==u[0]&&u.unshift(a),r[a]):t}function On(e,t,n,r){var i,o,a,s,l,u={},c=e.dataTypes.slice();if(c[1])for(a in e.converters)u[a.toLowerCase()]=e.converters[a];o=c.shift();while(o)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!l&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),l=o,o=c.shift())if("*"===o)o=l;else if("*"!==l&&l!==o){if(a=u[l+" "+o]||u["* "+o],!a)for(i in u)if(s=i.split(" "),s[1]===o&&(a=u[l+" "+s[0]]||u["* "+s[0]])){a===!0?a=u[i]:u[i]!==!0&&(o=s[0],c.unshift(s[1]));break}if(a!==!0)if(a&&e["throws"])t=a(t);else try{t=a(t)}catch(p){return{state:"parsererror",error:a?p:"No conversion from "+l+" to "+o}}}return{state:"success",data:t}}x.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/(?:java|ecma)script/},converters:{"text script":function(e){return x.globalEval(e),e}}}),x.ajaxPrefilter("script",function(e){e.cache===t&&(e.cache=!1),e.crossDomain&&(e.type="GET",e.global=!1)}),x.ajaxTransport("script",function(e){if(e.crossDomain){var n,r=a.head||x("head")[0]||a.documentElement;return{send:function(t,i){n=a.createElement("script"),n.async=!0,e.scriptCharset&&(n.charset=e.scriptCharset),n.src=e.url,n.onload=n.onreadystatechange=function(e,t){(t||!n.readyState||/loaded|complete/.test(n.readyState))&&(n.onload=n.onreadystatechange=null,n.parentNode&&n.parentNode.removeChild(n),n=null,t||i(200,"success"))},r.insertBefore(n,r.firstChild)},abort:function(){n&&n.onload(t,!0)}}}});var Fn=[],Bn=/(=)\?(?=&|$)|\?\?/;x.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Fn.pop()||x.expando+"_"+vn++;return this[e]=!0,e}}),x.ajaxPrefilter("json jsonp",function(n,r,i){var o,a,s,l=n.jsonp!==!1&&(Bn.test(n.url)?"url":"string"==typeof n.data&&!(n.contentType||"").indexOf("application/x-www-form-urlencoded")&&Bn.test(n.data)&&"data");return l||"jsonp"===n.dataTypes[0]?(o=n.jsonpCallback=x.isFunction(n.jsonpCallback)?n.jsonpCallback():n.jsonpCallback,l?n[l]=n[l].replace(Bn,"$1"+o):n.jsonp!==!1&&(n.url+=(bn.test(n.url)?"&":"?")+n.jsonp+"="+o),n.converters["script json"]=function(){return s||x.error(o+" was not called"),s[0]},n.dataTypes[0]="json",a=e[o],e[o]=function(){s=arguments},i.always(function(){e[o]=a,n[o]&&(n.jsonpCallback=r.jsonpCallback,Fn.push(o)),s&&x.isFunction(a)&&a(s[0]),s=a=t}),"script"):t});var Pn,Rn,Wn=0,$n=e.ActiveXObject&&function(){var e;for(e in Pn)Pn[e](t,!0)};function In(){try{return new e.XMLHttpRequest}catch(t){}}function zn(){try{return new e.ActiveXObject("Microsoft.XMLHTTP")}catch(t){}}x.ajaxSettings.xhr=e.ActiveXObject?function(){return!this.isLocal&&In()||zn()}:In,Rn=x.ajaxSettings.xhr(),x.support.cors=!!Rn&&"withCredentials"in Rn,Rn=x.support.ajax=!!Rn,Rn&&x.ajaxTransport(function(n){if(!n.crossDomain||x.support.cors){var r;return{send:function(i,o){var a,s,l=n.xhr();if(n.username?l.open(n.type,n.url,n.async,n.username,n.password):l.open(n.type,n.url,n.async),n.xhrFields)for(s in n.xhrFields)l[s]=n.xhrFields[s];n.mimeType&&l.overrideMimeType&&l.overrideMimeType(n.mimeType),n.crossDomain||i["X-Requested-With"]||(i["X-Requested-With"]="XMLHttpRequest");try{for(s in i)l.setRequestHeader(s,i[s])}catch(u){}l.send(n.hasContent&&n.data||null),r=function(e,i){var s,u,c,p;try{if(r&&(i||4===l.readyState))if(r=t,a&&(l.onreadystatechange=x.noop,$n&&delete Pn[a]),i)4!==l.readyState&&l.abort();else{p={},s=l.status,u=l.getAllResponseHeaders(),"string"==typeof l.responseText&&(p.text=l.responseText);try{c=l.statusText}catch(f){c=""}s||!n.isLocal||n.crossDomain?1223===s&&(s=204):s=p.text?200:404}}catch(d){i||o(-1,d)}p&&o(s,c,p,u)},n.async?4===l.readyState?setTimeout(r):(a=++Wn,$n&&(Pn||(Pn={},x(e).unload($n)),Pn[a]=r),l.onreadystatechange=r):r()},abort:function(){r&&r(t,!0)}}}});var Xn,Un,Vn=/^(?:toggle|show|hide)$/,Yn=RegExp("^(?:([+-])=|)("+w+")([a-z%]*)$","i"),Jn=/queueHooks$/,Gn=[nr],Qn={"*":[function(e,t){var n=this.createTween(e,t),r=n.cur(),i=Yn.exec(t),o=i&&i[3]||(x.cssNumber[e]?"":"px"),a=(x.cssNumber[e]||"px"!==o&&+r)&&Yn.exec(x.css(n.elem,e)),s=1,l=20;if(a&&a[3]!==o){o=o||a[3],i=i||[],a=+r||1;do s=s||".5",a/=s,x.style(n.elem,e,a+o);while(s!==(s=n.cur()/r)&&1!==s&&--l)}return i&&(a=n.start=+a||+r||0,n.unit=o,n.end=i[1]?a+(i[1]+1)*i[2]:+i[2]),n}]};function Kn(){return setTimeout(function(){Xn=t}),Xn=x.now()}function Zn(e,t,n){var r,i=(Qn[t]||[]).concat(Qn["*"]),o=0,a=i.length;for(;a>o;o++)if(r=i[o].call(n,t,e))return r}function er(e,t,n){var r,i,o=0,a=Gn.length,s=x.Deferred().always(function(){delete l.elem}),l=function(){if(i)return!1;var t=Xn||Kn(),n=Math.max(0,u.startTime+u.duration-t),r=n/u.duration||0,o=1-r,a=0,l=u.tweens.length;for(;l>a;a++)u.tweens[a].run(o);return s.notifyWith(e,[u,o,n]),1>o&&l?n:(s.resolveWith(e,[u]),!1)},u=s.promise({elem:e,props:x.extend({},t),opts:x.extend(!0,{specialEasing:{}},n),originalProperties:t,originalOptions:n,startTime:Xn||Kn(),duration:n.duration,tweens:[],createTween:function(t,n){var r=x.Tween(e,u.opts,t,n,u.opts.specialEasing[t]||u.opts.easing);return u.tweens.push(r),r},stop:function(t){var n=0,r=t?u.tweens.length:0;if(i)return this;for(i=!0;r>n;n++)u.tweens[n].run(1);return t?s.resolveWith(e,[u,t]):s.rejectWith(e,[u,t]),this}}),c=u.props;for(tr(c,u.opts.specialEasing);a>o;o++)if(r=Gn[o].call(u,e,c,u.opts))return r;return x.map(c,Zn,u),x.isFunction(u.opts.start)&&u.opts.start.call(e,u),x.fx.timer(x.extend(l,{elem:e,anim:u,queue:u.opts.queue})),u.progress(u.opts.progress).done(u.opts.done,u.opts.complete).fail(u.opts.fail).always(u.opts.always)}function tr(e,t){var n,r,i,o,a;for(n in e)if(r=x.camelCase(n),i=t[r],o=e[n],x.isArray(o)&&(i=o[1],o=e[n]=o[0]),n!==r&&(e[r]=o,delete e[n]),a=x.cssHooks[r],a&&"expand"in a){o=a.expand(o),delete e[r];for(n in o)n in e||(e[n]=o[n],t[n]=i)}else t[r]=i}x.Animation=x.extend(er,{tweener:function(e,t){x.isFunction(e)?(t=e,e=["*"]):e=e.split(" ");var n,r=0,i=e.length;for(;i>r;r++)n=e[r],Qn[n]=Qn[n]||[],Qn[n].unshift(t)},prefilter:function(e,t){t?Gn.unshift(e):Gn.push(e)}});function nr(e,t,n){var r,i,o,a,s,l,u=this,c={},p=e.style,f=e.nodeType&&nn(e),d=x._data(e,"fxshow");n.queue||(s=x._queueHooks(e,"fx"),null==s.unqueued&&(s.unqueued=0,l=s.empty.fire,s.empty.fire=function(){s.unqueued||l()}),s.unqueued++,u.always(function(){u.always(function(){s.unqueued--,x.queue(e,"fx").length||s.empty.fire()})})),1===e.nodeType&&("height"in t||"width"in t)&&(n.overflow=[p.overflow,p.overflowX,p.overflowY],"inline"===x.css(e,"display")&&"none"===x.css(e,"float")&&(x.support.inlineBlockNeedsLayout&&"inline"!==ln(e.nodeName)?p.zoom=1:p.display="inline-block")),n.overflow&&(p.overflow="hidden",x.support.shrinkWrapBlocks||u.always(function(){p.overflow=n.overflow[0],p.overflowX=n.overflow[1],p.overflowY=n.overflow[2]}));for(r in t)if(i=t[r],Vn.exec(i)){if(delete t[r],o=o||"toggle"===i,i===(f?"hide":"show"))continue;c[r]=d&&d[r]||x.style(e,r)}if(!x.isEmptyObject(c)){d?"hidden"in d&&(f=d.hidden):d=x._data(e,"fxshow",{}),o&&(d.hidden=!f),f?x(e).show():u.done(function(){x(e).hide()}),u.done(function(){var t;x._removeData(e,"fxshow");for(t in c)x.style(e,t,c[t])});for(r in c)a=Zn(f?d[r]:0,r,u),r in d||(d[r]=a.start,f&&(a.end=a.start,a.start="width"===r||"height"===r?1:0))}}function rr(e,t,n,r,i){return new rr.prototype.init(e,t,n,r,i)}x.Tween=rr,rr.prototype={constructor:rr,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||"swing",this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(x.cssNumber[n]?"":"px")},cur:function(){var e=rr.propHooks[this.prop];return e&&e.get?e.get(this):rr.propHooks._default.get(this)},run:function(e){var t,n=rr.propHooks[this.prop];return this.pos=t=this.options.duration?x.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):rr.propHooks._default.set(this),this}},rr.prototype.init.prototype=rr.prototype,rr.propHooks={_default:{get:function(e){var t;return null==e.elem[e.prop]||e.elem.style&&null!=e.elem.style[e.prop]?(t=x.css(e.elem,e.prop,""),t&&"auto"!==t?t:0):e.elem[e.prop]},set:function(e){x.fx.step[e.prop]?x.fx.step[e.prop](e):e.elem.style&&(null!=e.elem.style[x.cssProps[e.prop]]||x.cssHooks[e.prop])?x.style(e.elem,e.prop,e.now+e.unit):e.elem[e.prop]=e.now}}},rr.propHooks.scrollTop=rr.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},x.each(["toggle","show","hide"],function(e,t){var n=x.fn[t];x.fn[t]=function(e,r,i){return null==e||"boolean"==typeof e?n.apply(this,arguments):this.animate(ir(t,!0),e,r,i)}}),x.fn.extend({fadeTo:function(e,t,n,r){return this.filter(nn).css("opacity",0).show().end().animate({opacity:t},e,n,r)},animate:function(e,t,n,r){var i=x.isEmptyObject(e),o=x.speed(t,n,r),a=function(){var t=er(this,x.extend({},e),o);(i||x._data(this,"finish"))&&t.stop(!0)};return a.finish=a,i||o.queue===!1?this.each(a):this.queue(o.queue,a)},stop:function(e,n,r){var i=function(e){var t=e.stop;delete e.stop,t(r)};return"string"!=typeof e&&(r=n,n=e,e=t),n&&e!==!1&&this.queue(e||"fx",[]),this.each(function(){var t=!0,n=null!=e&&e+"queueHooks",o=x.timers,a=x._data(this);if(n)a[n]&&a[n].stop&&i(a[n]);else for(n in a)a[n]&&a[n].stop&&Jn.test(n)&&i(a[n]);for(n=o.length;n--;)o[n].elem!==this||null!=e&&o[n].queue!==e||(o[n].anim.stop(r),t=!1,o.splice(n,1));(t||!r)&&x.dequeue(this,e)})},finish:function(e){return e!==!1&&(e=e||"fx"),this.each(function(){var t,n=x._data(this),r=n[e+"queue"],i=n[e+"queueHooks"],o=x.timers,a=r?r.length:0;for(n.finish=!0,x.queue(this,e,[]),i&&i.stop&&i.stop.call(this,!0),t=o.length;t--;)o[t].elem===this&&o[t].queue===e&&(o[t].anim.stop(!0),o.splice(t,1));for(t=0;a>t;t++)r[t]&&r[t].finish&&r[t].finish.call(this);delete n.finish})}});function ir(e,t){var n,r={height:e},i=0;for(t=t?1:0;4>i;i+=2-t)n=Zt[i],r["margin"+n]=r["padding"+n]=e;return t&&(r.opacity=r.width=e),r}x.each({slideDown:ir("show"),slideUp:ir("hide"),slideToggle:ir("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,t){x.fn[e]=function(e,n,r){return this.animate(t,e,n,r)}}),x.speed=function(e,t,n){var r=e&&"object"==typeof e?x.extend({},e):{complete:n||!n&&t||x.isFunction(e)&&e,duration:e,easing:n&&t||t&&!x.isFunction(t)&&t};return r.duration=x.fx.off?0:"number"==typeof r.duration?r.duration:r.duration in x.fx.speeds?x.fx.speeds[r.duration]:x.fx.speeds._default,(null==r.queue||r.queue===!0)&&(r.queue="fx"),r.old=r.complete,r.complete=function(){x.isFunction(r.old)&&r.old.call(this),r.queue&&x.dequeue(this,r.queue)},r},x.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2}},x.timers=[],x.fx=rr.prototype.init,x.fx.tick=function(){var e,n=x.timers,r=0;for(Xn=x.now();n.length>r;r++)e=n[r],e()||n[r]!==e||n.splice(r--,1);n.length||x.fx.stop(),Xn=t},x.fx.timer=function(e){e()&&x.timers.push(e)&&x.fx.start()},x.fx.interval=13,x.fx.start=function(){Un||(Un=setInterval(x.fx.tick,x.fx.interval))},x.fx.stop=function(){clearInterval(Un),Un=null},x.fx.speeds={slow:600,fast:200,_default:400},x.fx.step={},x.expr&&x.expr.filters&&(x.expr.filters.animated=function(e){return x.grep(x.timers,function(t){return e===t.elem}).length}),x.fn.offset=function(e){if(arguments.length)return e===t?this:this.each(function(t){x.offset.setOffset(this,e,t)});var n,r,o={top:0,left:0},a=this[0],s=a&&a.ownerDocument;if(s)return n=s.documentElement,x.contains(n,a)?(typeof a.getBoundingClientRect!==i&&(o=a.getBoundingClientRect()),r=or(s),{top:o.top+(r.pageYOffset||n.scrollTop)-(n.clientTop||0),left:o.left+(r.pageXOffset||n.scrollLeft)-(n.clientLeft||0)}):o},x.offset={setOffset:function(e,t,n){var r=x.css(e,"position");"static"===r&&(e.style.position="relative");var i=x(e),o=i.offset(),a=x.css(e,"top"),s=x.css(e,"left"),l=("absolute"===r||"fixed"===r)&&x.inArray("auto",[a,s])>-1,u={},c={},p,f;l?(c=i.position(),p=c.top,f=c.left):(p=parseFloat(a)||0,f=parseFloat(s)||0),x.isFunction(t)&&(t=t.call(e,n,o)),null!=t.top&&(u.top=t.top-o.top+p),null!=t.left&&(u.left=t.left-o.left+f),"using"in t?t.using.call(e,u):i.css(u)}},x.fn.extend({position:function(){if(this[0]){var e,t,n={top:0,left:0},r=this[0];return"fixed"===x.css(r,"position")?t=r.getBoundingClientRect():(e=this.offsetParent(),t=this.offset(),x.nodeName(e[0],"html")||(n=e.offset()),n.top+=x.css(e[0],"borderTopWidth",!0),n.left+=x.css(e[0],"borderLeftWidth",!0)),{top:t.top-n.top-x.css(r,"marginTop",!0),left:t.left-n.left-x.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent||s;while(e&&!x.nodeName(e,"html")&&"static"===x.css(e,"position"))e=e.offsetParent;return e||s})}}),x.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(e,n){var r=/Y/.test(n);x.fn[e]=function(i){return x.access(this,function(e,i,o){var a=or(e);return o===t?a?n in a?a[n]:a.document.documentElement[i]:e[i]:(a?a.scrollTo(r?x(a).scrollLeft():o,r?o:x(a).scrollTop()):e[i]=o,t)},e,i,arguments.length,null)}});function or(e){return x.isWindow(e)?e:9===e.nodeType?e.defaultView||e.parentWindow:!1}x.each({Height:"height",Width:"width"},function(e,n){x.each({padding:"inner"+e,content:n,"":"outer"+e},function(r,i){x.fn[i]=function(i,o){var a=arguments.length&&(r||"boolean"!=typeof i),s=r||(i===!0||o===!0?"margin":"border");return x.access(this,function(n,r,i){var o;return x.isWindow(n)?n.document.documentElement["client"+e]:9===n.nodeType?(o=n.documentElement,Math.max(n.body["scroll"+e],o["scroll"+e],n.body["offset"+e],o["offset"+e],o["client"+e])):i===t?x.css(n,r,s):x.style(n,r,i,s)},n,a?i:t,a,null)}})}),x.fn.size=function(){return this.length},x.fn.andSelf=x.fn.addBack,"object"==typeof module&&module&&"object"==typeof module.exports?module.exports=x:(e.jQuery=e.$=x,"function"==typeof define&&define.amd&&define("jquery",[],function(){return x}))})(window);
+++ /dev/null
-/*
-Copyright (c) 2013 Intel Corporation.
-
-Redistribution and use in source and binary forms, with or without modification,
-are permitted provided that the following conditions are met:
-
-* Redistributions of works must retain the original copyright notice, this list
- of conditions and the following disclaimer.
-* Redistributions in binary form must reproduce the original copyright notice,
- this list of conditions and the following disclaimer in the documentation
- and/or other materials provided with the distribution.
-* Neither the name of Intel Corporation nor the names of its contributors
- may be used to endorse or promote products derived from this work without
- specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY INTEL CORPORATION "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL INTEL CORPORATION BE LIABLE FOR ANY DIRECT,
-INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
-BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
-OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
-EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-Authors:
- Wang, Jing <jing.j.wang@intel.com>
-
-*/
-$(function(){
- try {
- // Checks if a device supports bluetooth API or not
- var shape = tizen.systeminfo.getCapability("http://tizen.org/feature/screen.shape");
- console.log("Shape = " + shape);
- //alert(" Shape = " + shape);
- } catch (error) {
- // alert("Error name: " + error.name + ", message: " + error.message);
- console.log("Error name: " + error.name + ", message: " + error.message);
- }
-
- if(shape=="circle"){
- $('body').css('max-width', '100%');
- $('body').css('max-height', '100%');
- $('body').css('background-color', 'white');
- $('body').css('margin-top', '20%');
- $('body').css('margin-bottom', '20%');
- $('body').css('margin-left', '20%');
- $('body').css('margin-right', '20%');
- }
-});
-
-var STUB_PORT = "";
-var RESOURCE_DIR;
-$.ajax({
- url:"/tmp/TCT_CONFIG",
- data:{},
- async:false,
- success:function(data){
- var regEx = /DEVICE_SUITE_TARGET_30=(.+)/i;
- var path = regEx.exec(data);
- RESOURCE_DIR = path[1];
- }
-});
-$.ajax({
- url:RESOURCE_DIR + "/tct/portconfigure.json",
- dataType:"json",
- data:{},
- async:false,
- success:function(data){
- STUB_PORT = data[0]["STUB_PORT"];
- }
-});
-(function (window){
- function TestRunner() {
- this.start = null;
- this.ui = null;
- this.submitResult = function () {};
- this.report = function (result, message) {};
- this.doTest = function () {};
- }
-
- TestRunner.prototype = (function () {
- var index = -1;
- var Tests = [];
- var Testsuites = {};
- var TestsuiteSums = {};
- var TestsetSums = {};
- var sum = newSummary();
- var testContext = newTestContext();
- function newSummary(sum) {
- if (typeof sum === "undefined")
- return {"TOTAL": 0, "PASS" : 0, "FAIL" : 0, "BLOCK" : 0, "NOTRUN" : 0};
- return {"TOTAL": sum.TOTAL, "PASS": sum.PASS, "FAIL": sum.FAIL, "BLOCK": sum.BLOCK, "NOTRUN": sum.NOTRUN};
- }
- function newTestContext() {
- return {start_time: null, prev_uri: "", uri: "", sub_index: 0, onload_delay: 0};
- }
- function getParms () {
- var parms = {};
- var items = location.search.substring(1).split('&');
- for ( var i = 0, max = items.length; i < max; i++) {
- var pos = items[i].indexOf('=');
- if (pos > 0) {
- var key = items[i].substring(0, pos);
- var val = items[i].substring(pos + 1);
- if (!parms[key]) {
- var rawVal = decodeURI(val);
- if (rawVal.indexOf(',') < 0)
- parms[key] = rawVal;
- else
- parms[key] = rawVal.split(',');
- }
- } else
- parms[items[i]] = 1;
- }
- return parms;
- }
- return {
- constructor: TestRunner,
- options: getParms(),
- addTestsuite: function (testsuite, category) {
- if (!category)
- category = "default";
- if (typeof Testsuites[category] === "undefined")
- Testsuites[category] = [];
- Testsuites[category].push(testsuite);
- },
-
- goNext: function () {
- if (Tests.length === 0) return false;
- if (index >= Tests.length) {
- index = -1;
- return false;
- }
- index++;
- return true;
- },
-
- goPrev: function () {
- if (Tests.length === 0) return false;
- if (index < 0) {
- index = Tests.length;
- return false;
- }
- index--;
- return true;
- },
-
- runAll: function () {
- testContext = newTestContext();
- VIEWFLAGS.add("batch");
- this.ui.updateView(VIEWFLAGS.del("suite"));
- this.testIndex(-1);
- this.doTest();
- },
-
- cleanTests: function () {
- Tests = [];
- },
-
- testIndex: function (ind) {
- if (typeof ind === "undefined")
- return index;
- index = ind;
- },
-
- getTest: function (ind) {
- if (typeof ind === "undefined")
- ind = index;
- return Tests[ind];
- },
-
- addTest: function (test) {
- if (test instanceof Array)
- Tests = Tests.concat(test);
- else
- Tests.push(test);
- },
-
- sumInit: function (num) {
- if (typeof num === "undefined")
- num = Tests.length;
- sum.TOTAL = sum.NOTRUN = num;
- sum.PASS = sum.FAIL = sum.BLOCK = 0;
- },
-
- sumUpdate: function (oldRes, newRes, set) {
- if (oldRes !== null) {
- sum[oldRes]--;
- if (set !== null) TestsetSums[set][oldRes]--;
- }
- if (newRes !== null) {
- sum[newRes]++;
- if (set != null) TestsetSums[set][newRes]++;
- }
- },
-
- checkResult: function (oTestDoc) {
- var message = "";
- if (!oTestDoc) {
- this.report('FAIL', 'Test page crash');
- return true;
- }
- // Handle sub-index test
- if (testContext.sub_index > 0) {
- var oRes = $(oTestDoc).find("table#results");
- if (oRes.length == 0)
- return false;
- var ind = testContext.sub_index - 1;
- var $n = $(oRes).find('tbody > tr').eq(ind);
- if ($n.length == 0)
- return false
- var result = $n.children("td:eq(0)").text();
- message = $n.children("td:eq(2)").text();
- this.report(result.toUpperCase(), message);
- return true;
- }
-
- var oPass = $(oTestDoc).find(".pass");
- var oFail = $(oTestDoc).find(".fail");
- // Qunit sub-cases
- var oUnitRes = $(oTestDoc).find("ol.qunit-assert-list");
- $(oUnitRes).find('li').each(function() {
- message += "[assert]" + $(this).attr("class");
- message += "[message]*" + $(this).children("span").text() + "\n";
- });
- // All tests pass
- if (oPass.length > 0 && oFail.length == 0) {
- this.report('PASS', message);
- return true;
- }
- // Handle failed tests
- if (oFail.length > 0) {
- var oRes = $(oTestDoc).find("table#results");
- $(oRes).find('tr.fail').each(function() {
- message += " *" + $(this).children("td:eq(1)").text() + ": ";
- message += $(this).children("td:eq(2)").text();
- });
- this.report('FAIL', message);
- return true;
- }
- return false;
- },
-
- testInfo: function (ind) {
- var info = "";
- var tc = this.getTest();
- if (!tc) return info;
- info += "Test : (" + (index + 1) + "/" + sum.TOTAL + ") ";
- info += tc.test_script_entry;
- info += "\nPurpose: " + tc.purpose;
- if (tc.pre_condition)
- info += "\nPrecondition: " + tc.pre_condition;
- if (tc.steps)
- info += "\n" + tc.steps;
- return info;
- },
-
- getTestCaseUrl: function () {
- function getUriField(uri, param) {
- var querys = uri.split("?")
- if (querys.length <= 1)
- return "";
- uri = querys[1];
- var start = uri.indexOf(param);
- if (start == -1)
- return "";
- start += param.length + 1;
- var end = uri.indexOf("&", start);
- if (end == -1)
- return uri.substring(start);
- return uri.substring(start, end);
- }
- var tc = this.getTest();
- if (!tc) return null;
- var delay = tc.onload_delay;
- if (delay)
- testContext.onload_delay = parseInt(delay) * 1000;
- else
- testContext.onload_delay = 5000;
-
- var uri = tc.test_script_entry;
- if (typeof this.options.testprefix !== "undefined") {
- var pos = uri.indexOf('http://');
- if (pos !== 0)
- uri = this.options.testprefix + uri
- }
- var val = getUriField(uri, "value");
- if (val && tc.execution_type == "auto" && VIEWFLAGS.has("batch")) { // Need sub index in TC
- testContext.sub_index = parseInt(val);
- testContext.uri = uri.split("?")[0];
- if (testContext.uri == testContext.prev_uri)
- return "";
- } else {
- testContext.uri = uri;
- testContext.sub_index = 0;
- }
- testContext.prev_uri = testContext.uri;
- testContext.start_time = new Date();
- return testContext.uri;
- },
-
- loadReady: function () {
- if (!VIEWFLAGS.has("batch"))
- return;
- if (!this.ui.testComplete()){
- if (testContext.onload_delay > 0){
- var tval = 500;
- var self = this;
- setTimeout(function() {self.loadReady();}, tval);
- testContext.onload_delay -= tval;
- return
- }
- this.report("BLOCK", "Timeout");
- }
- this.doTest();
- },
-
- getListSum: function () {
- var sumdata = "";
- sumdata += "<p><table id='browse'><tr><th>Testsuite</th>";
- sumdata += "<th>Total</th><th>Pass</th><th>Fail</th><th>Block</th></tr>";
- $.each(TestsuiteSums, function (key, val){
- sumdata += "<tr><td>" + key+ "</td>";
- sumdata += "<td style='color:black;'>" + val.TOTAL + "</td>";
- sumdata += "<td style='color:green;'>" + val.PASS + "</td>";
- sumdata += "<td style='color:red;'>" + val.FAIL + "</td>";
- sumdata += "<td style='color:orange;'>" + val.BLOCK + "</td></tr>";
- });
- sumdata += "</table>";
- return sumdata;
- },
-
- getTestSum: function (include_set) {
- var sumdata = "<section><h3>Total:" + sum.TOTAL
- + " Pass:<span style='color:green;'>" + sum.PASS
- + "</span> Fail:<span style='color:red;'>" + sum.FAIL
- + "</span> Block:<span style='color:orange;'>" + sum.BLOCK
- + "</span> Notrun:<span style='color:black;'>" + sum.NOTRUN
- + "</span>";
- if (this.options.notifyInfo) {
- sumdata += "<span style='color:slateblue;'> " + this.options.notifyInfo + "</span>";
- this.options.notifyInfo = "";
- }
- sumdata += "</h3></section>";
- if (VIEWFLAGS.has("batch")) {
- var tc = this.getTest();
- if (tc) sumdata += "<h4><span style='background-color: wheat'>(#" + index + ") " + tc.id + "</span></h4>";
- }
- if (this.options.testsuite_name)
- TestsuiteSums[this.options.testsuite_name] = newSummary(sum)
- if (include_set) {
- sumdata += "<p><table id='browse'><tr><th>Testset</th>";
- sumdata += "<th>Total</th><th>Pass</th><th>Fail</th><th>Block</th></tr>";
- $.each(TestsetSums, function (key, val){
- sumdata += "<tr><td>" + key+ "</td>";
- sumdata += "<td style='color:black;'>" + val.TOTAL + "</td>";
- sumdata += "<td style='color:green;'>" + val.PASS + "</td>";
- sumdata += "<td style='color:red;'>" + val.FAIL + "</td>";
- sumdata += "<td style='color:orange;'>" + val.BLOCK + "</td></tr>";
- });
- sumdata += "</table>";
- }
- return sumdata;
- },
-
- getListInfo: function () {
- function createList(category) {
- var testList = "";
- $.each(Testsuites[category], function (ind, val) {
- testList += "<li><input type='checkbox' id='" + val + "'> <a href=''>" + val + "</a>" + "</li>";
- });
- return testList;
- }
- var data = "<html><head><style>.category{background: #cccccc;border: 1px solid #aaaaaa;} li{list-style-type: none; padding-left: 0.6em; padding-bottom:0.8em; font-size: 1.3em;}html{font-family:DejaVu Sans, Bitstream Vera Sans, Arial, Sans;}</style></head><body>";
- $.each(Testsuites, function(key, val) {
- data += "<section><h3 class='category'><input type='checkbox' id='" + key + "'> " + key + "</h3>"
- data += createList(key) + "</section>";
- });
- data += "</body></html>";
- return data;
- },
-
- getBrowseInfo: function () {
- var failList = passList = blockList = notrunList = "";
- function createTestList(tc, color, ind) {
- var mtag = (tc.execution_type === "manual") ? "(M)" : "";
- return "<li>" + mtag + "<a rel='" + ind + "' href='' style ='color:" + color + ";'>" + tc.id + "</a>" + "</li>";
- }
- TestsetSums = {};
- $.each(Tests, function (ind, val) {
- if (this.set === null)
- this.set = "default";
- if (typeof TestsetSums[this.set] === "undefined")
- TestsetSums[this.set] = newSummary();
- TestsetSums[this.set][this.result]++;
- TestsetSums[this.set]["TOTAL"]++;
- if (this.result == "FAIL")
- failList += createTestList(this, "red", ind);
- if (this.result == "PASS")
- passList += createTestList(this, "green", ind);
- if (this.result == "BLOCK")
- blockList += createTestList(this, "orange", ind);
- if (this.result == "NOTRUN")
- notrunList += createTestList(this, "black", ind);
- });
- var data = "<html><head><style>ul li {padding-bottom:0.8em;font-size: 1.3em;}";
- data += "html{font-family:DejaVu Sans, Bitstream Vera Sans, Arial, Sans;}</style></head><body>";
- if (notrunList)
- data += "<section><h3>Notrun</h3><ul>" + notrunList + "</ul></section>";
- if (failList)
- data += "<section><h3 style='color: red;'>Fail</h3><ul>" + failList + "</ul></section>";
- if (blockList)
- data += "<section><h3 style='color: orange;'>Block</h3><ul>" + blockList + "</ul></section>";
- if (passList)
- data += "<section><h3 style='color: green'>Pass</h3><ul>" + passList + "</ul></section>";
- data += "</body></html>";
- return data;
- },
-
- TestCase: function () {
- return {
- id: null,
- test_script_entry: null,
- execution_type: "manual",
- result: "NOTRUN",
- purpose: "",
- set: null,
- pre_condition: "",
- onload_delay: 0,
- steps: "",
- data: null};
- },
-
- TestSuite: function () {
- return {
- id: null,
- sum: null,
- data: null};
- }
-
- };
- }());
- // Standalone test runner
- var master_runner = new TestRunner();
- master_runner.start = function (ui) {
- function filter(xml, self) {
- var set_ind = 0;
- var manuals = [];
- $(xml).find("set").each(function () {
- var setname = $(this).attr("name");
- if (!setname)
- setname = "set" + set_ind;
- $(this).find("testcase").each(function () {
- var v = $(this).attr('execution_type');
- if (self.options.execution_type && v != self.options.execution_type
- && $.inArray(v, self.options.execution_type) < 0) {
- $(this).remove();
- return;
- }
- v = $(this).attr('priority');
- if (self.options.priority && v != self.options.priority
- && $.inArray(v, self.options.priority) < 0){
- $(this).remove();
- return;
- }
- var test = self.TestCase();
- test.id = $(this).attr("id");
- test.execution_type = $(this).attr("execution_type");
- test.test_script_entry = $(this).find("test_script_entry").text();
- test.purpose = $(this).attr("purpose");
- test.pre_condition = $(this).find("pre_condition").text();
- test.onload_delay = $(this).attr("onload_delay");
- test.result = "NOTRUN";
- test.set = setname;
- test.data = this;
- if (test.execution_type === "auto")
- self.addTest(test);
- else
- manuals.push(test);
- });
- set_ind++;
- });
- self.addTest(manuals);
- }
-
- var self = this;
- if (ui) ui.bind(self);
- if (self.options.testsuite_name)
- self.options.testsuite = "opt/" + self.options.testsuite_name + "/tests.xml";
- if (!self.options.testsuite) {
- $.getJSON(TESTLIST_FILE, function(data) {
- for (var i = 0, imax = data.length; i < imax; i++) {
- for (var j = 0, jmax = data[i].tests.length; j < jmax; j++)
- self.addTestsuite(data[i].tests[j], data[i].category);
- }
- self.ui.list();
- self.options.multiplex = true;
- });
- } else {
- $.get(self.options.testsuite, null, function (xml) {
- self.internal.xmldoc = xml;
- filter(xml, self);
- self.sumInit();
- self.ui.browse();
- setTimeout(function () {
- if (self.options.autorun)
- self.runAll();
- }, 500);
- }, "xml");
- }
- };
-
- master_runner.doTest = function () {
- var self = this, tc = null;
- while (self.goNext()) {
- tc = self.getTest();
- if (!tc || tc.execution_type === "manual")
- break;
- self.ui.updateTestInfo(self.testInfo(), null, null);
- self.ui.runTest(self.getTestCaseUrl());
- return;
- }
- this.ui.updateView(VIEWFLAGS.del("batch"));
- if (self.options.autorun) {
- self.submitResult();
- if (self.options.multiplex) {
- self.ui.list();
- return;
- }
- close_window();
- return;
- }
- if (!tc) {
- setTimeout(function () {self.ui.browse();}, 500);
- return;
- }
- this.ui.updateTest();
- };
-
- master_runner.report = function (result, log) {
- var tc = this.getTest();
- if (!tc) return;
- var oldresult = tc.result;
- this.sumUpdate(oldresult, result, tc.set);
- tc.result = result;
- $(tc.data).find('result_info').remove();
- $(tc.data).attr('result', result);
- var doc = $.parseXML("<result_info><actual_result>" + result +
- "</actual_result><stdout>" +
- escape_html(log) + "</stdout></result_info>");
- $(tc.data).append(doc.documentElement);
- if (VIEWFLAGS.has("batch")) result = null;
- this.ui.updateTestInfo(null, this.getTestSum(false), result);
- };
-
- master_runner.submitResult = function () {
- var SERVER = "http://127.0.0.1:8080";
- var contents = (new XMLSerializer()).serializeToString(this.internal.xmldoc);
- var resfile = "tests.res.xml";
- if (this.options.testsuite_name)
- resfile = this.options.testsuite_name + "." + resfile;
- $.post(SERVER + "/save_file", {filename: resfile, data: contents})
- };
-
- master_runner.internal = {xmldoc: null};
-
- // Controlled test runner
- var slave_runner = new TestRunner();
- slave_runner.start = function (ui) {
- function sync_session_id() {
- $.get(SERVER + "/init_session_id?session_id="
- + self.internal.session_id);
- }
- var self = this;
- self.internal.session_id = Math.round(Math.random() * 10000);
- sync_session_id();
- var next_step = self.internal.get_json("ask_next_step");
- if (!next_step || next_step.step != "continue") {
- close_window();
- return false;
- }
- ui.bind(self);
- var f = function () {
- var p = self.internal.get_json("check_execution_progress");
- if (p) self.sumInit(parseInt(p.total));
- self.doTest();
- };
- self.ui.updateView(VIEWFLAGS.add("batch"));
- self.ui.updateView(VIEWFLAGS.del("suite"));
- setTimeout(f, 1000);
- return true;
- };
-
- slave_runner.doTest = function () {
- var self = this;
- if (self.internal.stage > 0) {
- self.ui.updateView(VIEWFLAGS.del("batch"));
- self.goNext();
- self.ui.updateTest();
- return;
- }
- var next_step = self.internal.get_json("ask_next_step");
- if (next_step && next_step.step == "continue") {
- var task = self.internal.get_json("auto_test_task");
- if (task === null) {
- print_error("ask_test_task", "Fail get task");
- } else if (task.invalid === 0) {
- print_error("ask_test_task", "Invalid session");
- } else if (task.stop === 0) {
- print_error("ask_test_task", "close window");
- } else if (task.none !== 0) { //handle auto test
- var test = self.TestCase();
- test.id = task.case_id;
- test.onload_delay = task.onload_delay;
- test.test_script_entry = task.entry;
- test.execution_type = "auto";
- test.purpose = task.purpose;
- test.pre_condition = task.pre_condition;
- self.addTest(test);
- self.goNext();
- self.ui.updateTestInfo(self.testInfo(), null, null);
- self.ui.runTest(self.getTestCaseUrl());
- return;
- } else { //handle manual test
- self.ui.updateView(VIEWFLAGS.del("batch"));
- self.internal.stage = 1;
- var mtask = self.internal.get_json("manual_cases");
- if (mtask && mtask.none != 0) {
- self.cleanTests();
- for (var i = 0, max = mtask.length; i < max; i++) {
- var test = self.TestCase();
- test.id = mtask[i].case_id;
- test.test_script_entry = mtask[i].entry;
- test.purpose = mtask[i].purpose;
- test.pre_condition = mtask[i].pre_condition;
- test.result = "NOTRUN";
- test.execution_type = "manual";
- test.index = i;
- var steps = "";
- $(mtask[i].steps).each(function () {
- steps += "Step-" + this.order + "\t: " + this.step_desc + "\n";
- steps += "Expect\t: " + this.expected + "\n";
- });
- test.steps = steps;
- self.addTest(test);
- }
- self.ui.updateTest(-1);
- self.sumInit();
- self.ui.browse();
- } else
- close_window();
- return;
- }
- }
- close_window();
- };
-
- slave_runner.report = function(result, log) {
- var tc = this.getTest();
- var oldresult;
- if (this.internal.stage > 0) {
- this.internal.post_json("commit_manual_result",
- {"case_id": tc.id, "result": result});
- oldresult = tc.result
- tc.result = result;
- } else {
- this.internal.post_json("commit_result",
- { "case_id" : tc.id,
- "result" : result,
- "msg" : "[Message]" + log,
- "session_id" : this.internal.session_id});
- oldresult = "NOTRUN";
- }
- this.sumUpdate(oldresult, result, null);
- if (VIEWFLAGS.has("batch")) result = null;
- this.ui.updateTestInfo(null, this.getTestSum(false), result);
- };
-
- slave_runner.submitResult = function () {
- $.get(SERVER + "/generate_xml");
- };
-
- slave_runner.internal = {
- session_id: null,
- stage: 0,
- get_json: function (name) {
- var jsondata = null;
- $.getJSON(SERVER + "/" + name + "?session_id="
- + this.session_id, function(data) {
- jsondata = data;});
- return jsondata; },
- post_json: function (name, d) {
- $.post(SERVER + "/" + name, d, null, "json");
- }
- };
-
- var i_ui = (function () {
- var testinfo = $("#testinfo").get(0);
- var frmTest = $("#frmTest").get(0);
- var textTest = $("#textTest").get(0);
- var btnPass = $("#btnPass").get(0);
- var btnFail = $("#btnFail").get(0);
- var btnBlock = $("#btnBlock").get(0);
- var btnExit = $("#btnExit").get(0);
- var btnNext = $("#btnNext").get(0);
- var btnPrev = $("#btnPrev").get(0);
- var btnRun = $("#btnRun").get(0);
- var divSum = $("#divSum").get(0);
- var btnBack = $("#btnBack").get(0);
- var btnSave = $("#btnSave").get(0);
- var runner = null;
- var listmode = null;
- var nextTest = function () {
- runner.goNext();
- selectTest();
- };
-
- var prevTest = function() {
- runner.goPrev();
- selectTest();
- };
-
- var selectResult = function() {
- runner.report(this.value, "");
- };
-
- var selectTest = function () {
- frmTest.src = "";
- var tc = runner.getTest();
- if (!tc) {
- if (runner.testIndex() === -1)
- textTest.value = "---Begin---";
- else
- textTest.value = "---End---";
- changeColor("NOTRUN");
- return;
- }
- testinfo.value = runner.testInfo();
- $(divSum).html(runner.getTestSum(false));
- textTest.value = ((tc.execution_type === "manual") ? "(M)" : "") + tc.id;
- changeColor(tc.result);
- };
-
- function changeColor(result) {
- if (result === "PASS")
- $(textTest).css("backgroundColor", "lightgreen");
- else if (result === "FAIL")
- $(textTest).css("backgroundColor", "tomato");
- else if (result === "BLOCK")
- $(textTest).css("backgroundColor", "yellow");
- else
- $(textTest).css("backgroundColor", "white");
- }
-
- return {
- bind: function (r) {
- var self = this;
- r.ui = self;
- runner = r;
- $(btnPass).on("click", selectResult);
- $(btnFail).on("click", selectResult);
- $(btnBlock).on("click", selectResult);
- $(btnNext).on("click", nextTest);
- $(btnPrev).on("click", prevTest);
- $(btnRun).on("click", function () {
- if (VIEWFLAGS.has("list")) {
- runner.options.auto_testsuites = [];
- var tdoc = frmTest.contentWindow.document;
- $(tdoc).find("section li>input:checked").each(function () {
- var tname = $(this).attr("id");
- runner.options.auto_testsuites.push(tname);
- });
- self.list();
- } else if (VIEWFLAGS.has("suite")) {
- runner.runAll();
- } else
- self.runTest(runner.getTestCaseUrl());
- });
- $(frmTest).on("load", function () {runner.loadReady();});
- $(btnExit).on("click", function () {
- runner.submitResult();
- if (runner.options.multiplex && VIEWFLAGS.has("suite"))
- self.list();
- else
- close_window();
- });
- $(btnBack).on("click", function () {
- frmTest.src = "";
- setTimeout(function () {self.browse();}, 300);
- });
- $(btnSave).on("click", function () {
- runner.submitResult();
- runner.options.notifyInfo = "*Save succeed*";
- $(divSum).html(runner.getTestSum(true));
- });
- frmTest.height = $(window).height();
- },
-
- list: function () {
- var tdoc = frmTest.contentWindow.document;
- $(btnExit).attr("value", "Exit");
- tdoc.open("text/html", "replace");
- tdoc.writeln(runner.getListInfo());
- var self = this;
- $(tdoc).find("section li>a").on("click", function (e) {
- runner.options.testsuite_name = $(this).text();
- VIEWFLAGS.del("list");
- runner.start();
- window.scrollTo(0, 0);
- e.preventDefault();
- });
- $(tdoc).find("section h3>input[type=checkbox]").on("click", function () {
- $boxs = $(this).parent().parent().find("li>input[type=checkbox]");
- $boxs.prop('checked', $(this).is(':checked'));
- });
- $(divSum).html(runner.getListSum());
- runner.cleanTests();
- self.updateView(VIEWFLAGS.add("list"));
- if (runner.options.auto_testsuites) {
- if (runner.options.auto_testsuites.length > 0) {
- var ts = runner.options.auto_testsuites.shift();
- runner.options.testsuite_name = ts;
- runner.options.autorun = true;
- VIEWFLAGS.del("list");
- runner.start();
- } else
- runner.options.autorun = false;
- }
- },
-
- browse: function () {
- var tdoc = frmTest.contentWindow.document;
- if (runner.options.multiplex)
- $(btnExit).attr("value", "Back");
- tdoc.open("text/html", "replace");
- tdoc.writeln(runner.getBrowseInfo());
- var self = this;
- $(tdoc).find("section ul li>a").on("click", function (e) {
- var ind = parseInt($(this).attr("rel"));
- self.updateView(VIEWFLAGS.del("suite"));
- self.updateTest(ind);
- window.scrollTo(0, 0);
- e.preventDefault();
- });
- $(divSum).html(runner.getTestSum(true));
- self.updateView(VIEWFLAGS.add("suite"));
- },
-
- updateTest: function (ind) {
- if (typeof ind !== "undefined") runner.testIndex(ind);
- selectTest();
- },
-
- updateView: function (flags) {
- if (flags & VIEWFLAGS.flags.batch)
- $(".batchhide").hide();
- else {
- $(".batchhide").show();
- if (flags & VIEWFLAGS.flags.list) {
- $(".tchide").show();
- $(".suitehide").show();
- $(".listhide").hide();
- } else if (flags & VIEWFLAGS.flags.suite) {
- $(".listhide").show();
- $(".tchide").show();
- $(".suitehide").hide();
- } else {
- $(".listhide").show();
- $(".suitehide").show();
- $(".tchide").hide();
- }
- }
- },
-
- testComplete: function () {
- return runner.checkResult(frmTest.contentWindow.document);
- },
-
- runTest: function (uri) {
- if (uri === null) return;
- if (uri)
- frmTest.src = uri;
- else
- runner.loadReady();
- },
-
- updateTestInfo: function (info, sum, result) {
- if (info !== null)
- testinfo.value = info;
- if (sum !== null)
- $(divSum).html(sum);
- if (result !== null)
- changeColor(result);
- },
- };
- } ());
-
- function escape_html(s) {
- return s.replace(/\&/g, "&").replace(/</g, "<").replace(/"/g,
- """).replace(/'/g, "'");
- }
-
- function print_error(command, message) {
- console.warn("Command -" + command + ": " + message);
- }
-
- function close_window() {
- setTimeout(function () {
- window.open('', '_self', '');
- window.close();
- if (window.parent != window.self) {
- window.parent.onbeforeunload = null;
- window.parent.close();
- }
- }, 1000);
- }
-
- function pre_init() {
- var runner_ok = false;
- $.get(SERVER + "/check_server", function () {
- runner_ok = slave_runner.start(i_ui);
- });
- if (!runner_ok)
- master_runner.start(i_ui);
- }
- var SERVER = "http://127.0.0.1:8000";
- var TESTLIST_FILE = "testlist.json"
- var VIEWFLAGS = { val: 0,
- flags: {suite: 1, batch: 2, list: 4},
- add: function (f) { this.val |= this.flags[f]; return this.val},
- del: function (f) { this.val &= ~this.flags[f]; return this.val},
- has: function (f) { return this.val & this.flags[f];},
- };
- $.ajaxSetup({ async: false});
- $(window).on("ready", pre_init);
-})(window);
+++ /dev/null
-Copyright (c) 2014 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.
\ No newline at end of file
+++ /dev/null
-
- Apache License
- Version 2.0, January 2004
- http://www.apache.org/licenses/
-
- TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
- 1. Definitions.
-
- "License" shall mean the terms and conditions for use, reproduction,
- and distribution as defined by Sections 1 through 9 of this document.
-
- "Licensor" shall mean the copyright owner or entity authorized by
- the copyright owner that is granting the License.
-
- "Legal Entity" shall mean the union of the acting entity and all
- other entities that control, are controlled by, or are under common
- control with that entity. For the purposes of this definition,
- "control" means (i) the power, direct or indirect, to cause the
- direction or management of such entity, whether by contract or
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
- outstanding shares, or (iii) beneficial ownership of such entity.
-
- "You" (or "Your") shall mean an individual or Legal Entity
- exercising permissions granted by this License.
-
- "Source" form shall mean the preferred form for making modifications,
- including but not limited to software source code, documentation
- source, and configuration files.
-
- "Object" form shall mean any form resulting from mechanical
- transformation or translation of a Source form, including but
- not limited to compiled object code, generated documentation,
- and conversions to other media types.
-
- "Work" shall mean the work of authorship, whether in Source or
- Object form, made available under the License, as indicated by a
- copyright notice that is included in or attached to the work
- (an example is provided in the Appendix below).
-
- "Derivative Works" shall mean any work, whether in Source or Object
- form, that is based on (or derived from) the Work and for which the
- editorial revisions, annotations, elaborations, or other modifications
- represent, as a whole, an original work of authorship. For the purposes
- of this License, Derivative Works shall not include works that remain
- separable from, or merely link (or bind by name) to the interfaces of,
- the Work and Derivative Works thereof.
-
- "Contribution" shall mean any work of authorship, including
- the original version of the Work and any modifications or additions
- to that Work or Derivative Works thereof, that is intentionally
- submitted to Licensor for inclusion in the Work by the copyright owner
- or by an individual or Legal Entity authorized to submit on behalf of
- the copyright owner. For the purposes of this definition, "submitted"
- means any form of electronic, verbal, or written communication sent
- to the Licensor or its representatives, including but not limited to
- communication on electronic mailing lists, source code control systems,
- and issue tracking systems that are managed by, or on behalf of, the
- Licensor for the purpose of discussing and improving the Work, but
- excluding communication that is conspicuously marked or otherwise
- designated in writing by the copyright owner as "Not a Contribution."
-
- "Contributor" shall mean Licensor and any individual or Legal Entity
- on behalf of whom a Contribution has been received by Licensor and
- subsequently incorporated within the Work.
-
- 2. Grant of Copyright License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- copyright license to reproduce, prepare Derivative Works of,
- publicly display, publicly perform, sublicense, and distribute the
- Work and such Derivative Works in Source or Object form.
-
- 3. Grant of Patent License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- (except as stated in this section) patent license to make, have made,
- use, offer to sell, sell, import, and otherwise transfer the Work,
- where such license applies only to those patent claims licensable
- by such Contributor that are necessarily infringed by their
- Contribution(s) alone or by combination of their Contribution(s)
- with the Work to which such Contribution(s) was submitted. If You
- institute patent litigation against any entity (including a
- cross-claim or counterclaim in a lawsuit) alleging that the Work
- or a Contribution incorporated within the Work constitutes direct
- or contributory patent infringement, then any patent licenses
- granted to You under this License for that Work shall terminate
- as of the date such litigation is filed.
-
- 4. Redistribution. You may reproduce and distribute copies of the
- Work or Derivative Works thereof in any medium, with or without
- modifications, and in Source or Object form, provided that You
- meet the following conditions:
-
- (a) You must give any other recipients of the Work or
- Derivative Works a copy of this License; and
-
- (b) You must cause any modified files to carry prominent notices
- stating that You changed the files; and
-
- (c) You must retain, in the Source form of any Derivative Works
- that You distribute, all copyright, patent, trademark, and
- attribution notices from the Source form of the Work,
- excluding those notices that do not pertain to any part of
- the Derivative Works; and
-
- (d) If the Work includes a "NOTICE" text file as part of its
- distribution, then any Derivative Works that You distribute must
- include a readable copy of the attribution notices contained
- within such NOTICE file, excluding those notices that do not
- pertain to any part of the Derivative Works, in at least one
- of the following places: within a NOTICE text file distributed
- as part of the Derivative Works; within the Source form or
- documentation, if provided along with the Derivative Works; or,
- within a display generated by the Derivative Works, if and
- wherever such third-party notices normally appear. The contents
- of the NOTICE file are for informational purposes only and
- do not modify the License. You may add Your own attribution
- notices within Derivative Works that You distribute, alongside
- or as an addendum to the NOTICE text from the Work, provided
- that such additional attribution notices cannot be construed
- as modifying the License.
-
- You may add Your own copyright statement to Your modifications and
- may provide additional or different license terms and conditions
- for use, reproduction, or distribution of Your modifications, or
- for any such Derivative Works as a whole, provided Your use,
- reproduction, and distribution of the Work otherwise complies with
- the conditions stated in this License.
-
- 5. Submission of Contributions. Unless You explicitly state otherwise,
- any Contribution intentionally submitted for inclusion in the Work
- by You to the Licensor shall be under the terms and conditions of
- this License, without any additional terms or conditions.
- Notwithstanding the above, nothing herein shall supersede or modify
- the terms of any separate license agreement you may have executed
- with Licensor regarding such Contributions.
-
- 6. Trademarks. This License does not grant permission to use the trade
- names, trademarks, service marks, or product names of the Licensor,
- except as required for reasonable and customary use in describing the
- origin of the Work and reproducing the content of the NOTICE file.
-
- 7. Disclaimer of Warranty. Unless required by applicable law or
- agreed to in writing, Licensor provides the Work (and each
- Contributor provides its Contributions) on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied, including, without limitation, any warranties or conditions
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- PARTICULAR PURPOSE. You are solely responsible for determining the
- appropriateness of using or redistributing the Work and assume any
- risks associated with Your exercise of permissions under this License.
-
- 8. Limitation of Liability. In no event and under no legal theory,
- whether in tort (including negligence), contract, or otherwise,
- unless required by applicable law (such as deliberate and grossly
- negligent acts) or agreed to in writing, shall any Contributor be
- liable to You for damages, including any direct, indirect, special,
- incidental, or consequential damages of any character arising as a
- result of this License or out of the use or inability to use the
- Work (including but not limited to damages for loss of goodwill,
- work stoppage, computer failure or malfunction, or any and all
- other commercial damages or losses), even if such Contributor
- has been advised of the possibility of such damages.
-
- 9. Accepting Warranty or Additional Liability. While redistributing
- the Work or Derivative Works thereof, You may choose to offer,
- and charge a fee for, acceptance of support, warranty, indemnity,
- or other liability obligations and/or rights consistent with this
- License. However, in accepting such obligations, You may act only
- on Your own behalf and on Your sole responsibility, not on behalf
- of any other Contributor, and only if You agree to indemnify,
- defend, and hold each Contributor harmless for any liability
- incurred by, or claims asserted against, such Contributor by reason
- of your accepting any such warranty or additional liability.
-
- END OF TERMS AND CONDITIONS
-
- APPENDIX: How to apply the Apache License to your work.
-
- To apply the Apache License to your work, attach the following
- boilerplate notice, with the fields enclosed by brackets "[]"
- replaced with your own identifying information. (Don't include
- the brackets!) The text should be enclosed in the appropriate
- comment syntax for the file format. We also recommend that a
- file or class name and description of purpose be included on the
- same "printed page" as the copyright notice for easier
- identification within third-party archives.
-
- Copyright [yyyy] [name of copyright owner]
-
- 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.
\ No newline at end of file
+++ /dev/null
-----------------------------------------------
-License
-----------------------------------------------
-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:
- Saleh Enam Shohag <saleh.enam@samsung.com>
-
-----------------------------------------------
-Introduction
-----------------------------------------------
-This test suite is for testing tizen HumanActivity API, which covers the following specifications:
-TBD
-
-----------------------------------------------
-Test Environment
-----------------------------------------------
-1. Testkit-stub must be installed on target device.
-2. Testkit-lite must be installed on test machine.
-
-
-----------------------------------------------
-Build and Run
-----------------------------------------------
-(Suppose you only get the source code and Testkit-Lite has been set up on your test machine.
- If you have got tct-humanactivitymonitor-tizen-tests ZIP packages, you can directly go to step 3 on the test machine;
- if you have not installed Testkit-Lite, you need to install the latest version.)
-
-Steps:
-1. Prepare for building by running the following command:
- cd tct-humanactivitymonitor-tizen-tests
-
-2. Build ZIP package by running the following command:
- ./pack.sh
-
-3. Unzip the package on the test machine by running the following command:
- unzip -o tct-humanactivitymonitor-tizen-tests-<version>.zip -d /home/owner/share/tct
-
-4. Install the package on the test machine by running the following command:
- /home/owner/share/tct/opt/tct-humanactivitymonitor-tizen-tests/inst.sh
-
-5. Run test cases by running the following command on host:
- testkit-lite -f device:/home/owner/share/tct/opt/tct-humanactivitymonitor-tizen-tests/tests.xml -e "WRTLauncher" -o tct-humanactivitymonitor-tizen-tests.results.xml
\ No newline at end of file
+++ /dev/null
-#!/bin/bash
-PATH=/bin:/usr/bin:/sbin:/usr/sbin
-for i in `grep -r "0xA" /var/cynara/db/_ | grep $1`
-do
- CLIENT=`echo $i | cut -d ";" -f1`
- USER=`echo $i | cut -d ";" -f2`
- PRIVILEGE=`echo $i | cut -d ";" -f3`
- #echo "cyad --erase=\"\" -r=no -c $CLIENT -u $USER -p $PRIVILEGE"
- cyad --erase="" -r=no -c $CLIENT -u $USER -p $PRIVILEGE
-done
+++ /dev/null
-<widget id='http://tizen.org/test/tct-humanactivitymonitor-tizen-tests' xmlns='http://www.w3.org/ns/widgets' xmlns:tizen='http://tizen.org/ns/widgets' version='3.0'>
- <access origin="*"/>
- <name>tct-humanactivitymonitor-tizen-tests</name>
- <tizen:privilege name="http://tizen.org/privilege/healthinfo"/>
- <tizen:privilege name="http://tizen.org/privilege/location"/>
- <icon src="icon.png" height="117" width="117"/>
- <tizen:application id="api1human0.WebAPItizenHumanTests" package="api1human0" required_version="3.0"/>
- <tizen:setting screen-orientation="landscape" />
- <tizen:setting background-support="enable"/>
-</widget>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2014 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:
- Wei Zhang <wei625.zhang@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityAccumulativePedometerData_notexist</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityAccumulativePedometerData_notexist
-//==== LABEL Check if interface HumanActivityAccumulativePedometerData exists, it should not
-//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityAccumulativePedometerData:HumanActivityAccumulativePedometerData U
-//==== SPEC_URL TBD
-//==== PRIORITY P3
-//==== TEST_CRITERIA NIO
-
-test(function () {
- check_no_interface_object("HumanActivityAccumulativePedometerData");
-}, document.title);
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2014 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:
- Saud Mohammad Mostafa <saud.mm@samsung.com>
- Saleh Enam Shohag <saleh.enam@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityAccumulativePedometerInfo_notexist</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityAccumulativePedometerInfo_notexist
-//==== LABEL Check if interface HumanActivityAccumulativePedometerInfo exists, it should not
-//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityAccumulativePedometerInfo:HumanActivityAccumulativePedometerInfo U
-//==== SPEC_URL TBD
-//==== PRIORITY P3
-//==== TEST_CRITERIA NIO
-
-test(function () {
- check_no_interface_object("HumanActivityAccumulativePedometerInfo");
-}, document.title);
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2014 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:
- Saleh Enam Shohag <saleh.enam@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityData_notexist</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityData_notexist
-//==== LABEL Check if interface HumanActivityData exists, it should not
-//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityData:HumanActivityData U
-//==== SPEC_URL TBD
-//==== PRIORITY P3
-//==== TEST_CRITERIA NIO
-
-test(function () {
- check_no_interface_object("HumanActivityData");
-}, document.title);
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2014 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:
- Wei Zhang <wei625.zhang@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityGPSInfoArray_notexist</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityGPSInfoArray_notexist
-//==== LABEL Check if interface HumanActivityGPSInfoArray exists, it should not
-//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityGPSInfoArray:HumanActivityGPSInfoArray U
-//==== SPEC_URL TBD
-//==== PRIORITY P3
-//==== TEST_CRITERIA NIO
-
-test(function () {
- check_no_interface_object("HumanActivityGPSInfoArray");
-}, document.title);
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>\r
-<!--\r
-Copyright (c) 2014 Samsung Electronics Co., Ltd.\r
-\r
-Licensed under the Apache License, Version 2.0 (the License);\r
-you may not use this file except in compliance with the License.\r
-You may obtain a copy of the License at\r
-\r
- http://www.apache.org/licenses/LICENSE-2.0\r
-\r
-Unless required by applicable law or agreed to in writing, software\r
-distributed under the License is distributed on an "AS IS" BASIS,\r
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
-See the License for the specific language governing permissions and\r
-limitations under the License.\r
-\r
-Authors:\r
- Ran Wang <ran22.wang@samsung.com>\r
-\r
--->\r
-<html>\r
-<head>\r
-<title>HumanActivityGPSInfo_altitude_attribute</title>\r
-<meta charset="utf-8"/>\r
-<script src="support/unitcommon.js"></script>\r
-<script src="support/humanactivitymonitor_common.js"></script>\r
-</head>\r
-<body>\r
-<div id="log"></div>\r
-<script>\r
-//==== TEST: HumanActivityGPSInfo_altitude_attribute\r
-//==== LABEL Check if HumanActivityGPSInfo::altitude exists, has type double, and is readonly\r
-//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityGPSInfo:altitude A\r
-//==== SPEC_URL TBD\r
-//==== PRIORITY P1\r
-//==== ONLOAD_DELAY 9\r
-//==== TEST_CRITERIA AE AT ARO\r
-\r
-setup({timeout: 9000});\r
-\r
-var t = async_test(document.title, {timeout: 9000}), getHumanActivityDataSuccess, getHumanActivityDataError, humanActivityType = "GPS";\r
-\r
-t.step(function () {\r
- add_result_callback(function () {\r
- tizen.humanactivitymonitor.stop(humanActivityType);\r
- });\r
-\r
- getHumanActivityDataError = t.step_func(function (error) {\r
- assert_unreached("getHumanActivityDataError is called" + error.name);\r
- });\r
-\r
- getHumanActivityDataSuccess = t.step_func(function (gpsInfo) {\r
- check_readonly(gpsInfo, "altitude", gpsInfo.altitude, "double", gpsInfo.altitude + 10);\r
- t.done();\r
- });\r
-\r
- tizen.humanactivitymonitor.start(humanActivityType);\r
- tizen.humanactivitymonitor.getHumanActivityData(humanActivityType, getHumanActivityDataSuccess, getHumanActivityDataError);\r
-});\r
-\r
-</script>\r
-</body>\r
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>\r
-<!--\r
-Copyright (c) 2014 Samsung Electronics Co., Ltd.\r
-\r
-Licensed under the Apache License, Version 2.0 (the License);\r
-you may not use this file except in compliance with the License.\r
-You may obtain a copy of the License at\r
-\r
- http://www.apache.org/licenses/LICENSE-2.0\r
-\r
-Unless required by applicable law or agreed to in writing, software\r
-distributed under the License is distributed on an "AS IS" BASIS,\r
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
-See the License for the specific language governing permissions and\r
-limitations under the License.\r
-\r
-Authors:\r
- Ran Wang <ran22.wang@samsung.com>\r
-\r
--->\r
-<html>\r
-<head>\r
-<title>HumanActivityGPSInfo_errorRange_attribute</title>\r
-<meta charset="utf-8"/>\r
-<script src="support/unitcommon.js"></script>\r
-<script src="support/humanactivitymonitor_common.js"></script>\r
-</head>\r
-<body>\r
-<div id="log"></div>\r
-<script>\r
-//==== TEST: HumanActivityGPSInfo_errorRange_attribute\r
-//==== LABEL Check if HumanActivityGPSInfo::errorRange exists, has type long, and is readonly\r
-//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityGPSInfo:errorRange A\r
-//==== SPEC_URL TBD\r
-//==== PRIORITY P1\r
-//==== ONLOAD_DELAY 9\r
-//==== TEST_CRITERIA AE AT ARO\r
-\r
-setup({timeout: 9000});\r
-\r
-var t = async_test(document.title, {timeout: 9000}), getHumanActivityDataSuccess, getHumanActivityDataError, humanActivityType = "GPS";\r
-\r
-t.step(function () {\r
- add_result_callback(function () {\r
- tizen.humanactivitymonitor.stop(humanActivityType);\r
- });\r
-\r
- getHumanActivityDataError = t.step_func(function (error) {\r
- assert_unreached("getHumanActivityDataError is called" + error.name);\r
- });\r
-\r
- getHumanActivityDataSuccess = t.step_func(function (gpsInfo) {\r
- check_readonly(gpsInfo, "errorRange", gpsInfo.errorRange, "long", gpsInfo.errorRange + 10);\r
- t.done();\r
- });\r
-\r
- tizen.humanactivitymonitor.start(humanActivityType);\r
- tizen.humanactivitymonitor.getHumanActivityData(humanActivityType, getHumanActivityDataSuccess, getHumanActivityDataError);\r
-});\r
-\r
-</script>\r
-</body>\r
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>\r
-<!--\r
-Copyright (c) 2014 Samsung Electronics Co., Ltd.\r
-\r
-Licensed under the Apache License, Version 2.0 (the License);\r
-you may not use this file except in compliance with the License.\r
-You may obtain a copy of the License at\r
-\r
- http://www.apache.org/licenses/LICENSE-2.0\r
-\r
-Unless required by applicable law or agreed to in writing, software\r
-distributed under the License is distributed on an "AS IS" BASIS,\r
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
-See the License for the specific language governing permissions and\r
-limitations under the License.\r
-\r
-Authors:\r
- Ran Wang <ran22.wang@samsung.com>\r
-\r
--->\r
-<html>\r
-<head>\r
-<title>HumanActivityGPSInfo_latitude_attribute</title>\r
-<meta charset="utf-8"/>\r
-<script src="support/unitcommon.js"></script>\r
-<script src="support/humanactivitymonitor_common.js"></script>\r
-</head>\r
-<body>\r
-<div id="log"></div>\r
-<script>\r
-//==== TEST: HumanActivityGPSInfo_latitude_attribute\r
-//==== LABEL Check if HumanActivityGPSInfo::latitude exists, has type double, and is readonly\r
-//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityGPSInfo:latitude A\r
-//==== SPEC_URL TBD\r
-//==== PRIORITY P1\r
-//==== ONLOAD_DELAY 9\r
-//==== TEST_CRITERIA AE AT ARO\r
-\r
-setup({timeout: 9000});\r
-\r
-var t = async_test(document.title, {timeout: 9000}), getHumanActivityDataSuccess, getHumanActivityDataError, humanActivityType = "GPS";\r
-\r
-t.step(function () {\r
- add_result_callback(function () {\r
- tizen.humanactivitymonitor.stop(humanActivityType);\r
- });\r
-\r
- getHumanActivityDataError = t.step_func(function (error) {\r
- assert_unreached("getHumanActivityDataError is called" + error.name);\r
- });\r
-\r
- getHumanActivityDataSuccess = t.step_func(function (gpsInfo) {\r
- check_readonly(gpsInfo, "latitude", gpsInfo.latitude, "double", gpsInfo.latitude + 10);\r
- t.done();\r
- });\r
-\r
- tizen.humanactivitymonitor.start(humanActivityType);\r
- tizen.humanactivitymonitor.getHumanActivityData(humanActivityType, getHumanActivityDataSuccess, getHumanActivityDataError);\r
-});\r
-\r
-</script>\r
-</body>\r
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>\r
-<!--\r
-Copyright (c) 2014 Samsung Electronics Co., Ltd.\r
-\r
-Licensed under the Apache License, Version 2.0 (the License);\r
-you may not use this file except in compliance with the License.\r
-You may obtain a copy of the License at\r
-\r
- http://www.apache.org/licenses/LICENSE-2.0\r
-\r
-Unless required by applicable law or agreed to in writing, software\r
-distributed under the License is distributed on an "AS IS" BASIS,\r
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
-See the License for the specific language governing permissions and\r
-limitations under the License.\r
-\r
-Authors:\r
- Ran Wang <ran22.wang@samsung.com>\r
-\r
--->\r
-<html>\r
-<head>\r
-<title>HumanActivityGPSInfo_longitude_attribute</title>\r
-<meta charset="utf-8"/>\r
-<script src="support/unitcommon.js"></script>\r
-<script src="support/humanactivitymonitor_common.js"></script>\r
-</head>\r
-<body>\r
-<div id="log"></div>\r
-<script>\r
-//==== TEST: HumanActivityGPSInfo_longitude_attribute\r
-//==== LABEL Check if HumanActivityGPSInfo::longitude exists, has type double, and is readonly\r
-//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityGPSInfo:longitude A\r
-//==== SPEC_URL TBD\r
-//==== PRIORITY P1\r
-//==== ONLOAD_DELAY 9\r
-//==== TEST_CRITERIA AE AT ARO\r
-\r
-setup({timeout: 9000});\r
-\r
-var t = async_test(document.title, {timeout: 9000}), getHumanActivityDataSuccess, getHumanActivityDataError, humanActivityType = "GPS";\r
-\r
-t.step(function () {\r
- add_result_callback(function () {\r
- tizen.humanactivitymonitor.stop(humanActivityType);\r
- });\r
-\r
- getHumanActivityDataError = t.step_func(function (error) {\r
- assert_unreached("getHumanActivityDataError is called" + error.name);\r
- });\r
-\r
- getHumanActivityDataSuccess = t.step_func(function (gpsInfo) {\r
- check_readonly(gpsInfo, "longitude", gpsInfo.longitude, "double", gpsInfo.longitude + 10);\r
- t.done();\r
- });\r
-\r
- tizen.humanactivitymonitor.start(humanActivityType);\r
- tizen.humanactivitymonitor.getHumanActivityData(humanActivityType, getHumanActivityDataSuccess, getHumanActivityDataError);\r
-});\r
-\r
-</script>\r
-</body>\r
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2014 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:
- Wei Zhang <wei625.zhang@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityGPSInfo_notexist</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityGPSInfo_notexist
-//==== LABEL Check if interface HumanActivityGPSInfo exists, it should not
-//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityGPSInfo:HumanActivityGPSInfo U
-//==== SPEC_URL TBD
-//==== PRIORITY P3
-//==== TEST_CRITERIA NIO
-
-test(function () {
- check_no_interface_object("HumanActivityGPSInfo");
-}, document.title);
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>\r
-<!--\r
-Copyright (c) 2014 Samsung Electronics Co., Ltd.\r
-\r
-Licensed under the Apache License, Version 2.0 (the License);\r
-you may not use this file except in compliance with the License.\r
-You may obtain a copy of the License at\r
-\r
- http://www.apache.org/licenses/LICENSE-2.0\r
-\r
-Unless required by applicable law or agreed to in writing, software\r
-distributed under the License is distributed on an "AS IS" BASIS,\r
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
-See the License for the specific language governing permissions and\r
-limitations under the License.\r
-\r
-Authors:\r
- Ran Wang <ran22.wang@samsung.com>\r
-\r
--->\r
-<html>\r
-<head>\r
-<title>HumanActivityGPSInfo_speed_attribute</title>\r
-<meta charset="utf-8"/>\r
-<script src="support/unitcommon.js"></script>\r
-<script src="support/humanactivitymonitor_common.js"></script>\r
-</head>\r
-<body>\r
-<div id="log"></div>\r
-<script>\r
-//==== TEST: HumanActivityGPSInfo_speed_attribute\r
-//==== LABEL Check if HumanActivityGPSInfo::speed exists, has type double, and is readonly\r
-//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityGPSInfo:speed A\r
-//==== SPEC_URL TBD\r
-//==== PRIORITY P1\r
-//==== ONLOAD_DELAY 9\r
-//==== TEST_CRITERIA AE AT ARO\r
-\r
-setup({timeout: 9000});\r
-\r
-var t = async_test(document.title, {timeout: 9000}), getHumanActivityDataSuccess, getHumanActivityDataError, humanActivityType = "GPS";\r
-\r
-t.step(function () {\r
- add_result_callback(function () {\r
- tizen.humanactivitymonitor.stop(humanActivityType);\r
- });\r
-\r
- getHumanActivityDataError = t.step_func(function (error) {\r
- assert_unreached("getHumanActivityDataError is called" + error.name);\r
- });\r
-\r
- getHumanActivityDataSuccess = t.step_func(function (gpsInfo) {\r
- check_readonly(gpsInfo, "speed", gpsInfo.speed, "double", gpsInfo.speed + 10);\r
- t.done();\r
- });\r
-\r
- tizen.humanactivitymonitor.start(humanActivityType);\r
- tizen.humanactivitymonitor.getHumanActivityData(humanActivityType, getHumanActivityDataSuccess, getHumanActivityDataError);\r
-});\r
-\r
-</script>\r
-</body>\r
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>\r
-<!--\r
-Copyright (c) 2014 Samsung Electronics Co., Ltd.\r
-\r
-Licensed under the Apache License, Version 2.0 (the License);\r
-you may not use this file except in compliance with the License.\r
-You may obtain a copy of the License at\r
-\r
- http://www.apache.org/licenses/LICENSE-2.0\r
-\r
-Unless required by applicable law or agreed to in writing, software\r
-distributed under the License is distributed on an "AS IS" BASIS,\r
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
-See the License for the specific language governing permissions and\r
-limitations under the License.\r
-\r
-Authors:\r
- Ran Wang <ran22.wang@samsung.com>\r
-\r
--->\r
-<html>\r
-<head>\r
-<title>HumanActivityGPSInfo_timestamp_attribute</title>\r
-<meta charset="utf-8"/>\r
-<script src="support/unitcommon.js"></script>\r
-<script src="support/humanactivitymonitor_common.js"></script>\r
-</head>\r
-<body>\r
-<div id="log"></div>\r
-<script>\r
-//==== TEST: HumanActivityGPSInfo_timestamp_attribute\r
-//==== LABEL Check if HumanActivityGPSInfo::speed exists, has type long, and is readonly\r
-//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityGPSInfo:speed A\r
-//==== SPEC_URL TBD\r
-//==== PRIORITY P1\r
-//==== ONLOAD_DELAY 9\r
-//==== TEST_CRITERIA AE AT ARO\r
-\r
-setup({timeout: 9000});\r
-\r
-var t = async_test(document.title, {timeout: 9000}), getHumanActivityDataSuccess, getHumanActivityDataError, humanActivityType = "GPS";\r
-\r
-t.step(function () {\r
- add_result_callback(function () {\r
- tizen.humanactivitymonitor.stop(humanActivityType);\r
- });\r
-\r
- getHumanActivityDataError = t.step_func(function (error) {\r
- assert_unreached("getHumanActivityDataError is called" + error.name);\r
- });\r
-\r
- getHumanActivityDataSuccess = t.step_func(function (gpsInfo) {\r
- check_readonly(gpsInfo, "timestamp", gpsInfo.timestamp, "long", gpsInfo.timestamp + 10);\r
- t.done();\r
- });\r
-\r
- tizen.humanactivitymonitor.start(humanActivityType);\r
- tizen.humanactivitymonitor.getHumanActivityData(humanActivityType, getHumanActivityDataSuccess, getHumanActivityDataError);\r
-});\r
-\r
-</script>\r
-</body>\r
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>\r
-<!--\r
-Copyright (c) 2014 Samsung Electronics Co., Ltd.\r
-\r
-Licensed under the Apache License, Version 2.0 (the License);\r
-you may not use this file except in compliance with the License.\r
-You may obtain a copy of the License at\r
-\r
- http://www.apache.org/licenses/LICENSE-2.0\r
-\r
-Unless required by applicable law or agreed to in writing, software\r
-distributed under the License is distributed on an "AS IS" BASIS,\r
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
-See the License for the specific language governing permissions and\r
-limitations under the License.\r
-\r
-Authors:\r
- Ran Wang <ran22.wang@samsung.com>\r
-\r
--->\r
-<html>\r
-<head>\r
-<title>HumanActivityHRMData_heartRate_attribute</title>\r
-<meta charset="utf-8"/>\r
-<script src="support/unitcommon.js"></script>\r
-<script src="support/humanactivitymonitor_common.js"></script>\r
-</head>\r
-<body>\r
-<div id="log"></div>\r
-<script>\r
-//==== TEST: HumanActivityHRMData_heartRate_attribute\r
-//==== LABEL Check if HumanActivityHRMData::heartRate exists, has type long, and is readonly\r
-//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityGPSInfo:heartRate A\r
-//==== SPEC_URL TBD\r
-//==== PRIORITY P1\r
-//==== ONLOAD_DELAY 9\r
-//==== TEST_CRITERIA AE AT ARO\r
-\r
-setup({timeout: 9000});\r
-\r
-var t = async_test(document.title, {timeout: 9000}), getHumanActivityDataSuccess, getHumanActivityDataError, humanActivityType = "HRM";\r
-\r
-t.step(function () {\r
- add_result_callback(function () {\r
- tizen.humanactivitymonitor.stop(humanActivityType);\r
- });\r
-\r
- getHumanActivityDataError = t.step_func(function (error) {\r
- assert_unreached("getHumanActivityDataError is called" + error.name);\r
- });\r
-\r
- getHumanActivityDataSuccess = t.step_func(function (hrmInfo) {\r
- check_readonly(hrmInfo, "heartRate", hrmInfo.heartRate, "long", hrmInfo.heartRate + 10);\r
- t.done();\r
- });\r
-\r
- tizen.humanactivitymonitor.start(humanActivityType);\r
- setTimeout(function(){ tizen.humanactivitymonitor.getHumanActivityData(humanActivityType, getHumanActivityDataSuccess, getHumanActivityDataError); }, 1000);\r
- \r
-});\r
-\r
-</script>\r
-</body>\r
-</html>\r
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2014 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:
- Wei Zhang <wei625.zhang@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityHRMData_notexist</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityHRMData_notexist
-//==== LABEL Check if interface HumanActivityHRMData exists, it should not
-//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityHRMData:HumanActivityHRMData U
-//==== SPEC_URL TBD
-//==== PRIORITY P3
-//==== TEST_CRITERIA NIO
-
-test(function () {
- check_no_interface_object("HumanActivityHRMData");
-}, document.title);
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>\r
-<!--\r
-Copyright (c) 2014 Samsung Electronics Co., Ltd.\r
-\r
-Licensed under the Apache License, Version 2.0 (the License);\r
-you may not use this file except in compliance with the License.\r
-You may obtain a copy of the License at\r
-\r
- http://www.apache.org/licenses/LICENSE-2.0\r
-\r
-Unless required by applicable law or agreed to in writing, software\r
-distributed under the License is distributed on an "AS IS" BASIS,\r
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
-See the License for the specific language governing permissions and\r
-limitations under the License.\r
-\r
-Authors:\r
- Ran Wang <ran22.wang@samsung.com>\r
-\r
--->\r
-<html>\r
-<head>\r
-<title>HumanActivityHRMData_rRInterval_attribute</title>\r
-<meta charset="utf-8"/>\r
-<script src="support/unitcommon.js"></script>\r
-<script src="support/humanactivitymonitor_common.js"></script>\r
-</head>\r
-<body>\r
-<div id="log"></div>\r
-<script>\r
-//==== TEST: HumanActivityHRMData_rRInterval_attribute\r
-//==== LABEL Check if HumanActivityHRMData::rRInterval exists, has type long, and is readonly\r
-//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityGPSInfo:rRInterval A\r
-//==== SPEC_URL TBD\r
-//==== PRIORITY P1\r
-//==== ONLOAD_DELAY 9\r
-//==== TEST_CRITERIA AE AT ARO\r
-\r
-setup({timeout: 9000});\r
-\r
-var t = async_test(document.title, {timeout: 9000}), getHumanActivityDataSuccess, getHumanActivityDataError, humanActivityType = "HRM";\r
-\r
-t.step(function () {\r
- add_result_callback(function () {\r
- tizen.humanactivitymonitor.stop(humanActivityType);\r
- });\r
-\r
- getHumanActivityDataError = t.step_func(function (error) {\r
- assert_unreached("getHumanActivityDataError is called" + error.name);\r
- });\r
-\r
- getHumanActivityDataSuccess = t.step_func(function (hrmInfo) {\r
- check_readonly(hrmInfo, "rRInterval", hrmInfo.rRInterval, "long", hrmInfo.rRInterval + 10);\r
- t.done();\r
- });\r
-\r
- tizen.humanactivitymonitor.start(humanActivityType);\r
- setTimeout(function(){ tizen.humanactivitymonitor.getHumanActivityData(humanActivityType, getHumanActivityDataSuccess, getHumanActivityDataError); }, 1000);\r
- \r
-});\r
-\r
-</script>\r
-</body>\r
-</html>\r
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2014 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:
- Saud Mohammad Mostafa <saud.mm@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityMonitorManagerObject_notexist</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityMonitorManagerObject_notexist
-//==== LABEL Check if interface HumanActivityMonitorManagerObject exists, it should not
-//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityMonitorManagerObject U
-//==== SPEC_URL TBD
-//==== PRIORITY P3
-//==== TEST_CRITERIA NIO
-
-test(function () {
- check_no_interface_object("HumanActivityMonitorManagerObject");
-}, document.title);
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2016 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:
- Hyukin Kwon <hyukin.kwon@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityMonitorManager_addActivityRecognitionListener_STATIONARY</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-<script src="support/humanactivitymonitor_common.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityMonitorManager_addActivityRecognitionListener_STATIONARY
-//==== LABEL Check if the method addActivityRecognitionListener of HumanActivityMonitorManager returns proper value
-//==== SPEC Tizen Web API:HumanActivityMonitor:HumanActivityMonitorManager:addActivityRecognitionListener M
-//==== SPEC_URL TBD
-//==== PRIORITY P1
-//==== EXECUTION_TYPE manual
-//==== STEP Press run button, then keep the device stationary
-//==== EXPECT Pass
-//==== TEST_CRITERIA MR MMINA CBT
-//==== ONLOAD_DELAY 60
-
-setup({"timeout": 60000});
-
-var t = async_test(document.title, {"timeout": 60000}), returnedValue = null, humanActivityType = "STATIONARY", listener;
-
-t.step(function () {
- add_result_callback(function () {
- tizen.humanactivitymonitor.removeActivityRecognitionListener(returnedValue);
- });
-
- listener = t.step_func(function (info) {
- assert_type(info, "object", "info is not an object");
- assert_own_property(info, "type", "info does not have type property");
- assert_equals(info.type, "STATIONARY", "Expected STATIONARY, but got " + info.type);
- assert_own_property(info, "timestamp", "info does not have timestamp property");
- assert_type(info.timestamp, "long", "info.timestamp is not long type");
- assert_in_array(info.accuracy, ["LOW", "MEDIUM", "HIGH"], "Incorrect value of type");
- assert_type(info, "object", "info is not an object");
- t.done();
- });
-
- returnedValue = tizen.humanactivitymonitor.addActivityRecognitionListener(humanActivityType, listener);
- assert_type(returnedValue, "long", "Incorrect type returned from addActivityRecognitionListener");
- alert("Keep the device stationary after pressing OK.");
-});
-</script>
-</body>
-</html>
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2016 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:
- Hyukin Kwon <hyukin.kwon@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityMonitorManager_addActivityRecognitionListener_WALKING</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-<script src="support/humanactivitymonitor_common.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityMonitorManager_addActivityRecognitionListener_WALKING
-//==== LABEL Check if the method addActivityRecognitionListener of HumanActivityMonitorManager returns proper value
-//==== SPEC Tizen Web API:HumanActivityMonitor:HumanActivityMonitorManager:addActivityRecognitionListener M
-//==== SPEC_URL TBD
-//==== PRIORITY P1
-//==== EXECUTION_TYPE manual
-//==== STEP Press run button. Pretend walking with the device.
-//==== EXPECT Pass
-//==== TEST_CRITERIA MR MMINA CBT
-//==== ONLOAD_DELAY 60
-
-setup({"timeout": 60000});
-
-var t = async_test(document.title, {"timeout": 60000}), returnedValue = null, humanActivityType = "WALKING", listener;
-
-t.step(function () {
- add_result_callback(function () {
- tizen.humanactivitymonitor.removeActivityRecognitionListener(returnedValue);
- });
-
- listener = t.step_func(function (info) {
- assert_type(info, "object", "info is not an object");
- assert_own_property(info, "type", "info does not have type property");
- assert_equals(info.type, "WALKING", "Expected WALKING, but got " + info.type);
- assert_own_property(info, "timestamp", "info does not have timestamp property");
- assert_type(info.timestamp, "long", "info.timestamp is not long type");
- assert_in_array(info.accuracy, ["LOW", "MEDIUM", "HIGH"], "Incorrect value of type");
- assert_type(info, "object", "info is not an object");
- t.done();
- });
-
- returnedValue = tizen.humanactivitymonitor.addActivityRecognitionListener(humanActivityType, listener);
- assert_type(returnedValue, "long", "Incorrect type returned from addActivityRecognitionListener");
- alert("Grab the device, and pretend walking after pressing OK.");
-});
-</script>
-</body>
-</html>
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2016 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:
- Hyukin Kwon <hyukin.kwon@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityMonitorManager_addActivityRecognitionListener_errorCallback_TypeMismatch</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-<script src="support/humanactivitymonitor_common.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityMonitorManager_addActivityRecognitionListener_errorCallback_TypeMismatch
-//==== LABEL Check if the method addActivityRecognitionListener of HumanActivityMonitorManager throws TypeMismatchError when invalid type value is assigned for errorCallback parameter
-//==== SPEC Tizen Web API:HumanActivityMonitor:HumanActivityMonitorManager:addActivityRecognitionListener M
-//==== SPEC_URL TBD
-//==== PRIORITY P2
-//==== TEST_CRITERIA MC
-
-test(function () {
- var humanActivityType = "STATIONARY", listener, errorCallback, conversionTable, exceptionName;
- listener = function () {};
- conversionTable = getTypeConversionExceptions("functionObject", false);
- for (i = 0; i < conversionTable.length; i++) {
- listener = conversionTable[i][0];
- exceptionName = conversionTable[i][1];
- assert_throws(TYPE_MISMATCH_EXCEPTION, function () {
- tizen.humanactivitymonitor.addActivityRecognitionListener(humanActivityType, listener, errorCallback);
- }, "TypeMismatchError should be thrown - given incorrect listener");
- }
-}, document.title);
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2016 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:
- Hyukin Kwon <hyukin.kwon@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityMonitorManager_addActivityRecognitionListener_exist</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-<script src="support/humanactivitymonitor_common.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityMonitorManager_addActivityRecognitionListener_exist
-//==== LABEL Check if the method addActivityRecognitionListener of HumanActivityMonitorManager exist
-//==== SPEC Tizen Web API:HumanActivityMonitor:HumanActivityMonitorManager:addActivityRecognitionListener M
-//==== SPEC_URL TBD
-//==== PRIORITY P1
-//==== TEST_CRITERIA ME
-
-test(function () {
- check_method_exists(tizen.humanactivitymonitor, "addActivityRecognitionListener");
-}, document.title);
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2016 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:
- Hyukin Kwon <hyukin.kwon@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityMonitorManager_addActivityRecognitionListener_type_TypeMismatch</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-<script src="support/humanactivitymonitor_common.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityMonitorManager_addActivityRecognitionListener_type_TypeMismatch
-//==== LABEL Check if the method addActivityRecognitionListener of HumanActivityMonitorManager throws TypeMismatchError when invalid value is assigned for type parameter
-//==== SPEC Tizen Web API:HumanActivityMonitor:HumanActivityMonitorManager:addActivityRecognitionListener M
-//==== SPEC_URL TBD
-//==== PRIORITY P2
-//==== TEST_CRITERIA MC MTCB MTL
-
-test(function () {
- var humanActivityType = "STATIONARY", listener, conversionTable, exceptionName;
- conversionTable = getTypeConversionExceptions("functionObject", false);
- for (i = 0; i < conversionTable.length; i++) {
- listener = conversionTable[i][0];
- exceptionName = conversionTable[i][1];
- assert_throws(TYPE_MISMATCH_EXCEPTION, function () {
- tizen.humanactivitymonitor.addActivityRecognitionListener(humanActivityType, listener);
- }, "TypeMismatchError should be thrown - given incorrect listener");
- }
-}, document.title);
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2016 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:
- Hyukin Kwon <hyukin.kwon@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityMonitorManager_addActivityRecognitionListener_misarg</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-<script src="support/humanactivitymonitor_common.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityMonitorManager_addActivityRecognitionListener_misarg
-//==== LABEL Check if the method addActivityRecognitionListener of HumanActivityMonitorManager throws TypeMismatchError when no param assigned
-//==== SPEC Tizen Web API:HumanActivityMonitor:HumanActivityMonitorManager:addActivityRecognitionListener M
-//==== SPEC_URL TBD
-//==== PRIORITY P2
-//==== TEST_CRITERIA MMA
-
-test(function () {
- assert_throws(TYPE_MISMATCH_EXCEPTION, function () {
- tizen.humanactivitymonitor.addActivityRecognitionListener();
- }, TYPE_MISMATCH_EXCEPTION + " should be thrown when no argument assigned");
-}, document.title);
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2016 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:
- Hyukin Kwon <hyukin.kwon@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityMonitorManager_addActivityRecognitionListener_listener_TypeMismatch</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-<script src="support/humanactivitymonitor_common.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityMonitorManager_addActivityRecognitionListener_listener_TypeMismatch
-//==== LABEL Check if the method addActivityRecognitionListener of HumanActivityMonitorManager throws TypeMismatchError when invalid type value is assigned for listener parameter
-//==== SPEC Tizen Web API:HumanActivityMonitor:HumanActivityMonitorManager:addActivityRecognitionListener M
-//==== SPEC_URL TBD
-//==== PRIORITY P2
-//==== TEST_CRITERIA MC
-
-test(function () {
- var humanActivityType = "INVALID", listener;
- listener = function () {};
- assert_throws(TYPE_MISMATCH_EXCEPTION, function () {
- tizen.humanactivitymonitor.addActivityRecognitionListener(humanActivityType, listener);
- });
-}, document.title);
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2016 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:
- Hyukin Kwon <hyukin.kwon@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityMonitorManager_addActivityRecognitionListener_with_errorCallback</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-<script src="support/humanactivitymonitor_common.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityMonitorManager_addActivityRecognitionListener_with_errorCallback
-//==== LABEL Check if the method addActivityRecognitionListener of HumanActivityMonitorManager returns proper value with errorcallback assigned
-//==== SPEC Tizen Web API:HumanActivityMonitor:HumanActivityMonitorManager:addActivityRecognitionListener M
-//==== SPEC_URL TBD
-//==== PRIORITY P1
-//==== EXECUTION_TYPE manual
-//==== STEP Press run button, then keep the device stationary
-//==== EXPECT Pass
-//==== TEST_CRITERIA MR MOA CBT
-//==== ONLOAD_DELAY 60
-
-setup({"timeout": 60000});
-
-var t = async_test(document.title, {"timeout": 60000}), returnedValue = null, humanActivityType = "STATIONARY", listener, errorCallback;
-
-t.step(function () {
- add_result_callback(function () {
- tizen.humanactivitymonitor.removeActivityRecognitionListener(returnedValue);
- });
-
- errorCallback = t.step_func(function (error) {
- assert_unreached("Error callback should not be invoked, but was invoked with the error " + error.name);
- });
-
- listener = t.step_func(function (info) {
- assert_type(info, "object", "info is not an object");
- assert_own_property(info, "type", "info does not have type property");
- assert_equals(info.type, "STATIONARY", "Expected STATIONARY, but got " + info.type);
- assert_own_property(info, "timestamp", "info does not have timestamp property");
- assert_type(info.timestamp, "long", "info.timestamp is not long type");
- assert_in_array(info.accuracy, ["LOW", "MEDIUM", "HIGH"], "Incorrect value of type");
- assert_type(info, "object", "info is not an object");
- t.done();
- });
-
- returnedValue = tizen.humanactivitymonitor.addActivityRecognitionListener(humanActivityType, listener, errorCallback);
- assert_type(returnedValue, "long", "Incorrect type returned from addActivityRecognitionListener");
- alert("Keep the device stationary after pressing OK.");
-});
-</script>
-</body>
-</html>
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2016 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:
- Hyukin Kwon <hyukin.kwon@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityMonitorManager_addActivityRecognitionListener_with_errorCallback_null</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-<script src="support/humanactivitymonitor_common.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityMonitorManager_addActivityRecognitionListener_with_errorCallback_null
-//==== LABEL Check if the method addActivityRecognitionListener of HumanActivityMonitorManager returns proper value with errorcallback null assigned
-//==== SPEC Tizen Web API:HumanActivityMonitor:HumanActivityMonitorManager:addActivityRecognitionListener M
-//==== SPEC_URL TBD
-//==== PRIORITY P1
-//==== EXECUTION_TYPE manual
-//==== STEP Press run button, then keep the device stationary
-//==== EXPECT Pass
-//==== TEST_CRITERIA MR MMINA CBT
-//==== ONLOAD_DELAY 60
-
-setup({"timeout": 60000});
-
-var t = async_test(document.title, {"timeout": 60000}), returnedValue = null, humanActivityType = "STATIONARY", listener;
-
-t.step(function () {
- add_result_callback(function () {
- tizen.humanactivitymonitor.removeActivityRecognitionListener(returnedValue);
- });
-
- listener = t.step_func(function (info) {
- assert_type(info, "object", "info is not an object");
- assert_own_property(info, "type", "info does not have type property");
- assert_equals(info.type, "STATIONARY", "Expected STATIONARY, but got " + info.type);
- assert_own_property(info, "timestamp", "info does not have timestamp property");
- assert_type(info.timestamp, "long", "info.timestamp is not long type");
- assert_in_array(info.accuracy, ["LOW", "MEDIUM", "HIGH"], "Incorrect value of type");
- assert_type(info, "object", "info is not an object");
- t.done();
- });
-
- returnedValue = tizen.humanactivitymonitor.addActivityRecognitionListener(humanActivityType, listener, null);
- assert_type(returnedValue, "long", "Incorrect type returned from addActivityRecognitionListener");
- alert("Keep the device stationary after pressing OK.");
-});
-</script>
-</body>
-</html>
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2014 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:
- Saud Mohammad Mostafa <saud.mm@samsung.com>
- Saleh Enam Shohag <saleh.enam@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityMonitorManager_extend</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityMonitorManager_extend
-//==== LABEL Check if HumanActivityMonitorManager is extendable
-//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityMonitorManager:HumanActivityMonitorManager U
-//==== SPEC_URL TBD
-//==== PRIORITY P3
-//==== TEST_CRITERIA OBX
-
-test(function () {
- check_extensibility(tizen.humanactivitymonitor);
-}, document.title);
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2014 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:
- Saud Mohammad Mostafa <saud.mm@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityMonitorManager_getHumanActivityData</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-<script src="support/humanactivitymonitor_common.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityMonitorManager_getHumanActivityData
-//==== LABEL Check if method getHumanActivityData of HumanActivityMonitorManager returns properly value
-//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityMonitorManager:getHumanActivityData M
-//==== SPEC_URL TBD
-//==== PRIORITY P1
-//==== TEST_CRITERIA MR MMINA
-
-test(function () {
- var returnedValue = null, humanActivityType = "PEDOMETER";
-
- add_result_callback(function () {
- tizen.humanactivitymonitor.stop(humanActivityType);
- });
-
- try {
- returnedValue = tizen.humanactivitymonitor.start(humanActivityType);
- assert_equals(returnedValue, undefined, "Incorrect returned value");
- returnedValue = tizen.humanactivitymonitor.getHumanActivityData(humanActivityType, function () {});
- assert_equals(returnedValue, undefined, "Incorrect returned value");
- } catch (e) {
- if(e.name === NOT_SUPPORTED_EXCEPTION) {
- //do nothing here
- } else {
- assert_unreached("unexpected exception is thrown" + e.name + ", msg: " + e.message);
- }
- }
-}, document.title);
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2014 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:
- Saud Mohammad Mostafa <saud.mm@samsung.com>
- Saleh Enam Shohag <saleh.enam@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityMonitorManager_getHumanActivityData_errorCallback_TypeMismatch</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-<script src="support/humanactivitymonitor_common.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityMonitorManager_getHumanActivityData_errorCallback_TypeMismatch
-//==== LABEL Check if HumanActivityMonitorManager::getHumanActivityData() with incorrect errorCallback argument throws exception
-//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityMonitorManager:getHumanActivityData M
-//==== SPEC_URL TBD
-//==== PRIORITY P2
-//==== ONLOAD_DELAY 30
-//==== TEST_CRITERIA MC
-
-setup({timeout: 30000});
-
-var t = async_test(document.title, {timeout: 30000}), successCallback, errorCallback, conversionTable, exceptionName, i, humanActivityType;
-
-t.step(function () {
- add_result_callback(function () {
- tizen.humanactivitymonitor.stop(humanActivityType);
- });
-
- successCallback = t.step_func(function (humanActivityData) {
- assert_unreached("Should not be here.");
- });
-
- humanActivityType = "PEDOMETER";
- tizen.humanactivitymonitor.start(humanActivityType);
- conversionTable = getTypeConversionExceptions("functionObject", true);
- for (i = 0; i < conversionTable.length; i++) {
- errorCallback = conversionTable[i][0];
- exceptionName = conversionTable[i][1];
- assert_throws(TYPE_MISMATCH_EXCEPTION, function () {
- tizen.humanactivitymonitor.getHumanActivityData(humanActivityType, successCallback, errorCallback);
- }, " should be thrown - given incorrect errorCallback");
- }
- t.done();
-});
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2014 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:
- Saud Mohammad Mostafa <saud.mm@samsung.com>
- Saleh Enam Shohag <saleh.enam@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityMonitorManager_getHumanActivityData_errorCallback_invalid_cb</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityMonitorManager_getHumanActivityData_errorCallback_invalid_cb
-//==== LABEL Check if HumanActivityMonitorManager::getHumanActivityData() method throws exception when errorCallback is invalid
-//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityMonitorManager:getHumanActivityData M
-//==== SPEC_URL TBD
-//==== PRIORITY P2
-//==== ONLOAD_DELAY 30
-//==== TEST_CRITERIA MTCB
-
-setup({timeout: 30000});
-
-var t = async_test(document.title, {timeout: 30000}), successCallback, invalidCallback, humanActivityType = "PEDOMETER";
-
-t.step(function () {
- add_result_callback(function () {
- tizen.humanactivitymonitor.stop(humanActivityType);
- });
-
- successCallback = t.step_func(function (humanActivityData) {
- assert_unreached("Should not be here.");
- });
-
- invalidCallback = {
- onerror: t.step_func(function (error) {
- assert_unreached("Invalid errorCallback should not be invoked: " + error.name + ": " + error.message);
- })
- };
-
- tizen.humanactivitymonitor.start(humanActivityType);
- assert_throws(TYPE_MISMATCH_EXCEPTION, function () {
- tizen.humanactivitymonitor.getHumanActivityData(humanActivityType, successCallback, invalidCallback);
- }, TYPE_MISMATCH_EXCEPTION + "should be thrown");
- t.done();
-});
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2014 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:
- Saleh Enam Shohag <saleh.enam@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityMonitorManager_getHumanActivityData_errorCallback_invoked</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityMonitorManager_getHumanActivityData_errorCallback_invoked
-//==== LABEL Check exception in error callback of HumanActivityMonitorManager::getHumanActivityData() method
-//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityMonitorManager:getHumanActivityData M
-//==== SPEC_URL TBD
-//==== PRIORITY P2
-//==== ONLOAD_DELAY 30
-//==== TEST_CRITERIA MERRCB
-
-setup({timeout: 30000});
-
-var t = async_test(document.title, {timeout: 30000}), successCallback, errorCallback, humanActivityType = "PEDOMETER";
-
-t.step(function () {
- successCallback = t.step_func(function (humanActivityData) {
- assert_unreached("SuccessCallback should not invoke");
- });
-
- errorCallback = t.step_func(function (error) {
- assert_equals(error.name, "ServiceNotAvailableError", "Incorrect error name");
- assert_type(error.message, "string", "Error message is not string");
- assert_not_equals(error.message, "", "Error message is empty");
- t.done();
- });
-
- tizen.humanactivitymonitor.getHumanActivityData(humanActivityType, successCallback, errorCallback);
-});
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2014 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:
- Saud Mohammad Mostafa <saud.mm@samsung.com>
- Saleh Enam Shohag <saleh.enam@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityMonitorManager_getHumanActivityData_exist</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityMonitorManager_getHumanActivityData_exist
-//==== LABEL Check if HumanActivityMonitorManager::getHumanActivityData() method exists
-//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityMonitorManager:getHumanActivityData M
-//==== SPEC_URL TBD
-//==== PRIORITY P0
-//==== TEST_CRITERIA ME
-
-test(function () {
- check_method_exists(tizen.humanactivitymonitor, "getHumanActivityData");
-}, document.title);
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2014 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:
- Saud Mohammad Mostafa <saud.mm@samsung.com>
- Saleh Enam Shohag <saleh.enam@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityMonitorManager_getHumanActivityData_misarg</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityMonitorManager_getHumanActivityData_misarg
-//==== LABEL Check if HumanActivityMonitorManager::getHumanActivityData() throws exception when successCallback is missing
-//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityMonitorManager:getHumanActivityData M
-//==== SPEC_URL TBD
-//==== PRIORITY P2
-//==== TEST_CRITERIA MMA
-
-test(function () {
- var humanActivityType;
- add_result_callback(function () {
- tizen.humanactivitymonitor.stop(humanActivityType);
- });
-
- humanActivityType = "PEDOMETER";
- tizen.humanactivitymonitor.start(humanActivityType);
- assert_throws(TYPE_MISMATCH_EXCEPTION, function () {
- tizen.humanactivitymonitor.getHumanActivityData();
- }, TYPE_MISMATCH_EXCEPTION + " should be thrown");
-}, document.title);
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2014 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:
- Wei Zhang <wei625.zhang@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityMonitorManager_getHumanActivityData_stepStatus_NOT_MOVING</title>
-<script src="support/unitcommon.js"></script>
-<meta charset="utf-8"/>
-<script src="support/humanactivitymonitor_common.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityMonitorManager_getHumanActivityData_stepStatus_NOT_MOVING
-//==== LABEL Check if the specifies the pedometer user's current movement type is NOT_MOVING
-//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityMonitorManager:getHumanActivityData M
-//==== SPEC_URL TBD
-//==== PRIORITY P1
-//==== EXECUTION_TYPE manual
-//==== STEP Press run button, then keep the device stationary.
-//==== EXPECT Pass
-//==== ONLOAD_DELAY 30
-//==== TEST_CRITERIA MR MMINA
-
-setup({timeout: 30000});
-
-var t = async_test(document.title, {timeout: 30000}), successCallback, returnedValue = null, humanActivityType;
-
-t.step(function () {
- add_result_callback(function () {
- tizen.humanactivitymonitor.stop(humanActivityType);
- });
-
- successCallback = t.step_func(function (humanActivityData) {
- assert_equals(returnedValue, undefined, "Incorrect returned value");
- if (humanActivityData.stepStatus === "NOT_MOVING")
- t.done();
- });
-
- humanActivityType = "PEDOMETER";
- tizen.humanactivitymonitor.start(humanActivityType);
- setTimeout(function(){
- returnedValue = tizen.humanactivitymonitor.getHumanActivityData(humanActivityType, successCallback);}, 20000);
-});
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2014 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:
- Wei Zhang <wei625.zhang@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityMonitorManager_getHumanActivityData_stepStatus_RUNNING</title>
-<script src="support/unitcommon.js"></script>
-<meta charset="utf-8"/>
-<script src="support/humanactivitymonitor_common.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityMonitorManager_getHumanActivityData_stepStatus_RUNNING
-//==== LABEL Check if the specifies the pedometer user's current movement type is RUNNING
-//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityMonitorManager:getHumanActivityData M
-//==== SPEC_URL TBD
-//==== PRIORITY P1
-//==== EXECUTION_TYPE manual
-//==== STEP Press run button. Pretend running with the device.
-//==== EXPECT Pass
-//==== ONLOAD_DELAY 30
-//==== TEST_CRITERIA MR MMINA
-
-setup({timeout: 30000});
-
-var t = async_test(document.title, {timeout: 30000}), successCallback, returnedValue = null, humanActivityType;
-
-t.step(function () {
- add_result_callback(function () {
- tizen.humanactivitymonitor.stop(humanActivityType);
- });
-
- successCallback = t.step_func(function (humanActivityData) {
- assert_equals(returnedValue, undefined, "Incorrect returned value");
- if (humanActivityData.stepStatus === "RUNNING")
- t.done();
- });
-
- humanActivityType = "PEDOMETER";
- tizen.humanactivitymonitor.start(humanActivityType);
- setTimeout(function(){
- returnedValue = tizen.humanactivitymonitor.getHumanActivityData(humanActivityType, successCallback);}, 20000);
-});
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2014 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:
- Wei Zhang <wei625.zhang@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityMonitorManager_getHumanActivityData_stepStatus_UNKNOWN</title>
-<script src="support/unitcommon.js"></script>
-<meta charset="utf-8"/>
-<script src="support/humanactivitymonitor_common.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityMonitorManager_getHumanActivityData_stepStatus_UNKNOWN
-//==== LABEL Check if the specifies the pedometer user's current movement type is UNKNOWN
-//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityMonitorManager:getHumanActivityData M
-//==== SPEC_URL TBD
-//==== PRIORITY P1
-//==== EXECUTION_TYPE manual
-//==== STEP Press run button, press Power key to keep the device LCD off, then Pretend walking with the device.
-//==== EXPECT Pass
-//==== ONLOAD_DELAY 30
-//==== TEST_CRITERIA MR MMINA
-
-setup({timeout: 30000});
-
-var t = async_test(document.title, {timeout: 30000}), successCallback, returnedValue = null, humanActivityType;
-
-t.step(function () {
- add_result_callback(function () {
- tizen.humanactivitymonitor.stop(humanActivityType);
- });
-
- successCallback = t.step_func(function (humanActivityData) {
- assert_equals(returnedValue, undefined, "Incorrect returned value");
- if (humanActivityData.stepStatus === "UNKNOWN")
- t.done();
- });
-
- humanActivityType = "PEDOMETER";
- tizen.humanactivitymonitor.start(humanActivityType);
- setTimeout(function(){
- returnedValue = tizen.humanactivitymonitor.getHumanActivityData(humanActivityType, successCallback);}, 20000);
-});
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2014 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:
- Wei Zhang <wei625.zhang@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityMonitorManager_getHumanActivityData_stepStatus_WALKING</title>
-<script src="support/unitcommon.js"></script>
-<meta charset="utf-8"/>
-<script src="support/humanactivitymonitor_common.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityMonitorManager_getHumanActivityData_stepStatus_WALKING
-//==== LABEL Check if the specifies the pedometer user's current movement type is WALKING
-//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityMonitorManager:getHumanActivityData M
-//==== SPEC_URL TBD
-//==== PRIORITY P1
-//==== EXECUTION_TYPE manual
-//==== STEP Press run button. Pretend walking with the device.
-//==== EXPECT Pass
-//==== ONLOAD_DELAY 30
-//==== TEST_CRITERIA MR MMINA
-
-setup({timeout: 30000});
-
-var t = async_test(document.title, {timeout: 30000}), successCallback, returnedValue = null, humanActivityType;
-
-t.step(function () {
- add_result_callback(function () {
- tizen.humanactivitymonitor.stop(humanActivityType);
- });
-
- successCallback = t.step_func(function (humanActivityData) {
- assert_equals(returnedValue, undefined, "Incorrect returned value");
- if (humanActivityData.stepStatus === "WALKING")
- t.done();
- });
-
- humanActivityType = "PEDOMETER";
- tizen.humanactivitymonitor.start(humanActivityType);
- setTimeout(function(){
- returnedValue = tizen.humanactivitymonitor.getHumanActivityData(humanActivityType, successCallback);}, 20000);
-});
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2014 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:
- Saud Mohammad Mostafa <saud.mm@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityMonitorManager_getHumanActivityData_successCallback_TypeMismatch</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityMonitorManager_getHumanActivityData_successCallback_TypeMismatch
-//==== LABEL Check if HumanActivityMonitorManager::getHumanActivityData() with incorrect successCallback argument throws exception
-//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityMonitorManager:getHumanActivityData M
-//==== SPEC_URL TBD
-//==== PRIORITY P2
-//==== ONLOAD_DELAY 30
-//==== TEST_CRITERIA MC
-
-setup({timeout: 30000});
-
-var t = async_test(document.title, {timeout: 30000}), successCallback, conversionTable, exceptionName, i, humanActivityType;
-
-t.step(function () {
- add_result_callback(function () {
- tizen.humanactivitymonitor.stop(humanActivityType);
- });
-
- humanActivityType = "PEDOMETER";
- tizen.humanactivitymonitor.start(humanActivityType);
- conversionTable = getTypeConversionExceptions("functionObject", false);
- for (i = 0; i < conversionTable.length; i++) {
- successCallback = conversionTable[i][0];
- exceptionName = conversionTable[i][1];
- assert_throws(TYPE_MISMATCH_EXCEPTION, function () {
- tizen.humanactivitymonitor.getHumanActivityData(humanActivityType, successCallback);
- }, TYPE_MISMATCH_EXCEPTION + " should be thrown - given incorrect successCallback");
- }
- t.done();
-});
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2014 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:
- Saud Mohammad Mostafa <saud.mm@samsung.com>
- Saleh Enam Shohag <saleh.enam@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityMonitorManager_getHumanActivityData_successCallback_invalid_cb </title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityMonitorManager_getHumanActivityData_successCallback_invalid_cb
-//==== LABEL Check if HumanActivityMonitorManager::getHumanActivityData() method throws exception when successCallback is invalid
-//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityMonitorManager:getHumanActivityData M
-//==== SPEC_URL TBD
-//==== PRIORITY P2
-//==== ONLOAD_DELAY 30
-//==== TEST_CRITERIA MTCB
-
-setup({timeout: 30000});
-
-var t = async_test(document.title, {timeout: 30000}), invalidCallback, humanActivityType
-
-t.step(function () {
- add_result_callback(function () {
- tizen.humanactivitymonitor.stop(humanActivityType);
- });
-
- invalidCallback = {
- onsuccess: t.step_func(function (humanActivityData) {
- assert_unreached("Invalid success callback invoked");
- })
- };
-
- humanActivityType = "PEDOMETER";
- tizen.humanactivitymonitor.start(humanActivityType);
- assert_throws(TYPE_MISMATCH_EXCEPTION, function () {
- tizen.humanactivitymonitor.getHumanActivityData(humanActivityType, invalidCallback);
- }, TYPE_MISMATCH_EXCEPTION + "should be thrown");
- t.done();
-});
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2014 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:
- Saleh Enam Shohag <saleh.enam@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityMonitorManager_getHumanActivityData_type_HRM</title>
-<script src="support/unitcommon.js"></script>
-<meta charset="utf-8"/>
-<script src="support/humanactivitymonitor_common.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityMonitorManager_getHumanActivityData_type_HRM
-//==== LABEL Check if HumanActivityMonitorManager::getHumanActivityData() method works properly for HumanActivityType HRM
-//==== SPEC Tizen Web API:System:HumanActivityMonitor:HumanActivityMonitorManager:getHumanActivityData M
-//==== SPEC_URL TBD
-//==== PRIORITY P1
-//==== ONLOAD_DELAY 30
-//==== TEST_CRITERIA MR MMINA
-
-setup({timeout: 30000});
-
-var t = async_test(document.title, {timeout: 30000}), successCallback, returnedValue = null, humanActivityType;
-
-t.step(function () {
- add_result_callback(function () {
- tizen.humanactivitymonitor.stop(humanActivityType);
- });
-
- successCallback = t.step_func(function (humanActivityData) {
- assert_equals(returnedValue, undefined, "Incorrect returned value");
- t.done();
- });
-
- humanActivityType = "HRM";
- tizen.humanactivitymonitor.start(humanActivityType);
- setTimeout(function(){ returnedValue = tizen.humanactivitymonitor.getHumanActivityData(humanActivityType, successCallback); }, 3000);
-
-});
-
-</script>
-</body>
-</html>
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2014 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:
- Saud Mohammad Mostafa <saud.mm@samsung.com>
- Saleh Enam Shohag <saleh.enam@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityMonitorManager_getHumanActivityData_type_PEDOMETER</title>
-<script src="support/unitcommon.js"></script>
-<meta charset="utf-8"/>
-<script src="support/humanactivitymonitor_common.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityMonitorManager_getHumanActivityData_type_PEDOMETER
-//==== LABEL Check if HumanActivityMonitorManager::getHumanActivityData() method works properly
-//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityMonitorManager:getHumanActivityData M
-//==== SPEC_URL TBD
-//==== PRIORITY P1
-//==== ONLOAD_DELAY 30
-//==== TEST_CRITERIA MR MMINA
-
-setup({timeout: 30000});
-
-var t = async_test(document.title, {timeout: 30000}), successCallback, returnedValue = null, humanActivityType;
-
-t.step(function () {
- add_result_callback(function () {
- tizen.humanactivitymonitor.stop(humanActivityType);
- });
-
- successCallback = t.step_func(function (humanActivityData) {
- assert_equals(returnedValue, undefined, "Incorrect returned value");
- check_human_activity_pedometer_data(humanActivityData);
- t.done();
- });
-
- humanActivityType = "PEDOMETER";
- tizen.humanactivitymonitor.start(humanActivityType);
- returnedValue = tizen.humanactivitymonitor.getHumanActivityData(humanActivityType, successCallback);
-});
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2014 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:
- Saud Mohammad Mostafa <saud.mm@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityMonitorManager_getHumanActivityData_with_errorCallback</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-<script src="support/humanactivitymonitor_common.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityMonitorManager_getHumanActivityData_with_errorCallback
-//==== LABEL Check if HumanActivityMonitorManager::getHumanActivityData() method works properly with optional argument
-//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityMonitorManager:getHumanActivityData M
-//==== SPEC_URL TBD
-//==== PRIORITY P1
-//==== ONLOAD_DELAY 30
-//==== TEST_CRITERIA MR MOA
-
-setup({timeout: 30000});
-
-var t = async_test(document.title, {timeout: 30000}), successCallback, errorCallback, returnedValue = null, humanActivityType;
-
-t.step(function () {
- add_result_callback(function () {
- tizen.humanactivitymonitor.stop(humanActivityType);
- });
-
- successCallback = t.step_func(function (humanActivityData) {
- assert_equals(returnedValue, undefined, "Incorrect returned value");
- check_human_activity_pedometer_data(humanActivityData);
- t.done();
- });
-
- errorCallback = t.step_func(function (error) {
- assert_unreached("error callback invoked: name: " + error.name + ", msg: " + error.message);
- });
- humanActivityType = "PEDOMETER";
- tizen.humanactivitymonitor.start(humanActivityType);
- returnedValue = tizen.humanactivitymonitor.getHumanActivityData(humanActivityType, successCallback, errorCallback);
-});
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2014 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:
- Saud Mohammad Mostafa <saud.mm@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityMonitorManager_in_tizen</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityMonitorManager_in_tizen
-//==== LABEL Check if humanactivitymonitor exists in tizen
-//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityMonitorManager:HumanActivityMonitorManager U
-//==== SPEC_URL TBD
-//==== PRIORITY P3
-//==== TEST_CRITERIA OBME
-
-test(function () {
- assert_true("humanactivitymonitor" in tizen, "No humanactivitymonitor in tizen");
- check_readonly(tizen, "humanactivitymonitor", tizen.humanactivitymonitor, "object", "dummyValue");
-}, document.title);
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2014 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:
- Saud Mohammad Mostafa <saud.mm@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityMonitorManager_notexist</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityMonitorManager_notexist
-//==== LABEL Check if interface HumanActivityMonitorManager exists, it should not
-//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityMonitorManager:HumanActivityMonitorManager U
-//==== SPEC_URL TBD
-//==== PRIORITY P3
-//==== TEST_CRITERIA NIO
-
-test(function () {
- check_no_interface_object("HumanActivityMonitorManager");
-}, document.title);
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2016 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:
- Xiaoyan Qian <xy.qian@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityMonitorManager_readRecorderData_NotSupportedError</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityMonitorManager_readRecorderData_NotSupportedError
-//==== LABEL Check if readRecorderData throw NotSupportedError called with not supported human activity recorder type
-//==== SPEC Tizen Web API:System:HumanActivityMonitor:HumanActivityMonitorManager:readRecorderData M
-//==== SPEC_URL TBD
-//==== PRIORITY P2
-//==== TEST_CRITERIA MC
-
-setup({timeout: 30000});
-
-var t = async_test(document.title, {timeout: 30000}), successCallback, date = new Date(), endTime = date.getTime(), startTime = date.setDate(date.getDate() - 1),
- query = {
- startTime: startTime/1000,
- endTime: endTime/1000,
- interval: 1440
- };
-
-t.step(function () {
- successCallback = t.step_func(function (humanactivitydata) {
- assert_unreached("success callback should not be invoked");
- });
-
- if (!tizen.systeminfo.getCapability("http://tizen.org/feature/sensor.pedometer")) {
- assert_throws(NOT_SUPPORTED_EXCEPTION, function () {
- tizen.humanactivitymonitor.readRecorderData("PEDOMETER", query, successCallback);
- }, "NotSupportedError exception should throw");
- }
- if (!tizen.systeminfo.getCapability("http://tizen.org/feature/sensor.heart_rate_monitor")) {
- assert_throws(NOT_SUPPORTED_EXCEPTION, function () {
- tizen.humanactivitymonitor.readRecorderData("HRM", query, successCallback);
- }, "NotSupportedError exception should throw");
- }
- if (!tizen.systeminfo.getCapability("http://tizen.org/feature/sensor.sleep_monitor")) {
- assert_throws(NOT_SUPPORTED_EXCEPTION, function () {
- tizen.humanactivitymonitor.readRecorderData("SLEEP_MONITOR", query, successCallback);
- }, "NotSupportedError exception should throw");
- }
- if (!tizen.systeminfo.getCapability("http://tizen.org/feature/sensor.barometer")) {
- assert_throws(NOT_SUPPORTED_EXCEPTION, function () {
- tizen.humanactivitymonitor.readRecorderData("PRESSURE", query, successCallback);
- }, "NotSupportedError exception should throw");
- }
-
- t.done();
-});
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2016 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.
-
-Author:
- Xiaoyan Qian <xy.qian@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityMonitorManager_readRecorderData_errorCallback_TypeMismatch</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityMonitorManager_readRecorderData_errorCallback_TypeMismatch
-//==== LABEL Check if readRecorderData throws exception when errorCallback is incorrect
-//==== ONLOAD_DELAY 30
-//==== SPEC Tizen Web API:System:HumanActivityMonitor:HumanActivityMonitorManager:readRecorderData M
-//==== SPEC_URL TBD
-//==== PRIORITY P2
-//==== TEST_CRITERIA MC
-
-setup({timeout: 30000});
-
-var t = async_test(document.title, {timeout: 30000}), conversionTable, successCallback, errorCallback, exceptionName, i,
- date = new Date(), endTime = date.getTime(), startTime = date.setDate(date.getDate() - 1),
- query = {
- startTime: startTime/1000,
- endTime: endTime/1000,
- interval: 1440
- };
-
-t.step(function () {
- conversionTable = getTypeConversionExceptions("functionObject", true);
-
- successCallback = t.step_func(function (playlist) {
- assert_unreached("createPlaylist() success callback should not be invoked.");
- });
-
- for (i = 0; i < conversionTable.length; i++) {
- errorCallback = conversionTable[i][0];
- exceptionName = conversionTable[i][1];
- assert_throws({name: exceptionName},
- function () {
- tizen.humanactivitymonitor.readRecorderData("PEDOMETER", query, successCallback, errorCallback);
- }, "Given incorrect error callback.");
- }
-
- t.done();
-});
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2016 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:
- Xiaoyan Qian <xy.qian@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityMonitorManager_readRecorderData_errorCallback_invalid_cb</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityMonitorManager_readRecorderData_errorCallback_invalid_cb
-//==== LABEL Check if readRecorderData throws exception when error callback is invalid
-//==== SPEC Tizen Web API:System:HumanActivityMonitor:HumanActivityMonitorManager:readRecorderData M
-//==== SPEC_URL TBD
-//==== PRIORITY P2
-//==== TEST_CRITERIA MTCB
-
-setup({timeout: 30000});
-
-var t = async_test(document.title, {timeout: 30000}), successCallback, incorrectCallback, date = new Date(), endTime = date.getTime(), startTime = date.setDate(date.getDate() - 1),
- query = {
- startTime: startTime/1000,
- endTime: endTime/1000,
- interval: 1440
- };
-
-t.step(function () {
- successCallback = t.step_func(function (humanactivitydata) {
- assert_unreached("readRecorderData() success callback should not be invoked");
- });
-
- incorrectCallback = {
- onerror: t.step_func(function (error) {
- assert_unreached("Invalid error callback invoked:" + error.name + ": " + error.message);
- })
- };
-
- assert_throws(TYPE_MISMATCH_EXCEPTION,
- function () {
- tizen.humanactivitymonitor.readRecorderData("PEDOMETER", query, successCallback, incorrectCallback);
- }, "Given invalid successCallback.");
-
- t.done();
-});
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2016 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:
- Xiaoyan Qian <xy.qian@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityMonitorManager_readRecorderData_exist</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityMonitorManager_readRecorderData_exist
-//==== LABEL Check if readRecorderData exists
-//==== SPEC Tizen Web API:System:HumanActivityMonitor:HumanActivityMonitorManager:readRecorderData M
-//==== SPEC_URL TBD
-//==== PRIORITY P0
-//==== TEST_CRITERIA ME
-
-test(function () {
- assert_true("readRecorderData" in tizen.humanactivitymonitor, "HumanActivityMonitorManager should have readRecorderData method");
- check_method_exists(tizen.humanactivitymonitor, "readRecorderData");
-}, document.title);
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2016 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:
- Xiaoyan Qian <xy.qian@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityMonitorManager_readRecorderData_misarg</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityMonitorManager_readRecorderData_misarg
-//==== LABEL Check if HumanActivityMonitorManager::readRecorderData() called with missing non-optional argument throws an exception
-//==== PRIORITY P1
-//==== SPEC Tizen Web API:System:HumanActivityMonitor:HumanActivityMonitorManager:readRecorderData M
-//==== SPEC_URL TBD
-//==== TEST_CRITERIA MMA
-
-test(function () {
- assert_throws(TYPE_MISMATCH_EXCEPTION, function () {
- tizen.humanactivitymonitor.readRecorderData();
- }, "TypeMismatchError exception should throw");
-}, document.title);
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2016 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.
-
-Author:
- Xiaoyan Qian <xy.qian@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityMonitorManager_readRecorderData_query_TypeMismatch</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityMonitorManager_readRecorderData_query_TypeMismatch
-//==== LABEL Check if readRecorderData throws exception when query is incorrect
-//==== ONLOAD_DELAY 30
-//==== SPEC Tizen Web API:System:HumanActivityMonitor:HumanActivityMonitorManager:readRecorderData M
-//==== SPEC_URL TBD
-//==== PRIORITY P2
-//==== TEST_CRITERIA MC
-
-setup({timeout: 30000});
-
-var t = async_test(document.title, {timeout: 30000}), conversionTable, successCallback, errorCallback, exceptionName, i,
- date = new Date(), endTime = date.getTime(), startTime = date.setDate(date.getDate() - 1),
- query = {
- startTime: startTime/1000,
- endTime: endTime/1000,
- interval: 1440
- };
-
-t.step(function () {
- conversionTable = getTypeConversionExceptions("dictionary", true);
-
- errorCallback = t.step_func(function (error) {
- assert_unreached("readRecorderData() error callback was invoked: " + error.name + " msg: " + error.message);
- });
-
- successCallback = t.step_func(function (humanactivitydata) {
- assert_unreached("readRecorderData() success callback should not be invoked");
- });
-
- for (i = 0; i < conversionTable.length; i++) {
- query = conversionTable[i][0];
- exceptionName = conversionTable[i][1];
- assert_throws({name: exceptionName},
- function () {
- tizen.humanactivitymonitor.readRecorderData("PEDOMETER", query, successCallback, errorCallback);
- }, "Given incorrect query callback.");
- }
-
- t.done();
-});
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2016 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:
- Xiaoyan Qian <xy.qian@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityMonitorManager_readRecorderData_query_empty</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityMonitorManager_readRecorderData_query_empty
-//==== LABEL Check if readRecorderData can be called with empty object as query argument
-//==== SPEC Tizen Web API:System:HumanActivityMonitor:HumanActivityMonitorManager:readRecorderData M
-//==== SPEC_URL TBD
-//==== PRIORITY P1
-//==== EXECUTION_TYPE manual
-//==== STEP Press run button. Pretend walking with the device.
-//==== EXPECT Pass
-//==== TEST_CRITERIA MTD
-//==== ONLOAD_DELAY 60
-
-setup({timeout: 90000});
-
-var t = async_test(document.title, {timeout: 90000}), retValue = null, successCallback;
-
-t.step(function () {
-
- add_result_callback(function () {
- tizen.humanactivitymonitor.stopRecorder("PEDOMETER");
- });
-
- successCallback = t.step_func(function (humanactivitydata) {
- assert_equals(retValue, undefined, "readRecorderData should return undefined");
- t.done();
- });
-
- tizen.humanactivitymonitor.startRecorder("PEDOMETER");
- setTimeout(function(){tizen.humanactivitymonitor.stopRecorder("PEDOMETER");
- retValue = tizen.humanactivitymonitor.readRecorderData("PEDOMETER", {}, successCallback);}, 60000);
-
-});
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2016 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.
-
-Author:
- Xiaoyan Qian <xy.qian@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityMonitorManager_readRecorderData_successCallback_TypeMismatch</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityMonitorManager_readRecorderData_successCallback_TypeMismatch
-//==== LABEL Check if readRecorderData throws exception when successCallback is incorrect
-//==== ONLOAD_DELAY 30
-//==== SPEC Tizen Web API:System:HumanActivityMonitor:HumanActivityMonitorManager:readRecorderData M
-//==== SPEC_URL TBD
-//==== PRIORITY P2
-//==== TEST_CRITERIA MC
-
-setup({timeout: 30000});
-
-var t = async_test(document.title, {timeout: 30000}), conversionTable, successCallback, errorCallback, exceptionName, i,
- date = new Date(), endTime = date.getTime(), startTime = date.setDate(date.getDate() - 1),
- query = {
- startTime: startTime/1000,
- endTime: endTime/1000,
- interval: 1440
- };
-
-t.step(function () {
- conversionTable = getTypeConversionExceptions("functionObject", true);
-
- errorCallback = t.step_func(function (error) {
- assert_unreached("readRecorderData() error callback was invoked: " + error.name + " msg: " + error.message);
- });
-
- for (i = 0; i < conversionTable.length; i++) {
- successCallback = conversionTable[i][0];
- exceptionName = conversionTable[i][1];
- assert_throws({name: exceptionName},
- function () {
- tizen.humanactivitymonitor.readRecorderData("PEDOMETER", query, successCallback, errorCallback);
- }, "Given incorrect success callback.");
- }
-
- t.done();
-});
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2016 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:
- Xiaoyan Qian <xy.qian@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityMonitorManager_readRecorderData_successCallback_invalid_cb</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityMonitorManager_readRecorderData_successCallback_invalid_cb
-//==== LABEL Check if readRecorderData throws exception when success callback is invalid
-//==== SPEC Tizen Web API:System:HumanActivityMonitor:HumanActivityMonitorManager:readRecorderData M
-//==== SPEC_URL TBD
-//==== PRIORITY P2
-//==== TEST_CRITERIA MTCB
-
-test(function () {
- var incorrectCallback, date = new Date(), endTime = date.getTime(), startTime = date.setDate(date.getDate() - 1),
- query = {
- startTime: startTime/1000,
- endTime: endTime/1000,
- interval: 1440
- };
-
- incorrectCallback = {
- onsuccess: function (humanactivitydata) {
- assert_unreached("Invalid success callback invoked.");
- }
- };
-
- assert_throws(TYPE_MISMATCH_EXCEPTION,
- function () {
- tizen.humanactivitymonitor.readRecorderData("PEDOMETER", query, incorrectCallback);
- }, "Given invalid successCallback.");
-
-}, document.title);
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2016 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:
- Xiaoyan Qian <xy.qian@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityMonitorManager_readRecorderData_type_HRM</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityMonitorManager_readRecorderData_type_HRM
-//==== LABEL Check if readRecorderData without optional arguments works properly for HRM HumanActivity type
-//==== SPEC Tizen Web API:System:HumanActivityMonitor:HumanActivityMonitorManager:readRecorderData M
-//==== SPEC_URL TBD
-//==== PRIORITY P1
-//==== TEST_CRITERIA MR MMINA
-
-setup({timeout: 1500000});
-
-var t = async_test(document.title, {timeout: 1500000}), retValue = null, successCallback, date = new Date(), endTime = date.getTime() + 1200000, startTime = date.setDate(date.getDate() - 1),
- options = {
- interval: 10,
- retentionPeriod: 1
- },
- query = {
- startTime: startTime/1000,
- endTime: endTime/1000,
- interval: 10
- };
-
-t.step(function () {
- add_result_callback(function () {
- tizen.humanactivitymonitor.stopRecorder("HRM");
- });
-
- successCallback = t.step_func(function (humanactivitydata) {
- assert_equals(retValue, undefined, "readRecorderData should return undefined");
- t.done();
- });
-
- errorCallback = t.step_func(function (error) {
- assert_unreached("Invalid error callback invoked:" + error.name + ": " + error.message);
- });
-
- tizen.humanactivitymonitor.startRecorder("HRM", options);
- setTimeout(function() {
- retValue = tizen.humanactivitymonitor.readRecorderData("HRM", query, successCallback);}, 600000);
-
-});
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2016 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:
- Xiaoyan Qian <xy.qian@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityMonitorManager_readRecorderData_type_PEDOMETER</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityMonitorManager_readRecorderData_type_PEDOMETER
-//==== LABEL Check if readRecorderData without optional arguments works properly for PEDOMETER HumanActivity type
-//==== SPEC Tizen Web API:System:HumanActivityMonitor:HumanActivityMonitorManager:readRecorderData M
-//==== SPEC_URL TBD
-//==== PRIORITY P1
-//==== EXECUTION_TYPE manual
-//==== STEP Press run button. Pretend walking with the device.
-//==== EXPECT Pass
-//==== TEST_CRITERIA MR MMINA
-//==== ONLOAD_DELAY 60
-
-setup({timeout: 90000});
-
-var t = async_test(document.title, {timeout: 90000}), retValue = null, successCallback, date = new Date(), startTime = date.getTime(), endTime = date.setDate(date.getDate() + 1),
- query = {
- startTime: startTime/1000,
- endTime: endTime/1000,
- interval: 1440
- };
-
-t.step(function () {
- add_result_callback(function () {
- tizen.humanactivitymonitor.stopRecorder("PEDOMETER");
- });
- successCallback = t.step_func(function (humanactivitydata) {
- assert_equals(retValue, undefined, "readRecorderData should return undefined");
- t.done();
- });
-
- tizen.humanactivitymonitor.startRecorder("PEDOMETER");
- setTimeout(function(){tizen.humanactivitymonitor.stopRecorder("PEDOMETER");
- retValue = tizen.humanactivitymonitor.readRecorderData("PEDOMETER", query, successCallback);}, 60000);
-
-});
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2016 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:
- Xiaoyan Qian <xy.qian@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityMonitorManager_readRecorderData_type_PRESSURE</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityMonitorManager_readRecorderData_type_PRESSURE
-//==== LABEL Check if readRecorderData without optional arguments works properly for PRESSURE HumanActivity type
-//==== SPEC Tizen Web API:System:HumanActivityMonitor:HumanActivityMonitorManager:readRecorderData M
-//==== SPEC_URL TBD
-//==== PRIORITY P1
-//==== TEST_CRITERIA MR MMINA
-
-setup({timeout: 150000});
-
-var t = async_test(document.title, {timeout: 150000}), retValue = null, successCallback, date = new Date(), endTime = date.getTime() + 120000, startTime = date.setDate(date.getDate() - 1),
- query = {
- startTime: startTime/1000,
- endTime: endTime/1000,
- interval: 10
- };
-
-t.step(function () {
-
- add_result_callback(function () {
- tizen.humanactivitymonitor.stopRecorder("PRESSURE");
- });
-
- successCallback = t.step_func(function (humanactivitydata) {
- assert_equals(retValue, undefined, "readRecorderData should return undefined");
- tizen.humanactivitymonitor.stopRecorder("PRESSURE");
- t.done();
- });
-
- tizen.humanactivitymonitor.startRecorder("PRESSURE");
- setTimeout(function(){
- retValue = tizen.humanactivitymonitor.readRecorderData("PRESSURE", query, successCallback);}, 60000);
-
-});
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2016 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:
- Xiaoyan Qian <xy.qian@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityMonitorManager_readRecorderData_type_SLEEP_MONITOR</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityMonitorManager_readRecorderData_type_SLEEP_MONITOR
-//==== LABEL Check if readRecorderData without optional arguments works properly for SLEEP_MONITOR HumanActivity type
-//==== SPEC Tizen Web API:System:HumanActivityMonitor:HumanActivityMonitorManager:readRecorderData M
-//==== SPEC_URL TBD
-//==== PRIORITY P1
-//==== TEST_CRITERIA MR MMINA
-
-setup({timeout: 30000});
-
-var t = async_test(document.title, {timeout: 30000}), retValue = null, successCallback, date = new Date(), endTime = date.getTime(), startTime = date.setDate(date.getDate() - 1),
- query = {
- startTime: startTime/1000,
- endTime: endTime/1000,
- interval: 1440
- };
-
-t.step(function () {
- add_result_callback(function () {
- tizen.humanactivitymonitor.stopRecorder("SLEEP_MONITOR");
- });
-
- successCallback = t.step_func(function (humanactivitydata) {
- assert_equals(retValue, undefined, "readRecorderData should return undefined");
- t.done();
- });
-
- tizen.humanactivitymonitor.startRecorder("SLEEP_MONITOR");
- setTimeout(function(){tizen.humanactivitymonitor.stopRecorder("SLEEP_MONITOR");
- retValue = tizen.humanactivitymonitor.readRecorderData("SLEEP_MONITOR", query, successCallback);}, 100);
-
-});
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2016 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:
- Xiaoyan Qian <xy.qian@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityMonitorManager_readRecorderData_with_errorCallback</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityMonitorManager_readRecorderData_with_errorCallback
-//==== LABEL Check if readRecorderData with optional arguments works properly
-//==== SPEC Tizen Web API:System:HumanActivityMonitor:HumanActivityMonitorManager:readRecorderData M
-//==== SPEC_URL TBD
-//==== PRIORITY P1
-//==== TEST_CRITERIA MR MOA
-
-setup({timeout: 120000});
-
-var t = async_test(document.title, {timeout: 120000}), retValue = null, successCallback, errorCallback, date = new Date(), startTime = date.getTime(), endTime = date.setDate(date.getDate() + 1),
- query = {
- startTime: startTime/1000,
- endTime: endTime/1000,
- interval: 1440
- };
-
-t.step(function () {
- add_result_callback(function () {
- tizen.humanactivitymonitor.stopRecorder("PEDOMETER");
- });
-
- successCallback = t.step_func(function (humanactivitydata) {
- assert_equals(retValue, undefined, "readRecorderData should return undefined");
- t.done();
- });
-
- errorCallback = t.step_func(function (error) {
- assert_unreached("Invalid error callback invoked:" + error.name + ": " + error.message);
- });
-
- tizen.humanactivitymonitor.startRecorder("PEDOMETER");
- setTimeout(function(){tizen.humanactivitymonitor.stopRecorder("PEDOMETER");
- retValue = tizen.humanactivitymonitor.readRecorderData("PEDOMETER", query, successCallback, errorCallback);}, 60000);
-
-});
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2016 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:
- Hyukin Kwon <hyukin.kwon@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityMonitorManager_removeActivityRecognitionListener</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-<script src="support/humanactivitymonitor_common.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityMonitorManager_removeActivityRecognitionListener_STATIONARY
-//==== LABEL Check if the method removeActivityRecognitionListener of HumanActivityMonitorManager returns proper value
-//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityMonitorManager:removeActivityRecognitionListener M
-//==== SPEC_URL TBD
-//==== PRIORITY P1
-//==== EXECUTION_TYPE manual
-//==== STEP Press run button, then pretend walking with the device for 15 seconds
-//==== EXPECT Pass
-//==== TEST_CRITERIA MR MMINA
-//==== ONLOAD_DELAY 20
-
-setup({"timeout": 20000});
-
-var t = async_test(document.title, {"timeout": 20000}), returnedId = null, returnedValue = undefined, humanActivityType = "WALKING", listener;
-
-t.step(function () {
- listener = t.step_func(function (info) {
- assert_unreached("Callback should not be invoked after removeActivityRecognitionListener call");
- });
-
- returnedId = tizen.humanactivitymonitor.addActivityRecognitionListener(humanActivityType, listener);
- returnedValue = tizen.humanactivitymonitor.removeActivityRecognitionListener(returnedId);
- assert_equals(returnedValue, undefined, "Should return nothing");
- alert("Grab the device, and pretend walking for 15 seconds after pressing OK");
- setTimeout(function () {t.done();}, 15000);
-});
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2016 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:
- Hyukin Kwon <hyukin.kwon@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityMonitorManager_removeActivityRecognitionListener_exist</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-<script src="support/humanactivitymonitor_common.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityMonitorManager_removeActivityRecognitionListener_exist
-//==== LABEL Check if the method removeActivityRecognitionListener of HumanActivityMonitorManager exist
-//==== SPEC Tizen Web API:HumanActivityMonitor:HumanActivityMonitorManager:removeActivityRecognitionListener M
-//==== SPEC_URL TBD
-//==== PRIORITY P1
-//==== TEST_CRITERIA ME
-
-test(function () {
- check_method_exists(tizen.humanactivitymonitor, "addActivityRecognitionListener");
-}, document.title);
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2016 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:
- Hyukin Kwon <hyukin.kwon@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityMonitorManager_removeActivityRecognitionListener_invalid_id</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-<script src="support/humanactivitymonitor_common.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityMonitorManager_removeActivityRecognitionListener_invalid_id
-//==== LABEL Check if the method removeActivityRecognitionListener of HumanActivityMonitorManager ignores invalid id
-//==== SPEC Tizen Web API:HumanActivityMonitor:HumanActivityMonitorManager:removeActivityRecognitionListener M
-//==== SPEC_URL TBD
-//==== PRIORITY P2
-//==== TEST_CRITERIA MMA
-//==== ONLOAD_DELAY 3
-
-setup({"timeout": 3000});
-
-var t = async_test(document.title, {"timeout": 3000}), invalidId = 10000, errorCallback;
-
-t.step(function () {
- errorCallback = t.step_func(function (error) {
- assert_unreached("Error callback should not be invoked, but was invoked with the error " + error.name);
- });
-
- try {
- tizen.humanactivitymonitor.removeActivityRecognitionListener(invalidId, errorCallback);
- setTimeout(function () {t.done();}, 2000);
- } catch (error) {
- assert_unreached("Should not throw any error, but threw " + error.name);
- }
-});
-</script>
-</body>
-</html>
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2016 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:
- Hyukin Kwon <hyukin.kwon@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityMonitorManager_removeActivityRecognitionListener_misarg</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-<script src="support/humanactivitymonitor_common.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityMonitorManager_removeActivityRecognitionListener_exist
-//==== LABEL Check if the method removeActivityRecognitionListener of HumanActivityMonitorManager ignores invalid id when no param assigned (undefined converted to 0)
-//==== SPEC Tizen Web API:HumanActivityMonitor:HumanActivityMonitorManager:removeActivityRecognitionListener M
-//==== SPEC_URL TBD
-//==== PRIORITY P2
-//==== TEST_CRITERIA MMA
-
-test(function () {
- try {
- tizen.humanactivitymonitor.removeActivityRecognitionListener();
- } catch (error) {
- assert_unreached("Should not throw any error, but threw " + error.name);
- }
-}, document.title);
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2016 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:
- Hyukin Kwon <hyukin.kwon@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityMonitorManager_removeActivityRecognitionListener</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-<script src="support/humanactivitymonitor_common.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityMonitorManager_removeActivityRecognitionListener_STATIONARY
-//==== LABEL Check if the method removeActivityRecognitionListener of HumanActivityMonitorManager returns proper value with errorcallback assigned
-//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityMonitorManager:removeActivityRecognitionListener M
-//==== SPEC_URL TBD
-//==== PRIORITY P1
-//==== EXECUTION_TYPE manual
-//==== STEP Press run button, then pretend walking with the device for 15 seconds
-//==== EXPECT Pass
-//==== TEST_CRITERIA MR MMINA CBT
-//==== ONLOAD_DELAY 20
-
-setup({"timeout": 20000});
-
-var t = async_test(document.title, {"timeout": 20000}), returnedId = null, returnedValue = undefined, humanActivityType = "WALKING", listener, errorCallback;
-
-t.step(function () {
- listener = t.step_func(function (info) {
- assert_unreached("Callback should not be invoked after removeActivityRecognitionListener call");
- });
-
- errorCallback = t.step_func(function (error) {
- assert_unreached("Error callback should not be invoked, but was invoked with the error " + error.name);
- });
-
- returnedId = tizen.humanactivitymonitor.addActivityRecognitionListener(humanActivityType, listener);
- returnedValue = tizen.humanactivitymonitor.removeActivityRecognitionListener(returnedId, errorCallback);
- assert_equals(returnedValue, undefined, "Should return nothing");
- alert("Grab the device, and pretend walking for 15 seconds after pressing OK");
- setTimeout(function () {t.done();}, 15000);
-});
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2016 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:
- Hyukin Kwon <hyukin.kwon@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityMonitorManager_removeActivityRecognitionListener</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-<script src="support/humanactivitymonitor_common.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityMonitorManager_removeActivityRecognitionListener_STATIONARY
-//==== LABEL Check if the method removeActivityRecognitionListener of HumanActivityMonitorManager returns proper value with errorcallback null assigned
-//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityMonitorManager:removeActivityRecognitionListener M
-//==== SPEC_URL TBD
-//==== PRIORITY P1
-//==== EXECUTION_TYPE manual
-//==== STEP Press run button, then pretend walking with the device for 15 seconds
-//==== EXPECT Pass
-//==== TEST_CRITERIA MR MMINA CBT
-//==== ONLOAD_DELAY 20
-
-setup({"timeout": 20000});
-
-var t = async_test(document.title, {"timeout": 20000}), returnedId = null, returnedValue = undefined, humanActivityType = "WALKING", listener;
-
-t.step(function () {
- listener = t.step_func(function (info) {
- assert_unreached("Callback should not be invoked after removeActivityRecognitionListener call");
- });
-
- returnedId = tizen.humanactivitymonitor.addActivityRecognitionListener(humanActivityType, listener);
- returnedValue = tizen.humanactivitymonitor.removeActivityRecognitionListener(returnedId, null);
- assert_equals(returnedValue, undefined, "Should return nothing");
- alert("Grab the device, and pretend walking for 15 seconds after pressing OK");
- setTimeout(function () {t.done();}, 15000);
-});
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2014 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:
- Saleh Enam Shohag <saleh.enam@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityMonitorManager_setAccumulativePedometerListener</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityMonitorManager_setAccumulativePedometerListener
-//==== LABEL Check if HumanActivityMonitorManager::setAccumulativePedometerListener() method works properly
-//==== PRIORITY P1
-//==== ONLOAD_DELAY 30
-//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityMonitorManager:setAccumulativePedometerListener M
-//==== SPEC_URL TBD
-//==== TEST_CRITERIA MAST MR
-
-setup({timeout: 30000});
-
-var t = async_test(document.title, {timeout: 30000}), changeCallback, returnedValue = null;
-
-t.step(function () {
- changeCallback = t.step_func(function (pedometerInfo) {
- assert_equals(returnedValue, undefined, "setAccumulativePedometerListener should return undefined.");
- t.done();
- });
-
- returnedValue = tizen.humanactivitymonitor.setAccumulativePedometerListener(changeCallback);
-});
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2014 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:
- Saleh Enam Shohag <saleh.enam@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityMonitorManager_setAccumulativePedometerListener_changeCallback_TypeMismatch</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityMonitorManager_setAccumulativePedometerListener_changeCallback_TypeMismatch
-//==== LABEL Check if HumanActivityMonitorManager::setAccumulativePedometerListener() with incorrect changeCallback argument throws exception
-//==== PRIORITY P2
-//==== ONLOAD_DELAY 30
-//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityMonitorManager:setAccumulativePedometerListener M
-//==== SPEC_URL TBD
-//==== TTEST_CRITERIA MC
-
-setup({timeout: 30000});
-
-var t = async_test(document.title, {timeout: 30000}),
- conversionTable, changeCallback, exceptionName, i;
-
-t.step(function () {
- conversionTable = getTypeConversionExceptions("functionObject", false);
- for (i = 0; i < conversionTable.length; i++) {
- changeCallback = conversionTable[i][0];
- exceptionName = conversionTable[i][1];
- assert_throws(TYPE_MISMATCH_EXCEPTION, function () {
- tizen.humanactivitymonitor.setAccumulativePedometerListener(changeCallback);
- }, TYPE_MISMATCH_EXCEPTION + "should be thrown");
- }
- t.done();
-});
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2014 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:
- Saleh Enam Shohag <saleh.enam@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityMonitorManager_setAccumulativePedometerListener_changeCallback_invalid_cb</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityMonitorManager_setAccumulativePedometerListener_changeCallback_invalid_cb
-//==== LABEL Check if HumanActivityMonitorManager::setAccumulativePedometerListener() method throws exception when changeCallback is invalid
-//==== PRIORITY: P2
-//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityMonitorManager:setAccumulativePedometerListener M
-//==== SPEC_URL TBD
-//==== ONLOAD_DELAY 30
-//==== TEST_CRITERIA MTCB
-
-setup({timeout: 30000});
-
-var t = async_test(document.title, {timeout: 30000}), invalidCallback;
-
-t.step(function () {
- invalidCallback = {
- onsuccess: t.step_func(function (pedometerInfo) {
- assert_unreached("setAccumulativePedometerListener() changeCallback should not invoked");
- })
- };
-
- assert_throws(TYPE_MISMATCH_EXCEPTION, function () {
- tizen.humanactivitymonitor.setAccumulativePedometerListener(invalidCallback);
- }, TYPE_MISMATCH_EXCEPTION + " should be thrown");
- t.done();
-});
-
-</script>
-</body>
-</html>
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2014 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:
- Saleh Enam Shohag <saleh.enam@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityMonitorManager_setAccumulativePedometerListener_exist</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityMonitorManager_setAccumulativePedometerListener_exist
-//==== LABEL Check if method HumanActivityMonitorManager::setAccumulativePedometerListener() exists
-//==== PRIORITY P0
-//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityMonitorManager:setAccumulativePedometerListener M
-//==== SPEC_URL TBD
-//==== TEST_CRITERIA ME
-
-test(function () {
- check_method_exists(tizen.humanactivitymonitor, "setAccumulativePedometerListener");
-}, document.title);
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2014 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:
- Saleh Enam Shohag <saleh.enam@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityMonitorManager_setAccumulativePedometerListener_misarg</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityMonitorManager_setAccumulativePedometerListener_misarg
-//==== LABEL Check if HumanActivityMonitorManager::setAccumulativePedometerListener() throws exception when changeCallback is missing
-//==== PRIORITY: P2
-//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityMonitorManager:setAccumulativePedometerListener M
-//==== SPEC_URL TBD
-//==== TEST_CRITERIA MMA
-
-test(function () {
- assert_throws(TYPE_MISMATCH_EXCEPTION, function () {
- tizen.humanactivitymonitor.setAccumulativePedometerListener();
- }, "Invoked without non-optional arguments.");
-}, document.title);
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2016 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:
- Xiaoyan Qian <xy.qian@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityMonitorManager_startRecorder_NotSupportedError</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityMonitorManager_startRecorder_NotSupportedError
-//==== LABEL Check if HumanActivityMonitorManager::startRecorder() throw NotSupportedError called with not supported human activity recorder type
-//==== PRIORITY P1
-//==== SPEC Tizen Web API:System:HumanActivityMonitor:HumanActivityMonitorManager:startRecorder M
-//==== SPEC_URL TBD
-//==== TEST_CRITERIA MC
-
-test(function () {
- if (!tizen.systeminfo.getCapability("http://tizen.org/feature/sensor.pedometer")) {
- assert_throws(NOT_SUPPORTED_EXCEPTION, function () {
- tizen.humanactivitymonitor.startRecorder("PEDOMETER");
- }, "NotSupportedError exception should throw");
- }
- if (!tizen.systeminfo.getCapability("http://tizen.org/feature/sensor.heart_rate_monitor")) {
- assert_throws(NOT_SUPPORTED_EXCEPTION, function () {
- tizen.humanactivitymonitor.startRecorder("HRM");
- }, "NotSupportedError exception should throw");
- }
- if (!tizen.systeminfo.getCapability("http://tizen.org/feature/sensor.sleep_monitor")) {
- assert_throws(NOT_SUPPORTED_EXCEPTION, function () {
- tizen.humanactivitymonitor.startRecorder("SLEEP_MONITOR");
- }, "NotSupportedError exception should throw");
- }
- if (!tizen.systeminfo.getCapability("http://tizen.org/feature/sensor.barometer")) {
- assert_throws(NOT_SUPPORTED_EXCEPTION, function () {
- tizen.humanactivitymonitor.startRecorder("PRESSURE");
- }, "NotSupportedError exception should throw");
- }
-}, document.title);
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2016 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:
- Xiaoyan Qian <xy.qian@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityMonitorManager_startRecorder_exist</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityMonitorManager_startRecorder_exist
-//==== LABEL Check if startRecorder exists
-//==== SPEC Tizen Web API:System:HumanActivityMonitor:HumanActivityMonitorManager:startRecorder M
-//==== SPEC_URL TBD
-//==== PRIORITY P0
-//==== TEST_CRITERIA ME
-
-test(function () {
- assert_true("startRecorder" in tizen.humanactivitymonitor, "HumanActivityMonitorManager should have startRecorder method");
- check_method_exists(tizen.humanactivitymonitor, "startRecorder");
-}, document.title);
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2016 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:
- Xiaoyan Qian <xy.qian@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityMonitorManager_startRecorder_misarg</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityMonitorManager_startRecorder_misarg
-//==== LABEL Check if HumanActivityMonitorManager::startRecorder() called with missing non-optional argument throws an exception
-//==== PRIORITY P1
-//==== SPEC Tizen Web API:System:HumanActivityMonitor:HumanActivityMonitorManager:startRecorder M
-//==== SPEC_URL TBD
-//==== TEST_CRITERIA MMA
-
-test(function () {
- assert_throws(TYPE_MISMATCH_EXCEPTION, function () {
- tizen.humanactivitymonitor.startRecorder();
- }, "TypeMismatchError exception should throw");
-}, document.title);
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2016 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:
- Xiaoyan Qian <xy.qian@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityMonitorManager_startRecorder_option_empty</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityMonitorManager_startRecorder_option_empty
-//==== LABEL Check if HumanActivityMonitorManager::startRecorder() can be called with empty object as option argument
-//==== PRIORITY P1
-//==== SPEC Tizen Web API:System:HumanActivityMonitor:HumanActivityMonitorManager:startRecorder M
-//==== SPEC_URL TBD
-//==== TEST_CRITERIA MR MTD
-
-test(function () {
- add_result_callback(function () {
- tizen.humanactivitymonitor.stopRecorder(humanActivityType);
- });
-
- var returnedValue = null, humanActivityType = "PEDOMETER";
- returnedValue = tizen.humanactivitymonitor.startRecorder(humanActivityType, {});
- assert_equals(returnedValue, undefined, "Incorrect returned value");
-}, document.title);
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2016 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:
- Xiaoyan Qian <xy.qian@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityMonitorManager_startRecorder_type_HRM</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityMonitorManager_startRecorder_type_HRM
-//==== LABEL Check if method HumanActivityMonitorManager::startRecorder() works properly for HRM HumanActivity type
-//==== PRIORITY P1
-//==== SPEC Tizen Web API:System:HumanActivityMonitor:HumanActivityMonitorManager:startRecorder M
-//==== SPEC_URL TBD
-//==== TEST_CRITERIA MR MMINA
-
-test(function () {
- var returnedValue = null, humanActivityType = "HRM";
-
- add_result_callback(function () {
- tizen.humanactivitymonitor.stopRecorder(humanActivityType);
- });
-
- try {
- tizen.humanactivitymonitor.stopRecorder(humanActivityType);
- returnedValue = tizen.humanactivitymonitor.startRecorder(humanActivityType);
- assert_equals(returnedValue, undefined, "Incorrect returned value from startRecorder method");
- tizen.humanactivitymonitor.stopRecorder(humanActivityType);
- } catch (e) {
- if(e.name === NOT_SUPPORTED_EXCEPTION) {
- } else {
- assert_unreached("unexpected exception is thrown" + e.name + ", msg: " + e.message);
- }
- }
-}, document.title);
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2016 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:
- Xiaoyan Qian <xy.qian@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityMonitorManager_startRecorder_type_PEDOMETER</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityMonitorManager_startRecorder_type_PEDOMETER
-//==== LABEL Check if method HumanActivityMonitorManager::startRecorder() works properly for PEDOMETER HumanActivity type
-//==== PRIORITY P1
-//==== SPEC Tizen Web API:System:HumanActivityMonitor:HumanActivityMonitorManager:startRecorder M
-//==== SPEC_URL TBD
-//==== TEST_CRITERIA MR MMINA
-
-test(function () {
- var returnedValue = null, humanActivityType = "PEDOMETER";
-
- add_result_callback(function () {
- tizen.humanactivitymonitor.stopRecorder(humanActivityType);
- });
-
- try {
- returnedValue = tizen.humanactivitymonitor.startRecorder(humanActivityType);
- assert_equals(returnedValue, undefined, "Incorrect returned value from startRecorder method");
- tizen.humanactivitymonitor.stopRecorder(humanActivityType);
- } catch (e) {
- if(e.name === NOT_SUPPORTED_EXCEPTION) {
- } else {
- assert_unreached("unexpected exception is thrown" + e.name + ", msg: " + e.message);
- }
- }
-}, document.title);
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2016 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:
- Xiaoyan Qian <xy.qian@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityMonitorManager_startRecorder_type_PRESSURE</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityMonitorManager_startRecorder_type_PRESSURE
-//==== LABEL Check if method HumanActivityMonitorManager::startRecorder() works properly for PRESSURE HumanActivity type
-//==== PRIORITY P1
-//==== SPEC Tizen Web API:System:HumanActivityMonitor:HumanActivityMonitorManager:startRecorder M
-//==== SPEC_URL TBD
-//==== TEST_CRITERIA MR MMINA
-
-test(function () {
- var returnedValue = null, humanActivityType = "PRESSURE";
-
- add_result_callback(function () {
- tizen.humanactivitymonitor.stopRecorder(humanActivityType);
- });
-
- try {
- tizen.humanactivitymonitor.stopRecorder(humanActivityType);
- returnedValue = tizen.humanactivitymonitor.startRecorder(humanActivityType);
- assert_equals(returnedValue, undefined, "Incorrect returned value from startRecorder method");
- tizen.humanactivitymonitor.stopRecorder(humanActivityType);
- } catch (e) {
- if(e.name === NOT_SUPPORTED_EXCEPTION) {
- } else {
- assert_unreached("unexpected exception is thrown" + e.name + ", msg: " + e.message);
- }
- }
-}, document.title);
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2016 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:
- Xiaoyan Qian <xy.qian@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityMonitorManager_startRecorder_type_SLEEP_MONITOR</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityMonitorManager_startRecorder_type_SLEEP_MONITOR
-//==== LABEL Check if method HumanActivityMonitorManager::startRecorder() works properly for SLEEP_MONITOR HumanActivity type
-//==== PRIORITY P1
-//==== SPEC Tizen Web API:System:HumanActivityMonitor:HumanActivityMonitorManager:startRecorder M
-//==== SPEC_URL TBD
-//==== TEST_CRITERIA MR MMINA
-
-test(function () {
- var returnedValue = null, humanActivityType = "SLEEP_MONITOR";
-
- add_result_callback(function () {
- tizen.humanactivitymonitor.stopRecorder(humanActivityType);
- });
-
- try {
- returnedValue = tizen.humanactivitymonitor.startRecorder(humanActivityType);
- assert_equals(returnedValue, undefined, "Incorrect returned value from startRecorder method");
- tizen.humanactivitymonitor.stopRecorder(humanActivityType);
- } catch (e) {
- if(e.name === NOT_SUPPORTED_EXCEPTION) {
- } else {
- assert_unreached("unexpected exception is thrown" + e.name + ", msg: " + e.message);
- }
- }
-}, document.title);
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2016 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:
- Xiaoyan Qian <xy.qian@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityMonitorManager_startRecorder_with_option</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityMonitorManager_startRecorder_with_option
-//==== LABEL Check if method HumanActivityMonitorManager::startRecorder() works properly with optional argument
-//==== PRIORITY P1
-//==== SPEC Tizen Web API:System:HumanActivityMonitor:HumanActivityMonitorManager:startRecorder M
-//==== SPEC_URL TBD
-//==== TEST_CRITERIA MR MOA
-
-test(function () {
- var returnedValue = null, humanActivityType = "HRM",
- options = {
- retentionPeriod: 1
- };
-
- add_result_callback(function () {
- tizen.humanactivitymonitor.stopRecorder(humanActivityType);
- });
-
- try {
- returnedValue = tizen.humanactivitymonitor.startRecorder(humanActivityType, options);
- assert_equals(returnedValue, undefined, "Incorrect returned value from startRecorder method");
- tizen.humanactivitymonitor.stopRecorder(humanActivityType);
- } catch (e) {
- if(e.name === NOT_SUPPORTED_EXCEPTION) {
- } else {
- assert_unreached("unexpected exception is thrown" + e.name + ", msg: " + e.message);
- }
- }
-}, document.title);
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2014 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:
- Saleh Enam Shohag <saleh.enam@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityMonitorManager_start_HumanActivityMonitorSuccessCallback_TypeMismatch </title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityMonitorManager_start_HumanActivityMonitorSuccessCallback_TypeMismatch
-//==== LABEL Check if HumanActivityMonitorManager::start() with incorrect successCallback argument throws exception
-//==== PRIORITY P2
-//==== ONLOAD_DELAY 30
-//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityMonitorManager:start M
-//==== SPEC_URL TBD
-//==== TEST_CRITERIA MC
-
-setup({timeout: 90000});
-
-var t = async_test(document.title, {timeout: 90000}), successCallback, conversionTable, i, humanActivityType = "PEDOMETER";
-
-t.step(function () {
- conversionTable = getTypeConversionExceptions("functionObject", true);
- for (i = 0; i < conversionTable.length; i++) {
- successCallback = conversionTable[i][0];
- exceptionName = conversionTable[i][1];
- assert_throws(TYPE_MISMATCH_EXCEPTION, function () {
- tizen.humanactivitymonitor.start(humanActivityType, successCallback);
- }, TYPE_MISMATCH_EXCEPTION + "should be thrown");
- }
- t.done();
-});
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2014 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:
- Saleh Enam Shohag <saleh.enam@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityMonitorManager_start_HumanActivityMonitorSuccessCallback_invalid_cb </title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityMonitorManager_start_HumanActivityMonitorSuccessCallback_invalid_cb
-//==== LABEL Check if HumanActivityMonitorManager::start() method throws exception when HumanActivityMonitorSuccessCallback is invalid
-//==== PRIORITY P2
-//==== ONLOAD_DELAY 30
-//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityMonitorManager:start M
-//==== SPEC_URL TBD
-//==== TEST_CRITERIA MTCB
-
-setup({timeout: 9000});
-
-var t = async_test(document.title, {timeout: 9000}), invalidCallback, humanActivityType = "PEDOMETER";
-
-t.step(function () {
- invalidCallback = {
- onsuccess: t.step_func(function (humanActivityData) {
- assert_unreached("Invalid success callback invoked");
- })
- };
-
- assert_throws(TYPE_MISMATCH_EXCEPTION, function () {
- tizen.humanactivitymonitor.start(humanActivityType, invalidCallback);
- }, TYPE_MISMATCH_EXCEPTION + "should be thrown");
- t.done();
-});
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2014 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:
- Saleh Enam Shohag <saleh.enam@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityMonitorManager_start_changedCallback_TypeMismatch </title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityMonitorManager_start_changedCallback_TypeMismatch
-//==== LABEL Check if HumanActivityMonitorManager::start() with incorrect successCallback argument throws exception
-//==== PRIORITY P2
-//==== ONLOAD_DELAY 30
-//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityMonitorManager:start M
-//==== SPEC_URL TBD
-//==== TEST_CRITERIA MC
-
-setup({timeout: 90000});
-
-var t = async_test(document.title, {timeout: 90000}), successCallback, conversionTable, i, humanActivityType = "PEDOMETER";
-
-t.step(function () {
- conversionTable = getTypeConversionExceptions("functionObject", true);
- for (i = 0; i < conversionTable.length; i++) {
- successCallback = conversionTable[i][0];
- exceptionName = conversionTable[i][1];
- assert_throws(TYPE_MISMATCH_EXCEPTION, function () {
- tizen.humanactivitymonitor.start(humanActivityType, successCallback);
- }, TYPE_MISMATCH_EXCEPTION + "should be thrown");
- }
- t.done();
-});
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2014 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:
- Saleh Enam Shohag <saleh.enam@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityMonitorManager_start_changedCallback_invalid_cb </title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityMonitorManager_start_changedCallback_invalid_cb
-//==== LABEL Check if HumanActivityMonitorManager::start() method throws exception when HumanActivityMonitorSuccessCallback is invalid
-//==== PRIORITY P2
-//==== ONLOAD_DELAY 30
-//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityMonitorManager:start M
-//==== SPEC_URL TBD
-//==== TEST_CRITERIA MTCB
-
-setup({timeout: 9000});
-
-var t = async_test(document.title, {timeout: 9000}), invalidCallback, humanActivityType = "PEDOMETER";
-
-t.step(function () {
- invalidCallback = {
- onsuccess: t.step_func(function (humanActivityData) {
- assert_unreached("Invalid success callback invoked");
- })
- };
-
- assert_throws(TYPE_MISMATCH_EXCEPTION, function () {
- tizen.humanactivitymonitor.start(humanActivityType, invalidCallback);
- }, TYPE_MISMATCH_EXCEPTION + "should be thrown");
- t.done();
-});
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2016 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:
- Wei Zhang <wei625.zhang@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityMonitorManager_start_errorCallback_TypeMismatch </title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityMonitorManager_start_errorCallback_TypeMismatch
-//==== LABEL Check if HumanActivityMonitorManager::start() with incorrect errorCallback argument throws exception
-//==== PRIORITY P2
-//==== ONLOAD_DELAY 30
-//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityMonitorManager:start M
-//==== SPEC_URL TBD
-//==== TEST_CRITERIA MC
-
-setup({timeout: 90000});
-
-var t = async_test(document.title, {timeout: 90000}), successCallback, errorCallback, conversionTable, i, humanActivityType = "PEDOMETER";
-
-t.step(function () {
-
- successCallback = t.step_func(function (humanActivityData) {
- assert_unreached("SuccessCallback should not invoke");
- });
-
- conversionTable = getTypeConversionExceptions("functionObject", true);
- for (i = 0; i < conversionTable.length; i++) {
- errorCallback = conversionTable[i][0];
- exceptionName = conversionTable[i][1];
- assert_throws(TYPE_MISMATCH_EXCEPTION, function () {
- tizen.humanactivitymonitor.start(humanActivityType, successCallback, errorCallback);
- }, TYPE_MISMATCH_EXCEPTION + "should be thrown");
- }
- t.done();
-});
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2016 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:
- Wei Zhang <wei625.zhang@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityMonitorManager_start_errorCallback_invalid_cb </title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityMonitorManager_start_errorCallback_invalid_cb
-//==== LABEL Check if HumanActivityMonitorManager::start() method throws exception when ErrorCallback is invalid
-//==== PRIORITY P2
-//==== ONLOAD_DELAY 30
-//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityMonitorManager:start M
-//==== SPEC_URL TBD
-//==== TEST_CRITERIA MTCB
-
-setup({timeout: 9000});
-
-var t = async_test(document.title, {timeout: 9000}), successCallback, invalidCallback, humanActivityType = "PEDOMETER";
-
-t.step(function () {
-
- successCallback = t.step_func(function (humanActivityData) {
- assert_unreached("SuccessCallback should not invoke");
- });
-
- invalidCallback = {
- onerror: t.step_func(function (humanActivityData) {
- assert_unreached("Invalid success callback invoked");
- })
- };
-
- assert_throws(TYPE_MISMATCH_EXCEPTION, function () {
- tizen.humanactivitymonitor.start(humanActivityType, successCallback, invalidCallback);
- }, TYPE_MISMATCH_EXCEPTION + "should be thrown");
- t.done();
-});
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2016 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:
- Wei Zhang <wei625.zhang@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityMonitorManager_start_errorCallback_invoked</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityMonitorManager_start_errorCallback_invoked
-//==== LABEL Check exception in error callback of HumanActivityMonitorManager::start() method
-//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityMonitorManager:start M
-//==== EXECUTION_TYPE manual
-//==== SPEC_URL TBD
-//==== PRIORITY P2
-//==== STEP Please set the GPS function to disabled in the location settings
-//==== EXPECT Pass should be shown in the page after GPS off
-//==== ONLOAD_DELAY 300
-//==== TEST_CRITERIA MERRCB
-
-setup({timeout: 30000});
-
-var t = async_test(document.title, {timeout: 30000}), successCallback, errorCallback, humanActivityType = "GPS";
-
-t.step(function () {
- successCallback = t.step_func(function (humanActivityData) {
- //assert_unreached("SuccessCallback should not invoke");
- });
-
- errorCallback = t.step_func(function (error) {
- assert_equals(error.name, "ServiceNotAvailableError", "Incorrect error name");
- assert_type(error.message, "string", "Error message is not string");
- assert_not_equals(error.message, "", "Error message is empty");
- t.done();
- });
-
- tizen.humanactivitymonitor.start(humanActivityType, successCallback, errorCallback);
-});
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2014 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:
- Saleh Enam Shohag <saleh.enam@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityMonitorManager_start_exist</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityMonitorManager_start_exist
-//==== LABEL Check if method HumanActivityMonitorManager::start() exists
-//==== PRIORITY P0
-//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityMonitorManager:start M
-//==== SPEC_URL TBD
-//==== TEST_CRITERIA ME
-
-test(function () {
- check_method_exists(tizen.humanactivitymonitor, "start");
-}, document.title);
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2014 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:
- Saleh Enam Shohag <saleh.enam@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityMonitorManager_start_misarg</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityMonitorManager_start_misarg
-//==== LABEL Check if HumanActivityMonitorManager::start() throws exception when type and successCallback are missing
-//==== PRIORITY P2
-//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityMonitorManager:start M
-//==== SPEC_URL TBD
-//==== TEST_CRITERIA MMA
-
-test(function () {
- assert_throws(TYPE_MISMATCH_EXCEPTION, function () {
- tizen.humanactivitymonitor.start();
- }, TYPE_MISMATCH_EXCEPTION + "should be thrown");
-}, document.title);
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2014 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:
- Wei Zhang <wei625.zhang@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityMonitorManager_start_option_TypeMismatch </title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityMonitorManager_start_option_TypeMismatch
-//==== LABEL Check if HumanActivityMonitorManager::start() with incorrect option argument throws exception
-//==== PRIORITY P2
-//==== ONLOAD_DELAY 30
-//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityMonitorManager:start M
-//==== SPEC_URL TBD
-//==== TEST_CRITERIA MC
-
-setup({timeout: 90000});
-
-var t = async_test(document.title, {timeout: 90000}), successCallback, errorCallback, option, conversionTable, i, humanActivityType = "PEDOMETER";
-
-t.step(function () {
- successCallback = t.step_func(function (humanActivityData) {
- assert_unreached("successCallback callback should not be invoked");
- });
-
- errorCallback = t.step_func(function (e) {
- assert_unreached("errorCallback exception:" + e.message);
- });
-
- conversionTable = getTypeConversionExceptions("dictionary", true);
- for (i = 0; i < conversionTable.length; i++) {
- option = conversionTable[i][0];
- exceptionName = conversionTable[i][1];
- assert_throws(TYPE_MISMATCH_EXCEPTION, function () {
- tizen.humanactivitymonitor.start(humanActivityType, successCallback, errorCallback, option);
- }, TYPE_MISMATCH_EXCEPTION + "should be thrown");
- }
- t.done();
-});
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2014 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:
- Wei Zhang <wei625.zhang@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityMonitorManager_start_option_empty</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-<script src="support/humanactivitymonitor_common.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityMonitorManager_start_option_empty
-//==== LABEL Check if HumanActivityMonitorManager::start() can be called with empty object as option argument
-//==== PRIORITY P1
-//==== SPEC Tizen Web API:System:HumanActivityMonitor:HumanActivityMonitorManager:start M
-//==== SPEC_URL TBD
-//==== TEST_CRITERIA MR MAST MTD
-
-setup({timeout: 90000});
-
-var t = async_test(document.title, {timeout: 90000}), successCallback, errorCallback, returnedValue = null, humanActivityType = "GPS";
-
-t.step(function () {
- add_result_callback(function () {
- tizen.humanactivitymonitor.stop(humanActivityType);
- });
- errorCallback = t.step_func(function (e) {
- assert_unreached("errorCallback exception:" + e.message);
- });
- successCallback = t.step_func(function (humanActivityData) {
- assert_type(humanActivityData, "object", "humanActivityData is not object type");
- assert_equals(returnedValue, undefined, "Incorrect returned value");
- t.done();
- });
- returnedValue = tizen.humanactivitymonitor.start(humanActivityType, successCallback, errorCallback, {});
-});
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2014 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:
- Saleh Enam Shohag <saleh.enam@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityMonitorManager_start_type_GPS</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-<script src="support/humanactivitymonitor_common.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityMonitorManager_start_type_GPS
-//==== LABEL Check if method HumanActivityMonitorManager::start() works properly for GPS HumanActivity type
-//==== PRIORITY P1
-//==== SPEC Tizen Web API:System:HumanActivityMonitor:HumanActivityMonitorManager:start M
-//==== SPEC_URL TBD
-//==== TEST_CRITERIA MR MAST
-
-test(function () {
- var returnedValue = null, humanActivityType = "GPS";
- try {
- returnedValue = tizen.humanactivitymonitor.start(humanActivityType);
- assert_equals(returnedValue, undefined, "Incorrect returned value from start method");
- tizen.humanactivitymonitor.stop(humanActivityType);
- } catch (e) {
- if(e.name === NOT_SUPPORTED_EXCEPTION) {
- } else {
- assert_unreached("unexpected exception is thrown" + e.name + ", msg: " + e.message);
- }
- }
-}, document.title);
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2014 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:
- Saleh Enam Shohag <saleh.enam@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityMonitorManager_start_type_HRM</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-<script src="support/humanactivitymonitor_common.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityMonitorManager_start_type_HRM
-//==== LABEL Check if method HumanActivityMonitorManager::start() works properly for HRM HumanActivity type
-//==== PRIORITY P1
-//==== SPEC Tizen Web API:System:HumanActivityMonitor:HumanActivityMonitorManager:start M
-//==== SPEC_URL TBD
-//==== TEST_CRITERIA MR MAST
-
-test(function () {
- var returnedValue = null, humanActivityType = "HRM";
- try {
- returnedValue = tizen.humanactivitymonitor.start(humanActivityType);
- assert_equals(returnedValue, undefined, "Incorrect returned value from start method");
- tizen.humanactivitymonitor.stop(humanActivityType);
- } catch (e) {
- if(e.name === NOT_SUPPORTED_EXCEPTION) {
- } else {
- assert_unreached("unexpected exception is thrown" + e.name + ", msg: " + e.message);
- }
- }
-}, document.title);
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2014 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:
- Saleh Enam Shohag <saleh.enam@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityMonitorManager_start_type_PEDOMETER</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-<script src="support/humanactivitymonitor_common.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityMonitorManager_start_type_PEDOMETER
-//==== LABEL Check if method HumanActivityMonitorManager::start() works properly for PEDOMETER
-//==== PRIORITY P1
-//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityMonitorManager:start M
-//==== SPEC_URL TBD
-//==== TEST_CRITERIA MR MAST
-
-test(function () {
- var returnedValue = null, humanActivityType = "PEDOMETER";
- try {
- returnedValue = tizen.humanactivitymonitor.start(humanActivityType);
- assert_equals(returnedValue, undefined, "Incorrect returned value from start method");
- tizen.humanactivitymonitor.stop(humanActivityType);
- } catch (e) {
- if(e.name === NOT_SUPPORTED_EXCEPTION) {
- } else {
- assert_unreached("unexpected exception is thrown" + e.name + ", msg: " + e.message);
- }
- }
-}, document.title);
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2016 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:
- Wei Zhang <wei625.zhang@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityMonitorManager_start_type_SLEEP_MONITOR</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-<script src="support/humanactivitymonitor_common.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityMonitorManager_start_type_SLEEP_MONITOR
-//==== LABEL Check if method HumanActivityMonitorManager::start() works properly for SLEEP_MONITOR HumanActivity type
-//==== PRIORITY P1
-//==== SPEC Tizen Web API:System:HumanActivityMonitor:HumanActivityMonitorManager:start M
-//==== SPEC_URL TBD
-//==== TEST_CRITERIA MR MAST
-
-test(function () {
- var returnedValue = null, humanActivityType = "SLEEP_MONITOR";
- try {
- returnedValue = tizen.humanactivitymonitor.start(humanActivityType);
- assert_equals(returnedValue, undefined, "Incorrect returned value from start method");
- tizen.humanactivitymonitor.stop(humanActivityType);
- } catch (e) {
- if(e.name === NOT_SUPPORTED_EXCEPTION) {
- } else {
- assert_unreached("unexpected exception is thrown" + e.name + ", msg: " + e.message);
- }
- }
-}, document.title);
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2014 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:
- Saleh Enam Shohag <saleh.enam@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityMonitorManager_start_type_WRIST_UP</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-<script src="support/humanactivitymonitor_common.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityMonitorManager_start_type_WRIST_UP
-//==== LABEL Check if method HumanActivityMonitorManager::start() works properly for WRIST_UP
-//==== PRIORITY P1
-//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityMonitorManager:start M
-//==== SPEC_URL TBD
-//==== TEST_CRITERIA MR MAST
-
-test(function () {
- var returnedValue = null, humanActivityType = "WRIST_UP";
- try {
- returnedValue = tizen.humanactivitymonitor.start(humanActivityType);
- assert_equals(returnedValue, undefined, "Incorrect returned value from start method");
- tizen.humanactivitymonitor.stop(humanActivityType);
- } catch (e) {
- if(e.name === NOT_SUPPORTED_EXCEPTION) {
- } else {
- assert_unreached("unexpected exception is thrown" + e.name + ", msg: " + e.message);
- }
- }
-}, document.title);
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2014 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:
- Wei Zhang <wei625.zhang@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityMonitorManager_start_with_option</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-<script src="support/humanactivitymonitor_common.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityMonitorManager_start_with_option
-//==== LABEL Check if method HumanActivityMonitorManager::start() works properly for GPS HumanActivity type with optional argument
-
-//==== PRIORITY P1
-//==== SPEC Tizen Web API:System:HumanActivityMonitor:HumanActivityMonitorManager:start M
-//==== SPEC_URL TBD
-//==== TEST_CRITERIA MR MAST MOA
-
-setup({timeout: 90000});
-
-var t = async_test(document.title, {timeout: 90000}), successCallback, errorCallback, returnedValue = null, humanActivityType = "GPS", option = {callbackInterval: 150000};
-
-t.step(function () {
- add_result_callback(function () {
- tizen.humanactivitymonitor.stop(humanActivityType);
- });
- errorCallback = t.step_func(function (e) {
- assert_unreached("errorCallback exception:" + e.message);
- });
- successCallback = t.step_func(function (humanActivityData) {
- assert_type(humanActivityData, "object", "humanActivityData is not object type");
- assert_equals(returnedValue, undefined, "Incorrect returned value");
- t.done();
- });
- returnedValue = tizen.humanactivitymonitor.start(humanActivityType, successCallback, errorCallback, option);
-});
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2016 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:
- Xiaoyan Qian <xy.qian@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityMonitorManager_stopRecorder_NotSupportedError</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityMonitorManager_stopRecorder_NotSupportedError
-//==== LABEL Check if HumanActivityMonitorManager::stopRecorder() throw NotSupportedError called with not supported human activity recorder type
-//==== PRIORITY P2
-//==== SPEC Tizen Web API:System:HumanActivityMonitor:HumanActivityMonitorManager:stopRecorder M
-//==== SPEC_URL TBD
-//==== TEST_CRITERIA MC
-
-test(function () {
- if (!tizen.systeminfo.getCapability("http://tizen.org/feature/sensor.pedometer")) {
- assert_throws(NOT_SUPPORTED_EXCEPTION, function () {
- tizen.humanactivitymonitor.stopRecorder("PEDOMETER");
- }, "NotSupportedError exception should throw");
- }
- if (!tizen.systeminfo.getCapability("http://tizen.org/feature/sensor.heart_rate_monitor")) {
- assert_throws(NOT_SUPPORTED_EXCEPTION, function () {
- tizen.humanactivitymonitor.stopRecorder("HRM");
- }, "NotSupportedError exception should throw");
- }
- if (!tizen.systeminfo.getCapability("http://tizen.org/feature/sensor.sleep_monitor")) {
- assert_throws(NOT_SUPPORTED_EXCEPTION, function () {
- tizen.humanactivitymonitor.stopRecorder("SLEEP_MONITOR");
- }, "NotSupportedError exception should throw");
- }
- if (!tizen.systeminfo.getCapability("http://tizen.org/feature/sensor.barometer")) {
- assert_throws(NOT_SUPPORTED_EXCEPTION, function () {
- tizen.humanactivitymonitor.stopRecorder("PRESSURE");
- }, "NotSupportedError exception should throw");
- }
-}, document.title);
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2016 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:
- Xiaoyan Qian <xy.qian@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityMonitorManager_stopRecorder_exist</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityMonitorManager_stopRecorder_exist
-//==== LABEL Check if stopRecorder exists
-//==== SPEC Tizen Web API:System:HumanActivityMonitor:HumanActivityMonitorManager:stopRecorder M
-//==== SPEC_URL TBD
-//==== PRIORITY P0
-//==== TEST_CRITERIA ME
-
-test(function () {
- assert_true("stopRecorder" in tizen.humanactivitymonitor, "HumanActivityMonitorManager should have stopRecorder method");
- check_method_exists(tizen.humanactivitymonitor, "stopRecorder");
-}, document.title);
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2016 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:
- Xiaoyan Qian <xy.qian@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityMonitorManager_stopRecorder_misarg</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityMonitorManager_stopRecorder_misarg
-//==== LABEL Check if HumanActivityMonitorManager::stopRecorder() called with missing non-optional argument throws an exception
-//==== PRIORITY P1
-//==== SPEC Tizen Web API:System:HumanActivityMonitor:HumanActivityMonitorManager:stopRecorder M
-//==== SPEC_URL TBD
-//==== TEST_CRITERIA MMA
-
-test(function () {
- assert_throws(TYPE_MISMATCH_EXCEPTION, function () {
- tizen.humanactivitymonitor.stopRecorder();
- }, "TypeMismatchError exception should throw");
-}, document.title);
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2016 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:
- Xiaoyan Qian <xy.qian@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityMonitorManager_stopRecorder_type_HRM</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityMonitorManager_stopRecorder_type_HRM
-//==== LABEL Check if method HumanActivityMonitorManager::stopRecorder() works properly for HRM HumanActivity type
-//==== PRIORITY P1
-//==== SPEC Tizen Web API:System:HumanActivityMonitor:HumanActivityMonitorManager:stopRecorder M
-//==== SPEC_URL TBD
-//==== TEST_CRITERIA MR
-
-test(function () {
- var returnedValue = null, humanActivityType = "HRM";
-
- add_result_callback(function () {
- tizen.humanactivitymonitor.stopRecorder(humanActivityType);
- });
-
- try {
- tizen.humanactivitymonitor.startRecorder(humanActivityType);
- returnedValue = tizen.humanactivitymonitor.stopRecorder(humanActivityType);
- assert_equals(returnedValue, undefined, "Incorrect returned value from stopRecorder method");
- } catch (e) {
- if(e.name === NOT_SUPPORTED_EXCEPTION) {
- } else {
- assert_unreached("unexpected exception is thrown" + e.name + ", msg: " + e.message);
- }
- }
-}, document.title);
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2016 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:
- Xiaoyan Qian <xy.qian@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityMonitorManager_stopRecorder_type_PEDOMETER</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityMonitorManager_stopRecorder_type_PEDOMETER
-//==== LABEL Check if method HumanActivityMonitorManager::stopRecorder() works properly for PEDOMETER HumanActivity type
-//==== PRIORITY P1
-//==== SPEC Tizen Web API:System:HumanActivityMonitor:HumanActivityMonitorManager:stopRecorder M
-//==== SPEC_URL TBD
-//==== TEST_CRITERIA MR
-
-test(function () {
- var returnedValue = null, humanActivityType = "PEDOMETER";
-
- add_result_callback(function () {
- tizen.humanactivitymonitor.stopRecorder(humanActivityType);
- });
-
- try {
- tizen.humanactivitymonitor.startRecorder(humanActivityType);
- returnedValue = tizen.humanactivitymonitor.stopRecorder(humanActivityType);
- assert_equals(returnedValue, undefined, "Incorrect returned value from stopRecorder method");
- } catch (e) {
- if(e.name === NOT_SUPPORTED_EXCEPTION) {
- } else {
- assert_unreached("unexpected exception is thrown" + e.name + ", msg: " + e.message);
- }
- }
-}, document.title);
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2016 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:
- Xiaoyan Qian <xy.qian@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityMonitorManager_stopRecorder_type_PRESSURE</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityMonitorManager_stopRecorder_type_PRESSURE
-//==== LABEL Check if method HumanActivityMonitorManager::stopRecorder() works properly for PRESSURE HumanActivity type
-//==== PRIORITY P1
-//==== SPEC Tizen Web API:System:HumanActivityMonitor:HumanActivityMonitorManager:stopRecorder M
-//==== SPEC_URL TBD
-//==== TEST_CRITERIA MR
-
-test(function () {
- var returnedValue = null, humanActivityType = "PRESSURE";
-
- add_result_callback(function () {
- tizen.humanactivitymonitor.stopRecorder(humanActivityType);
- });
-
- try {
- tizen.humanactivitymonitor.startRecorder(humanActivityType);
- returnedValue = tizen.humanactivitymonitor.stopRecorder(humanActivityType);
- assert_equals(returnedValue, undefined, "Incorrect returned value from startRecorder method");
- } catch (e) {
- if(e.name === NOT_SUPPORTED_EXCEPTION) {
- } else {
- assert_unreached("unexpected exception is thrown" + e.name + ", msg: " + e.message);
- }
- }
-}, document.title);
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2016 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:
- Xiaoyan Qian <xy.qian@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityMonitorManager_stopRecorder_type_SLEEP_MONITOR</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityMonitorManager_stopRecorder_type_SLEEP_MONITOR
-//==== LABEL Check if method HumanActivityMonitorManager::stopRecorder () works properly for SLEEP_MONITOR HumanActivity type
-//==== PRIORITY P1
-//==== SPEC Tizen Web API:System:HumanActivityMonitor:HumanActivityMonitorManager:stopRecorder M
-//==== SPEC_URL TBD
-//==== TEST_CRITERIA MR
-
-test(function () {
- var returnedValue = null, humanActivityType = "SLEEP_MONITOR";
-
- add_result_callback(function () {
- tizen.humanactivitymonitor.stopRecorder(humanActivityType);
- });
-
- try {
- tizen.humanactivitymonitor.startRecorder(humanActivityType);
- returnedValue = tizen.humanactivitymonitor.stopRecorder(humanActivityType);
- assert_equals(returnedValue, undefined, "Incorrect returned value from stopRecorder method");
- } catch (e) {
- if(e.name === NOT_SUPPORTED_EXCEPTION) {
- } else {
- assert_unreached("unexpected exception is thrown" + e.name + ", msg: " + e.message);
- }
- }
-}, document.title);
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2014 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:
- Wahid Dilawar Al-Hakim <wahid.h@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityMonitorManager_stop_exist</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityMonitorManager_stop_exist
-//==== LABEL Check if HumanActivityMonitorManager::stop() method exists
-//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityMonitorManager:stop M
-//==== SPEC_URL TBD
-//==== PRIORITY P0
-//==== TEST_CRITERIA ME
-
-test(function () {
- check_method_exists(tizen.humanactivitymonitor, "stop");
-}, document.title);
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2014 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:
- Wahid Dilawar Al-Hakim <wahid.h@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityMonitorManager_stop_misarg</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityMonitorManager_stop_misarg
-//==== LABEL Check if HumanActivityMonitorManager::stop() throws exception when type is missing
-//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityMonitorManager:stop M
-//==== SPEC_URL TBD
-//==== PRIORITY P2
-//==== TEST_CRITERIA MMA
-
-test(function () {
- assert_throws(TYPE_MISMATCH_EXCEPTION, function () {
- tizen.humanactivitymonitor.stop();
- }, TYPE_MISMATCH_EXCEPTION + "should be thrown");
-}, document.title);
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2014 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:
- Saleh Enam Shohag <saleh.enam@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityMonitorManager_stop_type_GPS</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityMonitorManager_stop_type_GPS
-//==== LABEL Check if HumanActivityMonitorManager::stop() method works properly for HumanActivity type GPS
-//==== SPEC Tizen Web API:System:HumanActivityMonitor:HumanActivityMonitorManager:stop M
-//==== SPEC_URL TBD
-//==== PRIORITY P1
-//==== TEST_CRITERIA MR
-
-test(function () {
- var returnedValue, humanActivityType = "GPS";
- returnedValue = tizen.humanactivitymonitor.start(humanActivityType);
- assert_equals(returnedValue, undefined, "Incorrect returned value from start method");
- returnedValue = null;
- returnedValue = tizen.humanactivitymonitor.stop(humanActivityType);
- assert_equals(returnedValue, undefined, "Incorrect returned value from stop method");
-}, document.title);
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2014 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:
- Saleh Enam Shohag <saleh.enam@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityMonitorManager_stop_type_HRM</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityMonitorManager_stop_type_HRM
-//==== LABEL Check if HumanActivityMonitorManager::stop() method works properly for HumanActivity type HRM
-//==== SPEC Tizen Web API:System:HumanActivityMonitor:HumanActivityMonitorManager:stop M
-//==== SPEC_URL TBD
-//==== PRIORITY P1
-//==== TEST_CRITERIA MR
-
-test(function () {
- var returnedValue, humanActivityType = "HRM";
- returnedValue = tizen.humanactivitymonitor.start(humanActivityType);
- assert_equals(returnedValue, undefined, "Incorrect returned value from start method");
- returnedValue = null;
- returnedValue = tizen.humanactivitymonitor.stop(humanActivityType);
- assert_equals(returnedValue, undefined, "Incorrect returned value from stop method");
-}, document.title);
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2014 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:
- Wahid Dilawar Al-Hakim <wahid.h@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityMonitorManager_stop_type_PEDOMETER</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityMonitorManager_stop_type_PEDOMETER
-//==== LABEL Check if HumanActivityMonitorManager::stop() method works properly
-//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityMonitorManager:stop M
-//==== SPEC_URL TBD
-//==== PRIORITY P1
-//==== TEST_CRITERIA MR
-
-test(function () {
- var returnedValue, humanActivityType = "PEDOMETER";
- returnedValue = tizen.humanactivitymonitor.start(humanActivityType);
- assert_equals(returnedValue, undefined, "Incorrect returned value from start method");
- returnedValue = null;
- returnedValue = tizen.humanactivitymonitor.stop(humanActivityType);
- assert_equals(returnedValue, undefined, "Incorrect returned value from stop method");
-}, document.title);
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2016 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:
- Wei Zhang <wei625.zhang@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityMonitorManager_stop_type_SLEEP_MONITOR</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityMonitorManager_stop_type_SLEEP_MONITOR
-//==== LABEL Check if HumanActivityMonitorManager::stop() method works properly for HumanActivity type SLEEP_MONITOR
-//==== SPEC Tizen Web API:System:HumanActivityMonitor:HumanActivityMonitorManager:stop M
-//==== SPEC_URL TBD
-//==== PRIORITY P1
-//==== TEST_CRITERIA MR
-
-test(function () {
- var returnedValue, humanActivityType = "SLEEP_MONITOR";
- returnedValue = tizen.humanactivitymonitor.start(humanActivityType);
- assert_equals(returnedValue, undefined, "Incorrect returned value from start method");
- returnedValue = null;
- returnedValue = tizen.humanactivitymonitor.stop(humanActivityType);
- assert_equals(returnedValue, undefined, "Incorrect returned value from stop method");
-}, document.title);
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2014 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:
- Wahid Dilawar Al-Hakim <wahid.h@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityMonitorManager_stop_type_WRIST_UP</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityMonitorManager_stop_type_WRIST_UP
-//==== LABEL Check if HumanActivityMonitorManager::stop() method with WRIST_UP works properly
-//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityMonitorManager:stop M
-//==== SPEC_URL TBD
-//==== PRIORITY P1
-//==== TEST_CRITERIA MR
-
-test(function () {
- var returnedValue = null, humanActivityType = "WRIST_UP";
- returnedValue = tizen.humanactivitymonitor.start(humanActivityType);
- assert_equals(returnedValue, undefined, "Incorrect returned value from start method");
- returnedValue = tizen.humanactivitymonitor.stop(humanActivityType);
- assert_equals(returnedValue, undefined, "Incorrect returned value from stop method");
-}, document.title);
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2014 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:
- Wahid Dilawar Al-Hakim <wahid.h@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityMonitorManager_unsetAccumulativePedometerListener</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityMonitorManager_unsetAccumulativePedometerListener
-//==== LABEL Check if HumanActivityMonitorManager::unsetAccumulativePedometerListener() method works properly
-//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:humanactivitymonitor:unsetAccumulativePedometerListener M
-//==== SPEC_URL TBD
-//==== PRIORITY: P1
-//==== ONLOAD_DELAY 30
-//==== TEST_CRITERIA MNA MNAST MR
-
-setup({timeout: 30000});
-
-var t = async_test(document.title, {timeout: 30000}), changeCallback, returnedValue = null;
-
-t.step(function () {
- changeCallback = t.step(function (pedometer) {
- returnedValue = tizen.humanactivitymonitor.unsetAccumulativePedometerListener();
- assert_equals(returnedValue, undefined, "unsetAccumulativePedometerListener should return undefined.");
- assert_equals(pedometer, undefined, "unsetAccumulativePedometerListener should return undefined.");
- t.done();
- });
-
- tizen.humanactivitymonitor.setAccumulativePedometerListener(changeCallback);
-});
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2014 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:
- Wahid Dilawar Al-Hakim <wahid.h@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityMonitorManager_unsetAccumulativePedometerListener_exist</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityMonitorManager_unsetAccumulativePedometerListener_exist
-//==== LABEL Check if HumanActivityMonitorManager::unsetAccumulativePedometerListener() method exists
-//==== PRIORITY: P0
-//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityMonitorManager:unsetAccumulativePedometerListener M
-//==== SPEC_URL TBD
-//==== TEST_CRITERIA ME
-
-test(function () {
- check_method_exists(tizen.humanactivitymonitor, "unsetAccumulativePedometerListener");
-}, document.title);
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2014 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:
- Wahid Dilawar Al-Hakim <wahid.h@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityMonitorManager_unsetAccumulativePedometerListener_extra_argument</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityMonitorManager_unsetAccumulativePedometerListener_extra_argument
-//==== LABEL Check if HumanActivityMonitorManager::unsetAccumulativePedometerListener() method with extra argument
-//==== PRIORITY: P1
-//==== SPEC: Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityMonitorManager:unsetAccumulativePedometerListener M
-//==== SPEC_URL TBD
-//==== TEST_CRITERIA MNAEX
-
-test(function () {
- checkExtraArgument(tizen.humanactivitymonitor, "unsetAccumulativePedometerListener");
-}, document.title);
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2014 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:
- Hyukin Kwon <hyukin.kwon@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityMonitorOption_callbackInterval_type_GPS</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-<script src="support/humanactivitymonitor_common.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityMonitorOption_callbackInterval_type_GPS
-//==== LABEL Check if method HumanActivityMonitorOption::callbackInterval works properly for GPS HumanActivity type
-//==== PRIORITY P1
-//==== EXECUTION_TYPE manual
-//==== SPEC Tizen Web API:System:HumanActivityMonitor:HumanActivityMonitorOption:callbackInterval A
-//==== SPEC_URL TBD
-//==== STEP Wait 155 seconds for the callback
-//==== EXPECT Pass should be shown in the page after 155 seconds
-//==== TEST_CRITERIA
-//==== ONLOAD_DELAY 300
-
-setup({"timeout": 300000});
-
-var t = async_test(document.title, {"timeout": 300000}), changedCallback, startMeasure, endMeasure, humanActivityType = "GPS", cbFlag = 0;
-
-t.step(function () {
- add_result_callback(function () {
- tizen.humanactivitymonitor.stop(humanActivityType);
- });
-
- changedCallback = t.step_func(function (gpsInfo) {
- if (cbFlag == 1) {
- endMeasure = new Date().getTime();
- assert_approx_equals(endMeasure - startMeasure, 150000, 1000, "Callback should be invoked in given interval time.");
- t.done();
- }
- if (cbFlag == 0) {
- startMeasure = new Date().getTime();
- cbFlag = 1;
- }
- });
-
- tizen.humanactivitymonitor.start(humanActivityType, changedCallback, {callbackInterval:155000});
- startMeasure = new Date().getTime();
-});
-
-</script>
-</body>
-</html>
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2014 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:
- Hyukin Kwon <hyukin.kwon@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityMonitorOption_callbackInterval_type_GPS_default</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-<script src="support/humanactivitymonitor_common.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityMonitorOption_callbackInterval_type_GPS_default
-//==== LABEL Check if method HumanActivityMonitorOption::callbackInterval works properly when set to null
-//==== PRIORITY P1
-//==== EXECUTION_TYPE manual
-//==== SPEC Tizen Web API:System:HumanActivityMonitor:HumanActivityMonitorOption:callbackInterval A
-//==== SPEC_URL TBD
-//==== STEP Wait 150 seconds for the callback
-//==== EXPECT Pass should be shown in the page after 150 seconds
-//==== TEST_CRITERIA
-//==== ONLOAD_DELAY 300
-
-setup({"timeout": 300000});
-
-var t = async_test(document.title, {"timeout": 300000}), changedCallback, startMeasure, endMeasure, humanActivityType = "GPS", cbFlag = 0;
-
-t.step(function () {
- add_result_callback(function () {
- tizen.humanactivitymonitor.stop(humanActivityType);
- });
-
- changedCallback = t.step_func(function (gpsInfo) {
- if (cbFlag == 1) {
- endMeasure = new Date().getTime();
- assert_approx_equals(endMeasure - startMeasure, 150000, 1000, "Callback should be invoked in given interval time.");
- t.done();
- }
- if (cbFlag == 0) {
- startMeasure = new Date().getTime();
- cbFlag = 1;
- }
- });
-
- tizen.humanactivitymonitor.start(humanActivityType, changedCallback, {callbackInterval:null});
-});
-
-</script>
-</body>
-</html>
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2014 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:
- Hyukin Kwon <hyukin.kwon@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityMonitorOption_callbackInterval_type_HRM</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-<script src="support/humanactivitymonitor_common.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityMonitorOption_callbackInterval_type_HRM
-//==== LABEL Check if method HumanActivityMonitorOption::callbackInterval works properly for HRM HumanActivity type
-//==== PRIORITY P1
-//==== SPEC Tizen Web API:System:HumanActivityMonitor:HumanActivityMonitorOption:callbackInterval A
-//==== SPEC_URL TBD
-//==== TEST_CRITERIA
-
-var t = async_test(document.title), changedCallback, startMeasure, endMeasure, humanActivityType = "HRM", cbFlag = 0;
-
-t.step(function () {
- add_result_callback(function () {
- tizen.humanactivitymonitor.stop(humanActivityType);
- });
-
- changedCallback = t.step_func(function (hrmInfo) {
- if (cbFlag == 1) {
- endMeasure = new Date().getTime();
- assert_approx_equals(endMeasure - startMeasure, 500, 100, "Callback should be invoked in given interval time.");
- t.done();
- }
- if (cbFlag == 0) {
- startMeasure = new Date().getTime();
- cbFlag = 1;
- }
- });
-
- tizen.humanactivitymonitor.start(humanActivityType, changedCallback, {callbackInterval:500});
-});
-
-</script>
-</body>
-</html>
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2014 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:
- Hyukin Kwon <hyukin.kwon@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityMonitorOption_callbackInterval_type_HRM_default</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-<script src="support/humanactivitymonitor_common.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityMonitorOption_callbackInterval_type_HRM_default
-//==== LABEL Check if method HumanActivityMonitorOption::callbackInterval() works properly when set to null
-//==== PRIORITY P1
-//==== SPEC Tizen Web API:System:HumanActivityMonitor:HumanActivityMonitorOption:callbackInterval A
-//==== SPEC_URL TBD
-//==== TEST_CRITERIA
-
-var t = async_test(document.title), changedCallback, startMeasure, endMeasure, humanActivityType = "HRM", cbFlag = 0;
-
-t.step(function () {
- add_result_callback(function () {
- tizen.humanactivitymonitor.stop(humanActivityType);
- });
-
- changedCallback = t.step_func(function (hrmInfo) {
- if (cbFlag == 1) {
- endMeasure = new Date().getTime();
- assert_approx_equals(endMeasure - startMeasure, 100, 50, "Callback should be invoked in given interval time.");
- t.done();
- }
- if (cbFlag == 0) {
- startMeasure = new Date().getTime();
- cbFlag = 1;
- }
- });
-
- tizen.humanactivitymonitor.start(humanActivityType, changedCallback, {callbackInterval:null});
- startMeasure = new Date().getTime();
-});
-
-</script>
-</body>
-</html>
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2014 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:
- Hyukin Kwon <hyukin.kwon@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityMonitorOption_sampleInterval_type_GPS</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-<script src="support/humanactivitymonitor_common.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityMonitorOption_sampleInterval_type_GPS
-//==== LABEL Check if method HumanActivityMonitorOption::sampleInterval works properly for GPS HumanActivity type
-//==== PRIORITY P1
-//==== EXECUTION_TYPE manual
-//==== SPEC Tizen Web API:System:HumanActivityMonitor:HumanActivityMonitorOption:sampleInterval A
-//==== SPEC_URL TBD
-//==== STEP Wait 120 seconds for the callback
-//==== EXPECT Pass should be shown in the page after 120 seconds
-//==== TEST_CRITERIA
-//==== ONLOAD_DELAY 300
-
-setup({"timeout": 300000});
-
-var t = async_test(document.title, {"timeout": 300000}), changedCallback, humanActivityType = "GPS", cbFlag = 0;
-
-t.step(function () {
- add_result_callback(function () {
- tizen.humanactivitymonitor.stop(humanActivityType);
- });
-
- changedCallback = t.step_func(function (gpsInfo) {
- if (cbFlag == 1) {
- assert_approx_equals(gpsInfo.gpsInfo.length, 60, 5, "GPS information should be sampled approximately 60 times");
- t.done();
- }
- if (cbFlag == 0) {
- cbFlag = 1;
- }
- });
-
- tizen.humanactivitymonitor.start(humanActivityType, changedCallback, {callbackInterval:120000, sampleInterval:2000});
-});
-
-</script>
-</body>
-</html>
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2014 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:
- Hyukin Kwon <hyukin.kwon@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityMonitorOption_sampleInterval_type_GPS_default</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-<script src="support/humanactivitymonitor_common.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityMonitorOption_sampleInterval_type_GPS_default
-//==== LABEL Check if method HumanActivityMonitorOption::sampleInterval works properly when set to null
-//==== PRIORITY P1
-//==== EXECUTION_TYPE manual
-//==== SPEC Tizen Web API:System:HumanActivityMonitor:HumanActivityMonitorOption:sampleInterval A
-//==== SPEC_URL TBD
-//==== STEP Wait 120 seconds for the callback
-//==== EXPECT Pass should be shown in the page after 120 seconds
-//==== TEST_CRITERIA
-//==== ONLOAD_DELAY 300
-
-setup({"timeout": 300000});
-
-var t = async_test(document.title, {"timeout": 300000}), changedCallback, humanActivityType = "GPS", cbFlag = 0;
-
-t.step(function () {
- add_result_callback(function () {
- tizen.humanactivitymonitor.stop(humanActivityType);
- });
-
- changedCallback = t.step_func(function (gpsInfo) {
- if (cbFlag == 1) {
- assert_approx_equals(gpsInfo.gpsInfo.length, 120, 5, "GPS information should be sampled approximately 120 times");
- t.done();
- }
- if (cbFlag == 0) {
- cbFlag = 1;
- }
- });
-
- tizen.humanactivitymonitor.start(humanActivityType, changedCallback, {callbackInterval:120000, sampleInterval:null});
-});
-
-</script>
-</body>
-</html>
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2014 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:
- Wahid Dilawar Al-Hakim <wahid.h@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityMonitorSuccessCallback_notexist</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityMonitorSuccessCallback_notexist
-//==== LABEL Check if HumanActivityMonitorSuccessCallback does not exist
-//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityMonitorSuccessCallback U
-//==== SPEC_URL TBD
-//==== PRIORITY P3
-//==== TEST_CRITERIA CBNIO
-
-test(function () {
- check_no_interface_object("HumanActivityMonitorSuccessCallback");
-}, document.title);
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2014 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:
- Wahid Dilawar Al-Hakim <wahid.h@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityMonitorSuccessCallback_onsuccess</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-<script src="support/humanactivitymonitor_common.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityMonitorSuccessCallback_onsuccess
-//==== LABEL Test whether HumanActivityMonitorSuccessCallback::onsuccess() is called with argument of proper type
-//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityMonitorSuccessCallback:onsuccess M
-//==== SPEC_URL TBD
-//==== PRIORITY P1
-//==== ONLOAD_DELAY 90
-//==== TEST_CRITERIA CBT CBOA
-
-setup({timeout: 90000});
-
-var t = async_test(document.title, {timeout: 90000}), successCallback, errorCallback, returnedValue = null, humanActivityType = "PEDOMETER";
-
-t.step(function () {
- add_result_callback(function () {
- tizen.humanactivitymonitor.stop(humanActivityType);
- });
-
- successCallback = t.step_func(function (humanActivityData) {
- assert_type(humanActivityData, "object", "humanActivityData is not object type");
- assert_equals(returnedValue, undefined, "Incorrect returned value");
- check_human_activity_pedometer_data(humanActivityData);
- t.done();
- });
-
- errorCallback = t.step_func(function (error) {
- assert_unreached("error callback invoked: name: " + error.name + ", msg: " + error.message);
- });
-
- returnedValue = tizen.humanactivitymonitor.start(humanActivityType);
- assert_equals(returnedValue, undefined, "Incorrect returned value");
- returnedValue = tizen.humanactivitymonitor.getHumanActivityData(humanActivityType, successCallback, errorCallback);
-});
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2014 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:
- Saleh Enam Shohag <saleh.enam@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityPedometerData_cumulativeCalorie_attribute</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-<script src="support/humanactivitymonitor_common.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityPedometerData_cumulativeCalorie_attribute
-//==== LABEL Check if HumanActivityPedometerData::cumulativeCalorie exists, has type double, and is readonly
-//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityPedometerData:cumulativeCalorie A
-//==== SPEC_URL TBD
-//==== PRIORITY P1
-//==== ONLOAD_DELAY 9
-//==== TEST_CRITERIA AE AT ARO
-
-setup({timeout: 9000});
-
-var t = async_test(document.title, {timeout: 9000}), getHumanActivityDataSuccess, getHumanActivityDataError, humanActivityType = "PEDOMETER";
-
-t.step(function () {
- add_result_callback(function () {
- tizen.humanactivitymonitor.stop(humanActivityType);
- });
-
- getHumanActivityDataError = t.step_func(function (error) {
- assert_unreached("getHumanActivityDataError is called" + error.name);
- });
-
- getHumanActivityDataSuccess = t.step_func(function (pedometerInfo) {
- check_readonly(pedometerInfo, "cumulativeCalorie", pedometerInfo.cumulativeCalorie, "double", pedometerInfo.cumulativeCalorie + 10);
- t.done();
- });
-
- tizen.humanactivitymonitor.start(humanActivityType);
- tizen.humanactivitymonitor.getHumanActivityData(humanActivityType, getHumanActivityDataSuccess, getHumanActivityDataError);
-});
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2014 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:
- Saleh Enam Shohag <saleh.enam@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityPedometerData_cumulativeDistance_attribute</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-<script src="support/humanactivitymonitor_common.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityPedometerData_cumulativeDistance_attribute
-//==== LABEL Check if HumanActivityPedometerData::cumulativeDistance exists, has type double, and is readonly
-//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityPedometerData:cumulativeDistance A
-//==== SPEC_URL TBD
-//==== PRIORITY P1
-//==== ONLOAD_DELAY 9
-//==== TEST_CRITERIA AE AT ARO
-
-setup({timeout: 9000});
-
-var t = async_test(document.title, {timeout: 9000}), getHumanActivityDataSuccess, getHumanActivityDataError, humanActivityType = "PEDOMETER";
-
-t.step(function () {
- add_result_callback(function () {
- tizen.humanactivitymonitor.stop(humanActivityType);
- });
-
- getHumanActivityDataError = t.step_func(function (error) {
- assert_unreached("getHumanActivityDataError is called" + error.name);
- });
-
- getHumanActivityDataSuccess = t.step_func(function (pedometerInfo) {
- check_readonly(pedometerInfo, "cumulativeDistance", pedometerInfo.cumulativeDistance, "double", pedometerInfo.cumulativeDistance + 10);
- t.done();
- });
-
- tizen.humanactivitymonitor.start(humanActivityType);
- tizen.humanactivitymonitor.getHumanActivityData(humanActivityType, getHumanActivityDataSuccess, getHumanActivityDataError);
-});
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2014 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:
- Saleh Enam Shohag <saleh.enam@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityPedometerData_cumulativeRunStepCount_attribute</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-<script src="support/humanactivitymonitor_common.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityPedometerData_cumulativeRunStepCount_attribute
-//==== LABEL Check if HumanActivityPedometerData::cumulativeRunStepCount exists, has type double, and is readonly
-//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityPedometerData:cumulativeRunStepCount A
-//==== SPEC_URL TBD
-//==== PRIORITY P1
-//==== ONLOAD_DELAY 9
-//==== TEST_CRITERIA AE AT ARO
-
-setup({timeout: 9000});
-
-var t = async_test(document.title, {timeout: 9000}), getHumanActivityDataSuccess, getHumanActivityDataError, humanActivityType = "PEDOMETER";
-
-t.step(function () {
- add_result_callback(function () {
- tizen.humanactivitymonitor.stop(humanActivityType);
- });
-
- getHumanActivityDataError = t.step_func(function (error) {
- assert_unreached("getHumanActivityDataError is called" + error.name);
- });
-
- getHumanActivityDataSuccess = t.step_func(function (pedometerInfo) {
- check_readonly(pedometerInfo, "cumulativeRunStepCount", pedometerInfo.cumulativeRunStepCount, "double",
- pedometerInfo.cumulativeRunStepCount + 10);
- t.done();
- });
-
- tizen.humanactivitymonitor.start(humanActivityType);
- tizen.humanactivitymonitor.getHumanActivityData(humanActivityType, getHumanActivityDataSuccess, getHumanActivityDataError);
-});
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2014 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:
- Saleh Enam Shohag <saleh.enam@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityPedometerData_cumulativeTotalStepCount_attribute</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-<script src="support/humanactivitymonitor_common.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityPedometerData_cumulativeTotalStepCount_attribute
-//==== LABEL Check if HumanActivityPedometerData::cumulativeTotalStepCount exists, has type double, and is readonly
-//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityPedometerData:cumulativeTotalStepCount A
-//==== SPEC_URL TBD
-//==== PRIORITY P1
-//==== ONLOAD_DELAY 9
-//==== TEST_CRITERIA AE AT ARO
-
-setup({timeout: 9000});
-
-var t = async_test(document.title, {timeout: 9000}), getHumanActivityDataSuccess, getHumanActivityDataError, humanActivityType = "PEDOMETER";
-
-t.step(function () {
- add_result_callback(function () {
- tizen.humanactivitymonitor.stop(humanActivityType);
- });
-
- getHumanActivityDataError = t.step_func(function (error) {
- assert_unreached("getHumanActivityDataError is called" + error.name);
- });
-
- getHumanActivityDataSuccess = t.step_func(function (pedometerInfo) {
- check_readonly(pedometerInfo, "cumulativeTotalStepCount", pedometerInfo.cumulativeTotalStepCount, "double",
- pedometerInfo.cumulativeTotalStepCount + 10);
- t.done();
- });
-
- tizen.humanactivitymonitor.start(humanActivityType);
- tizen.humanactivitymonitor.getHumanActivityData(humanActivityType, getHumanActivityDataSuccess, getHumanActivityDataError);
-});
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2014 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:
- Saleh Enam Shohag <saleh.enam@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityPedometerData_cumulativeWalkStepCount_attribute</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-<script src="support/humanactivitymonitor_common.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityPedometerData_cumulativeWalkStepCount_attribute
-//==== LABEL Check if HumanActivityPedometerData::cumulativeWalkStepCount exists, has type double, and is readonly
-//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityPedometerData:cumulativeWalkStepCount A
-//==== SPEC_URL TBD
-//==== PRIORITY P1
-//==== ONLOAD_DELAY 9
-//==== TEST_CRITERIA AE AT ARO
-
-setup({timeout: 9000});
-
-var t = async_test(document.title, {timeout: 9000}), getHumanActivityDataSuccess, getHumanActivityDataError, humanActivityType = "PEDOMETER";
-
-t.step(function () {
- add_result_callback(function () {
- tizen.humanactivitymonitor.stop(humanActivityType);
- });
-
- getHumanActivityDataError = t.step_func(function (error) {
- assert_unreached("getHumanActivityDataError is called" + error.name);
- });
-
- getHumanActivityDataSuccess = t.step_func(function (pedometerInfo) {
- check_readonly(pedometerInfo, "cumulativeWalkStepCount", pedometerInfo.cumulativeWalkStepCount, "double",
- pedometerInfo.cumulativeWalkStepCount + 10);
- t.done();
- });
-
- tizen.humanactivitymonitor.start(humanActivityType);
- tizen.humanactivitymonitor.getHumanActivityData(humanActivityType, getHumanActivityDataSuccess, getHumanActivityDataError);
-});
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2014 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:
- Wahid Dilawar Al-Hakim <wahid.h@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityPedometerData_extend</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityPedometerData_extend
-//==== LABEL Check if HumanActivityPedometerData object is extendable
-//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityPedometerData:HumanActivityPedometerData U
-//==== SPEC_URL TBD
-//==== PRIORITY P3
-//==== ONLOAD_DELAY 90
-//==== TEST_CRITERIA OBX
-
-setup({timeout: 90000});
-
-var t = async_test(document.title, {timeout: 90000}), successCallback, errorCallback, humanActivityType = "PEDOMETER";
-
-t.step(function () {
- add_result_callback(function () {
- tizen.humanactivitymonitor.stop(humanActivityType);
- });
-
- successCallback = t.step_func(function (humanActivityData) {
- check_extensibility(humanActivityData);
- t.done();
- });
-
- errorCallback = t.step_func(function (error) {
- assert_unreached("error callback invoked: name: " + error.name + ", msg: " + error.message);
- });
-
- tizen.humanactivitymonitor.start(humanActivityType);
- tizen.humanactivitymonitor.getHumanActivityData(humanActivityType, successCallback, errorCallback);
-});
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2014 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:
- Wahid Dilawar Al-Hakim <wahid.h@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityPedometerData_notexist</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityPedometerData_notexist
-//==== LABEL Check if interface HumanActivityPedometerData exists, it should not
-//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityPedometerData:HumanActivityPedometerData U
-//==== SPEC_URL TBD
-//==== PRIORITY P3
-//==== TEST_CRITERIA NIO
-
-test(function () {
- check_no_interface_object("HumanActivityPedometerData");
-}, document.title);
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2014 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:
- Saleh Enam Shohag <saleh.enam@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityPedometerData_speed_attribute</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-<script src="support/humanactivitymonitor_common.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityPedometerData_speed_attribute
-//==== LABEL Check if HumanActivityPedometerData::speed exists, has type double, and is readonly
-//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityPedometerData:speed A
-//==== SPEC_URL TBD
-//==== PRIORITY P1
-//==== ONLOAD_DELAY 9
-//==== TEST_CRITERIA AE AT ARO
-
-setup({timeout: 9000});
-
-var t = async_test(document.title, {timeout: 9000}), getHumanActivityDataSuccess, getHumanActivityDataError, humanActivityType = "PEDOMETER";
-
-t.step(function () {
- add_result_callback(function () {
- tizen.humanactivitymonitor.stop(humanActivityType);
- });
-
- getHumanActivityDataError = t.step_func(function (error) {
- assert_unreached("getHumanActivityDataError is called" + error.name);
- });
-
- getHumanActivityDataSuccess = t.step_func(function (pedometerInfo) {
- check_readonly(pedometerInfo, "speed", pedometerInfo.speed, "double", pedometerInfo.speed + 10);
- t.done();
- });
-
- tizen.humanactivitymonitor.start(humanActivityType);
- tizen.humanactivitymonitor.getHumanActivityData(humanActivityType, getHumanActivityDataSuccess, getHumanActivityDataError);
-});
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2014 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:
- Wei Zhang <wei625.zhang@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityPedometerData_stepCountDifferences_attribute</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-<script src="support/humanactivitymonitor_common.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityPedometerData_stepCountDifferences_attribute
-//==== LABEL Check if HumanActivityPedometerData::stepCountDifferences exists, has type double, and is readonly
-//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityPedometerData:stepCountDifferences A
-//==== SPEC_URL TBD
-//==== PRIORITY P1
-//==== ONLOAD_DELAY 9
-//==== TEST_CRITERIA AE AT ARO
-
-setup({timeout: 9000});
-
-var t = async_test(document.title, {timeout: 9000}), getHumanActivityDataSuccess, getHumanActivityDataError, humanActivityType = "PEDOMETER";
-
-t.step(function () {
- add_result_callback(function () {
- tizen.humanactivitymonitor.stop(humanActivityType);
- });
-
- getHumanActivityDataError = t.step_func(function (error) {
- assert_unreached("getHumanActivityDataError is called" + error.name);
- });
-
- getHumanActivityDataSuccess = t.step_func(function (pedometerInfo) {
- check_readonly(pedometerInfo, "stepCountDifferences", pedometerInfo.stepCountDifferences, "array", [10, 500]);
- t.done();
- });
-
- tizen.humanactivitymonitor.start(humanActivityType);
- tizen.humanactivitymonitor.getHumanActivityData(humanActivityType, getHumanActivityDataSuccess, getHumanActivityDataError);
-});
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2014 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:
- Saleh Enam Shohag <saleh.enam@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityPedometerData_stepStatus_attribute</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-<script src="support/humanactivitymonitor_common.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityPedometerData_stepStatus_attribute
-//==== LABEL Check if HumanActivityPedometerData::stepStatus exists, has type string, and is readonly
-//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityPedometerData:stepStatus A
-//==== SPEC_URL TBD
-//==== PRIORITY P1
-//==== ONLOAD_DELAY 9
-//==== TEST_CRITERIA AE AT ARO
-
-setup({timeout: 9000});
-
-var t = async_test(document.title, {timeout: 9000}), getHumanActivityDataSuccess, getHumanActivityDataError, humanActivityType = "PEDOMETER";
-
-t.step(function () {
- add_result_callback(function () {
- tizen.humanactivitymonitor.stop(humanActivityType);
- });
-
- getHumanActivityDataError = t.step_func(function (error) {
- assert_unreached("getHumanActivityDataError is called" + error.name);
- });
-
- getHumanActivityDataSuccess = t.step_func(function (pedometerInfo) {
- check_readonly(pedometerInfo, "stepStatus", pedometerInfo.stepStatus, "string", pedometerInfo.stepStatus + "10");
- t.done();
- });
-
- tizen.humanactivitymonitor.start(humanActivityType);
- tizen.humanactivitymonitor.getHumanActivityData(humanActivityType, getHumanActivityDataSuccess, getHumanActivityDataError);
-});
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2014 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:
- Saleh Enam Shohag <saleh.enam@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityPedometerData_walkingFrequency_attribute</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-<script src="support/humanactivitymonitor_common.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityPedometerData_walkingFrequency_attribute
-//==== LABEL Check if HumanActivityPedometerData::walkingFrequency exists, has type double, and is readonly
-//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityPedometerData:walkingFrequency A
-//==== SPEC_URL TBD
-//==== PRIORITY P1
-//==== ONLOAD_DELAY 9
-//==== TEST_CRITERIA AE AT ARO
-
-setup({timeout: 9000});
-
-var t = async_test(document.title, {timeout: 9000}), getHumanActivityDataSuccess, getHumanActivityDataError, humanActivityType = "PEDOMETER";
-
-t.step(function () {
- add_result_callback(function () {
- tizen.humanactivitymonitor.stop(humanActivityType);
- });
-
- getHumanActivityDataError = t.step_func(function (error) {
- assert_unreached("getHumanActivityDataError is called" + error.name);
- });
-
- getHumanActivityDataSuccess = t.step_func(function (pedometerInfo) {
- check_readonly(pedometerInfo, "walkingFrequency", pedometerInfo.walkingFrequency, "double", pedometerInfo.walkingFrequency + 10);
- t.done();
- });
-
- tizen.humanactivitymonitor.start(humanActivityType);
- tizen.humanactivitymonitor.getHumanActivityData(humanActivityType, getHumanActivityDataSuccess, getHumanActivityDataError);
-});
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2016 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:
- Xiaoyan Qian <xy.qian@samsung.com>
-
--->
-
-<html>
-<head>
-<title>HumanActivityReadRecorderSuccessCallback_notexist</title>
-<script src="support/unitcommon.js"></script>
-</head>
-
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityReadRecorderSuccessCallback_notexist
-//==== LABEL Check if HumanActivityReadRecorderSuccessCallback cannot be called in new expression and as a function or in new expression
-//==== PRIORITY P3
-//==== SPEC Tizen Web API:System:HumanActivityMonitor:HumanActivityReadRecorderSuccessCallback:HumanActivityReadRecorderSuccessCallback U
-//==== SPEC_URL TBD
-//==== TEST_CRITERIA NIO
-
-test(function () {
- check_no_interface_object("HumanActivityReadRecorderSuccessCallback");
-}, document.title);
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2016 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:
- Xiaoyan Qian <xy.qian@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityReadRecorderSuccessCallback_onsuccess</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<!--<button type="button" onclick="stopRecorder()">Click</button>-->
-<script>
-//==== TEST: HumanActivityReadRecorderSuccessCallback_onsuccess
-//==== LABEL Check if HumanActivityReadRecorderSuccessCallback onsuccess is called and if its arguments have proper type
-//==== SPEC Tizen Web API:System:HumanActivityMonitor:HumanActivityReadRecorderSuccessCallback:HumanActivityReadRecorderSuccessCallback U
-//==== SPEC_URL TBD
-//==== PRIORITY P1
-//==== EXECUTION_TYPE manual
-//==== STEP Press run button. Waiting for 10 minutes, then press the Click button.
-//==== EXPECT Pass
-//==== TEST_CRITERIA CBT CBOA
-//==== ONLOAD_DELAY 60
-
-setup({timeout: 60000});
-
-var t = async_test(document.title, {timeout: 60000}), successCallback, errorCallback, date = new Date(), endTime = date.getTime(), startTime = date.setDate(date.getDate() - 1),
- query = {
- startTime: startTime/1000,
- endTime: endTime/1000,
- interval: 10
- };
-t.step(function () {
-
- successCallback = t.step_func(function (humanactivitydata) {
- assert_not_equals(humanactivitydata , null, "Argument should not be null.");
- assert_type(humanactivitydata[0], "object", "Incorrect type.");
- assert_type(humanactivitydata[0].heartRate, "number", "heartRate type check");
- assert_type(humanactivitydata[0].startTime, "number", "startTime type check");
- assert_type(humanactivitydata[0].endTime, "number", "endTime type check");
- assert_not_equals(humanactivitydata[0].heartRate, null, "heartRate should not be null");
- assert_not_equals(humanactivitydata[0].startTime, null, "startTime should not be null");
- assert_not_equals(humanactivitydata[0].endTime, null, "endTime should not be null");
- t.done();
- });
-
- errorCallback = t.step_func(function (error) {
- assert_unreached("Invalid error callback invoked:" + error.name + ": " + error.message);
- });
-
- tizen.humanactivitymonitor.readRecorderData("HRM", query, successCallback);
-
-});
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2014 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:
- Wei Zhang <wei625.zhang@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityRecognitionData_notexist</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityRecognitionData_notexist
-//==== LABEL Check if interface HumanActivityRecognitionData exists, it should not
-//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivityRecognitionData:HumanActivityRecognitionData U
-//==== SPEC_URL TBD
-//==== PRIORITY P3
-//==== TEST_CRITERIA NIO
-
-test(function () {
- check_no_interface_object("HumanActivityRecognitionData");
-}, document.title);
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2016 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:
- Xiaoyan Qian <xy.qian@samsung.com>
-
--->
-
-<html>
-<head>
-<title>HumanActivityRecorderData_notexist</title>
-<script src="support/unitcommon.js"></script>
-</head>
-
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityRecorderData_notexist
-//==== LABEL Check if HumanActivityRecorderData cannot be called in new expression and as a function or in new expression
-//==== PRIORITY P3
-//==== SPEC Tizen Web API:System:HumanActivityMonitor:HumanActivityRecorderData:HumanActivityRecorderData U
-//==== SPEC_URL TBD
-//==== TEST_CRITERIA NIO
-
-test(function () {
- check_no_interface_object("HumanActivityRecorderData");
-}, document.title);
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2016 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:
- Xiaoyan Qian <xy.qian@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityRecorderHRMData_endTime_attribute</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityRecorderHRMData_endTime_attribute
-//==== LABEL Check if HumanActivityRecorderHRMData have endTime attribute with proper type, readonly
-//==== SPEC Tizen Web API:System:HumanActivityMonitor:HumanActivityRecorderHRMData:endTime A
-//==== SPEC_URL TBD
-//==== PRIORITY P1
-//==== TEST_CRITERIA AE AT ARO
-
-setup({timeout: 60000});
-
-var t = async_test(document.title, {timeout: 60000}), successCallback, date = new Date(), endTime = date.getTime(), startTime = date.setDate(date.getDate() - 1),
- query = {
- startTime: startTime/1000,
- endTime: endTime/1000,
- interval: 1440
- };
-
-t.step(function () {
-
- successCallback = t.step_func(function (humanactivitydata) {
- assert_greater_than(humanactivitydata.length, 0, "data is not found");
- check_readonly(humanactivitydata[0], "endTime", humanactivitydata[0].endTime, "number", humanactivitydata[0].endTime + 100);
- t.done();
- });
-
- tizen.humanactivitymonitor.readRecorderData("HRM", query, successCallback);
-
-});
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2016 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:
- Xiaoyan Qian <xy.qian@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityRecorderHRMData_heartRate_attribute</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityRecorderHRMData_heartRate_attribute
-//==== LABEL Check if HumanActivityRecorderHRMData have heartRate attribute with proper type, readonly
-//==== SPEC Tizen Web API:System:HumanActivityMonitor:HumanActivityRecorderHRMData:heartRate A
-//==== SPEC_URL TBD
-//==== PRIORITY P1
-//==== TEST_CRITERIA AE AT ARO
-
-setup({timeout: 60000});
-
-var t = async_test(document.title, {timeout: 60000}), successCallback, date = new Date(), endTime = date.getTime(), startTime = date.setDate(date.getDate() - 1),
- query = {
- startTime: startTime/1000,
- endTime: endTime/1000,
- interval: 1440
- };
-
-t.step(function () {
-
- successCallback = t.step_func(function (humanactivitydata) {
- assert_greater_than(humanactivitydata.length, 0, "data is not found");
- check_readonly(humanactivitydata[0], "heartRate", humanactivitydata[0].heartRate, "number", humanactivitydata[0].heartRate + 100);
- t.done();
- });
-
- tizen.humanactivitymonitor.readRecorderData("HRM", query, successCallback);
-
-});
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2016 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:
- Xiaoyan Qian <xy.qian@samsung.com>
-
--->
-
-<html>
-<head>
-<title>HumanActivityRecorderHRMData_notexist</title>
-<script src="support/unitcommon.js"></script>
-</head>
-
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityRecorderHRMData_notexist
-//==== LABEL Check if HumanActivityRecorderHRMData cannot be called in new expression and as a function or in new expression
-//==== PRIORITY P3
-//==== SPEC Tizen Web API:System:HumanActivityMonitor:HumanActivityRecorderHRMData:HumanActivityRecorderHRMData U
-//==== SPEC_URL TBD
-//==== TEST_CRITERIA NIO
-
-test(function () {
- check_no_interface_object("HumanActivityRecorderHRMData");
-}, document.title);
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2016 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:
- Xiaoyan Qian <xy.qian@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityRecorderHRMData_startTime_attribute</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityRecorderHRMData_startTime_attribute
-//==== LABEL Check if HumanActivityRecorderHRMData have startTime attribute with proper type, readonly
-//==== SPEC Tizen Web API:System:HumanActivityMonitor:HumanActivityRecorderHRMData:startTime A
-//==== SPEC_URL TBD
-//==== PRIORITY P1
-//==== TEST_CRITERIA AE AT ARO
-
-setup({timeout: 60000});
-
-var t = async_test(document.title, {timeout: 60000}), successCallback, date = new Date(), endTime = date.getTime(), startTime = date.setDate(date.getDate() - 1),
- query = {
- startTime: startTime/1000,
- endTime: endTime/1000,
- interval: 1440
- };
-
-t.step(function () {
-
- successCallback = t.step_func(function (humanactivitydata) {
- assert_greater_than(humanactivitydata.length, 0, "data is not found");
- check_readonly(humanactivitydata[0], "startTime", humanactivitydata[0].startTime, "number", humanactivitydata[0].startTime + 100);
- t.done();
- });
-
- tizen.humanactivitymonitor.readRecorderData("HRM", query, successCallback);
-
-});
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2016 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:
- Xiaoyan Qian <xy.qian@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityRecorderPedometerData_calorie_attribute</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityRecorderPedometerData_calorie_attribute
-//==== LABEL Check if HumanActivityRecorderPedometerData have calorie attribute with proper type, readonly
-//==== SPEC Tizen Web API:System:HumanActivityMonitor:HumanActivityRecorderPedometerData:calorie A
-//==== SPEC_URL TBD
-//==== PRIORITY P1
-//==== EXECUTION_TYPE manual
-//==== STEP Press run button. Pretend walking with the device.
-//==== EXPECT Pass
-//==== TEST_CRITERIA AE AT ARO
-//==== ONLOAD_DELAY 60
-
-setup({timeout: 90000});
-
-var t = async_test(document.title, {timeout: 90000}), retValue = null, successCallback, date = new Date(), startTime = date.getTime(), endTime = date.setDate(date.getDate() + 1),
- query = {
- startTime: startTime/1000,
- endTime: endTime/1000,
- interval: 1440
- };
-
-t.step(function () {
-
- add_result_callback(function () {
- tizen.humanactivitymonitor.stopRecorder("PEDOMETER");
- });
-
- successCallback = t.step_func(function (humanactivitydata) {
- assert_greater_than(humanactivitydata.length, 0, "data is not found");
- check_readonly(humanactivitydata[0], "calorie", humanactivitydata[0].calorie, "number", humanactivitydata[0].calorie + 100);
- t.done();
- });
-
- tizen.humanactivitymonitor.startRecorder("PEDOMETER");
- setTimeout(function(){tizen.humanactivitymonitor.stopRecorder("PEDOMETER");
- retValue = tizen.humanactivitymonitor.readRecorderData("PEDOMETER", query, successCallback);}, 60000);
-
-});
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2016 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:
- Xiaoyan Qian <xy.qian@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityRecorderPedometerData_distance_attribute</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityRecorderPedometerData_distance_attribute
-//==== LABEL Check if HumanActivityRecorderPedometerData have distance attribute with proper type, readonly
-//==== SPEC Tizen Web API:System:HumanActivityMonitor:HumanActivityRecorderPedometerData:distance A
-//==== SPEC_URL TBD
-//==== PRIORITY P1
-//==== EXECUTION_TYPE manual
-//==== STEP Press run button. Pretend walking with the device.
-//==== EXPECT Pass
-//==== TEST_CRITERIA AE AT ARO
-//==== ONLOAD_DELAY 60
-
-setup({timeout: 90000});
-
-var t = async_test(document.title, {timeout: 90000}), retValue = null, successCallback, date = new Date(), startTime = date.getTime(), endTime = date.setDate(date.getDate() + 1),
- query = {
- startTime: startTime/1000,
- endTime: endTime/1000,
- interval: 1440
- };
-
-t.step(function () {
-
- add_result_callback(function () {
- tizen.humanactivitymonitor.stopRecorder("PEDOMETER");
- });
-
- successCallback = t.step_func(function (humanactivitydata) {
- assert_greater_than(humanactivitydata.length, 0, "data is not found");
- check_readonly(humanactivitydata[0], "distance", humanactivitydata[0].distance, "number", humanactivitydata[0].distance + 100);
- t.done();
- });
-
- tizen.humanactivitymonitor.startRecorder("PEDOMETER");
- setTimeout(function(){tizen.humanactivitymonitor.stopRecorder("PEDOMETER");
- retValue = tizen.humanactivitymonitor.readRecorderData("PEDOMETER", query, successCallback);}, 60000);
-
-});
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2016 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:
- Xiaoyan Qian <xy.qian@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityRecorderPedometerData_endTime_attribute</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityRecorderPedometerData_endTime_attribute
-//==== LABEL Check if HumanActivityRecorderPedometerData have endTime attribute with proper type, readonly
-//==== SPEC Tizen Web API:System:HumanActivityMonitor:HumanActivityRecorderPedometerData:endTime A
-//==== SPEC_URL TBD
-//==== PRIORITY P1
-//==== EXECUTION_TYPE manual
-//==== STEP Press run button. Pretend walking with the device.
-//==== EXPECT Pass
-//==== TEST_CRITERIA AE AT ARO
-//==== ONLOAD_DELAY 60
-
-setup({timeout: 120000});
-
-var t = async_test(document.title, {timeout: 120000}), successCallback, date = new Date(), startTime = date.getTime(), endTime = date.setDate(date.getDate() + 1),
- query = {
- startTime: startTime/1000,
- endTime: endTime/1000,
- interval: 1440
- };
-
-t.step(function () {
-
- add_result_callback(function () {
- tizen.humanactivitymonitor.stopRecorder("PEDOMETER");
- });
-
- successCallback = t.step_func(function (humanactivitydata) {
- assert_greater_than(humanactivitydata.length, 0, "data is not found");
- check_readonly(humanactivitydata[0], "endTime", humanactivitydata[0].endTime, "number", humanactivitydata[0].endTime + 100);
- t.done();
- });
-
- tizen.humanactivitymonitor.startRecorder("PEDOMETER");
- setTimeout(function(){tizen.humanactivitymonitor.stopRecorder("PEDOMETER");
- retValue = tizen.humanactivitymonitor.readRecorderData("PEDOMETER", query, successCallback);}, 60000);
-
-});
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2016 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:
- Xiaoyan Qian <xy.qian@samsung.com>
-
--->
-
-<html>
-<head>
-<title>HumanActivityRecorderPedometerData_notexist</title>
-<script src="support/unitcommon.js"></script>
-</head>
-
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityRecorderPedometerData_notexist
-//==== LABEL Check if HumanActivityRecorderPedometerData cannot be called in new expression and as a function or in new expression
-//==== PRIORITY P3
-//==== SPEC Tizen Web API:System:HumanActivityMonitor:HumanActivityRecorderPedometerData:HumanActivityRecorderPedometerData U
-//==== SPEC_URL TBD
-//==== TEST_CRITERIA NIO
-
-test(function () {
- check_no_interface_object("HumanActivityRecorderPedometerData");
-}, document.title);
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2016 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:
- Xiaoyan Qian <xy.qian@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityRecorderPedometerData_runStepCount_attribute</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityRecorderPedometerData_runStepCount_attribute
-//==== LABEL Check if HumanActivityRecorderPedometerData have runStepCount attribute with proper type, readonly
-//==== SPEC Tizen Web API:System:HumanActivityMonitor:HumanActivityRecorderPedometerData:runStepCount A
-//==== SPEC_URL TBD
-//==== PRIORITY P1
-//==== EXECUTION_TYPE manual
-//==== STEP Press run button. Pretend walking with the device.
-//==== EXPECT Pass
-//==== TEST_CRITERIA AE AT ARO
-//==== ONLOAD_DELAY 60
-
-setup({timeout: 120000});
-
-var t = async_test(document.title, {timeout: 120000}), successCallback, date = new Date(), startTime = date.getTime(), endTime = date.setDate(date.getDate() + 1),
- query = {
- startTime: startTime/1000,
- endTime: endTime/1000,
- interval: 1440
- };
-
-t.step(function () {
-
- add_result_callback(function () {
- tizen.humanactivitymonitor.stopRecorder("PEDOMETER");
- });
-
- successCallback = t.step_func(function (humanactivitydata) {
- assert_greater_than(humanactivitydata.length, 0, "data is not found");
- check_readonly(humanactivitydata[0], "runStepCount", humanactivitydata[0].runStepCount, "number", humanactivitydata[0].runStepCount + 100);
- t.done();
- });
-
- tizen.humanactivitymonitor.startRecorder("PEDOMETER");
- setTimeout(function(){tizen.humanactivitymonitor.stopRecorder("PEDOMETER");
- retValue = tizen.humanactivitymonitor.readRecorderData("PEDOMETER", query, successCallback);}, 60000);
-
-});
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2016 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:
- Xiaoyan Qian <xy.qian@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityRecorderPedometerData_startTime_attribute</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityRecorderPedometerData_startTime_attribute
-//==== LABEL Check if HumanActivityRecorderPedometerData have startTime attribute with proper type, readonly
-//==== SPEC Tizen Web API:System:HumanActivityMonitor:HumanActivityRecorderPedometerData:startTime A
-//==== SPEC_URL TBD
-//==== PRIORITY P1
-//==== EXECUTION_TYPE manual
-//==== STEP Press run button. Pretend walking with the device.
-//==== EXPECT Pass
-//==== TEST_CRITERIA AE AT ARO
-//==== ONLOAD_DELAY 60
-
-setup({timeout: 90000});
-
-var t = async_test(document.title, {timeout: 90000}), retValue = null, successCallback, date = new Date(), startTime = date.getTime(), endTime = date.setDate(date.getDate() + 1),
- query = {
- startTime: startTime/1000,
- endTime: endTime/1000,
- interval: 1440
- };
-
-t.step(function () {
-
- add_result_callback(function () {
- tizen.humanactivitymonitor.stopRecorder("PEDOMETER");
- });
-
- successCallback = t.step_func(function (humanactivitydata) {
- assert_greater_than(humanactivitydata.length, 0, "data is not found");
- check_readonly(humanactivitydata[0], "startTime", humanactivitydata[0].startTime, "number", humanactivitydata[0].startTime + 100);
- t.done();
- });
-
- tizen.humanactivitymonitor.startRecorder("PEDOMETER");
- setTimeout(function(){tizen.humanactivitymonitor.stopRecorder("PEDOMETER");
- retValue = tizen.humanactivitymonitor.readRecorderData("PEDOMETER", query, successCallback);}, 60000);
-
-});
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2016 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:
- Xiaoyan Qian <xy.qian@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityRecorderPedometerData_totalStepCount_attribute</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityRecorderPedometerData_totalStepCount_attribute
-//==== LABEL Check if HumanActivityRecorderPedometerData have totalStepCount attribute with proper type, readonly
-//==== SPEC Tizen Web API:System:HumanActivityMonitor:HumanActivityRecorderPedometerData:totalStepCount A
-//==== SPEC_URL TBD
-//==== PRIORITY P1
-//==== EXECUTION_TYPE manual
-//==== STEP Press run button. Pretend walking with the device.
-//==== EXPECT Pass
-//==== TEST_CRITERIA AE AT ARO
-//==== ONLOAD_DELAY 60
-
-setup({timeout: 90000});
-
-var t = async_test(document.title, {timeout: 90000}), retValue = null, successCallback, date = new Date(), startTime = date.getTime(), endTime = date.setDate(date.getDate() + 1),
- query = {
- startTime: startTime/1000,
- endTime: endTime/1000,
- interval: 1440
- };
-
-t.step(function () {
-
- add_result_callback(function () {
- tizen.humanactivitymonitor.stopRecorder("PEDOMETER");
- });
-
- successCallback = t.step_func(function (humanactivitydata) {
- assert_greater_than(humanactivitydata.length, 0, "data is not found");
- check_readonly(humanactivitydata[0], "totalStepCount", humanactivitydata[0].totalStepCount, "number", humanactivitydata[0].totalStepCount + 100);
- t.done();
- });
-
- tizen.humanactivitymonitor.startRecorder("PEDOMETER");
- setTimeout(function(){tizen.humanactivitymonitor.stopRecorder("PEDOMETER");
- retValue = tizen.humanactivitymonitor.readRecorderData("PEDOMETER", query, successCallback);}, 60000);
-
-});
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2016 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:
- Xiaoyan Qian <xy.qian@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityRecorderPedometerData_walkStepCount_attribute</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityRecorderPedometerData_walkStepCount_attribute
-//==== LABEL Check if HumanActivityRecorderPedometerData have walkStepCount attribute with proper type, readonly
-//==== SPEC Tizen Web API:System:HumanActivityMonitor:HumanActivityRecorderPedometerData:walkStepCount A
-//==== SPEC_URL TBD
-//==== PRIORITY P1
-//==== EXECUTION_TYPE manual
-//==== STEP Press run button. Pretend walking with the device.
-//==== EXPECT Pass
-//==== TEST_CRITERIA AE AT ARO
-//==== ONLOAD_DELAY 60
-
-setup({timeout: 90000});
-
-var t = async_test(document.title, {timeout: 90000}), retValue = null, successCallback, date = new Date(), startTime = date.getTime(), endTime = date.setDate(date.getDate() + 1),
- query = {
- startTime: startTime/1000,
- endTime: endTime/1000,
- interval: 1440
- };
-
-t.step(function () {
-
- add_result_callback(function () {
- tizen.humanactivitymonitor.stopRecorder("PEDOMETER");
- });
-
- successCallback = t.step_func(function (humanactivitydata) {
- assert_greater_than(humanactivitydata.length, 0, "data is not found");
- check_readonly(humanactivitydata[0], "walkStepCount", humanactivitydata[0].walkStepCount, "number", humanactivitydata[0].walkStepCount + 100);
- t.done();
- });
-
- tizen.humanactivitymonitor.startRecorder("PEDOMETER");
- setTimeout(function(){tizen.humanactivitymonitor.stopRecorder("PEDOMETER");
- retValue = tizen.humanactivitymonitor.readRecorderData("PEDOMETER", query, successCallback);}, 60000);
-
-});
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2016 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:
- Xiaoyan Qian <xy.qian@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityRecorderPressureData_average_attribute</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityRecorderPressureData_average_attribute
-//==== LABEL Check if HumanActivityRecorderPressureData have average attribute with proper type, readonly
-//==== SPEC Tizen Web API:System:HumanActivityMonitor:HumanActivityRecorderPressureData:average A
-//==== SPEC_URL TBD
-//==== PRIORITY P1
-//==== TEST_CRITERIA AE AT ARO
-
-setup({timeout: 70000});
-
-var t = async_test(document.title, {timeout: 70000}), successCallback, date = new Date(), endTime = date.getTime(), startTime = date.setDate(date.getDate() - 1),
- query = {
- startTime: startTime/1000,
- endTime: endTime/1000,
- interval: 1440
- };
-
-t.step(function () {
-
- successCallback = t.step_func(function (humanactivitydata) {
- assert_greater_than(humanactivitydata.length, 0, "data is not found");
- check_readonly(humanactivitydata[0], "average", humanactivitydata[0].average, "number", humanactivitydata[0].average + 1);
- t.done();
- });
-
- tizen.humanactivitymonitor.readRecorderData("PRESSURE", query, successCallback);
-
-});
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2016 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:
- Xiaoyan Qian <xy.qian@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityRecorderPressureData_endTime_attribute</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityRecorderPressureData_endTime_attribute
-//==== LABEL Check if HumanActivityRecorderPressureData have endTime attribute with proper type, readonly
-//==== SPEC Tizen Web API:System:HumanActivityMonitor:HumanActivityRecorderPressureData:endTime A
-//==== SPEC_URL TBD
-//==== PRIORITY P1
-//==== TEST_CRITERIA AE AT ARO
-
-setup({timeout: 70000});
-
-var t = async_test(document.title, {timeout: 70000}), successCallback, date = new Date(), endTime = date.getTime(), startTime = date.setDate(date.getDate() - 1),
- query = {
- startTime: startTime/1000,
- endTime: endTime/1000,
- interval: 1440
- };
-
-t.step(function () {
-
- successCallback = t.step_func(function (humanactivitydata) {
- assert_greater_than(humanactivitydata.length, 0, "data is not found");
- check_readonly(humanactivitydata[0], "endTime", humanactivitydata[0].endTime, "number", humanactivitydata[0].endTime + 100);
- t.done();
- });
-
- tizen.humanactivitymonitor.readRecorderData("PRESSURE", query, successCallback);
-
-});
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2016 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:
- Xiaoyan Qian <xy.qian@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityRecorderPressureData_max_attribute</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityRecorderPressureData_max_attribute
-//==== LABEL Check if HumanActivityRecorderPressureData have max attribute with proper type, readonly
-//==== SPEC Tizen Web API:System:HumanActivityMonitor:HumanActivityRecorderPressureData:max A
-//==== SPEC_URL TBD
-//==== PRIORITY P1
-//==== TEST_CRITERIA AE AT ARO
-
-setup({timeout: 70000});
-
-var t = async_test(document.title, {timeout: 70000}), successCallback, date = new Date(), endTime = date.getTime(), startTime = date.setDate(date.getDate() - 1),
- query = {
- startTime: startTime/1000,
- endTime: endTime/1000,
- interval: 1440
- };
-
-t.step(function () {
-
- successCallback = t.step_func(function (humanactivitydata) {
- assert_greater_than(humanactivitydata.length, 0, "data is not found");
- check_readonly(humanactivitydata[0], "max", humanactivitydata[0].max, "number", humanactivitydata[0].max + 1);
- t.done();
- });
-
- tizen.humanactivitymonitor.readRecorderData("PRESSURE", query, successCallback);
-
-});
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2016 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:
- Xiaoyan Qian <xy.qian@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityRecorderPressureData_min_attribute</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityRecorderPressureData_min_attribute
-//==== LABEL Check if HumanActivityRecorderPressureData have min attribute with proper type, readonly
-//==== SPEC Tizen Web API:System:HumanActivityMonitor:HumanActivityRecorderPressureData:min A
-//==== SPEC_URL TBD
-//==== PRIORITY P1
-//==== TEST_CRITERIA AE AT ARO
-
-setup({timeout: 70000});
-
-var t = async_test(document.title, {timeout: 70000}), successCallback, date = new Date(), endTime = date.getTime(), startTime = date.setDate(date.getDate() - 1),
- query = {
- startTime: startTime/1000,
- endTime: endTime/1000,
- interval: 1440
- };
-
-t.step(function () {
-
- successCallback = t.step_func(function (humanactivitydata) {
- assert_greater_than(humanactivitydata.length, 0, "data is not found");
- check_readonly(humanactivitydata[0], "min", humanactivitydata[0].min, "number", humanactivitydata[0].min + 1);
- t.done();
- });
-
- tizen.humanactivitymonitor.readRecorderData("PRESSURE", query, successCallback);
-
-});
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2016 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:
- Xiaoyan Qian <xy.qian@samsung.com>
-
--->
-
-<html>
-<head>
-<title>HumanActivityRecorderPressureData_notexist</title>
-<script src="support/unitcommon.js"></script>
-</head>
-
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityRecorderPressureData_notexist
-//==== LABEL Check if HumanActivityRecorderPressureData cannot be called in new expression and as a function or in new expression
-//==== PRIORITY P3
-//==== SPEC Tizen Web API:System:HumanActivityMonitor:HumanActivityRecorderPressureData:HumanActivityRecorderPressureData U
-//==== SPEC_URL TBD
-//==== TEST_CRITERIA NIO
-
-test(function () {
- check_no_interface_object("HumanActivityRecorderPressureData");
-}, document.title);
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2016 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:
- Xiaoyan Qian <xy.qian@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityRecorderPressureData_startTime_attribute</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityRecorderPressureData_startTime_attribute
-//==== LABEL Check if HumanActivityRecorderPressureData have startTime attribute with proper type, readonly
-//==== SPEC Tizen Web API:System:HumanActivityMonitor:HumanActivityRecorderPressureData:startTime A
-//==== SPEC_URL TBD
-//==== PRIORITY P1
-//==== TEST_CRITERIA AE AT ARO
-
-setup({timeout: 70000});
-
-var t = async_test(document.title, {timeout: 70000}), successCallback, date = new Date(), endTime = date.getTime(), startTime = date.setDate(date.getDate() - 1),
- query = {
- startTime: startTime/1000,
- endTime: endTime/1000,
- interval: 1440
- };
-
-t.step(function () {
-
- successCallback = t.step_func(function (humanactivitydata) {
- assert_greater_than(humanactivitydata.length, 0, "data is not found");
- check_readonly(humanactivitydata[0], "startTime", humanactivitydata[0].startTime, "number", humanactivitydata[0].startTime + 100);
- t.done();
- });
-
- tizen.humanactivitymonitor.readRecorderData("PRESSURE", query, successCallback);
-
-});
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2016 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:
- Xiaoyan Qian <xy.qian@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityRecorderSleepMonitorData_endTime_attribute</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityRecorderSleepMonitorData_endTime_attribute
-//==== LABEL Check if HumanActivityRecorderSleepMonitorData have endTime attribute with proper type, readonly
-//==== SPEC Tizen Web API:System:HumanActivityMonitor:HumanActivityRecorderSleepMonitorData:endTime A
-//==== SPEC_URL TBD
-//==== PRIORITY P1
-//==== TEST_CRITERIA AE AT ARO
-
-setup({timeout: 30000});
-
-var t = async_test(document.title, {timeout: 30000}), successCallback, date = new Date(), endTime = date.getTime(), startTime = date.setDate(date.getDate() - 1),
- query = {
- startTime: startTime/1000,
- endTime: endTime/1000,
- interval: 1440
- };
-
-t.step(function () {
-
- add_result_callback(function () {
- tizen.humanactivitymonitor.stopRecorder("SLEEP_MONITOR");
- });
-
- successCallback = t.step_func(function (humanactivitydata) {
- assert_greater_than(humanactivitydata.length, 0, "data is not found");
- check_readonly(humanactivitydata[0], "endTime", humanactivitydata[0].endTime, "number", humanactivitydata[0].endTime + 100);
- t.done();
- });
-
- tizen.humanactivitymonitor.startRecorder("SLEEP_MONITOR");
- setTimeout(function(){tizen.humanactivitymonitor.stopRecorder("SLEEP_MONITOR");}, 100);
- tizen.humanactivitymonitor.readRecorderData("SLEEP_MONITOR", query, successCallback);
-
-});
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2016 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:
- Xiaoyan Qian <xy.qian@samsung.com>
-
--->
-
-<html>
-<head>
-<title>HumanActivityRecorderSleepMonitorData_notexist</title>
-<script src="support/unitcommon.js"></script>
-</head>
-
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityRecorderSleepMonitorData_notexist
-//==== LABEL Check if HumanActivityRecorderSleepMonitorData cannot be called in new expression and as a function or in new expression
-//==== PRIORITY P3
-//==== SPEC Tizen Web API:System:HumanActivityMonitor:HumanActivityRecorderSleepMonitorData:HumanActivityRecorderSleepMonitorData U
-//==== SPEC_URL TBD
-//==== TEST_CRITERIA NIO
-
-test(function () {
- check_no_interface_object("HumanActivityRecorderSleepMonitorData");
-}, document.title);
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2016 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:
- Xiaoyan Qian <xy.qian@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityRecorderSleepMonitorData_startTime_attribute</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityRecorderSleepMonitorData_startTime_attribute
-//==== LABEL Check if HumanActivityRecorderSleepMonitorData have startTime attribute with proper type, readonly
-//==== SPEC Tizen Web API:System:HumanActivityMonitor:HumanActivityRecorderSleepMonitorData:startTime A
-//==== SPEC_URL TBD
-//==== PRIORITY P1
-//==== TEST_CRITERIA AE AT ARO
-
-setup({timeout: 30000});
-
-var t = async_test(document.title, {timeout: 30000}), successCallback, date = new Date(), endTime = date.getTime(), startTime = date.setDate(date.getDate() - 1),
- query = {
- startTime: startTime/1000,
- endTime: endTime/1000,
- interval: 1440
- };
-
-t.step(function () {
-
- add_result_callback(function () {
- tizen.humanactivitymonitor.stopRecorder("SLEEP_MONITOR");
- });
-
- successCallback = t.step_func(function (humanactivitydata) {
- assert_greater_than(humanactivitydata.length, 0, "data is not found");
- check_readonly(humanactivitydata[0], "startTime", humanactivitydata[0].startTime, "number", humanactivitydata[0].startTime + 100);
- t.done();
- });
-
- tizen.humanactivitymonitor.startRecorder("SLEEP_MONITOR");
- setTimeout(function(){tizen.humanactivitymonitor.stopRecorder("SLEEP_MONITOR");}, 100);
- tizen.humanactivitymonitor.readRecorderData("SLEEP_MONITOR", query, successCallback);
-
-});
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2016 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:
- Xiaoyan Qian <xy.qian@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivityRecorderSleepMonitorData_status_attribute</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivityRecorderSleepMonitorData_status_attribute
-//==== LABEL Check if HumanActivityRecorderSleepMonitorData have status attribute with proper type, readonly
-//==== SPEC Tizen Web API:System:HumanActivityMonitor:HumanActivityRecorderSleepMonitorData:status A
-//==== SPEC_URL TBD
-//==== PRIORITY P1
-//==== TEST_CRITERIA AE AT ARO AVL
-
-setup({timeout: 30000});
-
-var t = async_test(document.title, {timeout: 30000}), successCallback, date = new Date(), endTime = date.getTime(), startTime = date.setDate(date.getDate() - 1),
- query = {
- startTime: startTime/1000,
- endTime: endTime/1000,
- interval: 1440
- };
-
-t.step(function () {
-
- add_result_callback(function () {
- tizen.humanactivitymonitor.stopRecorder("SLEEP_MONITOR");
- });
-
- successCallback = t.step_func(function (humanactivitydata) {
- assert_greater_than(humanactivitydata.length, 0, "data is not found");
- check_readonly(humanactivitydata[0], "status", humanactivitydata[0].status, "string", null);
- assert_in_array(humanactivitydata[0].status, ["ASLEEP", "AWAKE", "UNKNOWN"], "Incorrect value of status");
- t.done();
- });
-
- tizen.humanactivitymonitor.startRecorder("SLEEP_MONITOR");
- setTimeout(function(){tizen.humanactivitymonitor.stopRecorder("SLEEP_MONITOR");}, 100);
- tizen.humanactivitymonitor.readRecorderData("SLEEP_MONITOR", query, successCallback);
-
-});
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2014 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:
- Wei Zhang <wei625.zhang@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivitySleepMonitorData_notexist</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivitySleepMonitorData_notexist
-//==== LABEL Check if interface HumanActivitySleepMonitorData exists, it should not
-//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivitySleepMonitorData:HumanActivitySleepMonitorData U
-//==== SPEC_URL TBD
-//==== PRIORITY P3
-//==== TEST_CRITERIA NIO
-
-test(function () {
- check_no_interface_object("HumanActivitySleepMonitorData");
-}, document.title);
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2016 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:
- Wei Zhang <wei625.zhang@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivitySleepMonitorData_status_attribute</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivitySleepMonitorData_status_attribute
-//==== LABEL Check if HumanActivitySleepMonitorData::status exists and is readonly
-//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:HumanActivitySleepMonitorData:status A
-//==== SPEC_URL TBD
-//==== PRIORITY P1
-//==== ONLOAD_DELAY 9
-//==== TEST_CRITERIA AE AT ARO
-
-setup({timeout: 9000});
-
-var t = async_test(document.title, {timeout: 9000}), getHumanActivityDataSuccess, getHumanActivityDataError, humanActivityType = "SLEEP_MONITOR";
-
-t.step(function () {
- add_result_callback(function () {
- tizen.humanactivitymonitor.stop(humanActivityType);
- });
-
- getHumanActivityDataError = t.step_func(function (error) {
- assert_unreached("getHumanActivityDataError is called" + error.name);
- });
-
- getHumanActivityDataSuccess = t.step_func(function (slpInfo) {
- check_readonly(slpInfo, "status", slpInfo.status, "string", "UNKNOWN");
- t.done();
- });
-
- tizen.humanactivitymonitor.start(humanActivityType);
- tizen.humanactivitymonitor.getHumanActivityData(humanActivityType, getHumanActivityDataSuccess, getHumanActivityDataError);
-});
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2016 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:
- Wei Zhang <wei625.zhang@samsung.com>
-
--->
-<html>
-<head>
-<title>HumanActivitySleepMonitorData_timestamp_attribute</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: HumanActivitySleepMonitorData_timestamp_attribute
-//==== LABEL Check if HumanActivitySleepMonitorData::timestamp exists, has type long, and is readonly
-//==== SPEC Tizen Web API:TBD:HumanActivityMonitor:HumanActivitySleepMonitorData:timestamp A
-//==== SPEC_URL TBD
-//==== PRIORITY P1
-//==== TEST_CRITERIA AE AT ARO
-
-setup({timeout: 9000});
-
-var t = async_test(document.title, {timeout: 9000}), getHumanActivityDataSuccess, getHumanActivityDataError, humanActivityType = "SLEEP_MONITOR";
-
-t.step(function () {
- add_result_callback(function () {
- tizen.humanactivitymonitor.stop(humanActivityType);
- });
-
- getHumanActivityDataError = t.step_func(function (error) {
- assert_unreached("getHumanActivityDataError is called" + error.name);
- });
-
- getHumanActivityDataSuccess = t.step_func(function (slpInfo) {
- check_readonly(slpInfo, "timestamp", slpInfo.timestamp, "long", slpInfo.timestamp + 10);
- t.done();
- });
-
- tizen.humanactivitymonitor.start(humanActivityType);
- tizen.humanactivitymonitor.getHumanActivityData(humanActivityType, getHumanActivityDataSuccess, getHumanActivityDataError);
-});
-
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-179 path=wearable/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_getHumanActivityData_HumanActivityMonitorSuccessCallback_TypeMismatch.html
-27 atime=1402486842.502028
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-<!--
-Copyright (c) 2014 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:
- Wei Zhang <wei625.zhang@samsung.com>
-
--->
-<html>
-<head>
-<title>StepDifference_notexist</title>
-<meta charset="utf-8"/>
-<script src="support/unitcommon.js"></script>
-</head>
-<body>
-<div id="log"></div>
-<script>
-//==== TEST: StepDifference_notexist
-//==== LABEL Check if interface StepDifference exists, it should not
-//==== SPEC Tizen Web API:Sensor:HumanActivityMonitor:StepDifference:StepDifference U
-//==== SPEC_URL TBD
-//==== PRIORITY P3
-//==== TEST_CRITERIA NIO
-
-test(function () {
- check_no_interface_object("StepDifference");
-}, document.title);
-
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-/*
-
-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:
- Wei Zhang <wei625.zhang@samsung.com>
-
-*/
-
-SERVICE_NOT_AVAILABLE_ERR = "ServiceNotAvailableError";
-NOT_SUPPORTED_EXCEPTION = "NotSupportedError";
-
-var PEDOMETER_STEP_STATUS = [
- "NOT_MOVING", "WALKING", "RUNNING", "UNKNOWN"
-];
-
-function check_human_activity_pedometer_data(human_activity_data) {
- check_readonly(human_activity_data, "stepStatus", human_activity_data.stepStatus, "string", "dummyValue");
- assert_in_array(human_activity_data.stepStatus, PEDOMETER_STEP_STATUS, "stepStatus has wrong enum value");
- check_readonly(human_activity_data, "speed", human_activity_data.speed, "double", 0.1);
- check_readonly(human_activity_data, "walkingFrequency", human_activity_data.walkingFrequency, "double", 0.1);
- check_readonly(human_activity_data, "cumulativeDistance", human_activity_data.cumulativeDistance, "double", 0.1);
- check_readonly(human_activity_data, "cumulativeCalorie", human_activity_data.cumulativeCalorie, "double", 0.1);
- check_readonly(human_activity_data, "cumulativeTotalStepCount", human_activity_data.cumulativeTotalStepCount, "double", 0.1);
- check_readonly(human_activity_data, "cumulativeWalkStepCount", human_activity_data.cumulativeWalkStepCount, "double", 0.1);
- check_readonly(human_activity_data, "cumulativeRunStepCount", human_activity_data.cumulativeRunStepCount, "double", 0.1);
-}
-
-function check_err_name() {
-}
+++ /dev/null
-/*
-
-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'};
-NOT_SUPPORTED_EXCEPTION = {name: 'NotSupportedError'};
-
-(function () {
- var head_src = document.head.innerHTML;
- if (head_src.search(/\/testharness.js\W/) === -1) {
- document.write('<script language="javascript" src="../resources/testharness.js"></script>\n');
- }
- if (head_src.search(/\/testharnessreport.js\W/) === -1) {
- document.write('<script language="javascript" src="../resources/testharnessreport.js"></script>\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],
- [0, exceptionName],
- [true, exceptionName],
- ["dummyInvalidEnumValue", exceptionName],
- [{ }, exceptionName]
- ];
- if (!isOptional) {
- conversionTable.push([null, 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;
- case 'double':
- assert_equals(typeof (obj), 'number', description);
- 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;
-}
+++ /dev/null
-#!/usr/bin/env python
-
-import os
-import shutil
-import glob
-import time
-import sys
-import subprocess
-from optparse import OptionParser, make_option\r
-import ConfigParser
-
-
-SCRIPT_DIR = os.path.dirname(os.path.abspath(__file__))
-PARAMETERS = None
-ADB_CMD = "adb"
-
-
-def doCMD(cmd):
- # Do not need handle timeout in this short script, let tool do it
- print "-->> \"%s\"" % cmd
- output = []
- cmd_return_code = 1
- cmd_proc = subprocess.Popen(
- cmd, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, shell=True)
-
- while True:
- output_line = cmd_proc.stdout.readline().strip("\r\n")
- cmd_return_code = cmd_proc.poll()
- if output_line == '' and cmd_return_code != None:
- break
- sys.stdout.write("%s\n" % output_line)
- sys.stdout.flush()
- output.append(output_line)
-
- return (cmd_return_code, output)
-
-
-def uninstPKGs():
- action_status = True
- for root, dirs, files in os.walk(SCRIPT_DIR):
- for file in files:
- if file.endswith(".apk"):
- cmd = "%s -s %s uninstall org.xwalk.%s" % (
- ADB_CMD, PARAMETERS.device, os.path.basename(os.path.splitext(file)[0]))
- (return_code, output) = doCMD(cmd)
- for line in output:
- if "Failure" in line:
- action_status = False
- break
- return action_status
-
-
-def instPKGs():
- action_status = True
- for root, dirs, files in os.walk(SCRIPT_DIR):
- for file in files:
- if file.endswith(".apk"):
- cmd = "%s -s %s install %s" % (ADB_CMD,
- PARAMETERS.device, os.path.join(root, file))
- (return_code, output) = doCMD(cmd)
- for line in output:
- if "Failure" in line:
- action_status = False
- break
- return action_status
-
-
-def main():
- try:
- usage = "usage: inst.py -i"
- opts_parser = OptionParser(usage=usage)
- opts_parser.add_option(
- "-s", dest="device", action="store", help="Specify device")
- opts_parser.add_option(
- "-i", dest="binstpkg", action="store_true", help="Install package")
- opts_parser.add_option(
- "-u", dest="buninstpkg", action="store_true", help="Uninstall package")
- global PARAMETERS
- (PARAMETERS, args) = opts_parser.parse_args()
- except Exception, e:
- print "Got wrong option: %s, exit ..." % e
- sys.exit(1)
-
- if not PARAMETERS.device:
- (return_code, output) = doCMD("adb devices")
- for line in output:
- if str.find(line, "\tdevice") != -1:
- PARAMETERS.device = line.split("\t")[0]
- break
-
- if not PARAMETERS.device:
- print "No device found"
- sys.exit(1)
-
- if PARAMETERS.binstpkg and PARAMETERS.buninstpkg:
- print "-i and -u are conflict"
- sys.exit(1)
-
- if PARAMETERS.buninstpkg:
- if not uninstPKGs():
- sys.exit(1)
- else:
- if not instPKGs():
- sys.exit(1)
-
-if __name__ == "__main__":
- main()
- sys.exit(0)
+++ /dev/null
-#!/usr/bin/env python
-
-import os
-import shutil
-import glob
-import time
-import sys
-import subprocess
-import string
-from optparse import OptionParser, make_option\r
-import ConfigParser
-
-
-SCRIPT_DIR = os.path.dirname(os.path.abspath(__file__))
-PKG_NAME = os.path.basename(SCRIPT_DIR)
-PARAMETERS = None
-#XW_ENV = "export DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/5000/dbus/user_bus_socket"
-TCT_CONFIG_FILE = "/opt/tools/TCT_CONFIG"
-tct_parser = ConfigParser.ConfigParser()
-tct_parser.read(TCT_CONFIG_FILE)
-SRC_DIR = tct_parser.get('DEVICE', 'DEVICE_SUITE_TARGET_30')
-PKG_SRC_DIR = "%s/tct/opt/%s" % (SRC_DIR, PKG_NAME)
-EXECUTION_MODE_30 = tct_parser.get('DEVICE', 'DEVICE_EXECUTION_MODE_30')
-ADMIN_USER_30 = tct_parser.get('DEVICE', 'DEVICE_ADMIN_USER_30')
-
-def userCheck():
- global GLOVAL_OPT
- if ADMIN_USER_30 == EXECUTION_MODE_30:
- GLOVAL_OPT="--global"
- else:
- GLOVAL_OPT=""
-
-
-def askpolicyremoving():
- for root, dirs, files in os.walk(SCRIPT_DIR):
- for file in files:
- if file.endswith(".wgt"):
- pkg_id = getPKGID(os.path.basename(os.path.splitext(file)[0]))
-
- print pkg_id
- print (os.getcwd())
- print (os.path.dirname(os.path.realpath(__file__)) )
- if not doRemoteCopy("%s/askpolicy.sh" % SCRIPT_DIR, "%s" % (SRC_DIR)):
- action_status = False
- if PARAMETERS.mode == "SDB":
- cmd = "sdb -s %s shell .%s/askpolicy.sh %s" % (PARAMETERS.device,
- SRC_DIR, pkg_id)
- return doCMD(cmd)
-
-def doCMD(cmd):
- # Do not need handle timeout in this short script, let tool do it
- print "-->> \"%s\"" % cmd
- output = []
- cmd_return_code = 1
- cmd_proc = subprocess.Popen(
- cmd, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, shell=True)
-
- while True:
- output_line = cmd_proc.stdout.readline().strip("\r\n")
- cmd_return_code = cmd_proc.poll()
- if output_line == '' and cmd_return_code != None:
- break
- sys.stdout.write("%s\n" % output_line)
- sys.stdout.flush()
- output.append(output_line)
-
- return (cmd_return_code, output)
-
-
-def updateCMD(cmd=None):
- if "pkgcmd" in cmd:
- cmd = "su - %s -c '%s;%s'" % (PARAMETERS.user, XW_ENV, cmd)
- return cmd
-def getUSERID():
- if PARAMETERS.mode == "SDB":
- cmd = "sdb -s %s shell id -u %s" % (
- PARAMETERS.device, PARAMETERS.user)
- else:
- cmd = "ssh %s \"id -u %s\"" % (
- PARAMETERS.device, PARAMETERS.user )
- return doCMD(cmd)
-
-
-
-
-def getPKGID(pkg_name=None):
- if PARAMETERS.mode == "SDB":
- cmd = "sdb -s %s shell %s" % (
- PARAMETERS.device, updateCMD('pkgcmd -l'))
- else:
- cmd = "ssh %s \"%s\"" % (
- PARAMETERS.device, updateCMD('pkgcmd -l'))
-
- (return_code, output) = doCMD(cmd)
- if return_code != 0:
- return None
-
- test_pkg_id = None
- for line in output:
- if line.find("[" + pkg_name + "]") != -1:
- pkgidIndex = line.split().index("pkgid")
- test_pkg_id = line.split()[pkgidIndex+1].strip("[]")
- break
- return test_pkg_id
-
-
-def doRemoteCMD(cmd=None):
- if PARAMETERS.mode == "SDB":
- cmd = "sdb -s %s shell %s" % (PARAMETERS.device, updateCMD(cmd))
- else:
- cmd = "ssh %s \"%s\"" % (PARAMETERS.device, updateCMD(cmd))
-
- return doCMD(cmd)
-
-
-def doRemoteCopy(src=None, dest=None):
- if PARAMETERS.mode == "SDB":
- cmd_prefix = "sdb -s %s push" % PARAMETERS.device
- cmd = "%s %s %s" % (cmd_prefix, src, dest)
- else:
- cmd = "scp -r %s %s:/%s" % (src, PARAMETERS.device, dest)
-
- (return_code, output) = doCMD(cmd)
- doRemoteCMD("sync")
-
- if return_code != 0:
- return True
- else:
- return False
-
-
-def uninstPKGs():
- action_status = True
- for root, dirs, files in os.walk(SCRIPT_DIR):
- if root.endswith("mediasrc"):
- continue
-
- for file in files:
- if file.endswith(".wgt"):
- pkg_id = getPKGID(os.path.basename(os.path.splitext(file)[0]))
- if not pkg_id:
- action_status = False
- continue
- (return_code, output) = doRemoteCMD(
- "pkgcmd %s -u -t wgt -q -n %s" % (GLOVAL_OPT, pkg_id))
- for line in output:
- if "Failure" in line:
- action_status = False
- break
-
- (return_code, output) = doRemoteCMD(
- "rm -rf %s" % PKG_SRC_DIR)
- if return_code != 0:
- action_status = False
-
- return action_status
-
-
-def instPKGs():
- action_status = True
- (return_code, output) = doRemoteCMD(
- "mkdir -p %s" % PKG_SRC_DIR)
- if return_code != 0:
- action_status = False
- for root, dirs, files in os.walk(SCRIPT_DIR):
- if root.endswith("mediasrc"):
- continue
-
- for file in files:
- if file.endswith(".wgt"):
- if not doRemoteCopy(os.path.join(root, file), "%s/%s" % (SRC_DIR, file)):
- action_status = False
- (return_code, output) = doRemoteCMD(
- "pkgcmd %s -i -t wgt -q -p %s/%s" % (GLOVAL_OPT, SRC_DIR, file))
- doRemoteCMD("rm -rf %s/%s" % (SRC_DIR, file))
- for line in output:
- if "Failure" in line:
- action_status = False
- break
-
- # Do some special copy/delete... steps
- '''
- (return_code, output) = doRemoteCMD(
- "mkdir -p %s/tests" % PKG_SRC_DIR)
- if return_code != 0:
- action_status = False
-
- if not doRemoteCopy("specname/tests", "%s/tests" % PKG_SRC_DIR):
- action_status = False
- '''
-
- return action_status
-
-
-def main():
- try:
- usage = "usage: inst.py -i"
- opts_parser = OptionParser(usage=usage)
- opts_parser.add_option(
- "-m", dest="mode", action="store", help="Specify mode")
- opts_parser.add_option(
- "-s", dest="device", action="store", help="Specify device")
- opts_parser.add_option(
- "-i", dest="binstpkg", action="store_true", help="Install package")
- opts_parser.add_option(
- "-u", dest="buninstpkg", action="store_true", help="Uninstall package")
- opts_parser.add_option(
- "-a", dest="user", action="store", help="User name")
- global PARAMETERS
- (PARAMETERS, args) = opts_parser.parse_args()
- except Exception, e:
- print "Got wrong option: %s, exit ..." % e
- sys.exit(1)
-
- if not PARAMETERS.user:
- PARAMETERS.user = EXECUTION_MODE_30
- if not PARAMETERS.mode:
- PARAMETERS.mode = "SDB"
-
- if PARAMETERS.mode == "SDB":
- if not PARAMETERS.device:
- (return_code, output) = doCMD("sdb devices")
- for line in output:
- if str.find(line, "\tdevice") != -1:
- PARAMETERS.device = line.split("\t")[0]
- break
- else:
- PARAMETERS.mode = "SSH"
-
- if not PARAMETERS.device:
- print "No device provided"
- sys.exit(1)
-
- userCheck()
-
- user_info = getUSERID()
- re_code = user_info[0]
- if re_code == 0 :
- global XW_ENV
- userid = user_info[1][0]
- XW_ENV = "export DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/%s/dbus/user_bus_socket"%str(userid)
- else:
- print "[Error] cmd commands error : %s"%str(user_info[1])
- sys.exit(1)
- if PARAMETERS.binstpkg and PARAMETERS.buninstpkg:
- print "-i and -u are conflict"
- sys.exit(1)
-
- if PARAMETERS.buninstpkg:
- if not uninstPKGs():
- sys.exit(1)
- else:
- if not instPKGs():
- #askpolicyremoving()
- sys.exit(1)
-
-if __name__ == "__main__":
- main()
- sys.exit(0)
+++ /dev/null
-#!/usr/bin/env python
-
-import os
-import shutil
-import glob
-import time
-import sys
-import subprocess
-import string
-from optparse import OptionParser, make_option\r
-import ConfigParser
-
-
-SCRIPT_DIR = os.path.dirname(os.path.abspath(__file__))
-PKG_NAME = os.path.basename(SCRIPT_DIR)
-PARAMETERS = None
-#XW_ENV = "export DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/5000/dbus/user_bus_socket"
-TCT_CONFIG_FILE = "/opt/tools/TCT_CONFIG"
-tct_parser = ConfigParser.ConfigParser()
-tct_parser.read(TCT_CONFIG_FILE)
-SRC_DIR = tct_parser.get('DEVICE', 'DEVICE_SUITE_TARGET_30')
-PKG_SRC_DIR = "%s/tct/opt/%s" % (SRC_DIR, PKG_NAME)
-
-
-def doCMD(cmd):
- # Do not need handle timeout in this short script, let tool do it
- print "-->> \"%s\"" % cmd
- output = []
- cmd_return_code = 1
- cmd_proc = subprocess.Popen(
- cmd, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, shell=True)
-
- while True:
- output_line = cmd_proc.stdout.readline().strip("\r\n")
- cmd_return_code = cmd_proc.poll()
- if output_line == '' and cmd_return_code != None:
- break
- sys.stdout.write("%s\n" % output_line)
- sys.stdout.flush()
- output.append(output_line)
-
- return (cmd_return_code, output)
-
-
-def updateCMD(cmd=None):
- if "pkgcmd" in cmd:
- cmd = "su - %s -c '%s;%s'" % (PARAMETERS.user, XW_ENV, cmd)
- return cmd
-def getUSERID():
- if PARAMETERS.mode == "SDB":
- cmd = "sdb -s %s shell id -u %s" % (
- PARAMETERS.device, PARAMETERS.user)
- else:
- cmd = "ssh %s \"id -u %s\"" % (
- PARAMETERS.device, PARAMETERS.user )
- return doCMD(cmd)
-
-
-
-
-def getPKGID(pkg_name=None):
- if PARAMETERS.mode == "SDB":
- cmd = "sdb -s %s shell %s" % (
- PARAMETERS.device, updateCMD('pkgcmd -l'))
- else:
- cmd = "ssh %s \"%s\"" % (
- PARAMETERS.device, updateCMD('pkgcmd -l'))
-
- (return_code, output) = doCMD(cmd)
- if return_code != 0:
- return None
-
- test_pkg_id = None
- for line in output:
- if line.find("[" + pkg_name + "]") != -1:
- pkgidIndex = line.split().index("pkgid")
- test_pkg_id = line.split()[pkgidIndex+1].strip("[]")
- break
- return test_pkg_id
-
-
-def doRemoteCMD(cmd=None):
- if PARAMETERS.mode == "SDB":
- cmd = "sdb -s %s shell %s" % (PARAMETERS.device, updateCMD(cmd))
- else:
- cmd = "ssh %s \"%s\"" % (PARAMETERS.device, updateCMD(cmd))
-
- return doCMD(cmd)
-
-
-def doRemoteCopy(src=None, dest=None):
- if PARAMETERS.mode == "SDB":
- cmd_prefix = "sdb -s %s push" % PARAMETERS.device
- cmd = "%s %s %s" % (cmd_prefix, src, dest)
- else:
- cmd = "scp -r %s %s:/%s" % (src, PARAMETERS.device, dest)
-
- (return_code, output) = doCMD(cmd)
- doRemoteCMD("sync")
-
- if return_code != 0:
- return True
- else:
- return False
-
-
-def uninstPKGs():
- action_status = True
- for root, dirs, files in os.walk(SCRIPT_DIR):
- if root.endswith("mediasrc"):
- continue
-
- for file in files:
- if file.endswith(".xpk"):
- pkg_id = getPKGID(os.path.basename(os.path.splitext(file)[0]))
- if not pkg_id:
- action_status = False
- continue
- (return_code, output) = doRemoteCMD(
- "pkgcmd -u -t xpk -q -n %s" % pkg_id)
- for line in output:
- if "Failure" in line:
- action_status = False
- break
-
- (return_code, output) = doRemoteCMD(
- "rm -rf %s" % PKG_SRC_DIR)
- if return_code != 0:
- action_status = False
-
- return action_status
-
-
-def instPKGs():
- action_status = True
- (return_code, output) = doRemoteCMD(
- "mkdir -p %s" % PKG_SRC_DIR)
- if return_code != 0:
- action_status = False
- for root, dirs, files in os.walk(SCRIPT_DIR):
- if root.endswith("mediasrc"):
- continue
-
- for file in files:
- if file.endswith(".xpk"):
- if not doRemoteCopy(os.path.join(root, file), "%s/%s" % (SRC_DIR, file)):
- action_status = False
- (return_code, output) = doRemoteCMD(
- "pkgcmd -i -t xpk -q -p %s/%s" % (SRC_DIR, file))
- doRemoteCMD("rm -rf %s/%s" % (SRC_DIR, file))
- for line in output:
- if "Failure" in line:
- action_status = False
- break
-
- # Do some special copy/delete... steps
- '''
- (return_code, output) = doRemoteCMD(
- "mkdir -p %s/tests" % PKG_SRC_DIR)
- if return_code != 0:
- action_status = False
-
- if not doRemoteCopy("specname/tests", "%s/tests" % PKG_SRC_DIR):
- action_status = False
- '''
-
- return action_status
-
-
-def main():
- try:
- usage = "usage: inst.py -i"
- opts_parser = OptionParser(usage=usage)
- opts_parser.add_option(
- "-m", dest="mode", action="store", help="Specify mode")
- opts_parser.add_option(
- "-s", dest="device", action="store", help="Specify device")
- opts_parser.add_option(
- "-i", dest="binstpkg", action="store_true", help="Install package")
- opts_parser.add_option(
- "-u", dest="buninstpkg", action="store_true", help="Uninstall package")
- opts_parser.add_option(
- "-a", dest="user", action="store", help="User name")
- global PARAMETERS
- (PARAMETERS, args) = opts_parser.parse_args()
- except Exception, e:
- print "Got wrong option: %s, exit ..." % e
- sys.exit(1)
-
- if not PARAMETERS.user:
- PARAMETERS.user = "owner"
- if not PARAMETERS.mode:
- PARAMETERS.mode = "SDB"
-
- if PARAMETERS.mode == "SDB":
- if not PARAMETERS.device:
- (return_code, output) = doCMD("sdb devices")
- for line in output:
- if str.find(line, "\tdevice") != -1:
- PARAMETERS.device = line.split("\t")[0]
- break
- else:
- PARAMETERS.mode = "SSH"
-
- if not PARAMETERS.device:
- print "No device provided"
- sys.exit(1)
-
- user_info = getUSERID()
- re_code = user_info[0]
- if re_code == 0 :
- global XW_ENV
- userid = user_info[1][0]
- XW_ENV = "export DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/%s/dbus/user_bus_socket"%str(userid)
- else:
- print "[Error] cmd commands error : %s"%str(user_info[1])
- sys.exit(1)
- if PARAMETERS.binstpkg and PARAMETERS.buninstpkg:
- print "-i and -u are conflict"
- sys.exit(1)
-
- if PARAMETERS.buninstpkg:
- if not uninstPKGs():
- sys.exit(1)
- else:
- if not instPKGs():
- sys.exit(1)
-
-if __name__ == "__main__":
- main()
- sys.exit(0)
+++ /dev/null
-{
- "version": "3.0",
- "name": "tct-humanactivitymonitor-tizen-tests",
- "permissions": ["tabs", "unlimited_storage", "notifications", "http://*/*", "https://*/*"],
- "description": "tct-humanactivitymonitor-tizen-tests",
- "webapimanager": true,
- "file_name": "manifest.json",
- "app": {
- "launch": {
- "local_path": "index.html"
- }
- }
-}
\ No newline at end of file
+++ /dev/null
-#!/usr/bin/env python
-#
-# Copyright (c) 2014 Intel Corporation.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are met:
-#
-# * Redistributions of works must retain the original copyright notice, this
-# list of conditions and the following disclaimer.
-# * Redistributions in binary form must reproduce the original copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution.
-# * Neither the name of Intel Corporation nor the names of its contributors
-# may be used to endorse or promote products derived from this work without
-# specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY INTEL CORPORATION "AS IS"
-# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-# ARE DISCLAIMED. IN NO EVENT SHALL INTEL CORPORATION BE LIABLE FOR ANY DIRECT,
-# INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
-# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
-# OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
-# EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-#
-# Authors:
-# Fan, Yugang <yugang.fan@intel.com>
-
-import os
-import shutil
-import glob
-import time
-import sys
-import stat
-import random
-import json
-import logging
-import zipfile
-import signal
-import subprocess
-from optparse import OptionParser
-
-reload(sys)
-sys.setdefaultencoding('utf8')
-
-TOOL_VERSION = "v0.1"
-VERSION_FILE = "VERSION"
-DEFAULT_CMD_TIMEOUT = 600
-PKG_TYPES = ["apk", "xpk", "wgt", "apk-aio", "cordova-aio", "cordova", "embeddingapi"]
-PKG_MODES = ["shared", "embedded"]
-PKG_ARCHS = ["x86", "arm"]
-PKG_BLACK_LIST = []
-PKG_NAME = None
-BUILD_PARAMETERS = None
-BUILD_ROOT = None
-BUILD_ROOT_SRC = None
-BUILD_ROOT_SRC_PKG = None
-BUILD_ROOT_SRC_PKG_APP = None
-BUILD_ROOT_SRC_SUB_APP = None
-BUILD_ROOT_PKG = None
-BUILD_ROOT_PKG_APP = None
-LOG = None
-LOG_LEVEL = logging.DEBUG
-
-
-class ColorFormatter(logging.Formatter):
-
- def __init__(self, msg):
- logging.Formatter.__init__(self, msg)
-
- def format(self, record):
- red, green, yellow, blue = range(4)
- colors = {'INFO': green, 'DEBUG': blue,
- 'WARNING': yellow, 'ERROR': red}
- msg = record.msg
- if msg[0] == "+":
- msg = "\33[01m" + msg[1:] + "\033[0m"
- elif msg[0] == "=":
- msg = "\33[07m" + msg + "\033[0m"
- levelname = record.levelname
- if levelname in colors:
- msg_color = "\033[0;%dm" % (
- 31 + colors[levelname]) + msg + "\033[0m"
- record.msg = msg_color
-
- return logging.Formatter.format(self, record)
-
-
-def pidExists(pid):
- if pid < 0:
- return False
- try:
- os.kill(pid, 0)
- except OSError:
- return False
- else:
- return True
-
-
-def isWindows():
- return sys.platform == "cygwin" or sys.platform.startswith("win")
-
-
-def killProcesses(ppid=None):
- if isWindows():
- subprocess.check_call("TASKKILL /F /PID %s /T" % ppid)
- else:
- ppid = str(ppid)
- pidgrp = []
-
- def GetChildPids(ppid):
- command = "ps -ef | awk '{if ($3 ==%s) print $2;}'" % str(ppid)
- pids = os.popen(command).read()
- pids = pids.split()
- return pids
-
- pidgrp.extend(GetChildPids(ppid))
- for pid in pidgrp:
- pidgrp.extend(GetChildPids(pid))
-
- pidgrp.insert(0, ppid)
- while len(pidgrp) > 0:
- pid = pidgrp.pop()
- try:
- os.kill(int(pid), signal.SIGKILL)
- return True
- except OSError:
- try:
- os.popen("kill -9 %d" % int(pid))
- return True
- except Exception:
- return False
-
-
-def safelyGetValue(origin_json=None, key=None):
- if origin_json and key and key in origin_json:
- return origin_json[key]
- return None
-
-
-def checkContains(origin_str=None, key_str=None):
- if origin_str.upper().find(key_str.upper()) >= 0:
- return True
- return False
-
-
-def getRandomStr():
- str_pool = list("abcdefghijklmnopqrstuvwxyz1234567890")
- random_str = ""
- for i in range(15):
- index = random.randint(0, len(str_pool) - 1)
- random_str = random_str + str_pool[index]
-
- return random_str
-
-
-def zipDir(dir_path, zip_file):
- try:
- if os.path.exists(zip_file):
- if not doRemove([zip_file]):
- return False
- if not os.path.exists(os.path.dirname(zip_file)):
- os.makedirs(os.path.dirname(zip_file))
- z_file = zipfile.ZipFile(zip_file, "w")
- orig_dir = os.getcwd()
- os.chdir(dir_path)
- for root, dirs, files in os.walk("."):
- for i_file in files:
- LOG.info("zip %s" % os.path.join(root, i_file))
- z_file.write(os.path.join(root, i_file))
- z_file.close()
- os.chdir(orig_dir)
- except Exception as e:
- LOG.error("Fail to pack %s to %s: %s" % (dir_path, zip_file, e))
- return False
- LOG.info("Done to zip %s to %s" % (dir_path, zip_file))
- return True
-
-
-def overwriteCopy(src, dest, symlinks=False, ignore=None):
- if not os.path.exists(dest):
- os.makedirs(dest)
- shutil.copystat(src, dest)
- sub_list = os.listdir(src)
- if ignore:
- excl = ignore(src, sub_list)
- sub_list = [x for x in sub_list if x not in excl]
- for i_sub in sub_list:
- s_path = os.path.join(src, i_sub)
- d_path = os.path.join(dest, i_sub)
- if symlinks and os.path.islink(s_path):
- if os.path.lexists(d_path):
- os.remove(d_path)
- os.symlink(os.readlink(s_path), d_path)
- try:
- s_path_s = os.lstat(s_path)
- s_path_mode = stat.S_IMODE(s_path_s.st_mode)
- os.lchmod(d_path, s_path_mode)
- except Exception:
- pass
- elif os.path.isdir(s_path):
- overwriteCopy(s_path, d_path, symlinks, ignore)
- else:
- shutil.copy2(s_path, d_path)
-
-
-def doCopy(src_item=None, dest_item=None):
- LOG.info("Copying %s to %s" % (src_item, dest_item))
- try:
- if os.path.isdir(src_item):
- overwriteCopy(src_item, dest_item, symlinks=True)
- else:
- if not os.path.exists(os.path.dirname(dest_item)):
- LOG.info("Create non-existent dir: %s" %
- os.path.dirname(dest_item))
- os.makedirs(os.path.dirname(dest_item))
- shutil.copy2(src_item, dest_item)
- except Exception as e:
- LOG.error("Fail to copy file %s: %s" % (src_item, e))
- return False
-
- return True
-
-
-def doRemove(target_file_list=None):
- for i_file in target_file_list:
- LOG.info("Removing %s" % i_file)
- try:
- if os.path.isdir(i_file):
- shutil.rmtree(i_file)
- else:
- os.remove(i_file)
- except Exception as e:
- LOG.error("Fail to remove file %s: %s" % (i_file, e))
- return False
- return True
-
-
-def updateCopylistPrefix(src_default, dest_default, src_sub, dest_sub):
- src_new = ""
- dest_new = ""
- PACK_TOOL_TAG = "PACK-TOOL-ROOT"
-
- if src_sub[0:len(PACK_TOOL_TAG)] == PACK_TOOL_TAG:
- src_new = src_sub.replace(PACK_TOOL_TAG, BUILD_PARAMETERS.pkgpacktools)
- else:
- src_new = os.path.join(src_default, src_sub)
-
- if dest_sub[0:len(PACK_TOOL_TAG)] == PACK_TOOL_TAG:
- dest_new = dest_sub.replace(PACK_TOOL_TAG, BUILD_ROOT)
- else:
- dest_new = os.path.join(dest_default, dest_sub)
-
- return (src_new, dest_new)
-
-
-def buildSRC(src=None, dest=None, build_json=None):
- if not os.path.exists(src):
- LOG.info("+Src dir does not exist, skip build src process ...")
- return True
- if not doCopy(src, dest):
- return False
- if "blacklist" in build_json:
- if build_json["blacklist"].count("") > 0:
- build_json["blacklist"].remove("")
- black_file_list = []
- for i_black in build_json["blacklist"]:
- black_file_list = black_file_list + \
- glob.glob(os.path.join(dest, i_black))
-
- black_file_list = list(set(black_file_list))
- if not doRemove(black_file_list):
- return False
-
- if "copylist" in build_json:
- for i_s_key in build_json["copylist"].keys():
- if i_s_key and build_json["copylist"][i_s_key]:
- (src_updated, dest_updated) = updateCopylistPrefix(
- src, dest, i_s_key, build_json["copylist"][i_s_key])
- if not doCopy(src_updated, dest_updated):
- return False
-
- return True
-
-
-def exitHandler(return_code=1):
- LOG.info("+Cleaning build root folder ...")
- if not BUILD_PARAMETERS.bnotclean and os.path.exists(BUILD_ROOT):
- if not doRemove([BUILD_ROOT]):
- LOG.error("Fail to clean build root, exit ...")
- sys.exit(1)
-
- if return_code == 0:
- LOG.info("================ DONE ================")
- else:
- LOG.error(
- "================ Found Something Wrong !!! ================")
- sys.exit(return_code)
-
-
-def prepareBuildRoot():
- LOG.info("+Preparing build root folder ...")
- global BUILD_ROOT
- global BUILD_ROOT_SRC
- global BUILD_ROOT_SRC_PKG
- global BUILD_ROOT_SRC_PKG_APP
- global BUILD_ROOT_SRC_SUB_APP
- global BUILD_ROOT_PKG
- global BUILD_ROOT_PKG_APP
-
- while True:
- BUILD_ROOT = os.path.join("/tmp", getRandomStr())
- if os.path.exists(BUILD_ROOT):
- continue
- else:
- break
-
- BUILD_ROOT_SRC = os.path.join(BUILD_ROOT, PKG_NAME)
- BUILD_ROOT_SRC_PKG = os.path.join(BUILD_ROOT, "pkg")
- BUILD_ROOT_SRC_PKG_APP = os.path.join(BUILD_ROOT, "pkg-app")
- BUILD_ROOT_SRC_SUB_APP = os.path.join(BUILD_ROOT, "sub-app")
- BUILD_ROOT_PKG = os.path.join(BUILD_ROOT, "pkg", "opt", PKG_NAME)
- BUILD_ROOT_PKG_APP = os.path.join(BUILD_ROOT, "pkg-app", "opt", PKG_NAME)
-
- if not doCopy(BUILD_PARAMETERS.srcdir, BUILD_ROOT_SRC):
- return False
- if not doRemove(
- glob.glob(os.path.join(BUILD_ROOT_SRC, "%s*.zip" % PKG_NAME))):
- return False
-
- return True
-
-
-def doCMD(cmd, time_out=DEFAULT_CMD_TIMEOUT, no_check_return=False):
- LOG.info("Doing CMD: [ %s ]" % cmd)
- pre_time = time.time()
- cmd_proc = subprocess.Popen(args=cmd, shell=True)
- while True:
- cmd_exit_code = cmd_proc.poll()
- elapsed_time = time.time() - pre_time
- if cmd_exit_code is None:
- if elapsed_time >= time_out:
- killProcesses(ppid=cmd_proc.pid)
- LOG.error("Timeout to exe CMD")
- return False
- else:
- if not no_check_return and cmd_exit_code != 0:
- LOG.error("Fail to exe CMD")
- return False
- break
- time.sleep(2)
- return True
-
-
-def doCMDWithOutput(cmd, time_out=DEFAULT_CMD_TIMEOUT):
- LOG.info("Doing CMD: [ %s ]" % cmd)
- pre_time = time.time()
- output = []
- cmd_return_code = 1
- cmd_proc = subprocess.Popen(
- cmd, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, shell=True)
-
- while True:
- output_line = cmd_proc.stdout.readline().strip("\r\n")
- cmd_return_code = cmd_proc.poll()
- elapsed_time = time.time() - pre_time
- if cmd_return_code is None:
- if elapsed_time >= time_out:
- killProcesses(ppid=cmd_proc.pid)
- LOG.error("Timeout to exe CMD")
- return False
- elif output_line == '' and cmd_return_code is not None:
- break
-
- sys.stdout.write("%s\n" % output_line)
- sys.stdout.flush()
- output.append(output_line)
- if cmd_return_code != 0:
- LOG.error("Fail to exe CMD")
-
- return (cmd_return_code, output)
-
-
-def packXPK(build_json=None, app_src=None, app_dest=None, app_name=None):
- pack_tool = os.path.join(BUILD_ROOT, "make_xpk.py")
- if not os.path.exists(pack_tool):
- if not doCopy(
- os.path.join(BUILD_PARAMETERS.pkgpacktools, "make_xpk.py"),
- pack_tool):
- return False
- orig_dir = os.getcwd()
- os.chdir(BUILD_ROOT)
- if os.path.exists("key.file"):
- if not doRemove(["key.file"]):
- os.chdir(orig_dir)
- return False
-
- key_file = safelyGetValue(build_json, "key-file")
- if key_file == "key.file":
- LOG.error(
- "\"key.file\" is reserved name for default key file, "
- "pls change the key file name ...")
- os.chdir(orig_dir)
- return False
- if key_file:
- pack_cmd = "python make_xpk.py %s %s -o %s" % (
- app_src, key_file, os.path.join(app_dest, "%s.xpk" % app_name))
- else:
- pack_cmd = "python make_xpk.py %s key.file -o %s" % (
- app_src, os.path.join(app_dest, "%s.xpk" % app_name))
- if not doCMD(pack_cmd, DEFAULT_CMD_TIMEOUT):
- os.chdir(orig_dir)
- return False
-
- os.chdir(orig_dir)
- return True
-
-
-def packWGT(build_json=None, app_src=None, app_dest=None, app_name=None):
- if not zipDir(app_src, os.path.join(app_dest, "%s.wgt" % app_name)):
- return False
-
- if BUILD_PARAMETERS.signature == True:
- if safelyGetValue(build_json, "sign-flag") == "true":
- if not os.path.exists(os.path.join(BUILD_ROOT, "signing")):
- if not doCopy(
- os.path.join(BUILD_PARAMETERS.pkgpacktools, "signing"),
- os.path.join(BUILD_ROOT, "signing")):
- return False
- signing_cmd = "%s --dist platform %s" % (
- os.path.join(BUILD_ROOT, "signing", "sign-widget.sh"),
- os.path.join(app_dest, "%s.wgt" % app_name))
- if not doCMD(signing_cmd, DEFAULT_CMD_TIMEOUT):
- return False
-
- return True
-
-
-def packAPK(build_json=None, app_src=None, app_dest=None, app_name=None):
- app_name = app_name.replace("-", "_")
-
- if not os.path.exists(os.path.join(BUILD_ROOT, "crosswalk")):
- if not doCopy(
- os.path.join(BUILD_PARAMETERS.pkgpacktools, "crosswalk"),
- os.path.join(BUILD_ROOT, "crosswalk")):
- return False
-
- files = glob.glob(os.path.join(BUILD_ROOT, "crosswalk", "*.apk"))
- if files:
- if not doRemove(files):
- return False
-
- ext_opt = ""
- cmd_opt = ""
- url_opt = ""
- mode_opt = ""
- arch_opt = ""
- icon_opt = ""
-
- common_opts = safelyGetValue(build_json, "apk-common-opts")
- if common_opts is None:
- common_opts = ""
-
- tmp_opt = safelyGetValue(build_json, "apk-ext-opt")
- if tmp_opt:
- ext_opt = "--extensions='%s'" % os.path.join(BUILD_ROOT_SRC, tmp_opt)
-
- tmp_opt = safelyGetValue(build_json, "apk-cmd-opt")
- if tmp_opt:
- cmd_opt = "--xwalk-command-line='%s'" % tmp_opt
-
- tmp_opt = safelyGetValue(build_json, "apk-url-opt")
- if tmp_opt:
- url_opt = "--app-url='%s'" % tmp_opt
-
- tmp_opt = safelyGetValue(build_json, "apk-mode-opt")
- if tmp_opt:
- if tmp_opt in PKG_MODES:
- mode_opt = "--mode=%s" % tmp_opt
- else:
- LOG.error("Got wrong app mode: %s" % tmp_opt)
- return False
- else:
- mode_opt = "--mode=%s" % BUILD_PARAMETERS.pkgmode
-
- tmp_opt = safelyGetValue(build_json, "apk-arch-opt")
- if tmp_opt:
- if tmp_opt in PKG_ARCHS:
- arch_opt = "--arch=%s" % tmp_opt
- else:
- LOG.error("Got wrong app arch: %s" % tmp_opt)
- return False
- else:
- arch_opt = "--arch=%s" % BUILD_PARAMETERS.pkgarch
-
- tmp_opt = safelyGetValue(build_json, "apk-icon-opt")
- if tmp_opt:
- icon_opt = "--icon=%s" % tmp_opt
- elif tmp_opt == "":
- icon_opt = ""
- else:
- icon_opt = "--icon=%s/icon.png" % app_src
-
- if safelyGetValue(build_json, "apk-type") == "MANIFEST":
- pack_cmd = "python make_apk.py --package=org.xwalk.%s " \
- "--manifest=%s/manifest.json %s %s %s %s %s" % (
- app_name, app_src, mode_opt, arch_opt,
- ext_opt, cmd_opt, common_opts)
- elif safelyGetValue(build_json, "apk-type") == "HOSTEDAPP":
- if not url_opt:
- LOG.error(
- "Fail to find the key \"apk-url-opt\" for hosted APP packing")
- return False
- pack_cmd = "python make_apk.py --package=org.xwalk.%s --name=%s %s " \
- "%s %s %s %s %s" % (
- app_name, app_name, mode_opt, arch_opt, ext_opt,
- cmd_opt, url_opt, common_opts)
- else:
- pack_cmd = "python make_apk.py --package=org.xwalk.%s --name=%s " \
- "--app-root=%s --app-local-path=index.html %s %s " \
- "%s %s %s %s" % (
- app_name, app_name, app_src, icon_opt, mode_opt,
- arch_opt, ext_opt, cmd_opt, common_opts)
-
- orig_dir = os.getcwd()
- os.chdir(os.path.join(BUILD_ROOT, "crosswalk"))
- if not doCMD(pack_cmd, DEFAULT_CMD_TIMEOUT):
- os.chdir(orig_dir)
- return False
-
- files = glob.glob(os.path.join(BUILD_ROOT, "crosswalk", "*.apk"))
- if files:
- if not doCopy(files[0], os.path.join(app_dest, "%s.apk" % app_name)):
- os.chdir(orig_dir)
- return False
- else:
- LOG.error("Fail to find the apk file")
- os.chdir(orig_dir)
- return False
-
- os.chdir(orig_dir)
- return True
-
-
-def packCordova(build_json=None, app_src=None, app_dest=None, app_name=None):
- pack_tool = os.path.join(BUILD_ROOT, "cordova")
- app_name = app_name.replace("-", "_")
- if not os.path.exists(pack_tool):
- if not doCopy(
- os.path.join(BUILD_PARAMETERS.pkgpacktools, "cordova"),
- pack_tool):
- return False
-
- plugin_tool = os.path.join(BUILD_ROOT, "cordova_plugins")
- if not os.path.exists(plugin_tool):
- if not doCopy(
- os.path.join(BUILD_PARAMETERS.pkgpacktools, "cordova_plugins"),
- plugin_tool):
- return False
-
- orig_dir = os.getcwd()
- os.chdir(pack_tool)
- pack_cmd = "bin/create %s org.xwalk.%s %s" % (
- app_name, app_name, app_name)
- if not doCMD(pack_cmd, DEFAULT_CMD_TIMEOUT):
- os.chdir(orig_dir)
- return False
-
- os.chdir(os.path.join(pack_tool, app_name))
- plugin_dirs = os.listdir(plugin_tool)
- for i_dir in plugin_dirs:
- i_plugin_dir = os.path.join(plugin_tool, i_dir)
- plugin_install_cmd = "plugman install --platform android --project " \
- "./ --plugin %s" % i_plugin_dir
- if not doCMD(plugin_install_cmd, DEFAULT_CMD_TIMEOUT):
- os.chdir(orig_dir)
- return False
- os.chdir(pack_tool)
-
- if not doCopy(app_src, os.path.join(pack_tool, app_name, "assets", "www")):
- os.chdir(orig_dir)
- return False
- os.chdir(os.path.join(BUILD_ROOT, "cordova", app_name))
- pack_cmd = "./cordova/build"
- if not doCMD(pack_cmd, DEFAULT_CMD_TIMEOUT):
- os.chdir(orig_dir)
- return False
-
- if not doCopy(os.path.join(
- BUILD_ROOT, "cordova", app_name, "bin", "%s-debug.apk" %
- app_name),
- os.path.join(app_dest, "%s.apk" % app_name)):
- os.chdir(orig_dir)
- return False
- os.chdir(orig_dir)
- return True
-
-
-def packEmbeddingAPI(
- build_json=None, app_src=None, app_dest=None, app_name=None):
- app_name = app_name.replace("-", "_")
-
- library_dir_name = safelyGetValue(build_json, "embeddingapi-library-name")
- if not library_dir_name:
- LOG.error("Fail to get embeddingapi-library-name ...")
- return False
-
- new_library_dir_name = "core_library"
- pack_tool = os.path.join(app_src, "..", new_library_dir_name)
-
- if os.path.exists(pack_tool):
- if not doRemove([pack_tool]):
- return False
-
- if not doCopy(
- os.path.join(BUILD_PARAMETERS.pkgpacktools, library_dir_name),
- pack_tool):
- return False
-
- if os.path.exists(os.path.join(pack_tool, "bin", "res", "crunch")):
- if not doRemove([os.path.join(pack_tool, "bin", "res", "crunch")]):
- return False
-
- orig_dir = os.getcwd()
- android_project_path = os.path.join(app_src, "android-project")
- try:
- os.makedirs(android_project_path)
- except Exception as e:
- LOG.error("Fail to create tmp project dir: %s" % e)
- return False
-
- (return_code, output) = doCMDWithOutput("android list target")
- api_level = ""
- for line in output:
- if "API level" in line:
- api_level = line.split(":")[1].strip()
- break
- if not api_level:
- LOG.error("Fail to get Android API Level")
- os.chdir(orig_dir)
- return False
-
- android_project_cmd = "android create project --name %s --target " \
- "android-%s --path %s --package com.%s " \
- "--activity MainActivity" % (
- app_name, api_level, android_project_path, app_name)
- if not doCMD(android_project_cmd):
- os.chdir(orig_dir)
- return False
-
- try:
- update_file = open(
- os.path.join(android_project_path, "project.properties"), "a+")
- update_file.writelines(
- "{0}\n".format(
- "android.library.reference.1=../%s" %
- new_library_dir_name))
- update_file.close()
- except Exception as e:
- LOG.error(
- "Fail to update %s: %s" %
- (os.path.join(
- android_project_path,
- "project.properties"),
- e))
- os.chdir(orig_dir)
- return False
-
- if not doCopy(os.path.join(android_project_path, "build.xml"),
- os.path.join(app_src, "build.xml")):
- os.chdir(orig_dir)
- return False
-
- if not doCopy(
- os.path.join(android_project_path, "project.properties"),
- os.path.join(app_src, "project.properties")):
- os.chdir(orig_dir)
- return False
-
- if not doCopy(
- os.path.join(android_project_path, "local.properties"),
- os.path.join(app_src, "local.properties")):
- os.chdir(orig_dir)
- return False
-
- if not doCopy(
- os.path.join(android_project_path, "local.properties"),
- os.path.join(pack_tool, "local.properties")):
- os.chdir(orig_dir)
- return False
-
- os.chdir(app_src)
- if not doCMD("ant debug"):
- os.chdir(orig_dir)
- return False
-
- if not doCopy(
- os.path.join(app_src, "bin", "%s-debug.apk" % app_name),
- os.path.join(app_dest, "%s.apk" % app_name)):
- os.chdir(orig_dir)
- return False
- os.chdir(orig_dir)
- return True
-
-
-def packAPP(build_json=None, app_src=None, app_dest=None, app_name=None):
- LOG.info("Packing %s(%s)" % (app_name, app_src))
- if not os.path.exists(app_dest):
- try:
- os.makedirs(app_dest)
- except Exception as e:
- LOG.error("Fail to init package install dest dir: %s" % e)
- return False
-
- if checkContains(BUILD_PARAMETERS.pkgtype, "XPK"):
- if not packXPK(build_json, app_src, app_dest, app_name):
- return False
- elif checkContains(BUILD_PARAMETERS.pkgtype, "WGT"):
- if not packWGT(build_json, app_src, app_dest, app_name):
- return False
- elif checkContains(BUILD_PARAMETERS.pkgtype, "APK"):
- if not packAPK(build_json, app_src, app_dest, app_name):
- return False
- elif checkContains(BUILD_PARAMETERS.pkgtype, "CORDOVA"):
- if not packCordova(build_json, app_src, app_dest, app_name):
- return False
- elif checkContains(BUILD_PARAMETERS.pkgtype, "EMBEDDINGAPI"):
- if not packEmbeddingAPI(build_json, app_src, app_dest, app_name):
- return False
- else:
- LOG.error("Got wrong pkg type: %s" % BUILD_PARAMETERS.pkgtype)
- return False
-
- LOG.info("Success to pack APP: %s" % app_name)
- return True
-
-
-def createIndexFile(index_file_path=None, hosted_app=None):
- try:
- if hosted_app:
- index_url = "http://127.0.0.1/opt/%s/webrunner/index.html?" \
- "testsuite=../tests.xml&testprefix=../../.." % PKG_NAME
- else:
- index_url = "opt/%s/webrunner/index.html?testsuite=../tests.xml" \
- "&testprefix=../../.." % PKG_NAME
- html_content = "<!doctype html><head><meta http-equiv='Refresh' " \
- "content='1; url=%s'></head>" % index_url
- index_file = open(index_file_path, "w")
- index_file.write(html_content)
- index_file.close()
- except Exception as e:
- LOG.error("Fail to create index.html for top-app: %s" % e)
- return False
- LOG.info("Success to create index file %s" % index_file_path)
- return True
-
-
-def buildSubAPP(app_dir=None, build_json=None, app_dest_default=None):
- app_dir_inside = safelyGetValue(build_json, "app-dir")
- if app_dir_inside:
- app_dir = app_dir_inside
- LOG.info("+Building sub APP(s) from %s ..." % app_dir)
- app_dir = os.path.join(BUILD_ROOT_SRC, app_dir)
- app_name = safelyGetValue(build_json, "app-name")
- if not app_name:
- app_name = os.path.basename(app_dir)
-
- app_src = os.path.join(BUILD_ROOT_SRC_SUB_APP, app_name)
- if buildSRC(app_dir, app_src, build_json):
- app_dest = safelyGetValue(build_json, "install-path")
- if app_dest:
- app_dest = os.path.join(app_dest_default, app_dest)
- else:
- app_dest = app_dest_default
-
- if safelyGetValue(build_json, "all-apps") == "true":
- app_dirs = os.listdir(app_src)
- apps_num = 0
- for i_app_dir in app_dirs:
- if os.path.isdir(os.path.join(app_src, i_app_dir)):
- i_app_name = os.path.basename(i_app_dir)
- if not packAPP(
- build_json, os.path.join(app_src, i_app_name),
- app_dest, i_app_name):
- return False
- else:
- apps_num = apps_num + 1
- if apps_num > 0:
- LOG.info("Totally packed %d apps in %s" % (apps_num, app_dir))
- return True
- else:
- return packAPP(build_json, app_src, app_dest, app_name)
- return False
-
-
-def buildPKGAPP(build_json=None):
- LOG.info("+Building package APP ...")
- if not doCopy(os.path.join(BUILD_ROOT_SRC, "icon.png"),
- os.path.join(BUILD_ROOT_SRC_PKG_APP, "icon.png")):
- return False
-
- if checkContains(BUILD_PARAMETERS.pkgtype, "XPK"):
- if not doCopy(
- os.path.join(BUILD_ROOT_SRC, "manifest.json"),
- os.path.join(BUILD_ROOT_SRC_PKG_APP, "manifest.json")):
- return False
- elif checkContains(BUILD_PARAMETERS.pkgtype, "WGT"):
- if not doCopy(os.path.join(BUILD_ROOT_SRC, "config.xml"),
- os.path.join(BUILD_ROOT_SRC_PKG_APP, "config.xml")):
- return False
-
- hosted_app = False
- if safelyGetValue(build_json, "hosted-app") == "true":
- hosted_app = True
- if not createIndexFile(
- os.path.join(BUILD_ROOT_SRC_PKG_APP, "index.html"), hosted_app):
- return False
-
- if not hosted_app:
- if "blacklist" not in build_json:
- build_json.update({"blacklist": []})
- build_json["blacklist"].extend(PKG_BLACK_LIST)
- if not buildSRC(BUILD_ROOT_SRC, BUILD_ROOT_PKG_APP, build_json):
- return False
-
- if "subapp-list" in build_json:
- for i_sub_app in build_json["subapp-list"].keys():
- if not buildSubAPP(
- i_sub_app, build_json["subapp-list"][i_sub_app],
- BUILD_ROOT_PKG_APP):
- return False
-
- if not packAPP(
- build_json, BUILD_ROOT_SRC_PKG_APP, BUILD_ROOT_PKG, PKG_NAME):
- return False
-
- return True
-
-
-def buildPKG(build_json=None):
- if "blacklist" not in build_json:
- build_json.update({"blacklist": []})
- build_json["blacklist"].extend(PKG_BLACK_LIST)
- if not buildSRC(BUILD_ROOT_SRC, BUILD_ROOT_PKG, build_json):
- return False
-
- if "subapp-list" in build_json:
- for i_sub_app in build_json["subapp-list"].keys():
- if not buildSubAPP(
- i_sub_app, build_json["subapp-list"][i_sub_app],
- BUILD_ROOT_PKG):
- return False
-
- if "pkg-app" in build_json:
- if not buildPKGAPP(build_json["pkg-app"]):
- return False
-
- return True
-
-
-def main():
- global LOG
- LOG = logging.getLogger("pack-tool")
- LOG.setLevel(LOG_LEVEL)
- stream_handler = logging.StreamHandler()
- stream_handler.setLevel(LOG_LEVEL)
- stream_formatter = ColorFormatter("[%(asctime)s] %(message)s")
- stream_handler.setFormatter(stream_formatter)
- LOG.addHandler(stream_handler)
-
- try:
- usage = "Usage: ./pack.py -t apk -m shared -a x86"
- opts_parser = OptionParser(usage=usage)
- opts_parser.add_option(
- "-c",
- "--cfg",
- dest="pkgcfg",
- help="specify the path of config json file")
- opts_parser.add_option(
- "-t",
- "--type",
- dest="pkgtype",
- help="specify the pkg type, e.g. apk, xpk, wgt ...")
- opts_parser.add_option(
- "-m",
- "--mode",
- dest="pkgmode",
- help="specify the apk mode, e.g. shared, embedded")
- opts_parser.add_option(
- "-a",
- "--arch",
- dest="pkgarch",
- help="specify the apk arch, e.g. x86, arm")
- opts_parser.add_option(
- "-d",
- "--dest",
- dest="destdir",
- help="specify the installation folder for packed package")
- opts_parser.add_option(
- "-s",
- "--src",
- dest="srcdir",
- help="specify the path of pkg resource for packing")
- opts_parser.add_option(
- "--tools",
- dest="pkgpacktools",
- help="specify the parent folder of pack tools")
- opts_parser.add_option(
- "--notclean",
- dest="bnotclean",
- action="store_true",
- help="disable the build root clean after the packing")
- opts_parser.add_option(
- "--sign",
- dest="signature",
- action="store_true",
- help="signature operation will be done when packing wgt")
- opts_parser.add_option(
- "-v",
- "--version",
- dest="bversion",
- action="store_true",
- help="show this tool's version")
- opts_parser.add_option(
- "--pkg-version",
- dest="pkgversion",
- help="specify the pkg version, e.g. 0.0.0.1")
-
- if len(sys.argv) == 1:
- sys.argv.append("-h")
-
- global BUILD_PARAMETERS
- (BUILD_PARAMETERS, args) = opts_parser.parse_args()
- except Exception as e:
- LOG.error("Got wrong options: %s, exit ..." % e)
- sys.exit(1)
-
- if BUILD_PARAMETERS.bversion:
- print "Version: %s" % TOOL_VERSION
- sys.exit(0)
-
- if not BUILD_PARAMETERS.srcdir:
- BUILD_PARAMETERS.srcdir = os.getcwd()
- BUILD_PARAMETERS.srcdir = os.path.expanduser(BUILD_PARAMETERS.srcdir)
-
- if not os.path.exists(
- os.path.join(BUILD_PARAMETERS.srcdir, "..", "..", VERSION_FILE)):
- if not os.path.exists(
- os.path.join(BUILD_PARAMETERS.srcdir, "..", VERSION_FILE)):
- if not os.path.exists(
- os.path.join(BUILD_PARAMETERS.srcdir, VERSION_FILE)):
- LOG.info(
- "Not found pkg version file, try to use option --pkg-version")
- pkg_version_file_path = None
- else:
- pkg_version_file_path = os.path.join(
- BUILD_PARAMETERS.srcdir, VERSION_FILE)
- else:
- pkg_version_file_path = os.path.join(
- BUILD_PARAMETERS.srcdir, "..", VERSION_FILE)
- else:
- pkg_version_file_path = os.path.join(
- BUILD_PARAMETERS.srcdir, "..", "..", VERSION_FILE)
-
- try:
- pkg_main_version = 0
- pkg_release_version = 0
- if BUILD_PARAMETERS.pkgversion:
- LOG.info("Using %s as pkg version " % BUILD_PARAMETERS.pkgversion)
- pkg_main_version = BUILD_PARAMETERS.pkgversion
- else:
- if pkg_version_file_path is not None:
- LOG.info("Using pkg version file: %s" % pkg_version_file_path)
- with open(pkg_version_file_path, "rt") as pkg_version_file:
- pkg_version_raw = pkg_version_file.read()
- pkg_version_file.close()
- pkg_version_json = json.loads(pkg_version_raw)
- pkg_main_version = pkg_version_json["main-version"]
- pkg_release_version = pkg_version_json["release-version"]
- except Exception as e:
- LOG.error("Fail to read pkg version file: %s, exit ..." % e)
- sys.exit(1)
-
- if not BUILD_PARAMETERS.pkgtype:
- LOG.error("No pkg type provided, exit ...")
- sys.exit(1)
- elif not BUILD_PARAMETERS.pkgtype in PKG_TYPES:
- LOG.error("Wrong pkg type, only support: %s, exit ..." %
- PKG_TYPES)
- sys.exit(1)
-
- if BUILD_PARAMETERS.pkgtype == "apk" or \
- BUILD_PARAMETERS.pkgtype == "apk-aio":
- if not BUILD_PARAMETERS.pkgmode:
- LOG.error("No pkg mode option provided, exit ...")
- sys.exit(1)
- elif not BUILD_PARAMETERS.pkgmode in PKG_MODES:
- LOG.error(
- "Wrong pkg mode option provided, only support:%s, exit ..." %
- PKG_MODES)
- sys.exit(1)
-
- if not BUILD_PARAMETERS.pkgarch:
- LOG.error("No pkg arch option provided, exit ...")
- sys.exit(1)
- elif not BUILD_PARAMETERS.pkgarch in PKG_ARCHS:
- LOG.error(
- "Wrong pkg arch option provided, only support:%s, exit ..." %
- PKG_ARCHS)
- sys.exit(1)
-
- if BUILD_PARAMETERS.pkgtype == "apk-aio" or \
- BUILD_PARAMETERS.pkgtype == "cordova-aio":
- if not BUILD_PARAMETERS.destdir or not os.path.exists(
- BUILD_PARAMETERS.destdir):
- LOG.error("No all-in-one installation dest dir found, exit ...")
- sys.exit(1)
-
- elif not BUILD_PARAMETERS.destdir:
- BUILD_PARAMETERS.destdir = BUILD_PARAMETERS.srcdir
- BUILD_PARAMETERS.destdir = os.path.expanduser(BUILD_PARAMETERS.destdir)
-
- if not BUILD_PARAMETERS.pkgpacktools:
- BUILD_PARAMETERS.pkgpacktools = os.path.join(
- BUILD_PARAMETERS.srcdir, "..", "..", "tools")
- BUILD_PARAMETERS.pkgpacktools = os.path.expanduser(
- BUILD_PARAMETERS.pkgpacktools)
-
- config_json = None
- if BUILD_PARAMETERS.pkgcfg:
- config_json_file_path = BUILD_PARAMETERS.pkgcfg
- else:
- config_json_file_path = os.path.join(
- BUILD_PARAMETERS.srcdir, "suite.json")
- try:
- LOG.info("Using config json file: %s" % config_json_file_path)
- with open(config_json_file_path, "rt") as config_json_file:
- config_raw = config_json_file.read()
- config_json_file.close()
- config_json = json.loads(config_raw)
- except Exception as e:
- LOG.error("Fail to read config json file: %s, exit ..." % e)
- sys.exit(1)
-
- global PKG_NAME
- PKG_NAME = safelyGetValue(config_json, "pkg-name")
- if not PKG_NAME:
- PKG_NAME = os.path.basename(BUILD_PARAMETERS.srcdir)
- LOG.warning(
- "Fail to read pkg name from json, "
- "using src dir name as pkg name ...")
-
- LOG.info("================= %s (%s-%s) ================" %
- (PKG_NAME, pkg_main_version, pkg_release_version))
-
- if not safelyGetValue(config_json, "pkg-list"):
- LOG.error("Fail to read pkg-list, exit ...")
- sys.exit(1)
-
- pkg_json = None
- for i_pkg in config_json["pkg-list"].keys():
- i_pkg_list = i_pkg.replace(" ", "").split(",")
- if BUILD_PARAMETERS.pkgtype in i_pkg_list:
- pkg_json = config_json["pkg-list"][i_pkg]
-
- if not pkg_json:
- LOG.error("Fail to read pkg json, exit ...")
- sys.exit(1)
-
- if not prepareBuildRoot():
- exitHandler(1)
-
- if "pkg-blacklist" in config_json:
- PKG_BLACK_LIST.extend(config_json["pkg-blacklist"])
-
- if not buildPKG(pkg_json):
- exitHandler(1)
-
- LOG.info("+Building package ...")
- if BUILD_PARAMETERS.pkgtype == "apk-aio" or \
- BUILD_PARAMETERS.pkgtype == "cordova-aio":
- pkg_file_list = os.listdir(os.path.join(BUILD_ROOT, "pkg"))
- for i_file in pkg_file_list:
- if not doCopy(
- os.path.join(BUILD_ROOT, "pkg", i_file),
- os.path.join(BUILD_PARAMETERS.destdir, i_file)):
- exitHandler(1)
- else:
- pkg_file = os.path.join(
- BUILD_PARAMETERS.destdir,
- "%s-%s.%s.zip" %
- (PKG_NAME,
- pkg_main_version,
- pkg_release_version))
-
-
- if not zipDir(os.path.join(BUILD_ROOT, "pkg"), pkg_file):
- exitHandler(1)
-
-if __name__ == "__main__":
- main()
- exitHandler(0)
+++ /dev/null
-The testharness files come from
-https://github.com/w3c/testharness.js (commit 2486f01bf4c58de1c1b7cb39322af7b55c6c700b)
-without any modification.
-
-These tests are copyright by W3C and/or the author listed in the test
-file. The tests are dual-licensed under the W3C Test Suite License:
-http://www.w3.org/Consortium/Legal/2008/04-testsuite-license
-and the BSD 3-clause License:
-http://www.w3.org/Consortium/Legal/2008/03-bsd-license
-under W3C's test suite licensing policy:
-http://www.w3.org/Consortium/Legal/2008/04-testsuite-copyright
-
+++ /dev/null
-html {
- font-family:DejaVu Sans, Bitstream Vera Sans, Arial, Sans;
-}
-
-#log .warning,
-#log .warning a {
- color: black;
- background: yellow;
-}
-
-#log .error,
-#log .error a {
- color: white;
- background: red;
-}
-
-#log pre {
- border: 1px solid black;
- padding: 1em;
-}
-
-section#summary {
- margin-bottom:1em;
-}
-
-table#results {
- border-collapse:collapse;
- table-layout:fixed;
- width:100%;
-}
-
-table#results th:first-child,
-table#results td:first-child {
- width:4em;
-}
-
-table#results th:last-child,
-table#results td:last-child {
- width:50%;
-}
-
-table#results.assertions th:last-child,
-table#results.assertions td:last-child {
- width:35%;
-}
-
-table#results th {
- padding:0;
- padding-bottom:0.5em;
- border-bottom:medium solid black;
-}
-
-table#results td {
- padding:1em;
- padding-bottom:0.5em;
- border-bottom:thin solid black;
-}
-
-tr.pass > td:first-child {
- color:green;
-}
-
-tr.fail > td:first-child {
- color:red;
-}
-
-tr.timeout > td:first-child {
- color:red;
-}
-
-tr.notrun > td:first-child {
- color:blue;
-}
-
-.pass > td:first-child, .fail > td:first-child, .timeout > td:first-child, .notrun > td:first-child {
- font-variant:small-caps;
-}
-
-table#results span {
- display:block;
-}
-
-table#results span.expected {
- font-family:DejaVu Sans Mono, Bitstream Vera Sans Mono, Monospace;
- white-space:pre;
-}
-
-table#results span.actual {
- font-family:DejaVu Sans Mono, Bitstream Vera Sans Mono, Monospace;
- white-space:pre;
-}
-
-span.ok {
- color:green;
-}
-
-tr.error {
- color:red;
-}
-
-span.timeout {
- color:red;
-}
-
-span.ok, span.timeout, span.error {
- font-variant:small-caps;
-}
\ No newline at end of file
+++ /dev/null
-/*global self*/
-/*jshint latedef: nofunc*/
-/*
-Distributed under both the W3C Test Suite License [1] and the W3C
-3-clause BSD License [2]. To contribute to a W3C Test Suite, see the
-policies and contribution forms [3].
-
-[1] http://www.w3.org/Consortium/Legal/2008/04-testsuite-license
-[2] http://www.w3.org/Consortium/Legal/2008/03-bsd-license
-[3] http://www.w3.org/2004/10/27-testcases
-*/
-
-/* Documentation is in docs/api.md */
-
-(function ()
-{
- var debug = false;
- // default timeout is 10 seconds, test can override if needed
- var settings = {
- output:true,
- harness_timeout:{
- "normal":3600000,
- "long":3600000
- },
- test_timeout:null
- };
-
- var xhtml_ns = "http://www.w3.org/1999/xhtml";
-
- /*
- * TestEnvironment is an abstraction for the environment in which the test
- * harness is used. Each implementation of a test environment has to provide
- * the following interface:
- *
- * interface TestEnvironment {
- * // Invoked after the global 'tests' object has been created and it's
- * // safe to call add_*_callback() to register event handlers.
- * void on_tests_ready();
- *
- * // Invoked after setup() has been called to notify the test environment
- * // of changes to the test harness properties.
- * void on_new_harness_properties(object properties);
- *
- * // Should return a new unique default test name.
- * DOMString next_default_test_name();
- *
- * // Should return the test harness timeout duration in milliseconds.
- * float test_timeout();
- *
- * // Should return the global scope object.
- * object global_scope();
- * };
- */
-
- /*
- * A test environment with a DOM. The global object is 'window'. By default
- * test results are displayed in a table. Any parent windows receive
- * callbacks or messages via postMessage() when test events occur. See
- * apisample11.html and apisample12.html.
- */
- function WindowTestEnvironment() {
- this.name_counter = 0;
- this.window_cache = null;
- this.output_handler = null;
- this.all_loaded = false;
- var this_obj = this;
- on_event(window, 'load', function() {
- this_obj.all_loaded = true;
- });
- }
-
- WindowTestEnvironment.prototype._dispatch = function(selector, callback_args, message_arg) {
- this._forEach_windows(
- function(w, is_same_origin) {
- if (is_same_origin && selector in w) {
- try {
- w[selector].apply(undefined, callback_args);
- } catch (e) {
- if (debug) {
- throw e;
- }
- }
- }
- if (supports_post_message(w) && w !== self) {
- w.postMessage(message_arg, "*");
- }
- });
- };
-
- WindowTestEnvironment.prototype._forEach_windows = function(callback) {
- // Iterate of the the windows [self ... top, opener]. The callback is passed
- // two objects, the first one is the windows object itself, the second one
- // is a boolean indicating whether or not its on the same origin as the
- // current window.
- var cache = this.window_cache;
- if (!cache) {
- cache = [[self, true]];
- var w = self;
- var i = 0;
- var so;
- var origins = location.ancestorOrigins;
- while (w != w.parent) {
- w = w.parent;
- // In WebKit, calls to parent windows' properties that aren't on the same
- // origin cause an error message to be displayed in the error console but
- // don't throw an exception. This is a deviation from the current HTML5
- // spec. See: https://bugs.webkit.org/show_bug.cgi?id=43504
- // The problem with WebKit's behavior is that it pollutes the error console
- // with error messages that can't be caught.
- //
- // This issue can be mitigated by relying on the (for now) proprietary
- // `location.ancestorOrigins` property which returns an ordered list of
- // the origins of enclosing windows. See:
- // http://trac.webkit.org/changeset/113945.
- if (origins) {
- so = (location.origin == origins[i]);
- } else {
- so = is_same_origin(w);
- }
- cache.push([w, so]);
- i++;
- }
- w = window.opener;
- if (w) {
- // window.opener isn't included in the `location.ancestorOrigins` prop.
- // We'll just have to deal with a simple check and an error msg on WebKit
- // browsers in this case.
- cache.push([w, is_same_origin(w)]);
- }
- this.window_cache = cache;
- }
-
- forEach(cache,
- function(a) {
- callback.apply(null, a);
- });
- };
-
- WindowTestEnvironment.prototype.on_tests_ready = function() {
- var output = new Output();
- this.output_handler = output;
-
- var this_obj = this;
- add_start_callback(function (properties) {
- this_obj.output_handler.init(properties);
- this_obj._dispatch("start_callback", [properties],
- { type: "start", properties: properties });
- });
- add_test_state_callback(function(test) {
- this_obj.output_handler.show_status();
- this_obj._dispatch("test_state_callback", [test],
- { type: "test_state", test: test.structured_clone() });
- });
- add_result_callback(function (test) {
- this_obj.output_handler.show_status();
- this_obj._dispatch("result_callback", [test],
- { type: "result", test: test.structured_clone() });
- });
- add_completion_callback(function (tests, harness_status) {
- this_obj.output_handler.show_results(tests, harness_status);
- var cloned_tests = map(tests, function(test) { return test.structured_clone(); });
- this_obj._dispatch("completion_callback", [tests, harness_status],
- { type: "complete", tests: cloned_tests,
- status: harness_status.structured_clone() });
- });
- };
-
- WindowTestEnvironment.prototype.next_default_test_name = function() {
- //Don't use document.title to work around an Opera bug in XHTML documents
- var title = document.getElementsByTagName("title")[0];
- var prefix = (title && title.firstChild && title.firstChild.data) || "Untitled";
- var suffix = this.name_counter > 0 ? " " + this.name_counter : "";
- this.name_counter++;
- return prefix + suffix;
- };
-
- WindowTestEnvironment.prototype.on_new_harness_properties = function(properties) {
- this.output_handler.setup(properties);
- };
-
- WindowTestEnvironment.prototype.add_on_loaded_callback = function(callback) {
- on_event(window, 'load', callback);
- };
-
- WindowTestEnvironment.prototype.test_timeout = function() {
- var metas = document.getElementsByTagName("meta");
- for (var i = 0; i < metas.length; i++) {
- if (metas[i].name == "timeout") {
- if (metas[i].content == "long") {
- return settings.harness_timeout.long;
- }
- break;
- }
- }
- return settings.harness_timeout.normal;
- };
-
- WindowTestEnvironment.prototype.global_scope = function() {
- return window;
- };
-
- /*
- * Base TestEnvironment implementation for a generic web worker.
- *
- * Workers accumulate test results. One or more clients can connect and
- * retrieve results from a worker at any time.
- *
- * WorkerTestEnvironment supports communicating with a client via a
- * MessagePort. The mechanism for determining the appropriate MessagePort
- * for communicating with a client depends on the type of worker and is
- * implemented by the various specializations of WorkerTestEnvironment
- * below.
- *
- * A client document using testharness can use fetch_tests_from_worker() to
- * retrieve results from a worker. See apisample16.html.
- */
- function WorkerTestEnvironment() {
- this.name_counter = 0;
- this.all_loaded = true;
- this.message_list = [];
- this.message_ports = [];
- }
-
- WorkerTestEnvironment.prototype._dispatch = function(message) {
- this.message_list.push(message);
- for (var i = 0; i < this.message_ports.length; ++i)
- {
- this.message_ports[i].postMessage(message);
- }
- };
-
- // The only requirement is that port has a postMessage() method. It doesn't
- // have to be an instance of a MessagePort, and often isn't.
- WorkerTestEnvironment.prototype._add_message_port = function(port) {
- this.message_ports.push(port);
- for (var i = 0; i < this.message_list.length; ++i)
- {
- port.postMessage(this.message_list[i]);
- }
- };
-
- WorkerTestEnvironment.prototype.next_default_test_name = function() {
- var suffix = this.name_counter > 0 ? " " + this.name_counter : "";
- this.name_counter++;
- return "Untitled" + suffix;
- };
-
- WorkerTestEnvironment.prototype.on_new_harness_properties = function() {};
-
- WorkerTestEnvironment.prototype.on_tests_ready = function() {
- var this_obj = this;
- add_start_callback(
- function(properties) {
- this_obj._dispatch({
- type: "start",
- properties: properties,
- });
- });
- add_test_state_callback(
- function(test) {
- this_obj._dispatch({
- type: "test_state",
- test: test.structured_clone()
- });
- });
- add_result_callback(
- function(test) {
- this_obj._dispatch({
- type: "result",
- test: test.structured_clone()
- });
- });
- add_completion_callback(
- function(tests, harness_status) {
- this_obj._dispatch({
- type: "complete",
- tests: map(tests,
- function(test) {
- return test.structured_clone();
- }),
- status: harness_status.structured_clone()
- });
- });
- };
-
- WorkerTestEnvironment.prototype.add_on_loaded_callback = function() {};
-
- WorkerTestEnvironment.prototype.test_timeout = function() {
- // Tests running in a worker don't have a default timeout. I.e. all
- // worker tests behave as if settings.explicit_timeout is true.
- return null;
- };
-
- WorkerTestEnvironment.prototype.global_scope = function() {
- return self;
- };
-
- /*
- * Dedicated web workers.
- * https://html.spec.whatwg.org/multipage/workers.html#dedicatedworkerglobalscope
- *
- * This class is used as the test_environment when testharness is running
- * inside a dedicated worker.
- */
- function DedicatedWorkerTestEnvironment() {
- WorkerTestEnvironment.call(this);
- // self is an instance of DedicatedWorkerGlobalScope which exposes
- // a postMessage() method for communicating via the message channel
- // established when the worker is created.
- this._add_message_port(self);
- }
- DedicatedWorkerTestEnvironment.prototype = Object.create(WorkerTestEnvironment.prototype);
-
- DedicatedWorkerTestEnvironment.prototype.on_tests_ready = function() {
- WorkerTestEnvironment.prototype.on_tests_ready.call(this);
- // In the absence of an onload notification, we a require dedicated
- // workers to explicitly signal when the tests are done.
- tests.wait_for_finish = true;
- };
-
- /*
- * Shared web workers.
- * https://html.spec.whatwg.org/multipage/workers.html#sharedworkerglobalscope
- *
- * This class is used as the test_environment when testharness is running
- * inside a shared web worker.
- */
- function SharedWorkerTestEnvironment() {
- WorkerTestEnvironment.call(this);
- var this_obj = this;
- // Shared workers receive message ports via the 'onconnect' event for
- // each connection.
- self.addEventListener("connect",
- function(message_event) {
- this_obj._add_message_port(message_event.source);
- });
- }
- SharedWorkerTestEnvironment.prototype = Object.create(WorkerTestEnvironment.prototype);
-
- SharedWorkerTestEnvironment.prototype.on_tests_ready = function() {
- WorkerTestEnvironment.prototype.on_tests_ready.call(this);
- // In the absence of an onload notification, we a require shared
- // workers to explicitly signal when the tests are done.
- tests.wait_for_finish = true;
- };
-
- /*
- * Service workers.
- * http://www.w3.org/TR/service-workers/
- *
- * This class is used as the test_environment when testharness is running
- * inside a service worker.
- */
- function ServiceWorkerTestEnvironment() {
- WorkerTestEnvironment.call(this);
- this.all_loaded = false;
- this.on_loaded_callback = null;
- var this_obj = this;
- self.addEventListener("message",
- function(event) {
- if (event.data.type && event.data.type === "connect") {
- this_obj._add_message_port(event.ports[0]);
- event.ports[0].start();
- }
- });
-
- // The oninstall event is received after the service worker script and
- // all imported scripts have been fetched and executed. It's the
- // equivalent of an onload event for a document. All tests should have
- // been added by the time this event is received, thus it's not
- // necessary to wait until the onactivate event.
- on_event(self, "install",
- function(event) {
- this_obj.all_loaded = true;
- if (this_obj.on_loaded_callback) {
- this_obj.on_loaded_callback();
- }
- });
- }
- ServiceWorkerTestEnvironment.prototype = Object.create(WorkerTestEnvironment.prototype);
-
- ServiceWorkerTestEnvironment.prototype.add_on_loaded_callback = function(callback) {
- if (this.all_loaded) {
- callback();
- } else {
- this.on_loaded_callback = callback;
- }
- };
-
- function create_test_environment() {
- if ('document' in self) {
- return new WindowTestEnvironment();
- }
- if ('DedicatedWorkerGlobalScope' in self &&
- self instanceof DedicatedWorkerGlobalScope) {
- return new DedicatedWorkerTestEnvironment();
- }
- if ('SharedWorkerGlobalScope' in self &&
- self instanceof SharedWorkerGlobalScope) {
- return new SharedWorkerTestEnvironment();
- }
- if ('ServiceWorkerGlobalScope' in self &&
- self instanceof ServiceWorkerGlobalScope) {
- return new ServiceWorkerTestEnvironment();
- }
- throw new Error("Unsupported test environment");
- }
-
- var test_environment = create_test_environment();
-
- function is_shared_worker(worker) {
- return 'SharedWorker' in self && worker instanceof SharedWorker;
- }
-
- function is_service_worker(worker) {
- return 'ServiceWorker' in self && worker instanceof ServiceWorker;
- }
-
- /*
- * API functions
- */
-
- function test(func, name, properties)
- {
- var test_name = name ? name : test_environment.next_default_test_name();
- properties = properties ? properties : {};
- var test_obj = new Test(test_name, properties);
- test_obj.step(func, test_obj, test_obj);
- if (test_obj.phase === test_obj.phases.STARTED) {
- test_obj.done();
- }
- }
-
- function async_test(func, name, properties)
- {
- if (typeof func !== "function") {
- properties = name;
- name = func;
- func = null;
- }
- var test_name = name ? name : test_environment.next_default_test_name();
- properties = properties ? properties : {};
- var test_obj = new Test(test_name, properties);
- if (func) {
- test_obj.step(func, test_obj, test_obj);
- }
- return test_obj;
- }
-
- function promise_test(func, name, properties) {
- var test = async_test(name, properties);
- Promise.resolve(test.step(func, test, test))
- .then(
- function() {
- test.done();
- })
- .catch(test.step_func(
- function(value) {
- if (value instanceof AssertionError) {
- throw value;
- }
- assert(false, "promise_test", null,
- "Unhandled rejection with value: ${value}", {value:value});
- }));
- }
-
- function setup(func_or_properties, maybe_properties)
- {
- var func = null;
- var properties = {};
- if (arguments.length === 2) {
- func = func_or_properties;
- properties = maybe_properties;
- } else if (func_or_properties instanceof Function) {
- func = func_or_properties;
- } else {
- properties = func_or_properties;
- }
- tests.setup(func, properties);
- test_environment.on_new_harness_properties(properties);
- }
-
- function done() {
- if (tests.tests.length === 0) {
- tests.set_file_is_test();
- }
- if (tests.file_is_test) {
- tests.tests[0].done();
- }
- tests.end_wait();
- }
-
- function generate_tests(func, args, properties) {
- forEach(args, function(x, i)
- {
- var name = x[0];
- test(function()
- {
- func.apply(this, x.slice(1));
- },
- name,
- Array.isArray(properties) ? properties[i] : properties);
- });
- }
-
- function on_event(object, event, callback)
- {
- object.addEventListener(event, callback, false);
- }
-
- expose(test, 'test');
- expose(async_test, 'async_test');
- expose(promise_test, 'promise_test');
- expose(generate_tests, 'generate_tests');
- expose(setup, 'setup');
- expose(done, 'done');
- expose(on_event, 'on_event');
-
- /*
- * Return a string truncated to the given length, with ... added at the end
- * if it was longer.
- */
- function truncate(s, len)
- {
- if (s.length > len) {
- return s.substring(0, len - 3) + "...";
- }
- return s;
- }
-
- /*
- * Return true if object is probably a Node object.
- */
- function is_node(object)
- {
- // I use duck-typing instead of instanceof, because
- // instanceof doesn't work if the node is from another window (like an
- // iframe's contentWindow):
- // http://www.w3.org/Bugs/Public/show_bug.cgi?id=12295
- if ("nodeType" in object &&
- "nodeName" in object &&
- "nodeValue" in object &&
- "childNodes" in object) {
- try {
- object.nodeType;
- } catch (e) {
- // The object is probably Node.prototype or another prototype
- // object that inherits from it, and not a Node instance.
- return false;
- }
- return true;
- }
- return false;
- }
-
- /*
- * Convert a value to a nice, human-readable string
- */
- function format_value(val, seen)
- {
- if (!seen) {
- seen = [];
- }
- if (typeof val === "object" && val !== null) {
- if (seen.indexOf(val) >= 0) {
- return "[...]";
- }
- seen.push(val);
- }
- if (Array.isArray(val)) {
- return "[" + val.map(function(x) {return format_value(x, seen);}).join(", ") + "]";
- }
-
- switch (typeof val) {
- case "string":
- val = val.replace("\\", "\\\\");
- for (var i = 0; i < 32; i++) {
- var replace = "\\";
- switch (i) {
- case 0: replace += "0"; break;
- case 1: replace += "x01"; break;
- case 2: replace += "x02"; break;
- case 3: replace += "x03"; break;
- case 4: replace += "x04"; break;
- case 5: replace += "x05"; break;
- case 6: replace += "x06"; break;
- case 7: replace += "x07"; break;
- case 8: replace += "b"; break;
- case 9: replace += "t"; break;
- case 10: replace += "n"; break;
- case 11: replace += "v"; break;
- case 12: replace += "f"; break;
- case 13: replace += "r"; break;
- case 14: replace += "x0e"; break;
- case 15: replace += "x0f"; break;
- case 16: replace += "x10"; break;
- case 17: replace += "x11"; break;
- case 18: replace += "x12"; break;
- case 19: replace += "x13"; break;
- case 20: replace += "x14"; break;
- case 21: replace += "x15"; break;
- case 22: replace += "x16"; break;
- case 23: replace += "x17"; break;
- case 24: replace += "x18"; break;
- case 25: replace += "x19"; break;
- case 26: replace += "x1a"; break;
- case 27: replace += "x1b"; break;
- case 28: replace += "x1c"; break;
- case 29: replace += "x1d"; break;
- case 30: replace += "x1e"; break;
- case 31: replace += "x1f"; break;
- }
- val = val.replace(RegExp(String.fromCharCode(i), "g"), replace);
- }
- return '"' + val.replace(/"/g, '\\"') + '"';
- case "boolean":
- case "undefined":
- return String(val);
- case "number":
- // In JavaScript, -0 === 0 and String(-0) == "0", so we have to
- // special-case.
- if (val === -0 && 1/val === -Infinity) {
- return "-0";
- }
- return String(val);
- case "object":
- if (val === null) {
- return "null";
- }
-
- // Special-case Node objects, since those come up a lot in my tests. I
- // ignore namespaces.
- if (is_node(val)) {
- switch (val.nodeType) {
- case Node.ELEMENT_NODE:
- var ret = "<" + val.localName;
- for (var i = 0; i < val.attributes.length; i++) {
- ret += " " + val.attributes[i].name + '="' + val.attributes[i].value + '"';
- }
- ret += ">" + val.innerHTML + "</" + val.localName + ">";
- return "Element node " + truncate(ret, 60);
- case Node.TEXT_NODE:
- return 'Text node "' + truncate(val.data, 60) + '"';
- case Node.PROCESSING_INSTRUCTION_NODE:
- return "ProcessingInstruction node with target " + format_value(truncate(val.target, 60)) + " and data " + format_value(truncate(val.data, 60));
- case Node.COMMENT_NODE:
- return "Comment node <!--" + truncate(val.data, 60) + "-->";
- case Node.DOCUMENT_NODE:
- return "Document node with " + val.childNodes.length + (val.childNodes.length == 1 ? " child" : " children");
- case Node.DOCUMENT_TYPE_NODE:
- return "DocumentType node";
- case Node.DOCUMENT_FRAGMENT_NODE:
- return "DocumentFragment node with " + val.childNodes.length + (val.childNodes.length == 1 ? " child" : " children");
- default:
- return "Node object of unknown type";
- }
- }
-
- /* falls through */
- default:
- return typeof val + ' "' + truncate(String(val), 60) + '"';
- }
- }
- expose(format_value, "format_value");
-
- /*
- * Assertions
- */
-
- function assert_true(actual, description)
- {
- assert(actual === true, "assert_true", description,
- "expected true got ${actual}", {actual:actual});
- }
- expose(assert_true, "assert_true");
-
- function assert_false(actual, description)
- {
- assert(actual === false, "assert_false", description,
- "expected false got ${actual}", {actual:actual});
- }
- expose(assert_false, "assert_false");
-
- function same_value(x, y) {
- if (y !== y) {
- //NaN case
- return x !== x;
- }
- if (x === 0 && y === 0) {
- //Distinguish +0 and -0
- return 1/x === 1/y;
- }
- return x === y;
- }
-
- function assert_equals(actual, expected, description)
- {
- /*
- * Test if two primitives are equal or two objects
- * are the same object
- */
- if (typeof actual != typeof expected) {
- assert(false, "assert_equals", description,
- "expected (" + typeof expected + ") ${expected} but got (" + typeof actual + ") ${actual}",
- {expected:expected, actual:actual});
- return;
- }
- assert(same_value(actual, expected), "assert_equals", description,
- "expected ${expected} but got ${actual}",
- {expected:expected, actual:actual});
- }
- expose(assert_equals, "assert_equals");
-
- function assert_not_equals(actual, expected, description)
- {
- /*
- * Test if two primitives are unequal or two objects
- * are different objects
- */
- assert(!same_value(actual, expected), "assert_not_equals", description,
- "got disallowed value ${actual}",
- {actual:actual});
- }
- expose(assert_not_equals, "assert_not_equals");
-
- function assert_in_array(actual, expected, description)
- {
- assert(expected.indexOf(actual) != -1, "assert_in_array", description,
- "value ${actual} not in array ${expected}",
- {actual:actual, expected:expected});
- }
- expose(assert_in_array, "assert_in_array");
-
- function assert_object_equals(actual, expected, description)
- {
- //This needs to be improved a great deal
- function check_equal(actual, expected, stack)
- {
- stack.push(actual);
-
- var p;
- for (p in actual) {
- assert(expected.hasOwnProperty(p), "assert_object_equals", description,
- "unexpected property ${p}", {p:p});
-
- if (typeof actual[p] === "object" && actual[p] !== null) {
- if (stack.indexOf(actual[p]) === -1) {
- check_equal(actual[p], expected[p], stack);
- }
- } else {
- assert(same_value(actual[p], expected[p]), "assert_object_equals", description,
- "property ${p} expected ${expected} got ${actual}",
- {p:p, expected:expected, actual:actual});
- }
- }
- for (p in expected) {
- assert(actual.hasOwnProperty(p),
- "assert_object_equals", description,
- "expected property ${p} missing", {p:p});
- }
- stack.pop();
- }
- check_equal(actual, expected, []);
- }
- expose(assert_object_equals, "assert_object_equals");
-
- function assert_array_equals(actual, expected, description)
- {
- assert(actual.length === expected.length,
- "assert_array_equals", description,
- "lengths differ, expected ${expected} got ${actual}",
- {expected:expected.length, actual:actual.length});
-
- for (var i = 0; i < actual.length; i++) {
- assert(actual.hasOwnProperty(i) === expected.hasOwnProperty(i),
- "assert_array_equals", description,
- "property ${i}, property expected to be ${expected} but was ${actual}",
- {i:i, expected:expected.hasOwnProperty(i) ? "present" : "missing",
- actual:actual.hasOwnProperty(i) ? "present" : "missing"});
- assert(same_value(expected[i], actual[i]),
- "assert_array_equals", description,
- "property ${i}, expected ${expected} but got ${actual}",
- {i:i, expected:expected[i], actual:actual[i]});
- }
- }
- expose(assert_array_equals, "assert_array_equals");
-
- function assert_approx_equals(actual, expected, epsilon, description)
- {
- /*
- * Test if two primitive numbers are equal withing +/- epsilon
- */
- assert(typeof actual === "number",
- "assert_approx_equals", description,
- "expected a number but got a ${type_actual}",
- {type_actual:typeof actual});
-
- assert(Math.abs(actual - expected) <= epsilon,
- "assert_approx_equals", description,
- "expected ${expected} +/- ${epsilon} but got ${actual}",
- {expected:expected, actual:actual, epsilon:epsilon});
- }
- expose(assert_approx_equals, "assert_approx_equals");
-
- function assert_less_than(actual, expected, description)
- {
- /*
- * Test if a primitive number is less than another
- */
- assert(typeof actual === "number",
- "assert_less_than", description,
- "expected a number but got a ${type_actual}",
- {type_actual:typeof actual});
-
- assert(actual < expected,
- "assert_less_than", description,
- "expected a number less than ${expected} but got ${actual}",
- {expected:expected, actual:actual});
- }
- expose(assert_less_than, "assert_less_than");
-
- function assert_greater_than(actual, expected, description)
- {
- /*
- * Test if a primitive number is greater than another
- */
- assert(typeof actual === "number",
- "assert_greater_than", description,
- "expected a number but got a ${type_actual}",
- {type_actual:typeof actual});
-
- assert(actual > expected,
- "assert_greater_than", description,
- "expected a number greater than ${expected} but got ${actual}",
- {expected:expected, actual:actual});
- }
- expose(assert_greater_than, "assert_greater_than");
-
- function assert_less_than_equal(actual, expected, description)
- {
- /*
- * Test if a primitive number is less than or equal to another
- */
- assert(typeof actual === "number",
- "assert_less_than_equal", description,
- "expected a number but got a ${type_actual}",
- {type_actual:typeof actual});
-
- assert(actual <= expected,
- "assert_less_than", description,
- "expected a number less than or equal to ${expected} but got ${actual}",
- {expected:expected, actual:actual});
- }
- expose(assert_less_than_equal, "assert_less_than_equal");
-
- function assert_greater_than_equal(actual, expected, description)
- {
- /*
- * Test if a primitive number is greater than or equal to another
- */
- assert(typeof actual === "number",
- "assert_greater_than_equal", description,
- "expected a number but got a ${type_actual}",
- {type_actual:typeof actual});
-
- assert(actual >= expected,
- "assert_greater_than_equal", description,
- "expected a number greater than or equal to ${expected} but got ${actual}",
- {expected:expected, actual:actual});
- }
- expose(assert_greater_than_equal, "assert_greater_than_equal");
-
- function assert_regexp_match(actual, expected, description) {
- /*
- * Test if a string (actual) matches a regexp (expected)
- */
- assert(expected.test(actual),
- "assert_regexp_match", description,
- "expected ${expected} but got ${actual}",
- {expected:expected, actual:actual});
- }
- expose(assert_regexp_match, "assert_regexp_match");
-
- function assert_class_string(object, class_string, description) {
- assert_equals({}.toString.call(object), "[object " + class_string + "]",
- description);
- }
- expose(assert_class_string, "assert_class_string");
-
-
- function _assert_own_property(name) {
- return function(object, property_name, description)
- {
- assert(property_name in object,
- name, description,
- "expected property ${p} missing", {p:property_name});
- };
- }
- expose(_assert_own_property("assert_exists"), "assert_exists");
- expose(_assert_own_property("assert_own_property"), "assert_own_property");
-
- function assert_not_exists(object, property_name, description)
- {
- assert(!object.hasOwnProperty(property_name),
- "assert_not_exists", description,
- "unexpected property ${p} found", {p:property_name});
- }
- expose(assert_not_exists, "assert_not_exists");
-
- function _assert_inherits(name) {
- return function (object, property_name, description)
- {
- assert(typeof object === "object",
- name, description,
- "provided value is not an object");
-
- assert("hasOwnProperty" in object,
- name, description,
- "provided value is an object but has no hasOwnProperty method");
-
- assert(!object.hasOwnProperty(property_name),
- name, description,
- "property ${p} found on object expected in prototype chain",
- {p:property_name});
-
- assert(property_name in object,
- name, description,
- "property ${p} not found in prototype chain",
- {p:property_name});
- };
- }
- expose(_assert_inherits("assert_inherits"), "assert_inherits");
- expose(_assert_inherits("assert_idl_attribute"), "assert_idl_attribute");
-
- function assert_readonly(object, property_name, description)
- {
- var initial_value = object[property_name];
- try {
- //Note that this can have side effects in the case where
- //the property has PutForwards
- object[property_name] = initial_value + "a"; //XXX use some other value here?
- assert(same_value(object[property_name], initial_value),
- "assert_readonly", description,
- "changing property ${p} succeeded",
- {p:property_name});
- } finally {
- object[property_name] = initial_value;
- }
- }
- expose(assert_readonly, "assert_readonly");
-
- function assert_throws(code, func, description)
- {
- try {
- func.call(this);
- assert(false, "assert_throws", description,
- "${func} did not throw", {func:func});
- } catch (e) {
- if (e instanceof AssertionError) {
- throw e;
- }
- if (code === null) {
- return;
- }
- if (typeof code === "object") {
- assert(typeof e == "object" && "name" in e && e.name == code.name,
- "assert_throws", description,
- "${func} threw ${actual} (${actual_name}) expected ${expected} (${expected_name})",
- {func:func, actual:e, actual_name:e.name,
- expected:code,
- expected_name:code.name});
- return;
- }
-
- var code_name_map = {
- INDEX_SIZE_ERR: 'IndexSizeError',
- HIERARCHY_REQUEST_ERR: 'HierarchyRequestError',
- WRONG_DOCUMENT_ERR: 'WrongDocumentError',
- INVALID_CHARACTER_ERR: 'InvalidCharacterError',
- NO_MODIFICATION_ALLOWED_ERR: 'NoModificationAllowedError',
- NOT_FOUND_ERR: 'NotFoundError',
- NOT_SUPPORTED_ERR: 'NotSupportedError',
- INVALID_STATE_ERR: 'InvalidStateError',
- SYNTAX_ERR: 'SyntaxError',
- INVALID_MODIFICATION_ERR: 'InvalidModificationError',
- NAMESPACE_ERR: 'NamespaceError',
- INVALID_ACCESS_ERR: 'InvalidAccessError',
- TYPE_MISMATCH_ERR: 'TypeMismatchError',
- SECURITY_ERR: 'SecurityError',
- NETWORK_ERR: 'NetworkError',
- ABORT_ERR: 'AbortError',
- URL_MISMATCH_ERR: 'URLMismatchError',
- QUOTA_EXCEEDED_ERR: 'QuotaExceededError',
- TIMEOUT_ERR: 'TimeoutError',
- INVALID_NODE_TYPE_ERR: 'InvalidNodeTypeError',
- DATA_CLONE_ERR: 'DataCloneError'
- };
-
- var name = code in code_name_map ? code_name_map[code] : code;
-
- var name_code_map = {
- IndexSizeError: 1,
- HierarchyRequestError: 3,
- WrongDocumentError: 4,
- InvalidCharacterError: 5,
- NoModificationAllowedError: 7,
- NotFoundError: 8,
- NotSupportedError: 9,
- InvalidStateError: 11,
- SyntaxError: 12,
- InvalidModificationError: 13,
- NamespaceError: 14,
- InvalidAccessError: 15,
- TypeMismatchError: 17,
- SecurityError: 18,
- NetworkError: 19,
- AbortError: 20,
- URLMismatchError: 21,
- QuotaExceededError: 22,
- TimeoutError: 23,
- InvalidNodeTypeError: 24,
- DataCloneError: 25,
-
- UnknownError: 0,
- ConstraintError: 0,
- DataError: 0,
- TransactionInactiveError: 0,
- ReadOnlyError: 0,
- VersionError: 0
- };
-
- if (!(name in name_code_map)) {
- throw new AssertionError('Test bug: unrecognized DOMException code "' + code + '" passed to assert_throws()');
- }
-
- var required_props = { code: name_code_map[name] };
-
- if (required_props.code === 0 ||
- ("name" in e && e.name !== e.name.toUpperCase() && e.name !== "DOMException")) {
- // New style exception: also test the name property.
- required_props.name = name;
- }
-
- //We'd like to test that e instanceof the appropriate interface,
- //but we can't, because we don't know what window it was created
- //in. It might be an instanceof the appropriate interface on some
- //unknown other window. TODO: Work around this somehow?
-
- assert(typeof e == "object",
- "assert_throws", description,
- "${func} threw ${e} with type ${type}, not an object",
- {func:func, e:e, type:typeof e});
-
- for (var prop in required_props) {
- assert(typeof e == "object" && prop in e && e[prop] == required_props[prop],
- "assert_throws", description,
- "${func} threw ${e} that is not a DOMException " + code + ": property ${prop} is equal to ${actual}, expected ${expected}",
- {func:func, e:e, prop:prop, actual:e[prop], expected:required_props[prop]});
- }
- }
- }
- expose(assert_throws, "assert_throws");
-
- function assert_unreached(description) {
- assert(false, "assert_unreached", description,
- "Reached unreachable code");
- }
- expose(assert_unreached, "assert_unreached");
-
- function assert_any(assert_func, actual, expected_array)
- {
- var args = [].slice.call(arguments, 3);
- var errors = [];
- var passed = false;
- forEach(expected_array,
- function(expected)
- {
- try {
- assert_func.apply(this, [actual, expected].concat(args));
- passed = true;
- } catch (e) {
- errors.push(e.message);
- }
- });
- if (!passed) {
- throw new AssertionError(errors.join("\n\n"));
- }
- }
- expose(assert_any, "assert_any");
-
- function Test(name, properties)
- {
- if (tests.file_is_test && tests.tests.length) {
- throw new Error("Tried to create a test with file_is_test");
- }
- this.name = name;
-
- this.phase = this.phases.INITIAL;
-
- this.status = this.NOTRUN;
- this.timeout_id = null;
- this.index = null;
-
- this.properties = properties;
- var timeout = properties.timeout ? properties.timeout : settings.test_timeout;
- if (timeout !== null) {
- this.timeout_length = timeout * tests.timeout_multiplier;
- } else {
- this.timeout_length = null;
- }
-
- this.message = null;
-
- this.steps = [];
-
- this.cleanup_callbacks = [];
-
- tests.push(this);
- }
-
- Test.statuses = {
- PASS:0,
- FAIL:1,
- TIMEOUT:2,
- NOTRUN:3
- };
-
- Test.prototype = merge({}, Test.statuses);
-
- Test.prototype.phases = {
- INITIAL:0,
- STARTED:1,
- HAS_RESULT:2,
- COMPLETE:3
- };
-
- Test.prototype.structured_clone = function()
- {
- if (!this._structured_clone) {
- var msg = this.message;
- msg = msg ? String(msg) : msg;
- this._structured_clone = merge({
- name:String(this.name),
- properties:merge({}, this.properties),
- }, Test.statuses);
- }
- this._structured_clone.status = this.status;
- this._structured_clone.message = this.message;
- this._structured_clone.index = this.index;
- return this._structured_clone;
- };
-
- Test.prototype.step = function(func, this_obj)
- {
- if (this.phase > this.phases.STARTED) {
- return;
- }
- this.phase = this.phases.STARTED;
- //If we don't get a result before the harness times out that will be a test timout
- this.set_status(this.TIMEOUT, "Test timed out");
-
- tests.started = true;
- tests.notify_test_state(this);
-
- if (this.timeout_id === null) {
- this.set_timeout();
- }
-
- this.steps.push(func);
-
- if (arguments.length === 1) {
- this_obj = this;
- }
-
- try {
- return func.apply(this_obj, Array.prototype.slice.call(arguments, 2));
- } catch (e) {
- if (this.phase >= this.phases.HAS_RESULT) {
- return;
- }
- var message = (typeof e === "object" && e !== null) ? e.message : e;
- if (typeof e.stack != "undefined" && typeof e.message == "string") {
- //Try to make it more informative for some exceptions, at least
- //in Gecko and WebKit. This results in a stack dump instead of
- //just errors like "Cannot read property 'parentNode' of null"
- //or "root is null". Makes it a lot longer, of course.
- message += "(stack: " + e.stack + ")";
- }
- this.set_status(this.FAIL, message);
- this.phase = this.phases.HAS_RESULT;
- this.done();
- }
- };
-
- Test.prototype.step_func = function(func, this_obj)
- {
- var test_this = this;
-
- if (arguments.length === 1) {
- this_obj = test_this;
- }
-
- return function()
- {
- return test_this.step.apply(test_this, [func, this_obj].concat(
- Array.prototype.slice.call(arguments)));
- };
- };
-
- Test.prototype.step_func_done = function(func, this_obj)
- {
- var test_this = this;
-
- if (arguments.length === 1) {
- this_obj = test_this;
- }
-
- return function()
- {
- if (func) {
- test_this.step.apply(test_this, [func, this_obj].concat(
- Array.prototype.slice.call(arguments)));
- }
- test_this.done();
- };
- };
-
- Test.prototype.unreached_func = function(description)
- {
- return this.step_func(function() {
- assert_unreached(description);
- });
- };
-
- Test.prototype.add_cleanup = function(callback) {
- this.cleanup_callbacks.push(callback);
- };
-
- Test.prototype.force_timeout = function() {
- this.set_status(this.TIMEOUT);
- this.phase = this.phases.HAS_RESULT;
- };
-
- Test.prototype.set_timeout = function()
- {
- if (this.timeout_length !== null) {
- var this_obj = this;
- this.timeout_id = setTimeout(function()
- {
- this_obj.timeout();
- }, this.timeout_length);
- }
- };
-
- Test.prototype.set_status = function(status, message)
- {
- this.status = status;
- this.message = message;
- };
-
- Test.prototype.timeout = function()
- {
- this.timeout_id = null;
- this.set_status(this.TIMEOUT, "Test timed out");
- this.phase = this.phases.HAS_RESULT;
- this.done();
- };
-
- Test.prototype.done = function()
- {
- if (this.phase == this.phases.COMPLETE) {
- return;
- }
-
- if (this.phase <= this.phases.STARTED) {
- this.set_status(this.PASS, null);
- }
-
- this.phase = this.phases.COMPLETE;
-
- clearTimeout(this.timeout_id);
- tests.result(this);
- this.cleanup();
- };
-
- Test.prototype.cleanup = function() {
- forEach(this.cleanup_callbacks,
- function(cleanup_callback) {
- cleanup_callback();
- });
- };
-
- /*
- * A RemoteTest object mirrors a Test object on a remote worker. The
- * associated RemoteWorker updates the RemoteTest object in response to
- * received events. In turn, the RemoteTest object replicates these events
- * on the local document. This allows listeners (test result reporting
- * etc..) to transparently handle local and remote events.
- */
- function RemoteTest(clone) {
- var this_obj = this;
- Object.keys(clone).forEach(
- function(key) {
- this_obj[key] = clone[key];
- });
- this.index = null;
- this.phase = this.phases.INITIAL;
- this.update_state_from(clone);
- tests.push(this);
- }
-
- RemoteTest.prototype.structured_clone = function() {
- var clone = {};
- Object.keys(this).forEach(
- function(key) {
- if (typeof(this[key]) === "object") {
- clone[key] = merge({}, this[key]);
- } else {
- clone[key] = this[key];
- }
- });
- clone.phases = merge({}, this.phases);
- return clone;
- };
-
- RemoteTest.prototype.cleanup = function() {};
- RemoteTest.prototype.phases = Test.prototype.phases;
- RemoteTest.prototype.update_state_from = function(clone) {
- this.status = clone.status;
- this.message = clone.message;
- if (this.phase === this.phases.INITIAL) {
- this.phase = this.phases.STARTED;
- }
- };
- RemoteTest.prototype.done = function() {
- this.phase = this.phases.COMPLETE;
- }
-
- /*
- * A RemoteWorker listens for test events from a worker. These events are
- * then used to construct and maintain RemoteTest objects that mirror the
- * tests running on the remote worker.
- */
- function RemoteWorker(worker) {
- this.running = true;
- this.tests = new Array();
-
- var this_obj = this;
- worker.onerror = function(error) { this_obj.worker_error(error); };
-
- var message_port;
-
- if (is_service_worker(worker)) {
- // The ServiceWorker's implicit MessagePort is currently not
- // reliably accessible from the ServiceWorkerGlobalScope due to
- // Blink setting MessageEvent.source to null for messages sent via
- // ServiceWorker.postMessage(). Until that's resolved, create an
- // explicit MessageChannel and pass one end to the worker.
- var message_channel = new MessageChannel();
- message_port = message_channel.port1;
- message_port.start();
- worker.postMessage({type: "connect"}, [message_channel.port2]);
- } else if (is_shared_worker(worker)) {
- message_port = worker.port;
- } else {
- message_port = worker;
- }
-
- // Keeping a reference to the worker until worker_done() is seen
- // prevents the Worker object and its MessageChannel from going away
- // before all the messages are dispatched.
- this.worker = worker;
-
- message_port.onmessage =
- function(message) {
- if (this_obj.running && (message.data.type in this_obj.message_handlers)) {
- this_obj.message_handlers[message.data.type].call(this_obj, message.data);
- }
- };
- }
-
- RemoteWorker.prototype.worker_error = function(error) {
- var message = error.message || String(error);
- var filename = (error.filename ? " " + error.filename: "");
- // FIXME: Display worker error states separately from main document
- // error state.
- this.worker_done({
- status: {
- status: tests.status.ERROR,
- message: "Error in worker" + filename + ": " + message
- }
- });
- error.preventDefault();
- };
-
- RemoteWorker.prototype.test_state = function(data) {
- var remote_test = this.tests[data.test.index];
- if (!remote_test) {
- remote_test = new RemoteTest(data.test);
- this.tests[data.test.index] = remote_test;
- }
- remote_test.update_state_from(data.test);
- tests.notify_test_state(remote_test);
- };
-
- RemoteWorker.prototype.test_done = function(data) {
- var remote_test = this.tests[data.test.index];
- remote_test.update_state_from(data.test);
- remote_test.done();
- tests.result(remote_test);
- };
-
- RemoteWorker.prototype.worker_done = function(data) {
- if (tests.status.status === null &&
- data.status.status !== data.status.OK) {
- tests.status.status = data.status.status;
- tests.status.message = data.status.message;
- }
- this.running = false;
- this.worker = null;
- if (tests.all_done()) {
- tests.complete();
- }
- };
-
- RemoteWorker.prototype.message_handlers = {
- test_state: RemoteWorker.prototype.test_state,
- result: RemoteWorker.prototype.test_done,
- complete: RemoteWorker.prototype.worker_done
- };
-
- /*
- * Harness
- */
-
- function TestsStatus()
- {
- this.status = null;
- this.message = null;
- }
-
- TestsStatus.statuses = {
- OK:0,
- ERROR:1,
- TIMEOUT:2
- };
-
- TestsStatus.prototype = merge({}, TestsStatus.statuses);
-
- TestsStatus.prototype.structured_clone = function()
- {
- if (!this._structured_clone) {
- var msg = this.message;
- msg = msg ? String(msg) : msg;
- this._structured_clone = merge({
- status:this.status,
- message:msg
- }, TestsStatus.statuses);
- }
- return this._structured_clone;
- };
-
- function Tests()
- {
- this.tests = [];
- this.num_pending = 0;
-
- this.phases = {
- INITIAL:0,
- SETUP:1,
- HAVE_TESTS:2,
- HAVE_RESULTS:3,
- COMPLETE:4
- };
- this.phase = this.phases.INITIAL;
-
- this.properties = {};
-
- this.wait_for_finish = false;
- this.processing_callbacks = false;
-
- this.allow_uncaught_exception = false;
-
- this.file_is_test = false;
-
- this.timeout_multiplier = 1;
- this.timeout_length = test_environment.test_timeout();
- this.timeout_id = null;
-
- this.start_callbacks = [];
- this.test_state_callbacks = [];
- this.test_done_callbacks = [];
- this.all_done_callbacks = [];
-
- this.pending_workers = [];
-
- this.status = new TestsStatus();
-
- var this_obj = this;
-
- test_environment.add_on_loaded_callback(function() {
- if (this_obj.all_done()) {
- this_obj.complete();
- }
- });
-
- this.set_timeout();
- }
-
- Tests.prototype.setup = function(func, properties)
- {
- if (this.phase >= this.phases.HAVE_RESULTS) {
- return;
- }
-
- if (this.phase < this.phases.SETUP) {
- this.phase = this.phases.SETUP;
- }
-
- this.properties = properties;
-
- for (var p in properties) {
- if (properties.hasOwnProperty(p)) {
- var value = properties[p];
- if (p == "allow_uncaught_exception") {
- this.allow_uncaught_exception = value;
- } else if (p == "explicit_done" && value) {
- this.wait_for_finish = true;
- } else if (p == "explicit_timeout" && value) {
- this.timeout_length = null;
- if (this.timeout_id)
- {
- clearTimeout(this.timeout_id);
- }
- } else if (p == "timeout_multiplier") {
- this.timeout_multiplier = value;
- }
- }
- }
-
- if (func) {
- try {
- func();
- } catch (e) {
- this.status.status = this.status.ERROR;
- this.status.message = String(e);
- }
- }
- this.set_timeout();
- };
-
- Tests.prototype.set_file_is_test = function() {
- if (this.tests.length > 0) {
- throw new Error("Tried to set file as test after creating a test");
- }
- this.wait_for_finish = true;
- this.file_is_test = true;
- // Create the test, which will add it to the list of tests
- async_test();
- };
-
- Tests.prototype.set_timeout = function() {
- var this_obj = this;
- clearTimeout(this.timeout_id);
- if (this.timeout_length !== null) {
- this.timeout_id = setTimeout(function() {
- this_obj.timeout();
- }, this.timeout_length);
- }
- };
-
- Tests.prototype.timeout = function() {
- if (this.status.status === null) {
- this.status.status = this.status.TIMEOUT;
- }
- this.complete();
- };
-
- Tests.prototype.end_wait = function()
- {
- this.wait_for_finish = false;
- if (this.all_done()) {
- this.complete();
- }
- };
-
- Tests.prototype.push = function(test)
- {
- if (this.phase < this.phases.HAVE_TESTS) {
- this.start();
- }
- this.num_pending++;
- test.index = this.tests.push(test);
- this.notify_test_state(test);
- };
-
- Tests.prototype.notify_test_state = function(test) {
- var this_obj = this;
- forEach(this.test_state_callbacks,
- function(callback) {
- callback(test, this_obj);
- });
- };
-
- Tests.prototype.all_done = function() {
- return (this.tests.length > 0 && test_environment.all_loaded &&
- this.num_pending === 0 && !this.wait_for_finish &&
- !this.processing_callbacks &&
- !this.pending_workers.some(function(w) { return w.running; }));
- };
-
- Tests.prototype.start = function() {
- this.phase = this.phases.HAVE_TESTS;
- this.notify_start();
- };
-
- Tests.prototype.notify_start = function() {
- var this_obj = this;
- forEach (this.start_callbacks,
- function(callback)
- {
- callback(this_obj.properties);
- });
- };
-
- Tests.prototype.result = function(test)
- {
- if (this.phase > this.phases.HAVE_RESULTS) {
- return;
- }
- this.phase = this.phases.HAVE_RESULTS;
- this.num_pending--;
- this.notify_result(test);
- };
-
- Tests.prototype.notify_result = function(test) {
- var this_obj = this;
- this.processing_callbacks = true;
- forEach(this.test_done_callbacks,
- function(callback)
- {
- callback(test, this_obj);
- });
- this.processing_callbacks = false;
- if (this_obj.all_done()) {
- this_obj.complete();
- }
- };
-
- Tests.prototype.complete = function() {
- if (this.phase === this.phases.COMPLETE) {
- return;
- }
- this.phase = this.phases.COMPLETE;
- var this_obj = this;
- this.tests.forEach(
- function(x)
- {
- if (x.phase < x.phases.COMPLETE) {
- this_obj.notify_result(x);
- x.cleanup();
- x.phase = x.phases.COMPLETE;
- }
- }
- );
- this.notify_complete();
- };
-
- Tests.prototype.notify_complete = function() {
- var this_obj = this;
- if (this.status.status === null) {
- this.status.status = this.status.OK;
- }
-
- forEach (this.all_done_callbacks,
- function(callback)
- {
- callback(this_obj.tests, this_obj.status);
- });
- };
-
- Tests.prototype.fetch_tests_from_worker = function(worker) {
- if (this.phase >= this.phases.COMPLETE) {
- return;
- }
-
- this.pending_workers.push(new RemoteWorker(worker));
- };
-
- function fetch_tests_from_worker(port) {
- tests.fetch_tests_from_worker(port);
- }
- expose(fetch_tests_from_worker, 'fetch_tests_from_worker');
-
- function timeout() {
- if (tests.timeout_length === null) {
- tests.timeout();
- }
- }
- expose(timeout, 'timeout');
-
- function add_start_callback(callback) {
- tests.start_callbacks.push(callback);
- }
-
- function add_test_state_callback(callback) {
- tests.test_state_callbacks.push(callback);
- }
-
- function add_result_callback(callback)
- {
- tests.test_done_callbacks.push(callback);
- }
-
- function add_completion_callback(callback)
- {
- tests.all_done_callbacks.push(callback);
- }
-
- expose(add_start_callback, 'add_start_callback');
- expose(add_test_state_callback, 'add_test_state_callback');
- expose(add_result_callback, 'add_result_callback');
- expose(add_completion_callback, 'add_completion_callback');
-
- /*
- * Output listener
- */
-
- function Output() {
- this.output_document = document;
- this.output_node = null;
- this.enabled = settings.output;
- this.phase = this.INITIAL;
- }
-
- Output.prototype.INITIAL = 0;
- Output.prototype.STARTED = 1;
- Output.prototype.HAVE_RESULTS = 2;
- Output.prototype.COMPLETE = 3;
-
- Output.prototype.setup = function(properties) {
- if (this.phase > this.INITIAL) {
- return;
- }
-
- //If output is disabled in testharnessreport.js the test shouldn't be
- //able to override that
- this.enabled = this.enabled && (properties.hasOwnProperty("output") ?
- properties.output : settings.output);
- };
-
- Output.prototype.init = function(properties) {
- if (this.phase >= this.STARTED) {
- return;
- }
- if (properties.output_document) {
- this.output_document = properties.output_document;
- } else {
- this.output_document = document;
- }
- this.phase = this.STARTED;
- };
-
- Output.prototype.resolve_log = function() {
- var output_document;
- if (typeof this.output_document === "function") {
- output_document = this.output_document.apply(undefined);
- } else {
- output_document = this.output_document;
- }
- if (!output_document) {
- return;
- }
- var node = output_document.getElementById("log");
- if (!node) {
- if (!document.body || document.readyState == "loading") {
- return;
- }
- node = output_document.createElement("div");
- node.id = "log";
- output_document.body.appendChild(node);
- }
- this.output_document = output_document;
- this.output_node = node;
- };
-
- Output.prototype.show_status = function() {
- if (this.phase < this.STARTED) {
- this.init();
- }
- if (!this.enabled) {
- return;
- }
- if (this.phase < this.HAVE_RESULTS) {
- this.resolve_log();
- this.phase = this.HAVE_RESULTS;
- }
- var done_count = tests.tests.length - tests.num_pending;
- if (this.output_node) {
- if (done_count < 100 ||
- (done_count < 1000 && done_count % 100 === 0) ||
- done_count % 1000 === 0) {
- this.output_node.textContent = "Running, " +
- done_count + " complete, " +
- tests.num_pending + " remain";
- }
- }
- };
-
- Output.prototype.show_results = function (tests, harness_status) {
- if (this.phase >= this.COMPLETE) {
- return;
- }
- if (!this.enabled) {
- return;
- }
- if (!this.output_node) {
- this.resolve_log();
- }
- this.phase = this.COMPLETE;
-
- var log = this.output_node;
- if (!log) {
- return;
- }
- var output_document = this.output_document;
-
- while (log.lastChild) {
- log.removeChild(log.lastChild);
- }
-
- var script_prefix = null;
- var scripts = document.getElementsByTagName("script");
- for (var i = 0; i < scripts.length; i++) {
- var src;
- if (scripts[i].src) {
- src = scripts[i].src;
- } else if (scripts[i].href) {
- //SVG case
- src = scripts[i].href.baseVal;
- }
-
- var matches = src && src.match(/^(.*\/|)testharness\.js$/);
- if (matches) {
- script_prefix = matches[1];
- break;
- }
- }
-
- if (script_prefix !== null) {
- var stylesheet = output_document.createElementNS(xhtml_ns, "link");
- stylesheet.setAttribute("rel", "stylesheet");
- stylesheet.setAttribute("href", script_prefix + "testharness.css");
- var heads = output_document.getElementsByTagName("head");
- if (heads.length) {
- heads[0].appendChild(stylesheet);
- }
- }
-
- var status_text_harness = {};
- status_text_harness[harness_status.OK] = "OK";
- status_text_harness[harness_status.ERROR] = "Error";
- status_text_harness[harness_status.TIMEOUT] = "Timeout";
-
- var status_text = {};
- status_text[Test.prototype.PASS] = "Pass";
- status_text[Test.prototype.FAIL] = "Fail";
- status_text[Test.prototype.TIMEOUT] = "Timeout";
- status_text[Test.prototype.NOTRUN] = "Not Run";
-
- var status_number = {};
- forEach(tests,
- function(test) {
- var status = status_text[test.status];
- if (status_number.hasOwnProperty(status)) {
- status_number[status] += 1;
- } else {
- status_number[status] = 1;
- }
- });
-
- function status_class(status)
- {
- return status.replace(/\s/g, '').toLowerCase();
- }
-
- var summary_template = ["section", {"id":"summary"},
- ["h2", {}, "Summary"],
- function()
- {
-
- var status = status_text_harness[harness_status.status];
- var rv = [["section", {},
- ["p", {},
- "Harness status: ",
- ["span", {"class":status_class(status)},
- status
- ],
- ]
- ]];
-
- if (harness_status.status === harness_status.ERROR) {
- rv[0].push(["pre", {}, harness_status.message]);
- }
- return rv;
- },
- ["p", {}, "Found ${num_tests} tests"],
- function() {
- var rv = [["div", {}]];
- var i = 0;
- while (status_text.hasOwnProperty(i)) {
- if (status_number.hasOwnProperty(status_text[i])) {
- var status = status_text[i];
- rv[0].push(["div", {"class":status_class(status)},
- ["label", {},
- ["input", {type:"checkbox", checked:"checked"}],
- status_number[status] + " " + status]]);
- }
- i++;
- }
- return rv;
- },
- ];
-
- log.appendChild(render(summary_template, {num_tests:tests.length}, output_document));
-
- forEach(output_document.querySelectorAll("section#summary label"),
- function(element)
- {
- on_event(element, "click",
- function(e)
- {
- if (output_document.getElementById("results") === null) {
- e.preventDefault();
- return;
- }
- var result_class = element.parentNode.getAttribute("class");
- var style_element = output_document.querySelector("style#hide-" + result_class);
- var input_element = element.querySelector("input");
- if (!style_element && !input_element.checked) {
- style_element = output_document.createElementNS(xhtml_ns, "style");
- style_element.id = "hide-" + result_class;
- style_element.textContent = "table#results > tbody > tr."+result_class+"{display:none}";
- output_document.body.appendChild(style_element);
- } else if (style_element && input_element.checked) {
- style_element.parentNode.removeChild(style_element);
- }
- });
- });
-
- // This use of innerHTML plus manual escaping is not recommended in
- // general, but is necessary here for performance. Using textContent
- // on each individual <td> adds tens of seconds of execution time for
- // large test suites (tens of thousands of tests).
- function escape_html(s)
- {
- return s.replace(/\&/g, "&")
- .replace(/</g, "<")
- .replace(/"/g, """)
- .replace(/'/g, "'");
- }
-
- function has_assertions()
- {
- for (var i = 0; i < tests.length; i++) {
- if (tests[i].properties.hasOwnProperty("assert")) {
- return true;
- }
- }
- return false;
- }
-
- function get_assertion(test)
- {
- if (test.properties.hasOwnProperty("assert")) {
- if (Array.isArray(test.properties.assert)) {
- return test.properties.assert.join(' ');
- }
- return test.properties.assert;
- }
- return '';
- }
-
- log.appendChild(document.createElementNS(xhtml_ns, "section"));
- var assertions = has_assertions();
- var html = "<h2>Details</h2><table id='results' " + (assertions ? "class='assertions'" : "" ) + ">" +
- "<thead><tr><th>Result</th><th>Test Name</th>" +
- (assertions ? "<th>Assertion</th>" : "") +
- "<th>Message</th></tr></thead>" +
- "<tbody>";
- for (var i = 0; i < tests.length; i++) {
- html += '<tr class="' +
- escape_html(status_class(status_text[tests[i].status])) +
- '"><td>' +
- escape_html(status_text[tests[i].status]) +
- "</td><td>" +
- escape_html(tests[i].name) +
- "</td><td>" +
- (assertions ? escape_html(get_assertion(tests[i])) + "</td><td>" : "") +
- escape_html(tests[i].message ? tests[i].message : " ") +
- "</td></tr>";
- }
- html += "</tbody></table>";
- try {
- log.lastChild.innerHTML = html;
- } catch (e) {
- log.appendChild(document.createElementNS(xhtml_ns, "p"))
- .textContent = "Setting innerHTML for the log threw an exception.";
- log.appendChild(document.createElementNS(xhtml_ns, "pre"))
- .textContent = html;
- }
- };
-
- /*
- * Template code
- *
- * A template is just a javascript structure. An element is represented as:
- *
- * [tag_name, {attr_name:attr_value}, child1, child2]
- *
- * the children can either be strings (which act like text nodes), other templates or
- * functions (see below)
- *
- * A text node is represented as
- *
- * ["{text}", value]
- *
- * String values have a simple substitution syntax; ${foo} represents a variable foo.
- *
- * It is possible to embed logic in templates by using a function in a place where a
- * node would usually go. The function must either return part of a template or null.
- *
- * In cases where a set of nodes are required as output rather than a single node
- * with children it is possible to just use a list
- * [node1, node2, node3]
- *
- * Usage:
- *
- * render(template, substitutions) - take a template and an object mapping
- * variable names to parameters and return either a DOM node or a list of DOM nodes
- *
- * substitute(template, substitutions) - take a template and variable mapping object,
- * make the variable substitutions and return the substituted template
- *
- */
-
- function is_single_node(template)
- {
- return typeof template[0] === "string";
- }
-
- function substitute(template, substitutions)
- {
- if (typeof template === "function") {
- var replacement = template(substitutions);
- if (!replacement) {
- return null;
- }
-
- return substitute(replacement, substitutions);
- }
-
- if (is_single_node(template)) {
- return substitute_single(template, substitutions);
- }
-
- return filter(map(template, function(x) {
- return substitute(x, substitutions);
- }), function(x) {return x !== null;});
- }
-
- function substitute_single(template, substitutions)
- {
- var substitution_re = /\$\{([^ }]*)\}/g;
-
- function do_substitution(input) {
- var components = input.split(substitution_re);
- var rv = [];
- for (var i = 0; i < components.length; i += 2) {
- rv.push(components[i]);
- if (components[i + 1]) {
- rv.push(String(substitutions[components[i + 1]]));
- }
- }
- return rv;
- }
-
- function substitute_attrs(attrs, rv)
- {
- rv[1] = {};
- for (var name in template[1]) {
- if (attrs.hasOwnProperty(name)) {
- var new_name = do_substitution(name).join("");
- var new_value = do_substitution(attrs[name]).join("");
- rv[1][new_name] = new_value;
- }
- }
- }
-
- function substitute_children(children, rv)
- {
- for (var i = 0; i < children.length; i++) {
- if (children[i] instanceof Object) {
- var replacement = substitute(children[i], substitutions);
- if (replacement !== null) {
- if (is_single_node(replacement)) {
- rv.push(replacement);
- } else {
- extend(rv, replacement);
- }
- }
- } else {
- extend(rv, do_substitution(String(children[i])));
- }
- }
- return rv;
- }
-
- var rv = [];
- rv.push(do_substitution(String(template[0])).join(""));
-
- if (template[0] === "{text}") {
- substitute_children(template.slice(1), rv);
- } else {
- substitute_attrs(template[1], rv);
- substitute_children(template.slice(2), rv);
- }
-
- return rv;
- }
-
- function make_dom_single(template, doc)
- {
- var output_document = doc || document;
- var element;
- if (template[0] === "{text}") {
- element = output_document.createTextNode("");
- for (var i = 1; i < template.length; i++) {
- element.data += template[i];
- }
- } else {
- element = output_document.createElementNS(xhtml_ns, template[0]);
- for (var name in template[1]) {
- if (template[1].hasOwnProperty(name)) {
- element.setAttribute(name, template[1][name]);
- }
- }
- for (var i = 2; i < template.length; i++) {
- if (template[i] instanceof Object) {
- var sub_element = make_dom(template[i]);
- element.appendChild(sub_element);
- } else {
- var text_node = output_document.createTextNode(template[i]);
- element.appendChild(text_node);
- }
- }
- }
-
- return element;
- }
-
- function make_dom(template, substitutions, output_document)
- {
- if (is_single_node(template)) {
- return make_dom_single(template, output_document);
- }
-
- return map(template, function(x) {
- return make_dom_single(x, output_document);
- });
- }
-
- function render(template, substitutions, output_document)
- {
- return make_dom(substitute(template, substitutions), output_document);
- }
-
- /*
- * Utility funcions
- */
- function assert(expected_true, function_name, description, error, substitutions)
- {
- if (tests.tests.length === 0) {
- tests.set_file_is_test();
- }
- if (expected_true !== true) {
- var msg = make_message(function_name, description,
- error, substitutions);
- throw new AssertionError(msg);
- }
- }
-
- function AssertionError(message)
- {
- this.message = message;
- }
-
- AssertionError.prototype.toString = function() {
- return this.message;
- };
-
- function make_message(function_name, description, error, substitutions)
- {
- for (var p in substitutions) {
- if (substitutions.hasOwnProperty(p)) {
- substitutions[p] = format_value(substitutions[p]);
- }
- }
- var node_form = substitute(["{text}", "${function_name}: ${description}" + error],
- merge({function_name:function_name,
- description:(description?description + " ":"")},
- substitutions));
- return node_form.slice(1).join("");
- }
-
- function filter(array, callable, thisObj) {
- var rv = [];
- for (var i = 0; i < array.length; i++) {
- if (array.hasOwnProperty(i)) {
- var pass = callable.call(thisObj, array[i], i, array);
- if (pass) {
- rv.push(array[i]);
- }
- }
- }
- return rv;
- }
-
- function map(array, callable, thisObj)
- {
- var rv = [];
- rv.length = array.length;
- for (var i = 0; i < array.length; i++) {
- if (array.hasOwnProperty(i)) {
- rv[i] = callable.call(thisObj, array[i], i, array);
- }
- }
- return rv;
- }
-
- function extend(array, items)
- {
- Array.prototype.push.apply(array, items);
- }
-
- function forEach (array, callback, thisObj)
- {
- for (var i = 0; i < array.length; i++) {
- if (array.hasOwnProperty(i)) {
- callback.call(thisObj, array[i], i, array);
- }
- }
- }
-
- function merge(a,b)
- {
- var rv = {};
- var p;
- for (p in a) {
- rv[p] = a[p];
- }
- for (p in b) {
- rv[p] = b[p];
- }
- return rv;
- }
-
- function expose(object, name)
- {
- var components = name.split(".");
- var target = test_environment.global_scope();
- for (var i = 0; i < components.length - 1; i++) {
- if (!(components[i] in target)) {
- target[components[i]] = {};
- }
- target = target[components[i]];
- }
- target[components[components.length - 1]] = object;
- }
-
- function is_same_origin(w) {
- try {
- 'random_prop' in w;
- return true;
- } catch (e) {
- return false;
- }
- }
-
- function supports_post_message(w)
- {
- var supports;
- var type;
- // Given IE implements postMessage across nested iframes but not across
- // windows or tabs, you can't infer cross-origin communication from the presence
- // of postMessage on the current window object only.
- //
- // Touching the postMessage prop on a window can throw if the window is
- // not from the same origin AND post message is not supported in that
- // browser. So just doing an existence test here won't do, you also need
- // to wrap it in a try..cacth block.
- try {
- type = typeof w.postMessage;
- if (type === "function") {
- supports = true;
- }
-
- // IE8 supports postMessage, but implements it as a host object which
- // returns "object" as its `typeof`.
- else if (type === "object") {
- supports = true;
- }
-
- // This is the case where postMessage isn't supported AND accessing a
- // window property across origins does NOT throw (e.g. old Safari browser).
- else {
- supports = false;
- }
- } catch (e) {
- // This is the case where postMessage isn't supported AND accessing a
- // window property across origins throws (e.g. old Firefox browser).
- supports = false;
- }
- return supports;
- }
-
- /**
- * Setup globals
- */
-
- var tests = new Tests();
-
- addEventListener("error", function(e) {
- if (tests.file_is_test) {
- var test = tests.tests[0];
- if (test.phase >= test.phases.HAS_RESULT) {
- return;
- }
- var message = e.message;
- test.set_status(test.FAIL, message);
- test.phase = test.phases.HAS_RESULT;
- test.done();
- done();
- } else if (!tests.allow_uncaught_exception) {
- tests.status.status = tests.status.ERROR;
- tests.status.message = e.message;
- }
- });
-
- test_environment.on_tests_ready();
-
-})();
-// vim: set expandtab shiftwidth=4 tabstop=4:
+++ /dev/null
-/*global add_completion_callback, setup */
-/*
- * This file is intended for vendors to implement
- * code needed to integrate testharness.js tests with their own test systems.
- *
- * The default implementation extracts metadata from the tests and validates
- * it against the cached version that should be present in the test source
- * file. If the cache is not found or is out of sync, source code suitable for
- * caching the metadata is optionally generated.
- *
- * The cached metadata is present for extraction by test processing tools that
- * are unable to execute javascript.
- *
- * Metadata is attached to tests via the properties parameter in the test
- * constructor. See testharness.js for details.
- *
- * Typically test system integration will attach callbacks when each test has
- * run, using add_result_callback(callback(test)), or when the whole test file
- * has completed, using
- * add_completion_callback(callback(tests, harness_status)).
- *
- * For more documentation about the callback functions and the
- * parameters they are called with see testharness.js
- */
-
-
-
-var metadata_generator = {
-
- currentMetadata: {},
- cachedMetadata: false,
- metadataProperties: ['help', 'assert', 'author'],
-
- error: function(message) {
- var messageElement = document.createElement('p');
- messageElement.setAttribute('class', 'error');
- this.appendText(messageElement, message);
-
- var summary = document.getElementById('summary');
- if (summary) {
- summary.parentNode.insertBefore(messageElement, summary);
- }
- else {
- document.body.appendChild(messageElement);
- }
- },
-
- /**
- * Ensure property value has contact information
- */
- validateContact: function(test, propertyName) {
- var result = true;
- var value = test.properties[propertyName];
- var values = Array.isArray(value) ? value : [value];
- for (var index = 0; index < values.length; index++) {
- value = values[index];
- var re = /(\S+)(\s*)<(.*)>(.*)/;
- if (! re.test(value)) {
- re = /(\S+)(\s+)(http[s]?:\/\/)(.*)/;
- if (! re.test(value)) {
- this.error('Metadata property "' + propertyName +
- '" for test: "' + test.name +
- '" must have name and contact information ' +
- '("name <email>" or "name http(s)://")');
- result = false;
- }
- }
- }
- return result;
- },
-
- /**
- * Extract metadata from test object
- */
- extractFromTest: function(test) {
- var testMetadata = {};
- // filter out metadata from other properties in test
- for (var metaIndex = 0; metaIndex < this.metadataProperties.length;
- metaIndex++) {
- var meta = this.metadataProperties[metaIndex];
- if (test.properties.hasOwnProperty(meta)) {
- if ('author' == meta) {
- this.validateContact(test, meta);
- }
- testMetadata[meta] = test.properties[meta];
- }
- }
- return testMetadata;
- },
-
- /**
- * Compare cached metadata to extracted metadata
- */
- validateCache: function() {
- for (var testName in this.currentMetadata) {
- if (! this.cachedMetadata.hasOwnProperty(testName)) {
- return false;
- }
- var testMetadata = this.currentMetadata[testName];
- var cachedTestMetadata = this.cachedMetadata[testName];
- delete this.cachedMetadata[testName];
-
- for (var metaIndex = 0; metaIndex < this.metadataProperties.length;
- metaIndex++) {
- var meta = this.metadataProperties[metaIndex];
- if (cachedTestMetadata.hasOwnProperty(meta) &&
- testMetadata.hasOwnProperty(meta)) {
- if (Array.isArray(cachedTestMetadata[meta])) {
- if (! Array.isArray(testMetadata[meta])) {
- return false;
- }
- if (cachedTestMetadata[meta].length ==
- testMetadata[meta].length) {
- for (var index = 0;
- index < cachedTestMetadata[meta].length;
- index++) {
- if (cachedTestMetadata[meta][index] !=
- testMetadata[meta][index]) {
- return false;
- }
- }
- }
- else {
- return false;
- }
- }
- else {
- if (Array.isArray(testMetadata[meta])) {
- return false;
- }
- if (cachedTestMetadata[meta] != testMetadata[meta]) {
- return false;
- }
- }
- }
- else if (cachedTestMetadata.hasOwnProperty(meta) ||
- testMetadata.hasOwnProperty(meta)) {
- return false;
- }
- }
- }
- for (var testName in this.cachedMetadata) {
- return false;
- }
- return true;
- },
-
- appendText: function(elemement, text) {
- elemement.appendChild(document.createTextNode(text));
- },
-
- jsonifyArray: function(arrayValue, indent) {
- var output = '[';
-
- if (1 == arrayValue.length) {
- output += JSON.stringify(arrayValue[0]);
- }
- else {
- for (var index = 0; index < arrayValue.length; index++) {
- if (0 < index) {
- output += ',\n ' + indent;
- }
- output += JSON.stringify(arrayValue[index]);
- }
- }
- output += ']';
- return output;
- },
-
- jsonifyObject: function(objectValue, indent) {
- var output = '{';
- var value;
-
- var count = 0;
- for (var property in objectValue) {
- ++count;
- if (Array.isArray(objectValue[property]) ||
- ('object' == typeof(value))) {
- ++count;
- }
- }
- if (1 == count) {
- for (var property in objectValue) {
- output += ' "' + property + '": ' +
- JSON.stringify(objectValue[property]) +
- ' ';
- }
- }
- else {
- var first = true;
- for (var property in objectValue) {
- if (! first) {
- output += ',';
- }
- first = false;
- output += '\n ' + indent + '"' + property + '": ';
- value = objectValue[property];
- if (Array.isArray(value)) {
- output += this.jsonifyArray(value, indent +
- ' '.substr(0, 5 + property.length));
- }
- else if ('object' == typeof(value)) {
- output += this.jsonifyObject(value, indent + ' ');
- }
- else {
- output += JSON.stringify(value);
- }
- }
- if (1 < output.length) {
- output += '\n' + indent;
- }
- }
- output += '}';
- return output;
- },
-
- /**
- * Generate javascript source code for captured metadata
- * Metadata is in pretty-printed JSON format
- */
- generateSource: function() {
- var source =
- '<script id="metadata_cache">/*\n' +
- this.jsonifyObject(this.currentMetadata, '') + '\n' +
- '*/</script>\n';
- return source;
- },
-
- /**
- * Add element containing metadata source code
- */
- addSourceElement: function(event) {
- var sourceWrapper = document.createElement('div');
- sourceWrapper.setAttribute('id', 'metadata_source');
-
- var instructions = document.createElement('p');
- if (this.cachedMetadata) {
- this.appendText(instructions,
- 'Replace the existing <script id="metadata_cache"> element ' +
- 'in the test\'s <head> with the following:');
- }
- else {
- this.appendText(instructions,
- 'Copy the following into the <head> element of the test ' +
- 'or the test\'s metadata sidecar file:');
- }
- sourceWrapper.appendChild(instructions);
-
- var sourceElement = document.createElement('pre');
- this.appendText(sourceElement, this.generateSource());
-
- sourceWrapper.appendChild(sourceElement);
-
- var messageElement = document.getElementById('metadata_issue');
- messageElement.parentNode.insertBefore(sourceWrapper,
- messageElement.nextSibling);
- messageElement.parentNode.removeChild(messageElement);
-
- (event.preventDefault) ? event.preventDefault() :
- event.returnValue = false;
- },
-
- /**
- * Extract the metadata cache from the cache element if present
- */
- getCachedMetadata: function() {
- var cacheElement = document.getElementById('metadata_cache');
-
- if (cacheElement) {
- var cacheText = cacheElement.firstChild.nodeValue;
- var openBrace = cacheText.indexOf('{');
- var closeBrace = cacheText.lastIndexOf('}');
- if ((-1 < openBrace) && (-1 < closeBrace)) {
- cacheText = cacheText.slice(openBrace, closeBrace + 1);
- try {
- this.cachedMetadata = JSON.parse(cacheText);
- }
- catch (exc) {
- this.cachedMetadata = 'Invalid JSON in Cached metadata. ';
- }
- }
- else {
- this.cachedMetadata = 'Metadata not found in cache element. ';
- }
- }
- },
-
- /**
- * Main entry point, extract metadata from tests, compare to cached version
- * if present.
- * If cache not present or differs from extrated metadata, generate an error
- */
- process: function(tests) {
- for (var index = 0; index < tests.length; index++) {
- var test = tests[index];
- if (this.currentMetadata.hasOwnProperty(test.name)) {
- this.error('Duplicate test name: ' + test.name);
- }
- else {
- this.currentMetadata[test.name] = this.extractFromTest(test);
- }
- }
-
- this.getCachedMetadata();
-
- var message = null;
- var messageClass = 'warning';
- var showSource = false;
-
- if (0 === tests.length) {
- if (this.cachedMetadata) {
- message = 'Cached metadata present but no tests. ';
- }
- }
- else if (1 === tests.length) {
- if (this.cachedMetadata) {
- message = 'Single test files should not have cached metadata. ';
- }
- else {
- var testMetadata = this.currentMetadata[tests[0].name];
- for (var meta in testMetadata) {
- if (testMetadata.hasOwnProperty(meta)) {
- message = 'Single tests should not have metadata. ' +
- 'Move metadata to <head>. ';
- break;
- }
- }
- }
- }
- else {
- if (this.cachedMetadata) {
- messageClass = 'error';
- if ('string' == typeof(this.cachedMetadata)) {
- message = this.cachedMetadata;
- showSource = true;
- }
- else if (! this.validateCache()) {
- message = 'Cached metadata out of sync. ';
- showSource = true;
- }
- }
- }
-
- if (message) {
- var messageElement = document.createElement('p');
- messageElement.setAttribute('id', 'metadata_issue');
- messageElement.setAttribute('class', messageClass);
- this.appendText(messageElement, message);
-
- if (showSource) {
- var link = document.createElement('a');
- this.appendText(link, 'Click for source code.');
- link.setAttribute('href', '#');
- link.setAttribute('onclick',
- 'metadata_generator.addSourceElement(event)');
- messageElement.appendChild(link);
- }
-
- var summary = document.getElementById('summary');
- if (summary) {
- summary.parentNode.insertBefore(messageElement, summary);
- }
- else {
- var log = document.getElementById('log');
- if (log) {
- log.appendChild(messageElement);
- }
- }
- }
- },
-
- setup: function() {
- add_completion_callback(
- function (tests, harness_status) {
- metadata_generator.process(tests, harness_status);
- });
- }
-};
-
-metadata_generator.setup();
-
-/* If the parent window has a testharness_properties object,
- * we use this to provide the test settings. This is used by the
- * default in-browser runner to configure the timeout and the
- * rendering of results
- */
-try {
- if (window.opener && "testharness_properties" in window.opener) {
- /* If we pass the testharness_properties object as-is here without
- * JSON stringifying and reparsing it, IE fails & emits the message
- * "Could not complete the operation due to error 80700019".
- */
- setup(JSON.parse(JSON.stringify(window.opener.testharness_properties)));
- }
-} catch (e) {
-}
-// vim: set expandtab shiftwidth=4 tabstop=4:
+++ /dev/null
-/*
-
-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('<script language="javascript" src="../resources/testharness.js"></script>\n');
- }
- if (head_src.search(/\/testharnessreport.js\W/) === -1) {
- document.write('<script language="javascript" src="../resources/testharnessreport.js"></script>\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;
-}
+++ /dev/null
-{
- "pkg-blacklist": [
- "config.xml",
- "pack.py",
- "testcase.xsl",
- "testresult.xsl",
- "tests.css",
- "icon.png",
- "manifest.json",
- "suite.json",
- "inst.*"
- ],
- "pkg-list": {
- "apk,cordova": {
- "blacklist": [
- "*"
- ],
- "copylist": {
- "inst.apk.py": "inst.py",
- "tests.full.xml": "tests.full.xml",
- "tests.xml": "tests.xml"
- },
- "pkg-app": {
- "sign-flag": "true"
- }
- },
- "apk-aio, cordova-aio": {
- "blacklist": []
- },
- "wgt": {
- "blacklist": [
- "*"
- ],
- "copylist": {
- "inst.wgt.py": "inst.py",
- "tests.full.xml": "tests.full.xml",
- "tests.xml": "tests.xml"
- },
- "pkg-app": {
- "sign-flag": "true"
- }
- },
- "xpk": {
- "blacklist": [
- "*"
- ],
- "copylist": {
- "inst.xpk.py": "inst.py",
- "askpolicy.sh": "askpolicy.sh",
- "tests.full.xml": "tests.full.xml",
- "tests.xml": "tests.xml"
- },
- "pkg-app": {
- "blacklist": [],
- "sign-flag": "true"
- }
- }
- },
- "pkg-name": "tct-humanactivitymonitor-tizen-tests"
-}
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
- <xsl:output method="html" version="1.0" encoding="UTF-8" indent="yes"/>
- <xsl:template match="/">
- <html>
- <STYLE type="text/css">
- @import "tests.css";
- </STYLE>
- <head>
- <script type="text/javascript" src="jquery.min.js"/>
- </head>
- <body>
- <div id="testcasepage">
- <div id="title">
- <table>
- <tr>
- <td>
- <h1>Test Cases</h1>
- </td>
- </tr>
- </table>
- </div>
- <div id="suites">
- <a name="contents"/>
- <table>
- <tr>
- <th>Test Suite</th>
- <th>Total</th>
- <th>Auto</th>
- <th>Manual</th>
- </tr>
- <tr>
- <td>
- Total
- </td>
- <td>
- <xsl:value-of select="count(test_definition/suite/set//testcase)"/>
- </td>
- <td>
- <xsl:value-of select="count(test_definition/suite/set//testcase[@execution_type = 'auto'])"/>
- </td>
- <td>
- <xsl:value-of select="count(test_definition/suite/set//testcase[@execution_type != 'auto'])"/>
- </td>
- </tr>
- <xsl:for-each select="test_definition/suite">
- <tr>
- <td>
- <a>
- <xsl:attribute name="href">
- #<xsl:value-of select="@name"/>
- </xsl:attribute>
- <xsl:value-of select="@name"/>
- </a>
- </td>
- <td>
- <xsl:value-of select="count(set//testcase)"/>
- </td>
- <td>
- <xsl:value-of select="count(set/testcase[@execution_type = 'auto'])"/>
- </td>
- <td>
- <xsl:value-of select="count(set/testcase[@execution_type != 'auto'])"/>
- </td>
- </tr>
- </xsl:for-each>
- </table>
- </div>
- <div id="title">
- <table>
- <tr>
- <td class="title">
- <h1>Detailed Test Cases</h1>
- </td>
- </tr>
- </table>
- </div>
- <div id="cases">
- <xsl:for-each select="test_definition/suite">
- <xsl:sort select="@name"/>
- <div id="btc">
- <a href="#contents">Back to Contents</a>
- </div>
- <div id="suite_title">
- Test Suite:
- <xsl:value-of select="@name"/>
- <a><xsl:attribute name="name"><xsl:value-of select="@name"/></xsl:attribute></a>
- </div>
- <table>
- <tr>
- <th>Case_ID</th>
- <th>Purpose</th>
- <th>Type</th>
- <th>Component</th>
- <th>Execution Type</th>
- <th>Description</th>
- <th>Specification</th>
- </tr>
- <xsl:for-each select=".//set">
- <xsl:sort select="@name"/>
- <tr>
- <td colspan="7">
- Test Set:
- <xsl:value-of select="@name"/>
- </td>
- </tr>
- <xsl:for-each select=".//testcase">
- <!-- xsl:sort select="@id" /> -->
- <tr>
- <td>
- <xsl:value-of select="@id"/>
- </td>
- <td>
- <xsl:value-of select="@purpose"/>
- </td>
- <td>
- <xsl:value-of select="@type"/>
- </td>
- <td>
- <xsl:value-of select="@component"/>
- </td>
- <td>
- <xsl:value-of select="@execution_type"/>
- </td>
- <td>
- <p>
- Pre_condition:
- <xsl:value-of select=".//description/pre_condition"/>
- </p>
- <p>
- Post_condition:
- <xsl:value-of select=".//description/post_condition"/>
- </p>
- <p>
- Test Script Entry:
- <xsl:value-of select=".//description/test_script_entry"/>
- </p>
- <p>
- Steps:
- <p/>
- <xsl:for-each select=".//description/steps/step"><xsl:sort select="@order"/>
- Step
- <xsl:value-of select="@order"/>
- :
- <xsl:value-of select="./step_desc"/>
- ;
- <p/>
- Expected Result:
- <xsl:value-of select="./expected"/>
- <p/>
- </xsl:for-each>
- </p>
- </td>
- <td>
- <xsl:for-each select=".//specs/spec"><b>[Spec_Assertion]:</b><br/>
- [Category]:
- <xsl:value-of select="./spec_assertion/@category"/>
- <br/>
- [Section]:
- <xsl:value-of select="./spec_assertion/@section"/>
- <br/>
- [Specification]:
- <xsl:value-of select="./spec_assertion/@specification"/>
- <br/>
- [Interface]:
- <xsl:value-of select="./spec_assertion/@interface"/>
- <br/>
- <xsl:choose><xsl:when test="./spec_assertion/@element_name">
- [<xsl:value-of select="./spec_assertion/@element_type"/>]:
- <xsl:value-of select="./spec_assertion/@element_name"/>
- <br/>
- </xsl:when></xsl:choose>
- [URL]:
- <xsl:value-of select="./spec_url"/>
- <br/>
- [Statement]:
- <xsl:value-of select="./spec_statement"/>
- <br/>
- </xsl:for-each>
- </td>
- </tr>
- </xsl:for-each>
- </xsl:for-each>
- </table>
- </xsl:for-each>
- </div>
- </div>
- <div id="goTopBtn">
- <img border="0" src="./back_top.png"/>
- </div>
- <script type="text/javascript" src="application.js"/>
- <script language="javascript" type="text/javascript">
- $(document).ready(function(){
- goTopEx();
- });
- </script>
- </body>
- </html>
- </xsl:template>
-</xsl:stylesheet>
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
- <xsl:output method="html" version="1.0" encoding="UTF-8" indent="yes"/>
- <xsl:template match="/">
- <html>
- <STYLE type="text/css">
- @import "tests.css";
- </STYLE>
- <head>
- <script type="text/javascript" src="jquery.min.js"/>
- </head>
- <body>
- <div id="testcasepage">
- <div id="title">
- <table>
- <tr>
- <td>
- <h1>Test Report</h1>
- </td>
- </tr>
- </table>
- </div>
- <div id="device">
- <table>
- <tr>
- <th colspan="2">Device Information</th>
- </tr>
- <tr>
- <td>Device Name</td>
- <td>
- <xsl:choose>
- <xsl:when test="test_definition/environment/@device_name">
- <xsl:if test="test_definition/environment/@device_name = ''">
- N/A
- </xsl:if>
- <xsl:value-of select="test_definition/environment/@device_name"/>
- </xsl:when>
- <xsl:otherwise>
- N/A
- </xsl:otherwise>
- </xsl:choose>
- </td>
- </tr>
- <tr>
- <td>Device Model</td>
- <td>
- <xsl:choose>
- <xsl:when test="test_definition/environment/@device_model">
- <xsl:if test="test_definition/environment/@device_model = ''">
- N/A
- </xsl:if>
- <xsl:value-of select="test_definition/environment/@device_model"/>
- </xsl:when>
- <xsl:otherwise>
- N/A
- </xsl:otherwise>
- </xsl:choose>
- </td>
- </tr>
- <tr>
- <td>OS Version</td>
- <td>
- <xsl:choose>
- <xsl:when test="test_definition/environment/@os_version">
- <xsl:if test="test_definition/environment/@os_version = ''">
- N/A
- </xsl:if>
- <xsl:value-of select="test_definition/environment/@os_version"/>
- </xsl:when>
- <xsl:otherwise>
- N/A
- </xsl:otherwise>
- </xsl:choose>
- </td>
- </tr>
- <tr>
- <td>Device ID</td>
- <td>
- <xsl:choose>
- <xsl:when test="test_definition/environment/@device_id">
- <xsl:if test="test_definition/environment/@device_id = ''">
- N/A
- </xsl:if>
- <xsl:value-of select="test_definition/environment/@device_id"/>
- </xsl:when>
- <xsl:otherwise>
- N/A
- </xsl:otherwise>
- </xsl:choose>
- </td>
- </tr>
- <tr>
- <td>Firmware Version</td>
- <td>
- <xsl:choose>
- <xsl:when test="test_definition/environment/@firmware_version">
- <xsl:if test="test_definition/environment/@firmware_version = ''">
- N/A
- </xsl:if>
- <xsl:value-of select="test_definition/environment/@firmware_version"/>
- </xsl:when>
- <xsl:otherwise>
- N/A
- </xsl:otherwise>
- </xsl:choose>
- </td>
- </tr>
- <tr>
- <td>Build ID</td>
- <td>
- <xsl:choose>
- <xsl:when test="test_definition/environment/@build_id">
- <xsl:if test="test_definition/environment/@build_id = ''">
- N/A
- </xsl:if>
- <xsl:value-of select="test_definition/environment/@build_id"/>
- </xsl:when>
- <xsl:otherwise>
- N/A
- </xsl:otherwise>
- </xsl:choose>
- </td>
- </tr>
- <tr>
- <td>Screen Size</td>
- <td>
- <xsl:choose>
- <xsl:when test="test_definition/environment/@screen_size">
- <xsl:if test="test_definition/environment/@screen_size = ''">
- N/A
- </xsl:if>
- <xsl:value-of select="test_definition/environment/@screen_size"/>
- </xsl:when>
- <xsl:otherwise>
- N/A
- </xsl:otherwise>
- </xsl:choose>
- </td>
- </tr>
- <tr>
- <td>Resolution</td>
- <td>
- <xsl:choose>
- <xsl:when test="test_definition/environment/@resolution">
- <xsl:if test="test_definition/environment/@resolution = ''">
- N/A
- </xsl:if>
- <xsl:value-of select="test_definition/environment/@resolution"/>
- </xsl:when>
- <xsl:otherwise>
- N/A
- </xsl:otherwise>
- </xsl:choose>
- </td>
- </tr>
- <tr>
- <td>Host Info</td>
- <td>
- <xsl:choose>
- <xsl:when test="test_definition/environment/@host">
- <xsl:if test="test_definition/environment/@host = ''">
- N/A
- </xsl:if>
- <xsl:value-of select="test_definition/environment/@host"/>
- </xsl:when>
- <xsl:otherwise>
- N/A
- </xsl:otherwise>
- </xsl:choose>
- </td>
- </tr>
- <tr>
- <td>CTS Version</td>
- <td>
- <xsl:choose>
- <xsl:when test="test_definition/environment/@cts_version">
- <xsl:if test="test_definition/environment/@cts_version = ''">
- N/A
- </xsl:if>
- <xsl:value-of select="test_definition/environment/@cts_version"/>
- </xsl:when>
- <xsl:otherwise>
- N/A
- </xsl:otherwise>
- </xsl:choose>
- </td>
- </tr>
- <tr>
- <td>Others</td>
- <td>
- <xsl:if test="test_definition/environment/other = ''">
- N/A
- </xsl:if>
- <xsl:call-template name="br-replace">
- <xsl:with-param name="word" select="test_definition/environment/other"/>
- </xsl:call-template>
- </td>
- </tr>
- </table>
- </div>
- <div id="summary">
- <table>
- <tr>
- <th colspan="2">Test Summary</th>
- </tr>
- <tr>
- <td>Test Plan Name</td>
- <td>
- <xsl:value-of select="test_definition/summary/@test_plan_name"/>
- </td>
- </tr>
- <tr>
- <td>Tests Total</td>
- <td>
- <xsl:value-of select="count(test_definition//suite/set/testcase)"/>
- </td>
- </tr>
- <tr>
- <td>Test Passed</td>
- <td>
- <xsl:value-of select="count(test_definition//suite/set/testcase[@result = 'PASS'])"/>
- </td>
- </tr>
- <tr>
- <td>Test Failed</td>
- <td>
- <xsl:value-of select="count(test_definition//suite/set/testcase[@result = 'FAIL'])"/>
- </td>
- </tr>
- <tr>
- <td>Test Block</td>
- <td>
- <xsl:value-of select="count(test_definition//suite/set/testcase[@result = 'BLOCK'])"/>
- </td>
- </tr>
- <tr>
- <td>Test Not Run</td>
- <td>
- <xsl:value-of select="count(test_definition//suite/set/testcase) - count(test_definition//suite/set/testcase[@result = 'PASS']) - count(test_definition//suite/set/testcase[@result = 'FAIL']) - count(test_definition//suite/set/testcase[@result = 'BLOCK'])"/>
- </td>
- </tr>
- <tr>
- <td>Start time</td>
- <td>
- <xsl:value-of select="test_definition/summary/start_at"/>
- </td>
- </tr>
- <tr>
- <td>End time</td>
- <td>
- <xsl:value-of select="test_definition/summary/end_at"/>
- </td>
- </tr>
- </table>
- </div>
- <div id="suite_summary">
- <div id="title">
- <a name="contents"/>
- <table>
- <tr>
- <td class="title">
- <h1>Test Summary by Suite</h1>
- </td>
- </tr>
- </table>
- </div>
- <table>
- <tr>
- <th>Suite</th>
- <th>Passed</th>
- <th>Failed</th>
- <th>Blocked</th>
- <th>Not Run</th>
- <th>Total</th>
- </tr>
- <xsl:for-each select="test_definition/suite">
- <xsl:sort select="@name"/>
- <tr>
- <td>
- <a>
- <xsl:attribute name="href">
- #<xsl:value-of select="@name"/>
- </xsl:attribute>
- <xsl:value-of select="@name"/>
- </a>
- </td>
- <td>
- <xsl:value-of select="count(set//testcase[@result = 'PASS'])"/>
- </td>
- <td>
- <xsl:value-of select="count(set//testcase[@result = 'FAIL'])"/>
- </td>
- <td>
- <xsl:value-of select="count(set//testcase[@result = 'BLOCK'])"/>
- </td>
- <td>
- <xsl:value-of select="count(set//testcase) - count(set//testcase[@result = 'PASS']) - count(set//testcase[@result = 'FAIL']) - count(set//testcase[@result = 'BLOCK'])"/>
- </td>
- <td>
- <xsl:value-of select="count(set//testcase)"/>
- </td>
- </tr>
- </xsl:for-each>
- </table>
- </div>
- <div id="fail_cases">
- <div id="title">
- <table>
- <tr>
- <td class="title">
- <h1 align="center">
- Test Failures (
- <xsl:value-of select="count(test_definition/suite/set//testcase[@result = 'FAIL'])"/>
- )
- </h1>
- </td>
- </tr>
- </table>
- </div>
- <xsl:for-each select="test_definition/suite">
- <xsl:sort select="@name"/>
- <div id="btc">
- <a href="#contents">Back to Contents</a>
- </div>
- <div id="suite_title">
- Test Suite:
- <xsl:value-of select="@name"/>
- <a><xsl:attribute name="name"><xsl:value-of select="@name"/></xsl:attribute></a>
- </div>
- <table>
- <tr>
- <th>Case_ID</th>
- <th>Purpose</th>
- <th>Result</th>
- <th>Stdout</th>
- </tr>
- <xsl:for-each select=".//set">
- <xsl:sort select="@name"/>
- <tr>
- <td colspan="4">
- Test Set:
- <xsl:value-of select="@name"/>
- </td>
- </tr>
- <xsl:for-each select=".//testcase">
- <xsl:sort select="@id"/>
- <xsl:choose>
- <xsl:when test="@result">
- <xsl:if test="@result = 'FAIL'">
- <tr>
- <td>
- <xsl:value-of select="@id"/>
- </td>
- <td>
- <xsl:value-of select="@purpose"/>
- </td>
- <td class="red_rate">
- <xsl:value-of select="@result"/>
- </td>
- <td>
- <xsl:value-of select=".//result_info/stdout"/>
- <xsl:if test=".//result_info/stdout = ''">
- N/A
- </xsl:if>
- </td>
- </tr>
- </xsl:if>
- </xsl:when>
- </xsl:choose>
- </xsl:for-each>
- </xsl:for-each>
- </table>
- </xsl:for-each>
- </div>
- <div id="cases">
- <div id="title">
- <table>
- <tr>
- <td class="title">
- <h1 align="center">Detailed Test Results</h1>
- </td>
- </tr>
- </table>
- </div>
- <xsl:for-each select="test_definition/suite">
- <xsl:sort select="@name"/>
- <div id="btc">
- <a href="#contents">Back to Contents</a>
- </div>
- <div id="suite_title">
- Test Suite:
- <xsl:value-of select="@name"/>
- <a><xsl:attribute name="name"><xsl:value-of select="@name"/></xsl:attribute></a>
- </div>
- <table>
- <tr>
- <th>Case_ID</th>
- <th>Purpose</th>
- <th>Result</th>
- <th>Stdout</th>
- </tr>
- <xsl:for-each select=".//set">
- <xsl:sort select="@name"/>
- <tr>
- <td colspan="4">
- Test Set:
- <xsl:value-of select="@name"/>
- </td>
- </tr>
- <xsl:for-each select=".//testcase">
- <xsl:sort select="@id"/>
- <tr>
- <td>
- <xsl:value-of select="@id"/>
- </td>
- <td>
- <xsl:value-of select="@purpose"/>
- </td>
- <xsl:choose>
- <xsl:when test="@result">
- <xsl:if test="@result = 'FAIL'">
- <td class="red_rate">
- <xsl:value-of select="@result"/>
- </td>
- </xsl:if>
- <xsl:if test="@result = 'PASS'">
- <td class="green_rate">
- <xsl:value-of select="@result"/>
- </td>
- </xsl:if>
- <xsl:if test="@result = 'BLOCK' ">
- <td>
- BLOCK
- </td>
- </xsl:if>
- <xsl:if test="@result != 'BLOCK' and @result != 'FAIL' and @result != 'PASS' ">
- <td>
- Not Run
- </td>
- </xsl:if>
- </xsl:when>
- <xsl:otherwise>
- <td>
- </td>
- </xsl:otherwise>
- </xsl:choose>
- <td>
- <xsl:value-of select=".//result_info/stdout"/>
- <xsl:if test=".//result_info/stdout = ''">
- N/A
- </xsl:if>
- </td>
- </tr>
- </xsl:for-each>
- </xsl:for-each>
- </table>
- </xsl:for-each>
- </div>
- </div>
- <div id="goTopBtn">
- <img border="0" src="./back_top.png"/>
- </div>
- <script type="text/javascript" src="application.js"/>
- <script language="javascript" type="text/javascript">
- $(document).ready(function(){
- goTopEx();
- });
- </script>
- </body>
- </html>
- </xsl:template>
- <xsl:template name="br-replace">
- <xsl:param name="word"/>
- <xsl:variable name="cr">
- <xsl:text>
- </xsl:text>
- </xsl:variable>
- <xsl:choose>
- <xsl:when test="contains($word,$cr)">
- <xsl:value-of select="substring-before($word,$cr)"/>
- <br/>
- <xsl:call-template name="br-replace">
- <xsl:with-param name="word" select="substring-after($word,$cr)"/>
- </xsl:call-template>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="$word"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-</xsl:stylesheet>
+++ /dev/null
-@charset "UTF-8";\r
-/* CSS Document */\r
-#testcasepage div,\r
-#testcasepage h1,\r
-#testcasepage p,\r
-#testcasepage table,\r
-#testcasepage tr,\r
-#testcasepage th,\r
-#testcasepage td {\r
- margin: 0;\r
- padding: 0;\r
- border: 0;\r
- font-weight: inherit;\r
- font-style: inherit;\r
- font-size: 0.96em;\r
- font-family: arial;\r
- vertical-align: baseline;\r
-}\r
-\r
-#testcasepage p {\r
- text-align: left;\r
-}\r
-\r
-#suite_title {\r
- text-align: left;\r
-}\r
-\r
-#btc {\r
- text-align: right;\r
-}\r
-\r
-#testcasepage table {\r
- border-collapse: separate;\r
- border-spacing: 0;\r
- margin-bottom: 1.4em;\r
- vertical-align: middle;\r
-}\r
-\r
-#testcasepage th,\r
-#testcasepage td {\r
- text-align: left;\r
- font-weight: normal;\r
- padding: 4px 10px 4px 5px;\r
- vertical-align: middle;\r
-}\r
-\r
-#cases table {\r
- width: 101%;\r
-}\r
-\r
-#fail_cases table {\r
- width: 101%;\r
-}\r
-\r
-#title table {\r
- width: 101%;\r
-}\r
-\r
-#device table {\r
- width: 50%;\r
-}\r
-\r
-#summary table {\r
- width: 50%;\r
-}\r
-\r
-#testcasepage th {\r
- border-bottom: 1px solid #000;\r
- background-color: #AAAAAA;\r
- border-left: 1px solid #000;\r
- border-top: 1px solid #000;\r
- color: #000;\r
- font-weight: bold;\r
- vertical-align: bottom;\r
-}\r
-\r
-#testcasepage th:last-child,\r
-#testcasepage td:last-child {\r
- border-right: 1px solid #000;\r
-}\r
-\r
-#testcasepage td {\r
- border-left: 1px solid;\r
- font-weight: normal;\r
- border-bottom: 1px solid;\r
-}\r
-\r
-#testcasepage td.yellow_rate {\r
- background-color: #ffcc00;\r
-}\r
-\r
-#testcasepage td.green_rate {\r
- background-color: #33cc33;\r
-}\r
-\r
-#testcasepage td.dgreen_rate {\r
- background-color: #339933;\r
-}\r
-\r
-#testcasepage td.red_rate {\r
- background-color: #FF3333;\r
-}\r
-\r
-#title table,\r
-#title tr,\r
-#title td {\r
- border-left: none;\r
- border-bottom: none;\r
- text-align: center;\r
-}\r
-\r
-#title td:last-child {\r
- border-right: none;\r
-}\r
-\r
-#testcasepage h1 {\r
- font-size: 2em;\r
- font-family: Arial, sans-serif;\r
- font-weight: bold;\r
- line-height: 1;\r
- color: #000;\r
- margin-bottom: 0.75em;\r
- padding-top: 0.25em;\r
- font-weight: bold;\r
-}\r
-\r
-#goTopBtn {\r
- right: 0px;\r
- bottom: 0px;\r
- position: fixed; +position: absolute;\r
- top: expression(parseInt(document.body.scrollTop) + document.body.clientHeight - 40);\r
-}\r
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>
-<?xml-stylesheet type="text/xsl" href="./testcase.xsl"?>
-<test_definition>
- <suite name="tct-humanactivitymonitor-tizen-tests" extension="crosswalk" category="Tizen Web Device APIs">
- <set name="HumanActivityMonitor" type="js">
- <testcase purpose="Check if interface HumanActivityData exists, it should not" type="compliance" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P3" id="HumanActivityData_notexist">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityData_notexist.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityData" usage="true" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if interface StepDifference exists, it should not" type="compliance" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P3" id="StepDifference_notexist">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/StepDifference_notexist.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="StepDifference" usage="true" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if interface HumanActivityAccumulativePedometerData exists, it should not" type="compliance" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P3" id="HumanActivityAccumulativePedometerData_notexist">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityAccumulativePedometerData_notexist.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityAccumulativePedometerData" usage="true" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if interface HumanActivityHRMData exists, it should not" type="compliance" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P3" id="HumanActivityHRMData_notexist">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityHRMData_notexist.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityHRMData" usage="true" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if interface HumanActivityGPSInfo exists, it should not" type="compliance" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P3" id="HumanActivityGPSInfo_notexist">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityGPSInfo_notexist.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityGPSInfo" usage="true" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if interface HumanActivityGPSInfoArray exists, it should not" type="compliance" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P3" id="HumanActivityGPSInfoArray_notexist">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityGPSInfoArray_notexist.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityGPSInfoArray" usage="true" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if interface HumanActivityRecognitionData exists, it should not" type="compliance" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P3" id="HumanActivityRecognitionData_notexist">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityRecognitionData_notexist.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityRecognitionData" usage="true" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if interface HumanActivitySleepMonitorData exists, it should not" type="compliance" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P3" id="HumanActivitySleepMonitorData_notexist">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivitySleepMonitorData_notexist.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivitySleepMonitorData" usage="true" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if interface HumanActivityMonitorManagerObject exists, it should not" type="compliance" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P3" id="HumanActivityMonitorManagerObject_notexist">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManagerObject_notexist.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityMonitorManagerObject U" usage="true" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if HumanActivityMonitorManager is extendable" type="compliance" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P3" id="HumanActivityMonitorManager_extend">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_extend.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityMonitorManager" usage="true" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if HumanActivityMonitorManager::getHumanActivityData() method exists" type="compliance" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P0" id="HumanActivityMonitorManager_getHumanActivityData_exist">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_getHumanActivityData_exist.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="getHumanActivityData" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if humanactivitymonitor exists in tizen" type="compliance" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P3" id="HumanActivityMonitorManager_in_tizen">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_in_tizen.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityMonitorManager" usage="true" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if interface HumanActivityMonitorManager exists, it should not" type="compliance" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P3" id="HumanActivityMonitorManager_notexist">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_notexist.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityMonitorManager" usage="true" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if method HumanActivityMonitorManager::start() exists" type="compliance" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P0" id="HumanActivityMonitorManager_start_exist">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_start_exist.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="start" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if HumanActivityMonitorManager::start() throws exception when type and successCallback are missing" type="compliance" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P2" id="HumanActivityMonitorManager_start_misarg">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_start_misarg.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="start" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if HumanActivityMonitorManager::stop() method exists" type="compliance" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P0" id="HumanActivityMonitorManager_stop_exist">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_stop_exist.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="stop" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if HumanActivityMonitorManager::stop() throws exception when type is missing" type="compliance" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P2" id="HumanActivityMonitorManager_stop_misarg">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_stop_misarg.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="stop" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if HumanActivityMonitorSuccessCallback does not exist" type="compliance" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P3" id="HumanActivityMonitorSuccessCallback_notexist">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorSuccessCallback_notexist.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityMonitorSuccessCallback U" usage="true" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if HumanActivityMonitorManager::start() with incorrect option argument throws exception" type="compliance" onload_delay="30" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P2" id="HumanActivityMonitorManager_start_option_TypeMismatch">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_start_option_TypeMismatch.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="start" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if HumanActivityMonitorManager::start() with incorrect successCallback argument throws exception" type="compliance" onload_delay="30" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P2" id="HumanActivityMonitorManager_start_changedCallback_TypeMismatch">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_start_changedCallback_TypeMismatch.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="start" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if HumanActivityMonitorManager::start() method throws exception when HumanActivityMonitorSuccessCallback is invalid" type="compliance" onload_delay="30" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P2" id="HumanActivityMonitorManager_start_changedCallback_invalid_cb">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_start_changedCallback_invalid_cb.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="start" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if readRecorderData throw NotSupportedError called with not supported human activity recorder type" type="compliance" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" priority="P2" id="HumanActivityMonitorManager_readRecorderData_NotSupportedError">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_readRecorderData_NotSupportedError.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="readRecorderData" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if readRecorderData throws exception when errorCallback is incorrect" type="compliance" onload_delay="30" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" priority="P2" id="HumanActivityMonitorManager_readRecorderData_errorCallback_TypeMismatch">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_readRecorderData_errorCallback_TypeMismatch.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="readRecorderData" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if readRecorderData throws exception when error callback is invalid" type="compliance" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" priority="P2" id="HumanActivityMonitorManager_readRecorderData_errorCallback_invalid_cb">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_readRecorderData_errorCallback_invalid_cb.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="readRecorderData" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if readRecorderData exists" type="compliance" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" priority="P0" id="HumanActivityMonitorManager_readRecorderData_exist">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_readRecorderData_exist.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="readRecorderData" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if HumanActivityMonitorManager::readRecorderData() called with missing non-optional argument throws an exception" type="compliance" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" priority="P1" id="HumanActivityMonitorManager_readRecorderData_misarg">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_readRecorderData_misarg.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="readRecorderData" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if readRecorderData throws exception when query is incorrect" type="compliance" onload_delay="30" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" priority="P2" id="HumanActivityMonitorManager_readRecorderData_query_TypeMismatch">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_readRecorderData_query_TypeMismatch.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="readRecorderData" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if readRecorderData throws exception when successCallback is incorrect" type="compliance" onload_delay="30" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" priority="P2" id="HumanActivityMonitorManager_readRecorderData_successCallback_TypeMismatch">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_readRecorderData_successCallback_TypeMismatch.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="readRecorderData" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if readRecorderData throws exception when success callback is invalid" type="compliance" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" priority="P2" id="HumanActivityMonitorManager_readRecorderData_successCallback_invalid_cb">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_readRecorderData_successCallback_invalid_cb.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="readRecorderData" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if readRecorderData without optional arguments works properly for PRESSURE HumanActivity type" type="compliance" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="manual" onload_delay="150" priority="P1" id="HumanActivityMonitorManager_readRecorderData_type_PRESSURE">
- <description>
- <steps>
- <step order="1">
- <step_desc>Waiting for 1 minutes for the callback.</step_desc>
- <expected>Pass should be shown in the page after 1 minutes.</expected>
- </step>
- </steps>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_readRecorderData_type_PRESSURE.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="readRecorderData" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if HumanActivityMonitorManager::startRecorder() throw NotSupportedError called with not supported human activity recorder type" type="compliance" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" priority="P1" id="HumanActivityMonitorManager_startRecorder_NotSupportedError">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_startRecorder_NotSupportedError.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="startRecorder" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if startRecorder exists" type="compliance" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" priority="P0" id="HumanActivityMonitorManager_startRecorder_exist">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_startRecorder_exist.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="startRecorder" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if HumanActivityMonitorManager::startRecorder() called with missing non-optional argument throws an exception" type="compliance" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" priority="P1" id="HumanActivityMonitorManager_startRecorder_misarg">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_startRecorder_misarg.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="startRecorder" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if method HumanActivityMonitorManager::startRecorder() works properly for PRESSURE HumanActivity type" type="compliance" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" priority="P1" id="HumanActivityMonitorManager_startRecorder_type_PRESSURE">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_startRecorder_type_PRESSURE.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="startRecorder" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if HumanActivityMonitorManager::stopRecorder() throw NotSupportedError called with not supported human activity recorder type" type="compliance" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" priority="P2" id="HumanActivityMonitorManager_stopRecorder_NotSupportedError">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_stopRecorder_NotSupportedError.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="stopRecorder" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if stopRecorder exists" type="compliance" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" priority="P0" id="HumanActivityMonitorManager_stopRecorder_exist">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_stopRecorder_exist.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="stopRecorder" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if HumanActivityMonitorManager::stopRecorder() called with missing non-optional argument throws an exception" type="compliance" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" priority="P1" id="HumanActivityMonitorManager_stopRecorder_misarg">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_stopRecorder_misarg.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="stopRecorder" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if method HumanActivityMonitorManager::stopRecorder() works properly for PRESSURE HumanActivity type" type="compliance" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" priority="P1" id="HumanActivityMonitorManager_stopRecorder_type_PRESSURE">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_stopRecorder_type_PRESSURE.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="stopRecorder" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if HumanActivityReadRecorderSuccessCallback cannot be called in new expression and as a function or in new expression" type="compliance" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" priority="P3" id="HumanActivityReadRecorderSuccessCallback_notexist">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityReadRecorderSuccessCallback_notexist.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityReadRecorderSuccessCallback" usage="true" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if HumanActivityRecorderData cannot be called in new expression and as a function or in new expression" type="compliance" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" priority="P3" id="HumanActivityRecorderData_notexist">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityRecorderData_notexist.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityRecorderData" usage="true" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if HumanActivityRecorderPressureData have average attribute with proper type, readonly" type="compliance" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="manual" onload_delay="90" priority="P1" id="HumanActivityRecorderPressureData_average_attribute">
- <description>
- <pre_condition>Before run this tc, run HumanActivityMonitorManager_readRecorderData_type_PRESSURE.html first, because we should wait at least 1 minute to get the recorded data after start recorder. But if you tested that TC already, you can run this TC now.</pre_condition>
- <steps>
- <step order="1">
- <step_desc>Waiting for 1 minutes for the callback.</step_desc>
- <expected>Pass should be shown in the page after 1 minutes.</expected>
- </step>
- </steps>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityRecorderPressureData_average_attribute.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityRecorderPressureData" element_type="attribute" element_name="average" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if HumanActivityRecorderPressureData have endTime attribute with proper type, readonly" type="compliance" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="manual" onload_delay="90" priority="P1" id="HumanActivityRecorderPressureData_endTime_attribute">
- <description>
- <pre_condition>Before run this tc, run HumanActivityMonitorManager_readRecorderData_type_PRESSURE.html first, because we should wait at least 1 minute to get the recorded data after start recorder. But if you tested that TC already, you can run this TC now.</pre_condition>
- <steps>
- <step order="1">
- <step_desc>Waiting for 1 minutes for the callback.</step_desc>
- <expected>Pass should be shown in the page after 1 minutes.</expected>
- </step>
- </steps>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityRecorderPressureData_endTime_attribute.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityRecorderPressureData" element_type="attribute" element_name="endTime" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if HumanActivityRecorderPressureData have max attribute with proper type, readonly" type="compliance" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="manual" onload_delay="90" priority="P1" id="HumanActivityRecorderPressureData_max_attribute">
- <description>
- <pre_condition>Before run this tc, run HumanActivityMonitorManager_readRecorderData_type_PRESSURE.html first, because we should wait at least 1 minute to get the recorded data after start recorder. But if you tested that TC already, you can run this TC now.</pre_condition>
- <steps>
- <step order="1">
- <step_desc>Waiting for 1 minutes for the callback.</step_desc>
- <expected>Pass should be shown in the page after 1 minutes.</expected>
- </step>
- </steps>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityRecorderPressureData_max_attribute.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityRecorderPressureData" element_type="attribute" element_name="max" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if HumanActivityRecorderPressureData have min attribute with proper type, readonly" type="compliance" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="manual" onload_delay="90" priority="P1" id="HumanActivityRecorderPressureData_min_attribute">
- <description>
- <pre_condition>Before run this tc, run HumanActivityMonitorManager_readRecorderData_type_PRESSURE.html first, because we should wait at least 1 minute to get the recorded data after start recorder. But if you tested that TC already, you can run this TC now.</pre_condition>
- <steps>
- <step order="1">
- <step_desc>Waiting for 1 minutes for the callback.</step_desc>
- <expected>Pass should be shown in the page after 1 minutes.</expected>
- </step>
- </steps>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityRecorderPressureData_min_attribute.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityRecorderPressureData" element_type="attribute" element_name="min" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if HumanActivityRecorderPressureData cannot be called in new expression and as a function or in new expression" type="compliance" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" priority="P3" id="HumanActivityRecorderPressureData_notexist">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityRecorderPressureData_notexist.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityRecorderPressureData" usage="true" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if HumanActivityRecorderPressureData have startTime attribute with proper type, readonly" type="compliance" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="manual" onload_delay="90" priority="P1" id="HumanActivityRecorderPressureData_startTime_attribute">
- <description>
- <pre_condition>Before run this tc, run HumanActivityMonitorManager_readRecorderData_type_PRESSURE.html first, because we should wait at least 1 minute to get the recorded data after start recorder. But if you tested that TC already, you can run this TC now.</pre_condition>
- <steps>
- <step order="1">
- <step_desc>Waiting for 1 minutes for the callback.</step_desc>
- <expected>Pass should be shown in the page after 1 minutes.</expected>
- </step>
- </steps>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityRecorderPressureData_startTime_attribute.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityRecorderPressureData" element_type="attribute" element_name="startTime" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- </set>
- <set name="HumanActivityMonitor_with_activity_recognition">
- <capabilities>
- <capability name="http://tizen.org/feature/sensor.activity_recognition"/>
- </capabilities>
- <testcase purpose="Check if the method addActivityRecognitionListener of HumanActivityMonitorManager returns proper value" type="compliance" onload_delay="60" status="approved" component="Tizen Device APIs/HumanActivityMonitor/HumanActivityMonitorManager" execution_type="manual" priority="P1" id="HumanActivityMonitorManager_addActivityRecognitionListener_STATIONARY">
- <description>
- <steps>
- <step order="1">
- <step_desc>Press run button, then keep the device stationary</step_desc>
- <expected>Pass</expected>
- </step>
- </steps>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_addActivityRecognitionListener_STATIONARY.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="addActivityRecognitionListener M" element_type="method" element_name="addActivityRecognitionListener" specification="HumanActivityMonitorManager" section="HumanActivityMonitor" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitormanager.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if the method addActivityRecognitionListener of HumanActivityMonitorManager returns proper value" type="compliance" onload_delay="60" status="approved" component="Tizen Device APIs/HumanActivityMonitor/HumanActivityMonitorManager" execution_type="manual" priority="P1" id="HumanActivityMonitorManager_addActivityRecognitionListener_WALKING">
- <description>
- <steps>
- <step order="1">
- <step_desc>Press run button. Pretend walking with the device.</step_desc>
- <expected>Pass</expected>
- </step>
- </steps>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_addActivityRecognitionListener_WALKING.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="addActivityRecognitionListener M" element_type="method" element_name="addActivityRecognitionListener" specification="HumanActivityMonitorManager" section="HumanActivityMonitor" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitormanager.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if the method addActivityRecognitionListener of HumanActivityMonitorManager throws TypeMismatchError when invalid type value is assigned for errorCallback parameter" type="compliance" status="approved" component="Tizen Device APIs/HumanActivityMonitor/HumanActivityMonitorManager" execution_type="auto" priority="P2" id="HumanActivityMonitorManager_addActivityRecognitionListener_errorCallback_TypeMismatch">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_addActivityRecognitionListener_errorCallback_TypeMismatch .html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="addActivityRecognitionListener M" element_type="method" element_name="addActivityRecognitionListener" specification="HumanActivityMonitorManager" section="HumanActivityMonitor" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitormanager.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if the method addActivityRecognitionListener of HumanActivityMonitorManager exist" type="compliance" status="approved" component="Tizen Device APIs/HumanActivityMonitor/HumanActivityMonitorManager" execution_type="auto" priority="P1" id="HumanActivityMonitorManager_addActivityRecognitionListener_exist">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_addActivityRecognitionListener_exist.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="addActivityRecognitionListener M" element_type="method" element_name="addActivityRecognitionListener" specification="HumanActivityMonitorManager" section="HumanActivityMonitor" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitormanager.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if the method addActivityRecognitionListener of HumanActivityMonitorManager throws TypeMismatchError when invalid value is assigned for type parameter" type="compliance" status="approved" component="Tizen Device APIs/HumanActivityMonitor/HumanActivityMonitorManager" execution_type="auto" priority="P2" id="HumanActivityMonitorManager_addActivityRecognitionListener_type_TypeMismatch">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_addActivityRecognitionListener_listener_TypeMismatch.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="addActivityRecognitionListener M" element_type="method" element_name="addActivityRecognitionListener" specification="HumanActivityMonitorManager" section="HumanActivityMonitor" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitormanager.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if the method addActivityRecognitionListener of HumanActivityMonitorManager throws TypeMismatchError when no param assigned" type="compliance" status="approved" component="Tizen Device APIs/HumanActivityMonitor/HumanActivityMonitorManager" execution_type="auto" priority="P2" id="HumanActivityMonitorManager_addActivityRecognitionListener_misarg">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_addActivityRecognitionListener_misarg.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="addActivityRecognitionListener M" element_type="method" element_name="addActivityRecognitionListener" specification="HumanActivityMonitorManager" section="HumanActivityMonitor" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitormanager.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if the method addActivityRecognitionListener of HumanActivityMonitorManager throws TypeMismatchError when invalid type value is assigned for listener parameter" type="compliance" status="approved" component="Tizen Device APIs/HumanActivityMonitor/HumanActivityMonitorManager" execution_type="auto" priority="P2" id="HumanActivityMonitorManager_addActivityRecognitionListener_listener_TypeMismatch">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_addActivityRecognitionListener_type_TypeMismatch.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="addActivityRecognitionListener M" element_type="method" element_name="addActivityRecognitionListener" specification="HumanActivityMonitorManager" section="HumanActivityMonitor" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitormanager.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if the method addActivityRecognitionListener of HumanActivityMonitorManager returns proper value with errorcallback assigned" type="compliance" onload_delay="60" status="approved" component="Tizen Device APIs/HumanActivityMonitor/HumanActivityMonitorManager" execution_type="manual" priority="P1" id="HumanActivityMonitorManager_addActivityRecognitionListener_with_errorCallback">
- <description>
- <steps>
- <step order="1">
- <step_desc>Press run button, then keep the device stationary</step_desc>
- <expected>Pass</expected>
- </step>
- </steps>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_addActivityRecognitionListener_with_errorCallback.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="addActivityRecognitionListener M" element_type="method" element_name="addActivityRecognitionListener" specification="HumanActivityMonitorManager" section="HumanActivityMonitor" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitormanager.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if the method addActivityRecognitionListener of HumanActivityMonitorManager returns proper value with errorcallback null assigned" type="compliance" onload_delay="60" status="approved" component="Tizen Device APIs/HumanActivityMonitor/HumanActivityMonitorManager" execution_type="manual" priority="P1" id="HumanActivityMonitorManager_addActivityRecognitionListener_with_errorCallback_null">
- <description>
- <steps>
- <step order="1">
- <step_desc>Press run button, then keep the device stationary</step_desc>
- <expected>Pass</expected>
- </step>
- </steps>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_addActivityRecognitionListener_with_errorCallback_null.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="addActivityRecognitionListener M" element_type="method" element_name="addActivityRecognitionListener" specification="HumanActivityMonitorManager" section="HumanActivityMonitor" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitormanager.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if the method removeActivityRecognitionListener of HumanActivityMonitorManager returns proper value" type="compliance" onload_delay="20" status="approved" component="Tizen Device APIs/TBD/HumanActivityMonitor" execution_type="manual" priority="P1" id="HumanActivityMonitorManager_removeActivityRecognitionListener_STATIONARY">
- <description>
- <steps>
- <step order="1">
- <step_desc>Press run button, then pretend walking with the device for 15 seconds</step_desc>
- <expected>Pass</expected>
- </step>
- </steps>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_removeActivityRecognitionListener.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="removeActivityRecognitionListener" specification="HumanActivityMonitor" section="TBD" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if the method removeActivityRecognitionListener of HumanActivityMonitorManager exist" type="compliance" status="approved" component="Tizen Device APIs/HumanActivityMonitor/HumanActivityMonitorManager" execution_type="auto" priority="P1" id="HumanActivityMonitorManager_removeActivityRecognitionListener_exist">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_removeActivityRecognitionListener_exist.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="removeActivityRecognitionListener M" element_type="method" element_name="removeActivityRecognitionListener" specification="HumanActivityMonitorManager" section="HumanActivityMonitor" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitormanager.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if the method removeActivityRecognitionListener of HumanActivityMonitorManager ignores invalid id" type="compliance" onload_delay="3" status="approved" component="Tizen Device APIs/HumanActivityMonitor/HumanActivityMonitorManager" execution_type="auto" priority="P2" id="HumanActivityMonitorManager_removeActivityRecognitionListener_invalid_id">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_removeActivityRecognitionListener_invalid_id.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="removeActivityRecognitionListener M" element_type="method" element_name="removeActivityRecognitionListener" specification="HumanActivityMonitorManager" section="HumanActivityMonitor" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitormanager.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if the method removeActivityRecognitionListener of HumanActivityMonitorManager ignores invalid id when no param assigned (undefined converted to 0)" type="compliance" status="approved" component="Tizen Device APIs/HumanActivityMonitor/HumanActivityMonitorManager" execution_type="auto" priority="P2" id="HumanActivityMonitorManager_removeActivityRecognitionListener_misarg">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_removeActivityRecognitionListener_misarg.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="removeActivityRecognitionListener M" element_type="method" element_name="removeActivityRecognitionListener" specification="HumanActivityMonitorManager" section="HumanActivityMonitor" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitormanager.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if the method removeActivityRecognitionListener of HumanActivityMonitorManager returns proper value with errorcallback assigned" type="compliance" onload_delay="20" status="approved" component="Tizen Device APIs/TBD/HumanActivityMonitor" execution_type="manual" priority="P1" id="HumanActivityMonitorManager_removeActivityRecognitionListener_STATIONARY">
- <description>
- <steps>
- <step order="1">
- <step_desc>Press run button, then pretend walking with the device for 15 seconds</step_desc>
- <expected>Pass</expected>
- </step>
- </steps>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_removeActivityRecognitionListener_with_errorCallback.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="removeActivityRecognitionListener" specification="HumanActivityMonitor" section="TBD" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if the method removeActivityRecognitionListener of HumanActivityMonitorManager returns proper value with errorcallback null assigned" type="compliance" onload_delay="20" status="approved" component="Tizen Device APIs/TBD/HumanActivityMonitor" execution_type="manual" priority="P1" id="HumanActivityMonitorManager_removeActivityRecognitionListener_STATIONARY">
- <description>
- <steps>
- <step order="1">
- <step_desc>Press run button, then pretend walking with the device for 15 seconds</step_desc>
- <expected>Pass</expected>
- </step>
- </steps>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_removeActivityRecognitionListener_with_errorCallback_null.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="removeActivityRecognitionListener" specification="HumanActivityMonitor" section="TBD" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- </set>
- <set name="HumanActivityMonitor_with_pedometer">
- <capabilities>
- <capability name="http://tizen.org/feature/sensor.pedometer"/>
- </capabilities>
- <testcase purpose="Check if method getHumanActivityData of HumanActivityMonitorManager returns properly value" type="compliance" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P1" id="HumanActivityMonitorManager_getHumanActivityData">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_getHumanActivityData.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="getHumanActivityData" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if HumanActivityMonitorManager::getHumanActivityData() with incorrect errorCallback argument throws exception" type="compliance" onload_delay="30" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P2" id="HumanActivityMonitorManager_getHumanActivityData_errorCallback_TypeMismatch">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_getHumanActivityData_errorCallback_TypeMismatch.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="getHumanActivityData" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if HumanActivityMonitorManager::getHumanActivityData() method throws exception when errorCallback is invalid" type="compliance" onload_delay="30" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P2" id="HumanActivityMonitorManager_getHumanActivityData_errorCallback_invalid_cb">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_getHumanActivityData_errorCallback_invalid_cb.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="getHumanActivityData" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check exception in error callback of HumanActivityMonitorManager::getHumanActivityData() method" type="compliance" onload_delay="30" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P2" id="HumanActivityMonitorManager_getHumanActivityData_errorCallback_invoked">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_getHumanActivityData_errorCallback_invoked.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="getHumanActivityData" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if HumanActivityMonitorManager::getHumanActivityData() throws exception when successCallback is missing" type="compliance" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P2" id="HumanActivityMonitorManager_getHumanActivityData_misarg">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_getHumanActivityData_misarg.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="getHumanActivityData" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if HumanActivityMonitorManager::getHumanActivityData() with incorrect successCallback argument throws exception" type="compliance" onload_delay="30" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P2" id="HumanActivityMonitorManager_getHumanActivityData_successCallback_TypeMismatch">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_getHumanActivityData_successCallback_TypeMismatch.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="getHumanActivityData" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if HumanActivityMonitorManager::getHumanActivityData() method throws exception when successCallback is invalid" type="compliance" onload_delay="30" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P2" id="HumanActivityMonitorManager_getHumanActivityData_successCallback_invalid_cb">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_getHumanActivityData_successCallback_invalid_cb.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="getHumanActivityData" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if HumanActivityMonitorManager::getHumanActivityData() method works properly" type="compliance" onload_delay="30" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P1" id="HumanActivityMonitorManager_getHumanActivityData_type_PEDOMETER">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_getHumanActivityData_type_PEDOMETER.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="getHumanActivityData" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if HumanActivityMonitorManager::getHumanActivityData() method works properly with optional argument" type="compliance" onload_delay="30" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P1" id="HumanActivityMonitorManager_getHumanActivityData_with_errorCallback">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_getHumanActivityData_with_errorCallback.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="getHumanActivityData" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if HumanActivityMonitorManager::start() with incorrect successCallback argument throws exception" type="compliance" onload_delay="30" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P2" id="HumanActivityMonitorManager_start_changedCallback_TypeMismatch">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_start_changedCallback_TypeMismatch.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="start" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if HumanActivityMonitorManager::start() with incorrect errorCallback argument throws exception" type="compliance" onload_delay="30" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P2" id="HumanActivityMonitorManager_start_errorCallback_TypeMismatch">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_start_errorCallback_TypeMismatch.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="start" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if HumanActivityMonitorManager::start() method throws exception when HumanActivityMonitorSuccessCallback is invalid" type="compliance" onload_delay="30" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P2" id="HumanActivityMonitorManager_start_changedCallback_invalid_cb">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_start_changedCallback_invalid_cb.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="start" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if HumanActivityMonitorManager::start() method throws exception when ErrorCallback is invalid" type="compliance" onload_delay="30" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P2" id="HumanActivityMonitorManager_start_errorCallback_invalid_cb">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_start_errorCallback_invalid_cb.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="start" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if method HumanActivityMonitorManager::start() works properly for PEDOMETER" type="compliance" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P1" id="HumanActivityMonitorManager_start_type_PEDOMETER">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_start_type_PEDOMETER.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="start" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if HumanActivityMonitorManager::stop() method works properly" type="compliance" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P1" id="HumanActivityMonitorManager_stop_type_PEDOMETER">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_stop_type_PEDOMETER.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="stop" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Test whether HumanActivityMonitorSuccessCallback::onsuccess() is called with argument of proper type" type="compliance" onload_delay="90" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P1" id="HumanActivityMonitorSuccessCallback_onsuccess">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorSuccessCallback_onsuccess.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityMonitorSuccessCallback" element_type="method" element_name="onsuccess" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if HumanActivityPedometerData::cumulativeCalorie exists, has type double, and is readonly" type="compliance" onload_delay="9" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P1" id="HumanActivityPedometerData_cumulativeCalorie_attribute">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityPedometerData_cumulativeCalorie_attribute.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityPedometerData" element_type="attribute" element_name="cumulativeCalorie" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if HumanActivityPedometerData::cumulativeDistance exists, has type double, and is readonly" type="compliance" onload_delay="9" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P1" id="HumanActivityPedometerData_cumulativeDistance_attribute">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityPedometerData_cumulativeDistance_attribute.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityPedometerData" element_type="attribute" element_name="cumulativeDistance" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if HumanActivityPedometerData::cumulativeRunStepCount exists, has type double, and is readonly" type="compliance" onload_delay="9" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P1" id="HumanActivityPedometerData_cumulativeRunStepCount_attribute">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityPedometerData_cumulativeRunStepCount_attribute.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityPedometerData" element_type="attribute" element_name="cumulativeRunStepCount" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if HumanActivityPedometerData::cumulativeTotalStepCount exists, has type double, and is readonly" type="compliance" onload_delay="9" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P1" id="HumanActivityPedometerData_cumulativeTotalStepCount_attribute">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityPedometerData_cumulativeTotalStepCount_attribute.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityPedometerData" element_type="attribute" element_name="cumulativeTotalStepCount" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if HumanActivityPedometerData::cumulativeWalkStepCount exists, has type double, and is readonly" type="compliance" onload_delay="9" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P1" id="HumanActivityPedometerData_cumulativeWalkStepCount_attribute">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityPedometerData_cumulativeWalkStepCount_attribute.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityPedometerData" element_type="attribute" element_name="cumulativeWalkStepCount" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if HumanActivityPedometerData::stepCountDifferences exists, has type double, and is readonly" type="compliance" onload_delay="9" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P1" id="HumanActivityPedometerData_stepCountDifferences_attribute">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityPedometerData_stepCountDifferences_attribute.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityPedometerData" element_type="attribute" element_name="stepCountDifferences" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if HumanActivityPedometerData object is extendable" type="compliance" onload_delay="90" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P3" id="HumanActivityPedometerData_extend">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityPedometerData_extend.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityPedometerData" usage="true" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if HumanActivityPedometerData::speed exists, has type double, and is readonly" type="compliance" onload_delay="9" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P1" id="HumanActivityPedometerData_speed_attribute">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityPedometerData_speed_attribute.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityPedometerData" element_type="attribute" element_name="speed" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if HumanActivityPedometerData::stepStatus exists, has type string, and is readonly" type="compliance" onload_delay="9" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P1" id="HumanActivityPedometerData_stepStatus_attribute">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityPedometerData_stepStatus_attribute.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityPedometerData" element_type="attribute" element_name="stepStatus" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if HumanActivityPedometerData::walkingFrequency exists, has type double, and is readonly" type="compliance" onload_delay="9" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P1" id="HumanActivityPedometerData_walkingFrequency_attribute">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityPedometerData_walkingFrequency_attribute.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityPedometerData" element_type="attribute" element_name="walkingFrequency" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if interface HumanActivityPedometerData exists, it should not" type="compliance" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P3" id="HumanActivityPedometerData_notexist">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityPedometerData_notexist.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityPedometerData" usage="true" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if interface HumanActivityAccumulativePedometerInfo exists, it should not" type="compliance" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P3" id="HumanActivityAccumulativePedometerInfo_notexist">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityAccumulativePedometerInfo_notexist.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityAccumulativePedometerInfo" usage="true" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if HumanActivityMonitorManager::setAccumulativePedometerListener() with incorrect changeCallback argument throws exception" type="compliance" onload_delay="30" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P2" id="HumanActivityMonitorManager_setAccumulativePedometerListener_changeCallback_TypeMismatch">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_setAccumulativePedometerListener_changeCallback_TypeMismatch.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="setAccumulativePedometerListener" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if HumanActivityMonitorManager::setAccumulativePedometerListener() with incorrect changeCallback argument throws exception" type="compliance" onload_delay="30" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P2" id="HumanActivityMonitorManager_setAccumulativePedometerListener_changeCallback_TypeMismatch">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_setAccumulativePedometerListener_changeCallback_TypeMismatch.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="setAccumulativePedometerListener" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if HumanActivityMonitorManager::setAccumulativePedometerListener() method throws exception when changeCallback is invalid" type="compliance" onload_delay="30" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P2" id="HumanActivityMonitorManager_setAccumulativePedometerListener_changeCallback_invalid_cb">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_setAccumulativePedometerListener_changeCallback_invalid_cb.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="setAccumulativePedometerListener" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if method HumanActivityMonitorManager::setAccumulativePedometerListener() exists" type="compliance" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P0" id="HumanActivityMonitorManager_setAccumulativePedometerListener_exist">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_setAccumulativePedometerListener_exist.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="setAccumulativePedometerListener" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if HumanActivityMonitorManager::setAccumulativePedometerListener() throws exception when changeCallback is missing" type="compliance" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P2" id="HumanActivityMonitorManager_setAccumulativePedometerListener_misarg">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_setAccumulativePedometerListener_misarg.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="setAccumulativePedometerListener" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if HumanActivityMonitorManager::unsetAccumulativePedometerListener() method works properly" type="compliance" onload_delay="30" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P1" id="HumanActivityMonitorManager_unsetAccumulativePedometerListener">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_unsetAccumulativePedometerListener.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="humanactivitymonitor" element_type="method" element_name="unsetAccumulativePedometerListener" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if HumanActivityMonitorManager::unsetAccumulativePedometerListener() method exists" type="compliance" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P0" id="HumanActivityMonitorManager_unsetAccumulativePedometerListener_exist">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_unsetAccumulativePedometerListener_exist.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="unsetAccumulativePedometerListener" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if HumanActivityMonitorManager::unsetAccumulativePedometerListener() method with extra argument" type="compliance" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P1" id="HumanActivityMonitorManager_unsetAccumulativePedometerListener_extra_argument">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_unsetAccumulativePedometerListener_extra_argument.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="unsetAccumulativePedometerListener" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if the specifies the pedometer user's current movement type is NOT_MOVING" type="compliance" onload_delay="60" status="approved" component="Tizen Device APIs/HumanActivityMonitor/HumanActivityMonitorManager" execution_type="manual" priority="P1" id="HumanActivityMonitorManager_getHumanActivityData_stepStatus_NOT_MOVING">
- <description>
- <steps>
- <step order="1">
- <step_desc>Press run button, then keep the device stationary.</step_desc>
- <expected>Pass</expected>
- </step>
- </steps>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_getHumanActivityData_stepStatus_NOT_MOVING.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="addActivityRecognitionListener M" element_type="method" element_name="addActivityRecognitionListener" specification="HumanActivityMonitorManager" section="HumanActivityMonitor" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitormanager.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if the specifies the pedometer user's current movement type is WALKING" type="compliance" onload_delay="60" status="approved" component="Tizen Device APIs/HumanActivityMonitor/HumanActivityMonitorManager" execution_type="manual" priority="P1" id="HumanActivityMonitorManager_getHumanActivityData_stepStatus_WALKING">
- <description>
- <steps>
- <step order="1">
- <step_desc>Press run button. Pretend walking with the device.</step_desc>
- <expected>Pass</expected>
- </step>
- </steps>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_getHumanActivityData_stepStatus_WALKING.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="getHumanActivityData M" element_type="method" element_name="getHumanActivityData" specification="HumanActivityMonitorManager" section="HumanActivityMonitor" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitormanager.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if the specifies the pedometer user's current movement type is RUNNING" type="compliance" onload_delay="60" status="approved" component="Tizen Device APIs/HumanActivityMonitor/HumanActivityMonitorManager" execution_type="manual" priority="P1" id="HumanActivityMonitorManager_getHumanActivityData_stepStatus_RUNNING">
- <description>
- <steps>
- <step order="1">
- <step_desc>Press run button. Pretend running with the device.</step_desc>
- <expected>Pass</expected>
- </step>
- </steps>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_getHumanActivityData_stepStatus_RUNNING.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="addActivityRecognitionListener M" element_type="method" element_name="addActivityRecognitionListener" specification="HumanActivityMonitorManager" section="HumanActivityMonitor" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitormanager.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if the specifies the pedometer user's current movement type is UNKNOWN" type="compliance" onload_delay="60" status="approved" component="Tizen Device APIs/HumanActivityMonitor/HumanActivityMonitorManager" execution_type="manual" priority="P1" id="HumanActivityMonitorManager_getHumanActivityData_stepStatus_UNKNOWN">
- <description>
- <steps>
- <step order="1">
- <step_desc>Press run button, press Power key to keep the device LCS off, then Pretend walking with the device.</step_desc>
- <expected>Pass</expected>
- </step>
- </steps>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_getHumanActivityData_stepStatus_UNKNOWN.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="addActivityRecognitionListener M" element_type="method" element_name="addActivityRecognitionListener" specification="HumanActivityMonitorManager" section="HumanActivityMonitor" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitormanager.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if readRecorderData can be called with empty object as query argument" type="compliance" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="manual" onload_delay="60" priority="P1" id="HumanActivityMonitorManager_readRecorderData_query_empty">
- <description>
- <steps>
- <step order="1">
- <step_desc>Press run button. Pretend walking with the device.</step_desc>
- <expected>Pass</expected>
- </step>
- </steps>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_readRecorderData_query_empty.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="readRecorderData" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if readRecorderData without optional arguments works properly for PEDOMETER HumanActivity type" type="compliance" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="manual" onload_delay="60" priority="P1" id="HumanActivityMonitorManager_readRecorderData_type_PEDOMETER">
- <description>
- <steps>
- <step order="1">
- <step_desc>Press run button. Pretend walking with the device.</step_desc>
- <expected>Pass</expected>
- </step>
- </steps>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_readRecorderData_type_PEDOMETER.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="readRecorderData" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if readRecorderData with optional arguments works properly" type="compliance" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="manual" onload_delay="60" priority="P1" id="HumanActivityMonitorManager_readRecorderData_with_errorCallback">
- <description>
- <steps>
- <step order="1">
- <step_desc>Press run button. Pretend walking with the device.</step_desc>
- <expected>Pass</expected>
- </step>
- </steps>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_readRecorderData_with_errorCallback.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="readRecorderData" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if HumanActivityMonitorManager::startRecorder() can be called with empty object as option argument" type="compliance" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" priority="P1" id="HumanActivityMonitorManager_startRecorder_option_empty">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_startRecorder_option_empty.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="startRecorder" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if method HumanActivityMonitorManager::startRecorder() works properly for PEDOMETER HumanActivity type" type="compliance" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" priority="P1" id="HumanActivityMonitorManager_startRecorder_type_PEDOMETER">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_startRecorder_type_PEDOMETER.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="startRecorder" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if method HumanActivityMonitorManager::stopRecorder() works properly for PEDOMETER HumanActivity type" type="compliance" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" priority="P1" id="HumanActivityMonitorManager_stopRecorder_type_PEDOMETER">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_stopRecorder_type_PEDOMETER.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="stopRecorder" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if HumanActivityRecorderPedometerData have calorie attribute with proper type, readonly" type="compliance" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="manual" onload_delay="60" priority="P1" id="HumanActivityRecorderPedometerData_calorie_attribute">
- <description>
- <steps>
- <step order="1">
- <step_desc>Press run button. Pretend walking with the device.</step_desc>
- <expected>Pass</expected>
- </step>
- </steps>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityRecorderPedometerData_calorie_attribute.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityRecorderPedometerData" element_type="attribute" element_name="calorie" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if HumanActivityRecorderPedometerData have distance attribute with proper type, readonly" type="compliance" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="manual" onload_delay="60" priority="P1" id="HumanActivityRecorderPedometerData_distance_attribute">
- <description>
- <steps>
- <step order="1">
- <step_desc>Press run button. Pretend walking with the device.</step_desc>
- <expected>Pass</expected>
- </step>
- </steps>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityRecorderPedometerData_distance_attribute.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityRecorderPedometerData" element_type="attribute" element_name="distance" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if HumanActivityRecorderPedometerData have endTime attribute with proper type, readonly" type="compliance" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="manual" onload_delay="60" priority="P1" id="HumanActivityRecorderPedometerData_endTime_attribute">
- <description>
- <steps>
- <step order="1">
- <step_desc>Press run button. Pretend walking with the device.</step_desc>
- <expected>Pass</expected>
- </step>
- </steps>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityRecorderPedometerData_endTime_attribute.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityRecorderPedometerData" element_type="attribute" element_name="endTime" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if HumanActivityRecorderPedometerData cannot be called in new expression and as a function or in new expression" type="compliance" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" priority="P3" id="HumanActivityRecorderPedometerData_notexist">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityRecorderPedometerData_notexist.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityRecorderPedometerData" usage="true" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if HumanActivityRecorderPedometerData have runStepCount attribute with proper type, readonly" type="compliance" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="manual" onload_delay="60" priority="P1" id="HumanActivityRecorderPedometerData_runStepCount_attribute">
- <description>
- <steps>
- <step order="1">
- <step_desc>Press run button. Pretend walking with the device.</step_desc>
- <expected>Pass</expected>
- </step>
- </steps>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityRecorderPedometerData_runStepCount_attribute.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityRecorderPedometerData" element_type="attribute" element_name="runStepCount" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if HumanActivityRecorderPedometerData have startTime attribute with proper type, readonly" type="compliance" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="manual" onload_delay="60" priority="P1" id="HumanActivityRecorderPedometerData_startTime_attribute">
- <description>
- <steps>
- <step order="1">
- <step_desc>Press run button. Pretend walking with the device.</step_desc>
- <expected>Pass</expected>
- </step>
- </steps>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityRecorderPedometerData_startTime_attribute.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityRecorderPedometerData" element_type="attribute" element_name="startTime" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if HumanActivityRecorderPedometerData have totalStepCount attribute with proper type, readonly" type="compliance" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="manual" onload_delay="60" priority="P1" id="HumanActivityRecorderPedometerData_totalStepCount_attribute">
- <description>
- <steps>
- <step order="1">
- <step_desc>Press run button. Pretend walking with the device.</step_desc>
- <expected>Pass</expected>
- </step>
- </steps>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityRecorderPedometerData_totalStepCount_attribute.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityRecorderPedometerData" element_type="attribute" element_name="totalStepCount" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if HumanActivityRecorderPedometerData have walkStepCount attribute with proper type, readonly" type="compliance" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="manual" onload_delay="60" priority="P1" id="HumanActivityRecorderPedometerData_walkStepCount_attribute">
- <description>
- <steps>
- <step order="1">
- <step_desc>Press run button. Pretend walking with the device.</step_desc>
- <expected>Pass</expected>
- </step>
- </steps>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityRecorderPedometerData_walkStepCount_attribute.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityRecorderPedometerData" element_type="attribute" element_name="walkStepCount" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- </set>
- <set name="HumanActivityMonitor_with_wrist_up">
- <capabilities>
- <capability name="http://tizen.org/feature/sensor.wrist_up"/>
- </capabilities>
- <testcase purpose="Check if method HumanActivityMonitorManager::start() works properly for WRIST_UP" type="compliance" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P1" id="HumanActivityMonitorManager_start_type_WRIST_UP">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_start_type_WRIST_UP.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="start" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if HumanActivityMonitorManager::stop() method with WRIST_UP works properly" type="compliance" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P1" id="HumanActivityMonitorManager_stop_type_WRIST_UP">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_stop_type_WRIST_UP.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="stop" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- </set>
- <set name="HumanActivityMonitor_heart_rate_monitor">
- <capabilities>
- <capability name="http://tizen.org/feature/sensor.heart_rate_monitor"/>
- </capabilities>
- <testcase purpose="Check if HumanActivityMonitorManager::getHumanActivityData() method works properly for HumanActivityType HRM" type="compliance" onload_delay="30" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P1" id="HumanActivityMonitorManager_getHumanActivityData_type_HRM">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_getHumanActivityData_type_HRM.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="getHumanActivityData" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if method HumanActivityMonitorManager::start() works properly for HRM HumanActivity type" type="compliance" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P1" id="HumanActivityMonitorManager_start_type_HRM">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_start_type_HRM.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="start" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if HumanActivityMonitorManager::stop() method works properly for HumanActivity type HRM" type="compliance" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P1" id="HumanActivityMonitorManager_stop_type_HRM">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_stop_type_HRM.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="stop" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if HumanActivityHRMData::heartRate exists, has type long, and is readonly " type="compliance" onload_delay="9 " status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P1 " id="HumanActivityHRMData_heartRate_attribute">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityHRMData_heartRate_attribute.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityGPSInfo" element_type="attribute" element_name="heartRate" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if HumanActivityHRMData::rRInterval exists, has type long, and is readonly " type="compliance" onload_delay="9 " status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P1 " id="HumanActivityHRMData_rRInterval_attribute">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityHRMData_rRInterval_attribute.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityGPSInfo" element_type="attribute" element_name="rRInterval" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if method HumanActivityMonitorOption::callbackInterval works properly for HRM HumanActivity type" type="compliance" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P1" id="HumanActivityMonitorOption_callbackInterval_type_HRM">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorOption_callbackInterval_type_HRM.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityMonitorOption" element_type="attribute" element_name="callbackInterval" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if method HumanActivityMonitorOption::callbackInterval() works properly when set to null" type="compliance" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P1" id="HumanActivityMonitorOption_callbackInterval_type_HRM_default">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorOption_callbackInterval_type_HRM_default.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityMonitorOption" element_type="attribute" element_name="callbackInterval" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if readRecorderData without optional arguments works properly for HRM HumanActivity type" type="compliance" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type=""manual" onload_delay="1500" priority="P1" id="HumanActivityMonitorManager_readRecorderData_type_HRM">
- <description>
- <steps>
- <step order="1">
- <step_desc>Waiting for 10 minutes for the callback.</step_desc>
- <expected>Pass should be shown in the page after 10 minutes.</expected>
- </step>
- </steps>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_readRecorderData_type_HRM.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="readRecorderData" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if method HumanActivityMonitorManager::startRecorder() works properly for HRM HumanActivity type" type="compliance" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" priority="P1" id="HumanActivityMonitorManager_startRecorder_type_HRM">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_startRecorder_type_HRM.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="startRecorder" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if method HumanActivityMonitorManager::startRecorder() works properly with optional argument" type="compliance" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" priority="P1" id="HumanActivityMonitorManager_startRecorder_with_option">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_startRecorder_with_option.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="startRecorder" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if method HumanActivityMonitorManager::stopRecorder() works properly for HRM HumanActivity type" type="compliance" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" priority="P1" id="HumanActivityMonitorManager_stopRecorder_type_HRM">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_stopRecorder_type_HRM.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="stopRecorder" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if HumanActivityReadRecorderSuccessCallback onsuccess is called and if its arguments have proper type" type="compliance" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="manual" onload_delay="60" priority="P1" id="HumanActivityReadRecorderSuccessCallback_onsuccess">
- <description>
- <pre_condition>Before run this tc, run HumanActivityMonitorManager_readRecorderData_type_HRM.html first, because we should wait at least 10 minutes to get the recorded data after start recorder. But if you tested that TC already, you can run this TC now.</pre_condition>
- <steps>
- <step order="1">
- <step_desc>Waiting for 10 minutes for the callback.</step_desc>
- <expected>Pass should be shown in the page after 10 minutes.</expected>
- </step>
- </steps>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityReadRecorderSuccessCallback_onsuccess.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityReadRecorderSuccessCallback" usage="true" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if HumanActivityRecorderHRMData have endTime attribute with proper type, readonly" type="compliance" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="manual" onload_delay="60" priority="P1" id="HumanActivityRecorderHRMData_endTime_attribute">
- <description>
- <pre_condition>Before run this tc, run HumanActivityMonitorManager_readRecorderData_type_HRM.html first, because we should wait at least 10 minutes to get the recorded data after start recorder. But if you tested that TC already, you can run this TC now.</pre_condition>
- <steps>
- <step order="1">
- <step_desc>Waiting for 10 minutes for the callback.</step_desc>
- <expected>Pass should be shown in the page after 10 minutes.</expected>
- </step>
- </steps>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityRecorderHRMData_endTime_attribute.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityRecorderHRMData" element_type="attribute" element_name="endTime" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if HumanActivityRecorderHRMData have heartRate attribute with proper type, readonly" type="compliance" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="manual" onload_delay="60" priority="P1" id="HumanActivityRecorderHRMData_heartRate_attribute">
- <description>
- <pre_condition>Before run this tc, run HumanActivityMonitorManager_readRecorderData_type_HRM.html first, because we should wait at least 10 minutes to get the recorded data after start recorder. But if you tested that TC already, you can run this TC now.</pre_condition>
- <steps>
- <step order="1">
- <step_desc>Waiting for 10 minutes for the callback.</step_desc>
- <expected>Pass should be shown in the page after 10 minutes.</expected>
- </step>
- </steps>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityRecorderHRMData_heartRate_attribute.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityRecorderHRMData" element_type="attribute" element_name="heartRate" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if HumanActivityRecorderHRMData cannot be called in new expression and as a function or in new expression" type="compliance" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" priority="P3" id="HumanActivityRecorderHRMData_notexist">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityRecorderHRMData_notexist.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityRecorderHRMData" usage="true" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if HumanActivityRecorderHRMData have startTime attribute with proper type, readonly" type="compliance" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="manual" onload_delay="60" priority="P1" id="HumanActivityRecorderHRMData_startTime_attribute">
- <description>
- <pre_condition>Before run this tc, run HumanActivityMonitorManager_readRecorderData_type_HRM.html first, because we should wait at least 10 minutes to get the recorded data after start recorder. But if you tested that TC already, you can run this TC now.</pre_condition>
- <steps>
- <step order="1">
- <step_desc>Waiting for 10 minutes for the callback.</step_desc>
- <expected>Pass should be shown in the page after 10 minutes.</expected>
- </step>
- </steps>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityRecorderHRMData_startTime_attribute.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityRecorderHRMData" element_type="attribute" element_name="startTime" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- </set>
- <set name="HumanActivityMonitor_location_batch">
- <capabilities>
- <capability name="http://tizen.org/feature/location.batch"/>
- </capabilities>
- <testcase purpose="Check if method HumanActivityMonitorManager::start() works properly for GPS HumanActivity type with optional argument" type="compliance" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P1" id="HumanActivityMonitorManager_start_with_option">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_start_with_option.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="start" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if method HumanActivityMonitorManager::start() works properly for GPS HumanActivity type" type="compliance" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P1" id="HumanActivityMonitorManager_start_type_GPS">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_start_type_GPS.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="start" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if HumanActivityMonitorManager::start() can be called with empty object as option argument" type="compliance" onload_delay="30" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P1" id="HumanActivityMonitorManager_start_option_empty">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_start_option_empty.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="start" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if HumanActivityMonitorManager::stop() method works properly for HumanActivity type GPS" type="compliance" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P1" id="HumanActivityMonitorManager_stop_type_GPS">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_stop_type_GPS.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="stop" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if HumanActivityGPSInfo::altitude exists, has type double, and is readonly " type="compliance" onload_delay="9 " status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P1 " id="HumanActivityGPSInfo_altitude_attribute">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityGPSInfo_altitude_attribute.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityGPSInfo" element_type="attribute" element_name="altitude" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if HumanActivityGPSInfo::errorRange exists, has type long, and is readonly " type="compliance" onload_delay="9 " status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P1 " id="HumanActivityGPSInfo_errorRange_attribute">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityGPSInfo_errorRange_attribute.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityGPSInfo" element_type="attribute" element_name="errorRange" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if HumanActivityGPSInfo::latitude exists, has type double, and is readonly " type="compliance" onload_delay="9 " status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P1 " id="HumanActivityGPSInfo_latitude_attribute">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityGPSInfo_latitude_attribute.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityGPSInfo" element_type="attribute" element_name="latitude" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if HumanActivityGPSInfo::longitude exists, has type double, and is readonly " type="compliance" onload_delay="9 " status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P1 " id="HumanActivityGPSInfo_longitude_attribute">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityGPSInfo_longitude_attribute.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityGPSInfo" element_type="attribute" element_name="longitude" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if HumanActivityGPSInfo::speed exists, has type double, and is readonly " type="compliance" onload_delay="9 " status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P1 " id="HumanActivityGPSInfo_speed_attribute">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityGPSInfo_speed_attribute.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityGPSInfo" element_type="attribute" element_name="speed" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if HumanActivityGPSInfo::speed exists, has type long, and is readonly " type="compliance" onload_delay="9 " status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P1 " id="HumanActivityGPSInfo_timestamp_attribute">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityGPSInfo_timestamp_attribute.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityGPSInfo" element_type="attribute" element_name="speed" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if method HumanActivityMonitorOption::callbackInterval works properly for GPS HumanActivity type" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="manual" priority="P1" id="HumanActivityMonitorOption_callbackInterval_type_GPS" onload_delay="300">
- <description>
- <steps>
- <step order="1">
- <step_desc>Wait 155 seconds for the callback</step_desc>
- <expected>Pass should be shown in the page after 155 seconds</expected>
- </step>
- </steps>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorOption_callbackInterval_type_GPS.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityMonitorOption" element_type="attribute" element_name="callbackInterval" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if method HumanActivityMonitorOption::callbackInterval works properly when set to null" type="compliance" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="manual" priority="P1" id="HumanActivityMonitorOption_callbackInterval_type_GPS_default">
- <description>
- <steps>
- <step order="1">
- <step_desc>Wait 150 seconds for the callback</step_desc>
- <expected>Pass should be shown in the page after 150 seconds</expected>
- </step>
- </steps>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorOption_callbackInterval_type_GPS_default.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityMonitorOption" element_type="attribute" element_name="callbackInterval" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if method HumanActivityMonitorOption::sampleInterval works properly for GPS HumanActivity type" type="compliance" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="manual" priority="P1" id="HumanActivityMonitorOption_sampleInterval_type_GPS">
- <description>
- <steps>
- <step order="1">
- <step_desc>Wait 120 seconds for the callback</step_desc>
- <expected>Pass should be shown in the page after 120 seconds</expected>
- </step>
- </steps>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorOption_sampleInterval_type_GPS.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityMonitorOption" element_type="attribute" element_name="sampleInterval" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if method HumanActivityMonitorOption::sampleInterval works properly when set to null" type="compliance" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="manual" priority="P1" id="HumanActivityMonitorOption_sampleInterval_type_GPS_default">
- <description>
- <steps>
- <step order="1">
- <step_desc>Wait 120 seconds for the callback</step_desc>
- <expected>Pass should be shown in the page after 120 seconds</expected>
- </step>
- </steps>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorOption_sampleInterval_type_GPS_default.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityMonitorOption" element_type="attribute" element_name="sampleInterval" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check exception in error callback of HumanActivityMonitorManager::start() method" type="compliance" onload_delay="30" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="manual" priority="P2" id="HumanActivityMonitorManager_start_errorCallback_invoked">
- <description>
- <steps>
- <step order="1">
- <step_desc>Please set the GPS function to disabled in the location settings</step_desc>
- <expected>Pass should be shown in the page after GPS off</expected>
- </step>
- </steps>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_start_errorCallback_invoked.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="start" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- </set>
- <set name="HumanActivityMonitor_sleep_monitor">
- <capabilities>
- <capability name="http://tizen.org/feature/sensor.sleep_monitor"/>
- </capabilities>
- <testcase purpose="Check if method HumanActivityMonitorManager::start() works properly for SLEEP_MONITOR" type="compliance" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P1" id="HumanActivityMonitorManager_start_type_SLEEP_MONITOR">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_start_type_SLEEP_MONITOR.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="start" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if HumanActivityMonitorManager::stop() method with SLEEP_MONITOR works properly" type="compliance" status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P1" id="HumanActivityMonitorManager_stop_type_SLEEP_MONITOR">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_stop_type_SLEEP_MONITOR.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="stop" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if HumanActivitySleepMonitorData::status exists and is readonly " type="compliance" onload_delay="9 " status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P1 " id="HumanActivitySleepMonitorData_status_attribute">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivitySleepMonitorData_status_attribute.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivitySleepMonitorData" element_type="attribute" element_name="status" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if HumanActivitySleepMonitorData::timestamp exists, has type long, and is readonly" type="compliance" onload_delay="9 " status="approved" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" priority="P1 " id="HumanActivitySleepMonitorData_timestamp_attribute">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivitySleepMonitorData_timestamp_attribute.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivitySleepMonitorData" element_type="attribute" element_name="timestamp" specification="HumanActivityMonitor" section="Sensor" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if readRecorderData without optional arguments works properly for SLEEP_MONITOR HumanActivity type" type="compliance" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" priority="P1" id="HumanActivityMonitorManager_readRecorderData_type_SLEEP_MONITOR">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_readRecorderData_type_SLEEP_MONITOR.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="readRecorderData" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if method HumanActivityMonitorManager::startRecorder() works properly for SLEEP_MONITOR HumanActivity type" type="compliance" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" priority="P1" id="HumanActivityMonitorManager_startRecorder_type_SLEEP_MONITOR">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_startRecorder_type_SLEEP_MONITOR.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="startRecorder" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if method HumanActivityMonitorManager::stopRecorder () works properly for SLEEP_MONITOR HumanActivity type" type="compliance" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" priority="P1" id="HumanActivityMonitorManager_stopRecorder_type_SLEEP_MONITOR">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_stopRecorder_type_SLEEP_MONITOR.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityMonitorManager" element_type="method" element_name="stopRecorder" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if HumanActivityRecorderSleepMonitorData have endTime attribute with proper type, readonly" type="compliance" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" priority="P1" id="HumanActivityRecorderSleepMonitorData_endTime_attribute">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityRecorderSleepMonitorData_endTime_attribute.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityRecorderSleepMonitorData" element_type="attribute" element_name="endTime" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if HumanActivityRecorderSleepMonitorData cannot be called in new expression and as a function or in new expression" type="compliance" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" priority="P3" id="HumanActivityRecorderSleepMonitorData_notexist">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityRecorderSleepMonitorData_notexist.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityRecorderSleepMonitorData" usage="true" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if HumanActivityRecorderSleepMonitorData have startTime attribute with proper type, readonly" type="compliance" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" priority="P1" id="HumanActivityRecorderSleepMonitorData_startTime_attribute">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityRecorderSleepMonitorData_startTime_attribute.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityRecorderSleepMonitorData" element_type="attribute" element_name="startTime" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if HumanActivityRecorderSleepMonitorData have status attribute with proper type, readonly" type="compliance" status="approved" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" priority="P1" id="HumanActivityRecorderSleepMonitorData_status_attribute">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityRecorderSleepMonitorData_status_attribute.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion interface="HumanActivityRecorderSleepMonitorData" element_type="attribute" element_name="status" specification="HumanActivityMonitor" section="System" category="Tizen Device API Specifications"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- </set>
- </suite>
-</test_definition>
\ No newline at end of file
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>
-<?xml-stylesheet type="text/xsl" href="./testcase.xsl"?>
-<test_definition>
- <suite category="Tizen Web Device APIs" extension="crosswalk" name="tct-humanactivitymonitor-tizen-tests">
- <set name="HumanActivityMonitor" type="js">
- <capabilities>
- <capability name="http://tizen.org/feature/humanactivitymonitor"/>
- </capabilities>
- <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityData_notexist" priority="P3" purpose="Check if interface HumanActivityData exists, it should not">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityData_notexist.html</test_script_entry>
- </description>
- </testcase>
- <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="StepDifference_notexist" priority="P3" purpose="Check if interface StepDifference exists, it should not">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/StepDifference_notexist.html</test_script_entry>
- </description>
- </testcase>
- <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityAccumulativePedometerData_notexist" priority="P3" purpose="Check if interface HumanActivityAccumulativePedometerData exists, it should not">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityAccumulativePedometerData_notexist.html</test_script_entry>
- </description>
- </testcase>
- <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityHRMData_notexist" priority="P3" purpose="Check if interface HumanActivityHRMData exists, it should not">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityHRMData_notexist.html</test_script_entry>
- </description>
- </testcase>
- <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityGPSInfo_notexist" priority="P3" purpose="Check if interface HumanActivityGPSInfo exists, it should not">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityGPSInfo_notexist.html</test_script_entry>
- </description>
- </testcase>
- <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityGPSInfoArray_notexist" priority="P3" purpose="Check if interface HumanActivityGPSInfoArray exists, it should not">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityGPSInfoArray_notexist.html</test_script_entry>
- </description>
- </testcase>
- <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityRecognitionData_notexist" priority="P3" purpose="Check if interface HumanActivityRecognitionData exists, it should not">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityRecognitionData_notexist.html</test_script_entry>
- </description>
- </testcase>
- <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivitySleepMonitorData_notexist" priority="P3" purpose="Check if interface HumanActivitySleepMonitorData exists, it should not">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivitySleepMonitorData_notexist.html</test_script_entry>
- </description>
- </testcase>
- <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManagerObject_notexist" priority="P3" purpose="Check if interface HumanActivityMonitorManagerObject exists, it should not">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManagerObject_notexist.html</test_script_entry>
- </description>
- </testcase>
- <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_extend" priority="P3" purpose="Check if HumanActivityMonitorManager is extendable">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_extend.html</test_script_entry>
- </description>
- </testcase>
- <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_getHumanActivityData_exist" priority="P0" purpose="Check if HumanActivityMonitorManager::getHumanActivityData() method exists">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_getHumanActivityData_exist.html</test_script_entry>
- </description>
- </testcase>
- <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_in_tizen" priority="P3" purpose="Check if humanactivitymonitor exists in tizen">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_in_tizen.html</test_script_entry>
- </description>
- </testcase>
- <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_notexist" priority="P3" purpose="Check if interface HumanActivityMonitorManager exists, it should not">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_notexist.html</test_script_entry>
- </description>
- </testcase>
- <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_start_exist" priority="P0" purpose="Check if method HumanActivityMonitorManager::start() exists">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_start_exist.html</test_script_entry>
- </description>
- </testcase>
- <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_start_misarg" priority="P2" purpose="Check if HumanActivityMonitorManager::start() throws exception when type and successCallback are missing">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_start_misarg.html</test_script_entry>
- </description>
- </testcase>
- <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_stop_exist" priority="P0" purpose="Check if HumanActivityMonitorManager::stop() method exists">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_stop_exist.html</test_script_entry>
- </description>
- </testcase>
- <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_stop_misarg" priority="P2" purpose="Check if HumanActivityMonitorManager::stop() throws exception when type is missing">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_stop_misarg.html</test_script_entry>
- </description>
- </testcase>
- <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorSuccessCallback_notexist" priority="P3" purpose="Check if HumanActivityMonitorSuccessCallback does not exist">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorSuccessCallback_notexist.html</test_script_entry>
- </description>
- </testcase>
- <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_start_option_TypeMismatch" onload_delay="30" purpose="Check if HumanActivityMonitorManager::start() with incorrect option argument throws exception">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_start_option_TypeMismatch.html</test_script_entry>
- </description>
- </testcase>
- <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_start_changedCallback_TypeMismatch" onload_delay="30" purpose="Check if HumanActivityMonitorManager::start() with incorrect successCallback argument throws exception">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_start_changedCallback_TypeMismatch.html</test_script_entry>
- </description>
- </testcase>
- <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_start_changedCallback_invalid_cb" onload_delay="30" purpose="Check if HumanActivityMonitorManager::start() method throws exception when HumanActivityMonitorSuccessCallback is invalid">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_start_changedCallback_invalid_cb.html</test_script_entry>
- </description>
- </testcase>
- <testcase purpose="Check if readRecorderData throw NotSupportedError called with not supported human activity recorder type" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_readRecorderData_NotSupportedError">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_readRecorderData_NotSupportedError.html</test_script_entry>
- </description>
- </testcase>
- <testcase purpose="Check if readRecorderData throws exception when errorCallback is incorrect" onload_delay="30" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_readRecorderData_errorCallback_TypeMismatch">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_readRecorderData_errorCallback_TypeMismatch.html</test_script_entry>
- </description>
- </testcase>
- <testcase purpose="Check if readRecorderData throws exception when error callback is invalid" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_readRecorderData_errorCallback_invalid_cb">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_readRecorderData_errorCallback_invalid_cb.html</test_script_entry>
- </description>
- </testcase>
- <testcase purpose="Check if readRecorderData exists" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_readRecorderData_exist">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_readRecorderData_exist.html</test_script_entry>
- </description>
- </testcase>
- <testcase purpose="Check if HumanActivityMonitorManager::readRecorderData() called with missing non-optional argument throws an exception" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_readRecorderData_misarg">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_readRecorderData_misarg.html</test_script_entry>
- </description>
- </testcase>
- <testcase purpose="Check if readRecorderData throws exception when query is incorrect" onload_delay="30" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_readRecorderData_query_TypeMismatch">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_readRecorderData_query_TypeMismatch.html</test_script_entry>
- </description>
- </testcase>
- <testcase purpose="Check if readRecorderData throws exception when successCallback is incorrect" onload_delay="30" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_readRecorderData_successCallback_TypeMismatch">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_readRecorderData_successCallback_TypeMismatch.html</test_script_entry>
- </description>
- </testcase>
- <testcase purpose="Check if readRecorderData throws exception when success callback is invalid" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_readRecorderData_successCallback_invalid_cb">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_readRecorderData_successCallback_invalid_cb.html</test_script_entry>
- </description>
- </testcase>
- <testcase purpose="Check if readRecorderData without optional arguments works properly for PRESSURE HumanActivity type" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="manual" onload_delay="150" id="HumanActivityMonitorManager_readRecorderData_type_PRESSURE">
- <description>
- <steps>
- <step order="1">
- <step_desc>Waiting for 1 minutes for the callback.</step_desc>
- <expected>Pass should be shown in the page after 1 minutes.</expected>
- </step>
- </steps>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_readRecorderData_type_PRESSURE.html</test_script_entry>
- </description>
- </testcase>
- <testcase purpose="Check if HumanActivityMonitorManager::startRecorder() throw NotSupportedError called with not supported human activity recorder type" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_startRecorder_NotSupportedError">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_startRecorder_NotSupportedError.html</test_script_entry>
- </description>
- </testcase>
- <testcase purpose="Check if startRecorder exists" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_startRecorder_exist">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_startRecorder_exist.html</test_script_entry>
- </description>
- </testcase>
- <testcase purpose="Check if HumanActivityMonitorManager::startRecorder() called with missing non-optional argument throws an exception" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_startRecorder_misarg">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_startRecorder_misarg.html</test_script_entry>
- </description>
- </testcase>
- <testcase purpose="Check if method HumanActivityMonitorManager::startRecorder() works properly for PRESSURE HumanActivity type" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_startRecorder_type_PRESSURE">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_startRecorder_type_PRESSURE.html</test_script_entry>
- </description>
- </testcase>
- <testcase purpose="Check if HumanActivityMonitorManager::stopRecorder() throw NotSupportedError called with not supported human activity recorder type" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_stopRecorder_NotSupportedError">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_stopRecorder_NotSupportedError.html</test_script_entry>
- </description>
- </testcase>
- <testcase purpose="Check if stopRecorder exists" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_stopRecorder_exist">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_stopRecorder_exist.html</test_script_entry>
- </description>
- </testcase>
- <testcase purpose="Check if HumanActivityMonitorManager::stopRecorder() called with missing non-optional argument throws an exception" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_stopRecorder_misarg">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_stopRecorder_misarg.html</test_script_entry>
- </description>
- </testcase>
- <testcase purpose="Check if method HumanActivityMonitorManager::stopRecorder() works properly for PRESSURE HumanActivity type" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_stopRecorder_type_PRESSURE">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_stopRecorder_type_PRESSURE.html</test_script_entry>
- </description>
- </testcase>
- <testcase purpose="Check if HumanActivityReadRecorderSuccessCallback cannot be called in new expression and as a function or in new expression" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" id="HumanActivityReadRecorderSuccessCallback_notexist">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityReadRecorderSuccessCallback_notexist.html</test_script_entry>
- </description>
- </testcase>
- <testcase purpose="Check if HumanActivityRecorderData cannot be called in new expression and as a function or in new expression" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" id="HumanActivityRecorderData_notexist">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityRecorderData_notexist.html</test_script_entry>
- </description>
- </testcase>
- <testcase purpose="Check if HumanActivityRecorderPressureData have average attribute with proper type, readonly" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="manual" onload_delay="90" id="HumanActivityRecorderPressureData_average_attribute">
- <description>
- <pre_condition>Before run this tc, run HumanActivityMonitorManager_readRecorderData_type_PRESSURE.html first, because we should wait at least 1 minute to get the recorded data after start recorder. But if you tested that TC already, you can run this TC now.</pre_condition>
- <steps>
- <step order="1">
- <step_desc>Waiting for 1 minutes for the callback.</step_desc>
- <expected>Pass should be shown in the page after 1 minutes.</expected>
- </step>
- </steps>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityRecorderPressureData_average_attribute.html</test_script_entry>
- </description>
- </testcase>
- <testcase purpose="Check if HumanActivityRecorderPressureData have endTime attribute with proper type, readonly" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="manual" onload_delay="90" id="HumanActivityRecorderPressureData_endTime_attribute">
- <description>
- <pre_condition>Before run this tc, run HumanActivityMonitorManager_readRecorderData_type_PRESSURE.html first, because we should wait at least 1 minute to get the recorded data after start recorder. But if you tested that TC already, you can run this TC now.</pre_condition>
- <steps>
- <step order="1">
- <step_desc>Waiting for 1 minutes for the callback.</step_desc>
- <expected>Pass should be shown in the page after 1 minutes.</expected>
- </step>
- </steps>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityRecorderPressureData_endTime_attribute.html</test_script_entry>
- </description>
- </testcase>
- <testcase purpose="Check if HumanActivityRecorderPressureData have max attribute with proper type, readonly" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="manual" onload_delay="90" id="HumanActivityRecorderPressureData_max_attribute">
- <description>
- <pre_condition>Before run this tc, run HumanActivityMonitorManager_readRecorderData_type_PRESSURE.html first, because we should wait at least 1 minute to get the recorded data after start recorder. But if you tested that TC already, you can run this TC now.</pre_condition>
- <steps>
- <step order="1">
- <step_desc>Waiting for 1 minutes for the callback.</step_desc>
- <expected>Pass should be shown in the page after 1 minutes.</expected>
- </step>
- </steps>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityRecorderPressureData_max_attribute.html</test_script_entry>
- </description>
- </testcase>
- <testcase purpose="Check if HumanActivityRecorderPressureData have min attribute with proper type, readonly" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="manual" onload_delay="90" id="HumanActivityRecorderPressureData_min_attribute">
- <description>
- <pre_condition>Before run this tc, run HumanActivityMonitorManager_readRecorderData_type_PRESSURE.html first, because we should wait at least 1 minute to get the recorded data after start recorder. But if you tested that TC already, you can run this TC now.</pre_condition>
- <steps>
- <step order="1">
- <step_desc>Waiting for 1 minutes for the callback.</step_desc>
- <expected>Pass should be shown in the page after 1 minutes.</expected>
- </step>
- </steps>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityRecorderPressureData_min_attribute.html</test_script_entry>
- </description>
- </testcase>
- <testcase purpose="Check if HumanActivityRecorderPressureData cannot be called in new expression and as a function or in new expression" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" id="HumanActivityRecorderPressureData_notexist">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityRecorderPressureData_notexist.html</test_script_entry>
- </description>
- </testcase>
- <testcase purpose="Check if HumanActivityRecorderPressureData have startTime attribute with proper type, readonly" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="manual" onload_delay="90" id="HumanActivityRecorderPressureData_startTime_attribute">
- <description>
- <pre_condition>Before run this tc, run HumanActivityMonitorManager_readRecorderData_type_PRESSURE.html first, because we should wait at least 1 minute to get the recorded data after start recorder. But if you tested that TC already, you can run this TC now.</pre_condition>
- <steps>
- <step order="1">
- <step_desc>Waiting for 1 minutes for the callback.</step_desc>
- <expected>Pass should be shown in the page after 1 minutes.</expected>
- </step>
- </steps>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityRecorderPressureData_startTime_attribute.html</test_script_entry>
- </description>
- </testcase>
- </set>
- <set name="HumanActivityMonitor_with_activity_recognition">
- <capabilities>
- <capability name="http://tizen.org/feature/sensor.activity_recognition"/>
- </capabilities>
- <testcase purpose="Check if the method addActivityRecognitionListener of HumanActivityMonitorManager returns proper value" onload_delay="60" component="Tizen Device APIs/HumanActivityMonitor/HumanActivityMonitorManager" execution_type="manual" priority="P1" id="HumanActivityMonitorManager_addActivityRecognitionListener_STATIONARY">
- <description>
- <steps>
- <step order="1">
- <step_desc>Press run button, then keep the device stationary</step_desc>
- <expected>Pass</expected>
- </step>
- </steps>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_addActivityRecognitionListener_STATIONARY.html</test_script_entry>
- </description>
- </testcase>
- <testcase purpose="Check if the method addActivityRecognitionListener of HumanActivityMonitorManager returns proper value" onload_delay="60" component="Tizen Device APIs/HumanActivityMonitor/HumanActivityMonitorManager" execution_type="manual" priority="P1" id="HumanActivityMonitorManager_addActivityRecognitionListener_WALKING">
- <description>
- <steps>
- <step order="1">
- <step_desc>Press run button. Pretend walking with the device.</step_desc>
- <expected>Pass</expected>
- </step>
- </steps>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_addActivityRecognitionListener_WALKING.html</test_script_entry>
- </description>
- </testcase>
- <testcase purpose="Check if the method addActivityRecognitionListener of HumanActivityMonitorManager throws TypeMismatchError when invalid type value is assigned for errorCallback parameter" component="Tizen Device APIs/HumanActivityMonitor/HumanActivityMonitorManager" execution_type="auto" priority="P2" id="HumanActivityMonitorManager_addActivityRecognitionListener_errorCallback_TypeMismatch">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_addActivityRecognitionListener_errorCallback_TypeMismatch.html</test_script_entry>
- </description>
- </testcase>
- <testcase purpose="Check if the method addActivityRecognitionListener of HumanActivityMonitorManager exist" component="Tizen Device APIs/HumanActivityMonitor/HumanActivityMonitorManager" execution_type="auto" priority="P1" id="HumanActivityMonitorManager_addActivityRecognitionListener_exist">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_addActivityRecognitionListener_exist.html</test_script_entry>
- </description>
- </testcase>
- <testcase purpose="Check if the method addActivityRecognitionListener of HumanActivityMonitorManager throws TypeMismatchError when invalid value is assigned for type parameter" component="Tizen Device APIs/HumanActivityMonitor/HumanActivityMonitorManager" execution_type="auto" priority="P2" id="HumanActivityMonitorManager_addActivityRecognitionListener_type_TypeMismatch">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_addActivityRecognitionListener_listener_TypeMismatch.html</test_script_entry>
- </description>
- </testcase>
- <testcase purpose="Check if the method addActivityRecognitionListener of HumanActivityMonitorManager throws TypeMismatchError when no param assigned" component="Tizen Device APIs/HumanActivityMonitor/HumanActivityMonitorManager" execution_type="auto" priority="P2" id="HumanActivityMonitorManager_addActivityRecognitionListener_misarg">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_addActivityRecognitionListener_misarg.html</test_script_entry>
- </description>
- </testcase>
- <testcase purpose="Check if the method addActivityRecognitionListener of HumanActivityMonitorManager throws TypeMismatchError when invalid type value is assigned for listener parameter" component="Tizen Device APIs/HumanActivityMonitor/HumanActivityMonitorManager" execution_type="auto" priority="P2" id="HumanActivityMonitorManager_addActivityRecognitionListener_listener_TypeMismatch">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_addActivityRecognitionListener_type_TypeMismatch.html</test_script_entry>
- </description>
- </testcase>
- <testcase purpose="Check if the method addActivityRecognitionListener of HumanActivityMonitorManager returns proper value with errorcallback assigned" onload_delay="60" component="Tizen Device APIs/HumanActivityMonitor/HumanActivityMonitorManager" execution_type="manual" priority="P1" id="HumanActivityMonitorManager_addActivityRecognitionListener_with_errorCallback">
- <description>
- <steps>
- <step order="1">
- <step_desc>Press run button, then keep the device stationary</step_desc>
- <expected>Pass</expected>
- </step>
- </steps>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_addActivityRecognitionListener_with_errorCallback.html</test_script_entry>
- </description>
- </testcase>
- <testcase purpose="Check if the method addActivityRecognitionListener of HumanActivityMonitorManager returns proper value with errorcallback null assigned" onload_delay="60" component="Tizen Device APIs/HumanActivityMonitor/HumanActivityMonitorManager" execution_type="manual" priority="P1" id="HumanActivityMonitorManager_addActivityRecognitionListener_with_errorCallback_null">
- <description>
- <steps>
- <step order="1">
- <step_desc>Press run button, then keep the device stationary</step_desc>
- <expected>Pass</expected>
- </step>
- </steps>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_addActivityRecognitionListener_with_errorCallback_null.html</test_script_entry>
- </description>
- </testcase>
- <testcase purpose="Check if the method removeActivityRecognitionListener of HumanActivityMonitorManager returns proper value" onload_delay="20" component="Tizen Device APIs/TBD/HumanActivityMonitor" execution_type="manual" priority="P1" id="HumanActivityMonitorManager_removeActivityRecognitionListener_STATIONARY">
- <description>
- <steps>
- <step order="1">
- <step_desc>Press run button, then pretend walking with the device for 15 seconds</step_desc>
- <expected>Pass</expected>
- </step>
- </steps>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_removeActivityRecognitionListener.html</test_script_entry>
- </description>
- </testcase>
- <testcase purpose="Check if the method removeActivityRecognitionListener of HumanActivityMonitorManager exist" component="Tizen Device APIs/HumanActivityMonitor/HumanActivityMonitorManager" execution_type="auto" priority="P1" id="HumanActivityMonitorManager_removeActivityRecognitionListener_exist">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_removeActivityRecognitionListener_exist.html</test_script_entry>
- </description>
- </testcase>
- <testcase purpose="Check if the method removeActivityRecognitionListener of HumanActivityMonitorManager ignores invalid id" onload_delay="3" component="Tizen Device APIs/HumanActivityMonitor/HumanActivityMonitorManager" execution_type="auto" priority="P2" id="HumanActivityMonitorManager_removeActivityRecognitionListener_invalid_id">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_removeActivityRecognitionListener_invalid_id.html</test_script_entry>
- </description>
- </testcase>
- <testcase purpose="Check if the method removeActivityRecognitionListener of HumanActivityMonitorManager ignores invalid id when no param assigned (undefined converted to 0)" component="Tizen Device APIs/HumanActivityMonitor/HumanActivityMonitorManager" execution_type="auto" priority="P2" id="HumanActivityMonitorManager_removeActivityRecognitionListener_misarg">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_removeActivityRecognitionListener_misarg.html</test_script_entry>
- </description>
- </testcase>
- <testcase purpose="Check if the method removeActivityRecognitionListener of HumanActivityMonitorManager returns proper value with errorcallback assigned" onload_delay="20" component="Tizen Device APIs/TBD/HumanActivityMonitor" execution_type="manual" priority="P1" id="HumanActivityMonitorManager_removeActivityRecognitionListener_STATIONARY">
- <description>
- <steps>
- <step order="1">
- <step_desc>Press run button, then pretend walking with the device for 15 seconds</step_desc>
- <expected>Pass</expected>
- </step>
- </steps>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_removeActivityRecognitionListener_with_errorCallback.html</test_script_entry>
- </description>
- </testcase>
- <testcase purpose="Check if the method removeActivityRecognitionListener of HumanActivityMonitorManager returns proper value with errorcallback null assigned" onload_delay="20" component="Tizen Device APIs/TBD/HumanActivityMonitor" execution_type="manual" priority="P1" id="HumanActivityMonitorManager_removeActivityRecognitionListener_STATIONARY">
- <description>
- <steps>
- <step order="1">
- <step_desc>Press run button, then pretend walking with the device for 15 seconds</step_desc>
- <expected>Pass</expected>
- </step>
- </steps>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_removeActivityRecognitionListener_with_errorCallback_null.html</test_script_entry>
- </description>
- </testcase>
- </set>
- <set name="HumanActivityMonitor_with_pedometer">
- <capabilities>
- <capability name="http://tizen.org/feature/sensor.pedometer"/>
- </capabilities>
- <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_getHumanActivityData" priority="P1" purpose="Check if method getHumanActivityData of HumanActivityMonitorManager returns properly value">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_getHumanActivityData.html</test_script_entry>
- </description>
- </testcase>
- <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_getHumanActivityData_errorCallback_TypeMismatch" onload_delay="30" priority="P2" purpose="Check if HumanActivityMonitorManager::getHumanActivityData() with incorrect errorCallback argument throws exception">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_getHumanActivityData_errorCallback_TypeMismatch.html</test_script_entry>
- </description>
- </testcase>
- <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_getHumanActivityData_errorCallback_invalid_cb" onload_delay="30" priority="P2" purpose="Check if HumanActivityMonitorManager::getHumanActivityData() method throws exception when errorCallback is invalid">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_getHumanActivityData_errorCallback_invalid_cb.html</test_script_entry>
- </description>
- </testcase>
- <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_getHumanActivityData_errorCallback_invoked" onload_delay="30" priority="P2" purpose="Check exception in error callback of HumanActivityMonitorManager::getHumanActivityData() method">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_getHumanActivityData_errorCallback_invoked.html</test_script_entry>
- </description>
- </testcase>
- <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_getHumanActivityData_misarg" priority="P2" purpose="Check if HumanActivityMonitorManager::getHumanActivityData() throws exception when successCallback is missing">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_getHumanActivityData_misarg.html</test_script_entry>
- </description>
- </testcase>
- <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_getHumanActivityData_successCallback_TypeMismatch" onload_delay="30" priority="P2" purpose="Check if HumanActivityMonitorManager::getHumanActivityData() with incorrect successCallback argument throws exception">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_getHumanActivityData_successCallback_TypeMismatch.html</test_script_entry>
- </description>
- </testcase>
- <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_getHumanActivityData_successCallback_invalid_cb" onload_delay="30" priority="P2" purpose="Check if HumanActivityMonitorManager::getHumanActivityData() method throws exception when successCallback is invalid">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_getHumanActivityData_successCallback_invalid_cb.html</test_script_entry>
- </description>
- </testcase>
- <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_getHumanActivityData_type_PEDOMETER" onload_delay="30" priority="P1" purpose="Check if HumanActivityMonitorManager::getHumanActivityData() method works properly">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_getHumanActivityData_type_PEDOMETER.html</test_script_entry>
- </description>
- </testcase>
- <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_getHumanActivityData_with_errorCallback" onload_delay="30" priority="P1" purpose="Check if HumanActivityMonitorManager::getHumanActivityData() method works properly with optional argument">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_getHumanActivityData_with_errorCallback.html</test_script_entry>
- </description>
- </testcase>
- <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_start_changedCallback_TypeMismatch" onload_delay="30" priority="P2" purpose="Check if HumanActivityMonitorManager::start() with incorrect successCallback argument throws exception">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_start_changedCallback_TypeMismatch.html</test_script_entry>
- </description>
- </testcase>
- <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_start_errorCallback_TypeMismatch" onload_delay="30" priority="P2" purpose="Check if HumanActivityMonitorManager::start() with incorrect errorCallback argument throws exception">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_start_errorCallback_TypeMismatch.html</test_script_entry>
- </description>
- </testcase>
- <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_start_type_PEDOMETER" priority="P1" purpose="Check if method HumanActivityMonitorManager::start() works properly for PEDOMETER">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_start_type_PEDOMETER.html</test_script_entry>
- </description>
- </testcase>
- <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_start_changedCallback_invalid_cb" onload_delay="30" purpose="Check if HumanActivityMonitorManager::start() method throws exception when HumanActivityMonitorSuccessCallback is invalid">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_start_changedCallback_invalid_cb.html</test_script_entry>
- </description>
- </testcase>
- <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_start_errorCallback_invalid_cb" onload_delay="30" purpose="Check if HumanActivityMonitorManager::start() method throws exception when ErrorCallback is invalid">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_start_errorCallback_invalid_cb.html</test_script_entry>
- </description>
- </testcase>
- <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_stop_type_PEDOMETER" priority="P1" purpose="Check if HumanActivityMonitorManager::stop() method works properly">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_stop_type_PEDOMETER.html</test_script_entry>
- </description>
- </testcase>
- <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityPedometerData_cumulativeCalorie_attribute" onload_delay="9" priority="P1" purpose="Check if HumanActivityPedometerData::cumulativeCalorie exists, has type double, and is readonly">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityPedometerData_cumulativeCalorie_attribute.html</test_script_entry>
- </description>
- </testcase>
- <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityPedometerData_cumulativeDistance_attribute" onload_delay="9" priority="P1" purpose="Check if HumanActivityPedometerData::cumulativeDistance exists, has type double, and is readonly">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityPedometerData_cumulativeDistance_attribute.html</test_script_entry>
- </description>
- </testcase>
- <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityPedometerData_cumulativeRunStepCount_attribute" onload_delay="9" priority="P1" purpose="Check if HumanActivityPedometerData::cumulativeRunStepCount exists, has type double, and is readonly">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityPedometerData_cumulativeRunStepCount_attribute.html</test_script_entry>
- </description>
- </testcase>
- <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityPedometerData_cumulativeTotalStepCount_attribute" onload_delay="9" priority="P1" purpose="Check if HumanActivityPedometerData::cumulativeTotalStepCount exists, has type double, and is readonly">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityPedometerData_cumulativeTotalStepCount_attribute.html</test_script_entry>
- </description>
- </testcase>
- <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityPedometerData_cumulativeWalkStepCount_attribute" onload_delay="9" priority="P1" purpose="Check if HumanActivityPedometerData::cumulativeWalkStepCount exists, has type double, and is readonly">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityPedometerData_cumulativeWalkStepCount_attribute.html</test_script_entry>
- </description>
- </testcase>
- <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityPedometerData_stepCountDifferences_attribute" onload_delay="9" priority="P1" purpose="Check if HumanActivityPedometerData::stepCountDifferences exists, has type double, and is readonly">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityPedometerData_stepCountDifferences_attribute.html</test_script_entry>
- </description>
- </testcase>
- <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityPedometerData_extend" onload_delay="90" priority="P3" purpose="Check if HumanActivityPedometerData object is extendable">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityPedometerData_extend.html</test_script_entry>
- </description>
- </testcase>
- <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityPedometerData_speed_attribute" onload_delay="9" priority="P1" purpose="Check if HumanActivityPedometerData::speed exists, has type double, and is readonly">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityPedometerData_speed_attribute.html</test_script_entry>
- </description>
- </testcase>
- <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityPedometerData_stepStatus_attribute" onload_delay="9" priority="P1" purpose="Check if HumanActivityPedometerData::stepStatus exists, has type string, and is readonly">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityPedometerData_stepStatus_attribute.html</test_script_entry>
- </description>
- </testcase>
- <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityPedometerData_walkingFrequency_attribute" onload_delay="9" priority="P1" purpose="Check if HumanActivityPedometerData::walkingFrequency exists, has type double, and is readonly">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityPedometerData_walkingFrequency_attribute.html</test_script_entry>
- </description>
- </testcase>
- <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityPedometerData_notexist" priority="P3" purpose="Check if interface HumanActivityPedometerData exists, it should not">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityPedometerData_notexist.html</test_script_entry>
- </description>
- </testcase>
- <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityAccumulativePedometerInfo_notexist" priority="P3" purpose="Check if interface HumanActivityAccumulativePedometerInfo exists, it should not">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityAccumulativePedometerInfo_notexist.html</test_script_entry>
- </description>
- </testcase>
- <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_setAccumulativePedometerListener_changeCallback_TypeMismatch" onload_delay="30" priority="P2" purpose="Check if HumanActivityMonitorManager::setAccumulativePedometerListener() with incorrect changeCallback argument throws exception">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_setAccumulativePedometerListener_changeCallback_TypeMismatch.html</test_script_entry>
- </description>
- </testcase>
- <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_setAccumulativePedometerListener_changeCallback_TypeMismatch" onload_delay="30" priority="P2" purpose="Check if HumanActivityMonitorManager::setAccumulativePedometerListener() with incorrect changeCallback argument throws exception">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_setAccumulativePedometerListener_changeCallback_TypeMismatch.html</test_script_entry>
- </description>
- </testcase>
- <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_setAccumulativePedometerListener_changeCallback_invalid_cb" onload_delay="30" priority="P2" purpose="Check if HumanActivityMonitorManager::setAccumulativePedometerListener() method throws exception when changeCallback is invalid">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_setAccumulativePedometerListener_changeCallback_invalid_cb.html</test_script_entry>
- </description>
- </testcase>
- <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_setAccumulativePedometerListener_exist" priority="P0" purpose="Check if method HumanActivityMonitorManager::setAccumulativePedometerListener() exists">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_setAccumulativePedometerListener_exist.html</test_script_entry>
- </description>
- </testcase>
- <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_setAccumulativePedometerListener_misarg" priority="P2" purpose="Check if HumanActivityMonitorManager::setAccumulativePedometerListener() throws exception when changeCallback is missing">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_setAccumulativePedometerListener_misarg.html</test_script_entry>
- </description>
- </testcase>
- <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_unsetAccumulativePedometerListener" onload_delay="30" priority="P1" purpose="Check if HumanActivityMonitorManager::unsetAccumulativePedometerListener() method works properly">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_unsetAccumulativePedometerListener.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion category="Tizen Device API Specifications" element_name="unsetAccumulativePedometerListener" element_type="method" interface="humanactivitymonitor" section="Sensor" specification="HumanActivityMonitor"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_unsetAccumulativePedometerListener_exist" priority="P0" purpose="Check if HumanActivityMonitorManager::unsetAccumulativePedometerListener() method exists">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_unsetAccumulativePedometerListener_exist.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion category="Tizen Device API Specifications" element_name="unsetAccumulativePedometerListener" element_type="method" interface="HumanActivityMonitorManager" section="Sensor" specification="HumanActivityMonitor"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_unsetAccumulativePedometerListener_extra_argument" priority="P1" purpose="Check if HumanActivityMonitorManager::unsetAccumulativePedometerListener() method with extra argument">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_unsetAccumulativePedometerListener_extra_argument.html</test_script_entry>
- </description>
- <specs>
- <spec>
- <spec_assertion category="Tizen Device API Specifications" element_name="unsetAccumulativePedometerListener" element_type="method" interface="HumanActivityMonitorManager" section="Sensor" specification="HumanActivityMonitor"/>
- <spec_url>https://developer.tizen.org/help/topic/org.tizen.web.device.apireference/tizen/humanactivitymonitor.html</spec_url>
- <spec_statement>TBD</spec_statement>
- </spec>
- </specs>
- </testcase>
- <testcase purpose="Check if the specifies the pedometer user's current movement type is NOT_MOVING" onload_delay="60" component="Tizen Device APIs/HumanActivityMonitor/HumanActivityMonitorManager" execution_type="manual" priority="P1" id="HumanActivityMonitorManager_getHumanActivityData_stepStatus_NOT_MOVING">
- <description>
- <steps>
- <step order="1">
- <step_desc>Press run button, then keep the device stationary.</step_desc>
- <expected>Pass</expected>
- </step>
- </steps>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_getHumanActivityData_stepStatus_NOT_MOVING.html</test_script_entry>
- </description>
- </testcase>
- <testcase purpose="Check if the specifies the pedometer user's current movement type is WALKING" onload_delay="60" component="Tizen Device APIs/HumanActivityMonitor/HumanActivityMonitorManager" execution_type="manual" priority="P1" id="HumanActivityMonitorManager_getHumanActivityData_stepStatus_WALKING">
- <description>
- <steps>
- <step order="1">
- <step_desc>Press run button. Pretend walking with the device.</step_desc>
- <expected>Pass</expected>
- </step>
- </steps>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_getHumanActivityData_stepStatus_WALKING.html</test_script_entry>
- </description>
- </testcase>
- <testcase purpose="Check if the specifies the pedometer user's current movement type is RUNNING" onload_delay="60" component="Tizen Device APIs/HumanActivityMonitor/HumanActivityMonitorManager" execution_type="manual" priority="P1" id="HumanActivityMonitorManager_getHumanActivityData_stepStatus_RUNNING">
- <description>
- <steps>
- <step order="1">
- <step_desc>Press run button. Pretend running with the device.</step_desc>
- <expected>Pass</expected>
- </step>
- </steps>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_getHumanActivityData_stepStatus_RUNNING.html</test_script_entry>
- </description>
- </testcase>
- <testcase purpose="Check if readRecorderData can be called with empty object as query argument" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="manual" onload_delay="60" id="HumanActivityMonitorManager_readRecorderData_query_empty">
- <description>
- <steps>
- <step order="1">
- <step_desc>Press run button. Pretend walking with the device.</step_desc>
- <expected>Pass</expected>
- </step>
- </steps>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_readRecorderData_query_empty.html</test_script_entry>
- </description>
- </testcase>
- <testcase purpose="Check if readRecorderData without optional arguments works properly for PEDOMETER HumanActivity type" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="manual" onload_delay="60" id="HumanActivityMonitorManager_readRecorderData_type_PEDOMETER">
- <description>
- <steps>
- <step order="1">
- <step_desc>Press run button. Pretend walking with the device.</step_desc>
- <expected>Pass</expected>
- </step>
- </steps>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_readRecorderData_type_PEDOMETER.html</test_script_entry>
- </description>
- </testcase>
- <testcase purpose="Check if readRecorderData with optional arguments works properly" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="manual" onload_delay="60" id="HumanActivityMonitorManager_readRecorderData_with_errorCallback">
- <description>
- <steps>
- <step order="1">
- <step_desc>Press run button. Pretend walking with the device.</step_desc>
- <expected>Pass</expected>
- </step>
- </steps>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_readRecorderData_with_errorCallback.html</test_script_entry>
- </description>
- </testcase>
- <testcase purpose="Check if HumanActivityMonitorManager::startRecorder() can be called with empty object as option argument" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_startRecorder_option_empty">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_startRecorder_option_empty.html</test_script_entry>
- </description>
- </testcase>
- <testcase purpose="Check if method HumanActivityMonitorManager::startRecorder() works properly for PEDOMETER HumanActivity type" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_startRecorder_type_PEDOMETER">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_startRecorder_type_PEDOMETER.html</test_script_entry>
- </description>
- </testcase>
- <testcase purpose="Check if method HumanActivityMonitorManager::stopRecorder() works properly for PEDOMETER HumanActivity type" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_stopRecorder_type_PEDOMETER">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_stopRecorder_type_PEDOMETER.html</test_script_entry>
- </description>
- </testcase>
- <testcase purpose="Check if HumanActivityRecorderPedometerData have calorie attribute with proper type, readonly" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="manual" onload_delay="60" id="HumanActivityRecorderPedometerData_calorie_attribute">
- <description>
- <steps>
- <step order="1">
- <step_desc>Press run button. Pretend walking with the device.</step_desc>
- <expected>Pass</expected>
- </step>
- </steps>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityRecorderPedometerData_calorie_attribute.html</test_script_entry>
- </description>
- </testcase>
- <testcase purpose="Check if HumanActivityRecorderPedometerData have distance attribute with proper type, readonly" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="manual" onload_delay="60" id="HumanActivityRecorderPedometerData_distance_attribute">
- <description>
- <steps>
- <step order="1">
- <step_desc>Press run button. Pretend walking with the device.</step_desc>
- <expected>Pass</expected>
- </step>
- </steps>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityRecorderPedometerData_distance_attribute.html</test_script_entry>
- </description>
- </testcase>
- <testcase purpose="Check if HumanActivityRecorderPedometerData have endTime attribute with proper type, readonly" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="manual" onload_delay="60" id="HumanActivityRecorderPedometerData_endTime_attribute">
- <description>
- <steps>
- <step order="1">
- <step_desc>Press run button. Pretend walking with the device.</step_desc>
- <expected>Pass</expected>
- </step>
- </steps>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityRecorderPedometerData_endTime_attribute.html</test_script_entry>
- </description>
- </testcase>
- <testcase purpose="Check if HumanActivityRecorderPedometerData cannot be called in new expression and as a function or in new expression" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" id="HumanActivityRecorderPedometerData_notexist">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityRecorderPedometerData_notexist.html</test_script_entry>
- </description>
- </testcase>
- <testcase purpose="Check if HumanActivityRecorderPedometerData have runStepCount attribute with proper type, readonly" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="manual" onload_delay="60" id="HumanActivityRecorderPedometerData_runStepCount_attribute">
- <description>
- <steps>
- <step order="1">
- <step_desc>Press run button. Pretend walking with the device.</step_desc>
- <expected>Pass</expected>
- </step>
- </steps>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityRecorderPedometerData_runStepCount_attribute.html</test_script_entry>
- </description>
- </testcase>
- <testcase purpose="Check if HumanActivityRecorderPedometerData have startTime attribute with proper type, readonly" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="manual" onload_delay="60" id="HumanActivityRecorderPedometerData_startTime_attribute">
- <description>
- <steps>
- <step order="1">
- <step_desc>Press run button. Pretend walking with the device.</step_desc>
- <expected>Pass</expected>
- </step>
- </steps>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityRecorderPedometerData_startTime_attribute.html</test_script_entry>
- </description>
- </testcase>
- <testcase purpose="Check if HumanActivityRecorderPedometerData have totalStepCount attribute with proper type, readonly" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="manual" onload_delay="60" id="HumanActivityRecorderPedometerData_totalStepCount_attribute">
- <description>
- <steps>
- <step order="1">
- <step_desc>Press run button. Pretend walking with the device.</step_desc>
- <expected>Pass</expected>
- </step>
- </steps>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityRecorderPedometerData_totalStepCount_attribute.html</test_script_entry>
- </description>
- </testcase>
- <testcase purpose="Check if HumanActivityRecorderPedometerData have walkStepCount attribute with proper type, readonly" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="manual" onload_delay="60" id="HumanActivityRecorderPedometerData_walkStepCount_attribute">
- <description>
- <steps>
- <step order="1">
- <step_desc>Press run button. Pretend walking with the device.</step_desc>
- <expected>Pass</expected>
- </step>
- </steps>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityRecorderPedometerData_walkStepCount_attribute.html</test_script_entry>
- </description>
- </testcase>
- </set>
- <set name="HumanActivityMonitor_with_wrist_up">
- <capabilities>
- <capability name="http://tizen.org/feature/sensor.wrist_up"/>
- </capabilities>
- <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_start_type_WRIST_UP" priority="P1" purpose="Check if method HumanActivityMonitorManager::start() works properly for WRIST_UP">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_start_type_WRIST_UP.html</test_script_entry>
- </description>
- </testcase>
- <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_stop_type_WRIST_UP" priority="P1" purpose="Check if HumanActivityMonitorManager::stop() method with WRIST_UP works properly">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_stop_type_WRIST_UP.html</test_script_entry>
- </description>
- </testcase>
- </set>
- <set name="HumanActivityMonitor_heart_rate_monitor">
- <capabilities>
- <capability name="http://tizen.org/feature/sensor.heart_rate_monitor"/>
- </capabilities>
- <testcase purpose="Check if HumanActivityMonitorManager::getHumanActivityData() method works properly for HumanActivityType HRM" onload_delay="30" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_getHumanActivityData_type_HRM">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_getHumanActivityData_type_HRM.html</test_script_entry>
- </description>
- </testcase>
- <testcase purpose="Check if method HumanActivityMonitorManager::start() works properly for HRM HumanActivity type" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_start_type_HRM">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_start_type_HRM.html</test_script_entry>
- </description>
- </testcase>
- <testcase purpose="Check if HumanActivityMonitorManager::stop() method works properly for HumanActivity type HRM" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_stop_type_HRM">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_stop_type_HRM.html</test_script_entry>
- </description>
- </testcase>
- <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityHRMData_heartRate_attribute" ondelay="9" purpose="Check if HumanActivityHRMData heartRate attribute">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityHRMData_heartRate_attribute.html</test_script_entry>
- </description>
- </testcase>
- <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityHRMData_rRInterval_attribute" ondelay="9" purpose="Check if HumanActivityHRMData rRInterval attribute">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityHRMData_rRInterval_attribute.html</test_script_entry>
- </description>
- </testcase>
- <!-- <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorOption_callbackInterval_type_HRM" purpose="Check if method HumanActivityMonitorOption::callbackInterval works properly for HRM HumanActivity type">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorOption_callbackInterval_type_HRM.html</test_script_entry>
- </description>
- </testcase>
- <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorOption_callbackInterval_type_HRM_default" purpose="Check if method HumanActivityMonitorOption::callbackInterval works properly when set to null">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorOption_callbackInterval_type_HRM_default.html</test_script_entry>
- </description>
- </testcase> -->
- <testcase purpose="Check if readRecorderData without optional arguments works properly for HRM HumanActivity type" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="manual" onload_delay="1500" id="HumanActivityMonitorManager_readRecorderData_type_HRM">
- <description>
- <steps>
- <step order="1">
- <step_desc>Waiting for 10 minutes for the callback.</step_desc>
- <expected>Pass should be shown in the page after 10 minutes.</expected>
- </step>
- </steps>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_readRecorderData_type_HRM.html</test_script_entry>
- </description>
- </testcase>
- <testcase purpose="Check if method HumanActivityMonitorManager::startRecorder() works properly for HRM HumanActivity type" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_startRecorder_type_HRM">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_startRecorder_type_HRM.html</test_script_entry>
- </description>
- </testcase>
- <testcase purpose="Check if method HumanActivityMonitorManager::startRecorder() works properly with optional argument" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_startRecorder_with_option">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_startRecorder_with_option.html</test_script_entry>
- </description>
- </testcase>
- <testcase purpose="Check if method HumanActivityMonitorManager::stopRecorder() works properly for HRM HumanActivity type" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_stopRecorder_type_HRM">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_stopRecorder_type_HRM.html</test_script_entry>
- </description>
- </testcase>
- <testcase purpose="Check if HumanActivityReadRecorderSuccessCallback onsuccess is called and if its arguments have proper type" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="manual" onload_delay="60" id="HumanActivityReadRecorderSuccessCallback_onsuccess">
- <description>
- <pre_condition>Before run this tc, run HumanActivityMonitorManager_readRecorderData_type_HRM.html first, because we should wait at least 10 minutes to get the recorded data after start recorder. But if you tested that TC already, you can run this TC now.</pre_condition>
- <steps>
- <step order="1">
- <step_desc>Waiting for 10 minutes for the callback.</step_desc>
- <expected>Pass should be shown in the page after 10 minutes.</expected>
- </step>
- </steps>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityReadRecorderSuccessCallback_onsuccess.html</test_script_entry>
- </description>
- </testcase>
- <testcase purpose="Check if HumanActivityRecorderHRMData have endTime attribute with proper type, readonly" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="manual" onload_delay="60" id="HumanActivityRecorderHRMData_endTime_attribute">
- <description>
- <pre_condition>Before run this tc, run HumanActivityMonitorManager_readRecorderData_type_HRM.html first, because we should wait at least 10 minutes to get the recorded data after start recorder. But if you tested that TC already, you can run this TC now.</pre_condition>
- <steps>
- <step order="1">
- <step_desc>Waiting for 10 minutes for the callback.</step_desc>
- <expected>Pass should be shown in the page after 10 minutes.</expected>
- </step>
- </steps>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityRecorderHRMData_endTime_attribute.html</test_script_entry>
- </description>
- </testcase>
- <testcase purpose="Check if HumanActivityRecorderHRMData have heartRate attribute with proper type, readonly" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="manual" onload_delay="60" id="HumanActivityRecorderHRMData_heartRate_attribute">
- <description>
- <pre_condition>Before run this tc, run HumanActivityMonitorManager_readRecorderData_type_HRM.html first, because we should wait at least 10 minutes to get the recorded data after start recorder. But if you tested that TC already, you can run this TC now.</pre_condition>
- <steps>
- <step order="1">
- <step_desc>Waiting for 10 minutes for the callback.</step_desc>
- <expected>Pass should be shown in the page after 10 minutes.</expected>
- </step>
- </steps>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityRecorderHRMData_heartRate_attribute.html</test_script_entry>
- </description>
- </testcase>
- <testcase purpose="Check if HumanActivityRecorderHRMData cannot be called in new expression and as a function or in new expression" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" id="HumanActivityRecorderHRMData_notexist">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityRecorderHRMData_notexist.html</test_script_entry>
- </description>
- </testcase>
- <testcase purpose="Check if HumanActivityRecorderHRMData have startTime attribute with proper type, readonly" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="manual" onload_delay="60" id="HumanActivityRecorderHRMData_startTime_attribute">
- <description>
- <pre_condition>Before run this tc, run HumanActivityMonitorManager_readRecorderData_type_HRM.html first, because we should wait at least 10 minutes to get the recorded data after start recorder. But if you tested that TC already, you can run this TC now.</pre_condition>
- <steps>
- <step order="1">
- <step_desc>Waiting for 10 minutes for the callback.</step_desc>
- <expected>Pass should be shown in the page after 10 minutes.</expected>
- </step>
- </steps>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityRecorderHRMData_startTime_attribute.html</test_script_entry>
- </description>
- </testcase>
- </set>
- <set name="HumanActivityMonitor_location_batch">
- <capabilities>
- <capability name="http://tizen.org/feature/location.batch"/>
- </capabilities>
- <testcase purpose="Check if method HumanActivityMonitorManager::start() works properly for GPS HumanActivity type with optional argument" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_start_with_option">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_start_with_option.html</test_script_entry>
- </description>
- </testcase>
- <testcase purpose="Check if method HumanActivityMonitorManager::start() works properly for GPS HumanActivity type" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_start_type_GPS">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_start_type_GPS.html</test_script_entry>
- </description>
- </testcase>
- <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_start_option_empty" onload_delay="30" purpose="Check if HumanActivityMonitorManager::start() can be called with empty object as option argument">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_start_option_empty.html</test_script_entry>
- </description>
- </testcase>
- <testcase purpose="Check if HumanActivityMonitorManager::stop() method works properly for HumanActivity type GPS" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_stop_type_GPS">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_stop_type_GPS.html</test_script_entry>
- </description>
- </testcase>
- <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityGPSInfo_altitude_attribute" purpose="Check if HumanActivityGPSInfo altitude attribute">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityGPSInfo_altitude_attribute.html</test_script_entry>
- </description>
- </testcase>
- <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityGPSInfo_errorRange_attribute" purpose="Check if HumanActivityGPSInfo errorRange attribute">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityGPSInfo_errorRange_attribute.html</test_script_entry>
- </description>
- </testcase>
- <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityGPSInfo_latitude_attribute" purpose="Check if HumanActivityGPSInfo latitude attribute">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityGPSInfo_latitude_attribute.html</test_script_entry>
- </description>
- </testcase>
- <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityGPSInfo_longitude_attribute" purpose="Check if HumanActivityGPSInfo longitude attribute">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityGPSInfo_longitude_attribute.html</test_script_entry>
- </description>
- </testcase>
- <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityGPSInfo_speed_attribute" purpose="Check if HumanActivityGPSInfo speed attribute">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityGPSInfo_speed_attribute.html</test_script_entry>
- </description>
- </testcase>
- <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityGPSInfo_timestamp_attribute" purpose="Check if HumanActivityGPSInfo timestamp attribute">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityGPSInfo_timestamp_attribute.html</test_script_entry>
- </description>
- </testcase>
- <testcase purpose="Check if method HumanActivityMonitorOption::callbackInterval works properly for GPS HumanActivity type" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="manual" priority="P1" id="HumanActivityMonitorOption_callbackInterval_type_GPS" onload_delay="300">
- <description>
- <steps>
- <step order="1">
- <step_desc>Wait 155 seconds for the callback</step_desc>
- <expected>Pass should be shown in the page after 155 seconds</expected>
- </step>
- </steps>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorOption_callbackInterval_type_GPS.html</test_script_entry>
- </description>
- </testcase>
- <testcase purpose="Check if method HumanActivityMonitorOption::callbackInterval works properly when set to null" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="manual" priority="P1" id="HumanActivityMonitorOption_callbackInterval_type_GPS_default" onload_delay="300">
- <description>
- <steps>
- <step order="1">
- <step_desc>Wait 150 seconds for the callback</step_desc>
- <expected>Pass should be shown in the page after 150 seconds</expected>
- </step>
- </steps>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorOption_callbackInterval_type_GPS_default.html</test_script_entry>
- </description>
- </testcase>
- <testcase purpose="Check if method HumanActivityMonitorOption::sampleInterval works properly for GPS HumanActivity type" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="manual" priority="P1" id="HumanActivityMonitorOption_sampleInterval_type_GPS" onload_delay="300">
- <description>
- <steps>
- <step order="1">
- <step_desc>Wait 120 seconds for the callback</step_desc>
- <expected>Pass should be shown in the page after 120 seconds</expected>
- </step>
- </steps>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorOption_sampleInterval_type_GPS.html</test_script_entry>
- </description>
- </testcase>
- <testcase purpose="Check if method HumanActivityMonitorOption::sampleInterval works properly when set to null" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="manual" priority="P1" id="HumanActivityMonitorOption_sampleInterval_type_GPS_default" onload_delay="300" >
- <description>
- <steps>
- <step order="1">
- <step_desc>Wait 120 seconds for the callback</step_desc>
- <expected>Pass should be shown in the page after 120 seconds</expected>
- </step>
- </steps>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorOption_sampleInterval_type_GPS_default.html</test_script_entry>
- </description>
- </testcase>
- <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="manual" id="HumanActivityMonitorManager_start_errorCallback_invoked" onload_delay="30" priority="P2" purpose="Check exception in error callback of HumanActivityMonitorManager::start() method">
- <description>
- <steps>
- <step order="1">
- <step_desc>Please set the GPS function to disabled in the location settings</step_desc>
- <expected>Pass should be shown in the page after GPS off</expected>
- </step>
- </steps>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_start_errorCallback_invoked.html</test_script_entry>
- </description>
- </testcase>
- </set>
- <set name="HumanActivityMonitor_sleep_monitor">
- <capabilities>
- <capability name="http://tizen.org/feature/sensor.sleep_monitor"/>
- </capabilities>
- <testcase purpose="Check if method HumanActivityMonitorManager::start() works properly for SLEEP_MONITOR HumanActivity type" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_start_type_SLEEP_MONITOR">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_start_type_SLEEP_MONITOR.html</test_script_entry>
- </description>
- </testcase>
- <testcase purpose="Check if HumanActivityMonitorManager::stop() method works properly for HumanActivity type SLEEP_MONITOR" component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_stop_type_SLEEP_MONITOR">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_stop_type_HRM.html</test_script_entry>
- </description>
- </testcase>
- <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivitySleepMonitorData_status_attribute" purpose="Check if HumanActivitySleepMonitorData::status exists and is readonly">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivitySleepMonitorData_status_attribute.html</test_script_entry>
- </description>
- </testcase>
- <testcase component="Tizen Device APIs/Sensor/HumanActivityMonitor" execution_type="auto" id="HumanActivitySleepMonitorData_timestamp_attribute" purpose="Check if HumanActivitySleepMonitorData::timestamp exists, has type long, and is readonly">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivitySleepMonitorData_timestamp_attribute.html</test_script_entry>
- </description>
- </testcase>
- <testcase purpose="Check if readRecorderData without optional arguments works properly for SLEEP_MONITOR HumanActivity type" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_readRecorderData_type_SLEEP_MONITOR">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_readRecorderData_type_SLEEP_MONITOR.html</test_script_entry>
- </description>
- </testcase>
- <testcase purpose="Check if method HumanActivityMonitorManager::startRecorder() works properly for SLEEP_MONITOR HumanActivity type" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_startRecorder_type_SLEEP_MONITOR">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_startRecorder_type_SLEEP_MONITOR.html</test_script_entry>
- </description>
- </testcase>
- <testcase purpose="Check if method HumanActivityMonitorManager::stopRecorder () works properly for SLEEP_MONITOR HumanActivity type" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" id="HumanActivityMonitorManager_stopRecorder_type_SLEEP_MONITOR">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_stopRecorder_type_SLEEP_MONITOR.html</test_script_entry>
- </description>
- </testcase>
- <testcase purpose="Check if HumanActivityRecorderSleepMonitorData have endTime attribute with proper type, readonly" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" id="HumanActivityRecorderSleepMonitorData_endTime_attribute">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityRecorderSleepMonitorData_endTime_attribute.html</test_script_entry>
- </description>
- </testcase>
- <testcase purpose="Check if HumanActivityRecorderSleepMonitorData cannot be called in new expression and as a function or in new expression" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" id="HumanActivityRecorderSleepMonitorData_notexist">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityRecorderSleepMonitorData_notexist.html</test_script_entry>
- </description>
- </testcase>
- <testcase purpose="Check if HumanActivityRecorderSleepMonitorData have startTime attribute with proper type, readonly" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" id="HumanActivityRecorderSleepMonitorData_startTime_attribute">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityRecorderSleepMonitorData_startTime_attribute.html</test_script_entry>
- </description>
- </testcase>
- <testcase purpose="Check if HumanActivityRecorderSleepMonitorData have status attribute with proper type, readonly" component="Tizen Device APIs/System/HumanActivityMonitor" execution_type="auto" id="HumanActivityRecorderSleepMonitorData_status_attribute">
- <description>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityRecorderSleepMonitorData_status_attribute.html</test_script_entry>
- </description>
- </testcase>
- </set>
- <set name="HumanActivityMonitor" type="js">
- <capabilities>
- <capability name="http://tizen.org/feature/platform.core.cpu.arch.armv7"/>
- </capabilities>
- <testcase purpose="Check if the specifies the pedometer user's current movement type is UNKNOWN" onload_delay="60" component="Tizen Device APIs/HumanActivityMonitor/HumanActivityMonitorManager" execution_type="manual" priority="P1" id="HumanActivityMonitorManager_getHumanActivityData_stepStatus_UNKNOWN">
- <description>
- <steps>
- <step order="1">
- <step_desc>Press run button, press Power key to keep the device LCS off, then Pretend walking with the device.</step_desc>
- <expected>Pass</expected>
- </step>
- </steps>
- <test_script_entry>/opt/tct-humanactivitymonitor-tizen-tests/humanactivitymonitor/HumanActivityMonitorManager_getHumanActivityData_stepStatus_UNKNOWN.html</test_script_entry>
- </description>
- </testcase>
- </set>
- </suite>
-</test_definition>
+++ /dev/null
-<!doctype html>
-<!--
-Copyright (c) 2013 Intel Corporation.
-
-Redistribution and use in source and binary forms, with or without modification,
-are permitted provided that the following conditions are met:
-
-* Redistributions of works must retain the original copyright notice, this list
- of conditions and the following disclaimer.
-* Redistributions in binary form must reproduce the original copyright notice,
- this list of conditions and the following disclaimer in the documentation
- and/or other materials provided with the distribution.
-* Neither the name of Intel Corporation nor the names of its contributors
- may be used to endorse or promote products derived from this work without
- specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY INTEL CORPORATION "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL INTEL CORPORATION BE LIABLE FOR ANY DIRECT,
-INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
-BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
-OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
-EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-Authors:
- Wang, Jing <jing.j.wang@intel.com>
-
--->
-
-<head>
-<meta name="viewport" content="width=device-width">
-<script src="jquery-1.10.2.min.js"></script>
-<style type="text/css">
-html {
- font-family:DejaVu Sans, Bitstream Vera Sans, Arial, Sans;
-}
-
-body {
- background-color: white;
-}
-
-table#browse {
- border-collapse:collapse;
- table-layout:fixed;width:85%;
-}
-
-table#browse th:first-child,table#browse td:first-child {width:35%;}
-
-table#browse th:last-child,table#browse td:last-child {width:25%;}
-
-table#browse th {
- padding:0;
- padding-bottom:0.5em;
- text-align:left;
- border-bottom:medium solid black;
-}
-table#browse td {
- padding:1em;
- padding-bottom:0.5em;
- border-bottom:thin solid black;
-}
-div#navbar{
- box-sizing: border-box;
- width: 99%;
- border: 0px;
- text-align: left;
- background: slateblue;
- color: white;
-}
-div#footbar{
- width: 99%;
- border: 0px;
- text-align: left;
-}
-textarea#testinfo{
- width: 99%;
- font-size: 0.8em;
-}
-input{
- font-size: 1.2em;
- padding-top: 0.1em;
- padding-bottom: 0.1em;
-}
-
-#btnPrev,#btnNext{
- width: 8%;
-}
-#btnExit,#btnRun,#btnSave,#btnBack,#btnPass,#btnFail,#btnBlock{
- width: 16%;
- font-weight: bold;
-}
-
-#btnPass { color: green;}
-#btnFail { color: red;}
-#btnBlock { color: orange;}
-#labBatch{ font-size: 0.5em;}
-#textTest { width: 53%; }
-#title { font-size: 1.4em; font-weight: bold;}
-#frmTest { border: none;}
-.listhide { display: none;}
-.short{
- padding-left: 1em;
-}
-</style>
-</head>
-
-<body>
-<div id="navbar" class="batchhide">
- <span class="short listhide suitehide"><input type="button" id="btnBack" value="Back"/></span>
- <span class="short listhide suitehide">
- <input type="button" id="btnPrev" value="<"/>
- <input type="text" id="textTest" readonly />
- <input type="button" id="btnNext" value=">"/>
- </span>
- <span class="short tchide"> <input type="button" id="btnExit" value="Exit"/></span>
- <span id="title" class="short tchide">Open Web Test</span>
-</div>
-<div id="divSum"> </div>
-<div width="99%" class="batchhide">
- <textarea class="listhide suitehide" id="testinfo" rows=4 disabled>
- </textarea>
-</div>
-<div id="footbar" class="batchhide">
- <span class="short"><input type="button" id="btnRun" value="Run"/></span>
- <span class="short listhide tchide"><input type="button" id="btnSave" value="Save"/></span>
- <span class="short listhide suitehide"><input type="button" id="btnPass" value="PASS"/></span>
- <span class="short listhide suitehide"><input type="button" id="btnFail" value="FAIL"/></span>
- <span class="short listhide suitehide"><input type="button" id="btnBlock" value="BLOCK"/></span>
-</div>
-<iframe width="100%" id="frmTest" allowFullScreen="true" mozAllowFullScreen="true" webkitAllowFullscreen="true" src="">
-</iframe>
-<script src="testrunner.js"> </script>
-</body>
-</html>
+++ /dev/null
-/*! jQuery v1.10.2 | (c) 2005, 2013 jQuery Foundation, Inc. | jquery.org/license
-//@ sourceMappingURL=jquery-1.10.2.min.map
-*/
-(function(e,t){var n,r,i=typeof t,o=e.location,a=e.document,s=a.documentElement,l=e.jQuery,u=e.$,c={},p=[],f="1.10.2",d=p.concat,h=p.push,g=p.slice,m=p.indexOf,y=c.toString,v=c.hasOwnProperty,b=f.trim,x=function(e,t){return new x.fn.init(e,t,r)},w=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,T=/\S+/g,C=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,N=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,k=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,E=/^[\],:{}\s]*$/,S=/(?:^|:|,)(?:\s*\[)+/g,A=/\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g,j=/"[^"\\\r\n]*"|true|false|null|-?(?:\d+\.|)\d+(?:[eE][+-]?\d+|)/g,D=/^-ms-/,L=/-([\da-z])/gi,H=function(e,t){return t.toUpperCase()},q=function(e){(a.addEventListener||"load"===e.type||"complete"===a.readyState)&&(_(),x.ready())},_=function(){a.addEventListener?(a.removeEventListener("DOMContentLoaded",q,!1),e.removeEventListener("load",q,!1)):(a.detachEvent("onreadystatechange",q),e.detachEvent("onload",q))};x.fn=x.prototype={jquery:f,constructor:x,init:function(e,n,r){var i,o;if(!e)return this;if("string"==typeof e){if(i="<"===e.charAt(0)&&">"===e.charAt(e.length-1)&&e.length>=3?[null,e,null]:N.exec(e),!i||!i[1]&&n)return!n||n.jquery?(n||r).find(e):this.constructor(n).find(e);if(i[1]){if(n=n instanceof x?n[0]:n,x.merge(this,x.parseHTML(i[1],n&&n.nodeType?n.ownerDocument||n:a,!0)),k.test(i[1])&&x.isPlainObject(n))for(i in n)x.isFunction(this[i])?this[i](n[i]):this.attr(i,n[i]);return this}if(o=a.getElementById(i[2]),o&&o.parentNode){if(o.id!==i[2])return r.find(e);this.length=1,this[0]=o}return this.context=a,this.selector=e,this}return e.nodeType?(this.context=this[0]=e,this.length=1,this):x.isFunction(e)?r.ready(e):(e.selector!==t&&(this.selector=e.selector,this.context=e.context),x.makeArray(e,this))},selector:"",length:0,toArray:function(){return g.call(this)},get:function(e){return null==e?this.toArray():0>e?this[this.length+e]:this[e]},pushStack:function(e){var t=x.merge(this.constructor(),e);return t.prevObject=this,t.context=this.context,t},each:function(e,t){return x.each(this,e,t)},ready:function(e){return x.ready.promise().done(e),this},slice:function(){return this.pushStack(g.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(0>e?t:0);return this.pushStack(n>=0&&t>n?[this[n]]:[])},map:function(e){return this.pushStack(x.map(this,function(t,n){return e.call(t,n,t)}))},end:function(){return this.prevObject||this.constructor(null)},push:h,sort:[].sort,splice:[].splice},x.fn.init.prototype=x.fn,x.extend=x.fn.extend=function(){var e,n,r,i,o,a,s=arguments[0]||{},l=1,u=arguments.length,c=!1;for("boolean"==typeof s&&(c=s,s=arguments[1]||{},l=2),"object"==typeof s||x.isFunction(s)||(s={}),u===l&&(s=this,--l);u>l;l++)if(null!=(o=arguments[l]))for(i in o)e=s[i],r=o[i],s!==r&&(c&&r&&(x.isPlainObject(r)||(n=x.isArray(r)))?(n?(n=!1,a=e&&x.isArray(e)?e:[]):a=e&&x.isPlainObject(e)?e:{},s[i]=x.extend(c,a,r)):r!==t&&(s[i]=r));return s},x.extend({expando:"jQuery"+(f+Math.random()).replace(/\D/g,""),noConflict:function(t){return e.$===x&&(e.$=u),t&&e.jQuery===x&&(e.jQuery=l),x},isReady:!1,readyWait:1,holdReady:function(e){e?x.readyWait++:x.ready(!0)},ready:function(e){if(e===!0?!--x.readyWait:!x.isReady){if(!a.body)return setTimeout(x.ready);x.isReady=!0,e!==!0&&--x.readyWait>0||(n.resolveWith(a,[x]),x.fn.trigger&&x(a).trigger("ready").off("ready"))}},isFunction:function(e){return"function"===x.type(e)},isArray:Array.isArray||function(e){return"array"===x.type(e)},isWindow:function(e){return null!=e&&e==e.window},isNumeric:function(e){return!isNaN(parseFloat(e))&&isFinite(e)},type:function(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?c[y.call(e)]||"object":typeof e},isPlainObject:function(e){var n;if(!e||"object"!==x.type(e)||e.nodeType||x.isWindow(e))return!1;try{if(e.constructor&&!v.call(e,"constructor")&&!v.call(e.constructor.prototype,"isPrototypeOf"))return!1}catch(r){return!1}if(x.support.ownLast)for(n in e)return v.call(e,n);for(n in e);return n===t||v.call(e,n)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},error:function(e){throw Error(e)},parseHTML:function(e,t,n){if(!e||"string"!=typeof e)return null;"boolean"==typeof t&&(n=t,t=!1),t=t||a;var r=k.exec(e),i=!n&&[];return r?[t.createElement(r[1])]:(r=x.buildFragment([e],t,i),i&&x(i).remove(),x.merge([],r.childNodes))},parseJSON:function(n){return e.JSON&&e.JSON.parse?e.JSON.parse(n):null===n?n:"string"==typeof n&&(n=x.trim(n),n&&E.test(n.replace(A,"@").replace(j,"]").replace(S,"")))?Function("return "+n)():(x.error("Invalid JSON: "+n),t)},parseXML:function(n){var r,i;if(!n||"string"!=typeof n)return null;try{e.DOMParser?(i=new DOMParser,r=i.parseFromString(n,"text/xml")):(r=new ActiveXObject("Microsoft.XMLDOM"),r.async="false",r.loadXML(n))}catch(o){r=t}return r&&r.documentElement&&!r.getElementsByTagName("parsererror").length||x.error("Invalid XML: "+n),r},noop:function(){},globalEval:function(t){t&&x.trim(t)&&(e.execScript||function(t){e.eval.call(e,t)})(t)},camelCase:function(e){return e.replace(D,"ms-").replace(L,H)},nodeName:function(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()},each:function(e,t,n){var r,i=0,o=e.length,a=M(e);if(n){if(a){for(;o>i;i++)if(r=t.apply(e[i],n),r===!1)break}else for(i in e)if(r=t.apply(e[i],n),r===!1)break}else if(a){for(;o>i;i++)if(r=t.call(e[i],i,e[i]),r===!1)break}else for(i in e)if(r=t.call(e[i],i,e[i]),r===!1)break;return e},trim:b&&!b.call("\ufeff\u00a0")?function(e){return null==e?"":b.call(e)}:function(e){return null==e?"":(e+"").replace(C,"")},makeArray:function(e,t){var n=t||[];return null!=e&&(M(Object(e))?x.merge(n,"string"==typeof e?[e]:e):h.call(n,e)),n},inArray:function(e,t,n){var r;if(t){if(m)return m.call(t,e,n);for(r=t.length,n=n?0>n?Math.max(0,r+n):n:0;r>n;n++)if(n in t&&t[n]===e)return n}return-1},merge:function(e,n){var r=n.length,i=e.length,o=0;if("number"==typeof r)for(;r>o;o++)e[i++]=n[o];else while(n[o]!==t)e[i++]=n[o++];return e.length=i,e},grep:function(e,t,n){var r,i=[],o=0,a=e.length;for(n=!!n;a>o;o++)r=!!t(e[o],o),n!==r&&i.push(e[o]);return i},map:function(e,t,n){var r,i=0,o=e.length,a=M(e),s=[];if(a)for(;o>i;i++)r=t(e[i],i,n),null!=r&&(s[s.length]=r);else for(i in e)r=t(e[i],i,n),null!=r&&(s[s.length]=r);return d.apply([],s)},guid:1,proxy:function(e,n){var r,i,o;return"string"==typeof n&&(o=e[n],n=e,e=o),x.isFunction(e)?(r=g.call(arguments,2),i=function(){return e.apply(n||this,r.concat(g.call(arguments)))},i.guid=e.guid=e.guid||x.guid++,i):t},access:function(e,n,r,i,o,a,s){var l=0,u=e.length,c=null==r;if("object"===x.type(r)){o=!0;for(l in r)x.access(e,n,l,r[l],!0,a,s)}else if(i!==t&&(o=!0,x.isFunction(i)||(s=!0),c&&(s?(n.call(e,i),n=null):(c=n,n=function(e,t,n){return c.call(x(e),n)})),n))for(;u>l;l++)n(e[l],r,s?i:i.call(e[l],l,n(e[l],r)));return o?e:c?n.call(e):u?n(e[0],r):a},now:function(){return(new Date).getTime()},swap:function(e,t,n,r){var i,o,a={};for(o in t)a[o]=e.style[o],e.style[o]=t[o];i=n.apply(e,r||[]);for(o in t)e.style[o]=a[o];return i}}),x.ready.promise=function(t){if(!n)if(n=x.Deferred(),"complete"===a.readyState)setTimeout(x.ready);else if(a.addEventListener)a.addEventListener("DOMContentLoaded",q,!1),e.addEventListener("load",q,!1);else{a.attachEvent("onreadystatechange",q),e.attachEvent("onload",q);var r=!1;try{r=null==e.frameElement&&a.documentElement}catch(i){}r&&r.doScroll&&function o(){if(!x.isReady){try{r.doScroll("left")}catch(e){return setTimeout(o,50)}_(),x.ready()}}()}return n.promise(t)},x.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(e,t){c["[object "+t+"]"]=t.toLowerCase()});function M(e){var t=e.length,n=x.type(e);return x.isWindow(e)?!1:1===e.nodeType&&t?!0:"array"===n||"function"!==n&&(0===t||"number"==typeof t&&t>0&&t-1 in e)}r=x(a),function(e,t){var n,r,i,o,a,s,l,u,c,p,f,d,h,g,m,y,v,b="sizzle"+-new Date,w=e.document,T=0,C=0,N=st(),k=st(),E=st(),S=!1,A=function(e,t){return e===t?(S=!0,0):0},j=typeof t,D=1<<31,L={}.hasOwnProperty,H=[],q=H.pop,_=H.push,M=H.push,O=H.slice,F=H.indexOf||function(e){var t=0,n=this.length;for(;n>t;t++)if(this[t]===e)return t;return-1},B="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",P="[\\x20\\t\\r\\n\\f]",R="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",W=R.replace("w","w#"),$="\\["+P+"*("+R+")"+P+"*(?:([*^$|!~]?=)"+P+"*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|("+W+")|)|)"+P+"*\\]",I=":("+R+")(?:\\(((['\"])((?:\\\\.|[^\\\\])*?)\\3|((?:\\\\.|[^\\\\()[\\]]|"+$.replace(3,8)+")*)|.*)\\)|)",z=RegExp("^"+P+"+|((?:^|[^\\\\])(?:\\\\.)*)"+P+"+$","g"),X=RegExp("^"+P+"*,"+P+"*"),U=RegExp("^"+P+"*([>+~]|"+P+")"+P+"*"),V=RegExp(P+"*[+~]"),Y=RegExp("="+P+"*([^\\]'\"]*)"+P+"*\\]","g"),J=RegExp(I),G=RegExp("^"+W+"$"),Q={ID:RegExp("^#("+R+")"),CLASS:RegExp("^\\.("+R+")"),TAG:RegExp("^("+R.replace("w","w*")+")"),ATTR:RegExp("^"+$),PSEUDO:RegExp("^"+I),CHILD:RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+P+"*(even|odd|(([+-]|)(\\d*)n|)"+P+"*(?:([+-]|)"+P+"*(\\d+)|))"+P+"*\\)|)","i"),bool:RegExp("^(?:"+B+")$","i"),needsContext:RegExp("^"+P+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+P+"*((?:-\\d)?\\d*)"+P+"*\\)|)(?=[^-]|$)","i")},K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,et=/^(?:input|select|textarea|button)$/i,tt=/^h\d$/i,nt=/'|\\/g,rt=RegExp("\\\\([\\da-f]{1,6}"+P+"?|("+P+")|.)","ig"),it=function(e,t,n){var r="0x"+t-65536;return r!==r||n?t:0>r?String.fromCharCode(r+65536):String.fromCharCode(55296|r>>10,56320|1023&r)};try{M.apply(H=O.call(w.childNodes),w.childNodes),H[w.childNodes.length].nodeType}catch(ot){M={apply:H.length?function(e,t){_.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function at(e,t,n,i){var o,a,s,l,u,c,d,m,y,x;if((t?t.ownerDocument||t:w)!==f&&p(t),t=t||f,n=n||[],!e||"string"!=typeof e)return n;if(1!==(l=t.nodeType)&&9!==l)return[];if(h&&!i){if(o=Z.exec(e))if(s=o[1]){if(9===l){if(a=t.getElementById(s),!a||!a.parentNode)return n;if(a.id===s)return n.push(a),n}else if(t.ownerDocument&&(a=t.ownerDocument.getElementById(s))&&v(t,a)&&a.id===s)return n.push(a),n}else{if(o[2])return M.apply(n,t.getElementsByTagName(e)),n;if((s=o[3])&&r.getElementsByClassName&&t.getElementsByClassName)return M.apply(n,t.getElementsByClassName(s)),n}if(r.qsa&&(!g||!g.test(e))){if(m=d=b,y=t,x=9===l&&e,1===l&&"object"!==t.nodeName.toLowerCase()){c=mt(e),(d=t.getAttribute("id"))?m=d.replace(nt,"\\$&"):t.setAttribute("id",m),m="[id='"+m+"'] ",u=c.length;while(u--)c[u]=m+yt(c[u]);y=V.test(e)&&t.parentNode||t,x=c.join(",")}if(x)try{return M.apply(n,y.querySelectorAll(x)),n}catch(T){}finally{d||t.removeAttribute("id")}}}return kt(e.replace(z,"$1"),t,n,i)}function st(){var e=[];function t(n,r){return e.push(n+=" ")>o.cacheLength&&delete t[e.shift()],t[n]=r}return t}function lt(e){return e[b]=!0,e}function ut(e){var t=f.createElement("div");try{return!!e(t)}catch(n){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function ct(e,t){var n=e.split("|"),r=e.length;while(r--)o.attrHandle[n[r]]=t}function pt(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&(~t.sourceIndex||D)-(~e.sourceIndex||D);if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function ft(e){return function(t){var n=t.nodeName.toLowerCase();return"input"===n&&t.type===e}}function dt(e){return function(t){var n=t.nodeName.toLowerCase();return("input"===n||"button"===n)&&t.type===e}}function ht(e){return lt(function(t){return t=+t,lt(function(n,r){var i,o=e([],n.length,t),a=o.length;while(a--)n[i=o[a]]&&(n[i]=!(r[i]=n[i]))})})}s=at.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return t?"HTML"!==t.nodeName:!1},r=at.support={},p=at.setDocument=function(e){var n=e?e.ownerDocument||e:w,i=n.defaultView;return n!==f&&9===n.nodeType&&n.documentElement?(f=n,d=n.documentElement,h=!s(n),i&&i.attachEvent&&i!==i.top&&i.attachEvent("onbeforeunload",function(){p()}),r.attributes=ut(function(e){return e.className="i",!e.getAttribute("className")}),r.getElementsByTagName=ut(function(e){return e.appendChild(n.createComment("")),!e.getElementsByTagName("*").length}),r.getElementsByClassName=ut(function(e){return e.innerHTML="<div class='a'></div><div class='a i'></div>",e.firstChild.className="i",2===e.getElementsByClassName("i").length}),r.getById=ut(function(e){return d.appendChild(e).id=b,!n.getElementsByName||!n.getElementsByName(b).length}),r.getById?(o.find.ID=function(e,t){if(typeof t.getElementById!==j&&h){var n=t.getElementById(e);return n&&n.parentNode?[n]:[]}},o.filter.ID=function(e){var t=e.replace(rt,it);return function(e){return e.getAttribute("id")===t}}):(delete o.find.ID,o.filter.ID=function(e){var t=e.replace(rt,it);return function(e){var n=typeof e.getAttributeNode!==j&&e.getAttributeNode("id");return n&&n.value===t}}),o.find.TAG=r.getElementsByTagName?function(e,n){return typeof n.getElementsByTagName!==j?n.getElementsByTagName(e):t}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},o.find.CLASS=r.getElementsByClassName&&function(e,n){return typeof n.getElementsByClassName!==j&&h?n.getElementsByClassName(e):t},m=[],g=[],(r.qsa=K.test(n.querySelectorAll))&&(ut(function(e){e.innerHTML="<select><option selected=''></option></select>",e.querySelectorAll("[selected]").length||g.push("\\["+P+"*(?:value|"+B+")"),e.querySelectorAll(":checked").length||g.push(":checked")}),ut(function(e){var t=n.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("t",""),e.querySelectorAll("[t^='']").length&&g.push("[*^$]="+P+"*(?:''|\"\")"),e.querySelectorAll(":enabled").length||g.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),g.push(",.*:")})),(r.matchesSelector=K.test(y=d.webkitMatchesSelector||d.mozMatchesSelector||d.oMatchesSelector||d.msMatchesSelector))&&ut(function(e){r.disconnectedMatch=y.call(e,"div"),y.call(e,"[s!='']:x"),m.push("!=",I)}),g=g.length&&RegExp(g.join("|")),m=m.length&&RegExp(m.join("|")),v=K.test(d.contains)||d.compareDocumentPosition?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},A=d.compareDocumentPosition?function(e,t){if(e===t)return S=!0,0;var i=t.compareDocumentPosition&&e.compareDocumentPosition&&e.compareDocumentPosition(t);return i?1&i||!r.sortDetached&&t.compareDocumentPosition(e)===i?e===n||v(w,e)?-1:t===n||v(w,t)?1:c?F.call(c,e)-F.call(c,t):0:4&i?-1:1:e.compareDocumentPosition?-1:1}:function(e,t){var r,i=0,o=e.parentNode,a=t.parentNode,s=[e],l=[t];if(e===t)return S=!0,0;if(!o||!a)return e===n?-1:t===n?1:o?-1:a?1:c?F.call(c,e)-F.call(c,t):0;if(o===a)return pt(e,t);r=e;while(r=r.parentNode)s.unshift(r);r=t;while(r=r.parentNode)l.unshift(r);while(s[i]===l[i])i++;return i?pt(s[i],l[i]):s[i]===w?-1:l[i]===w?1:0},n):f},at.matches=function(e,t){return at(e,null,null,t)},at.matchesSelector=function(e,t){if((e.ownerDocument||e)!==f&&p(e),t=t.replace(Y,"='$1']"),!(!r.matchesSelector||!h||m&&m.test(t)||g&&g.test(t)))try{var n=y.call(e,t);if(n||r.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(i){}return at(t,f,null,[e]).length>0},at.contains=function(e,t){return(e.ownerDocument||e)!==f&&p(e),v(e,t)},at.attr=function(e,n){(e.ownerDocument||e)!==f&&p(e);var i=o.attrHandle[n.toLowerCase()],a=i&&L.call(o.attrHandle,n.toLowerCase())?i(e,n,!h):t;return a===t?r.attributes||!h?e.getAttribute(n):(a=e.getAttributeNode(n))&&a.specified?a.value:null:a},at.error=function(e){throw Error("Syntax error, unrecognized expression: "+e)},at.uniqueSort=function(e){var t,n=[],i=0,o=0;if(S=!r.detectDuplicates,c=!r.sortStable&&e.slice(0),e.sort(A),S){while(t=e[o++])t===e[o]&&(i=n.push(o));while(i--)e.splice(n[i],1)}return e},a=at.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(1===i||9===i||11===i){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=a(e)}else if(3===i||4===i)return e.nodeValue}else for(;t=e[r];r++)n+=a(t);return n},o=at.selectors={cacheLength:50,createPseudo:lt,match:Q,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(rt,it),e[3]=(e[4]||e[5]||"").replace(rt,it),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||at.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&at.error(e[0]),e},PSEUDO:function(e){var n,r=!e[5]&&e[2];return Q.CHILD.test(e[0])?null:(e[3]&&e[4]!==t?e[2]=e[4]:r&&J.test(r)&&(n=mt(r,!0))&&(n=r.indexOf(")",r.length-n)-r.length)&&(e[0]=e[0].slice(0,n),e[2]=r.slice(0,n)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(rt,it).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=N[e+" "];return t||(t=RegExp("(^|"+P+")"+e+"("+P+"|$)"))&&N(e,function(e){return t.test("string"==typeof e.className&&e.className||typeof e.getAttribute!==j&&e.getAttribute("class")||"")})},ATTR:function(e,t,n){return function(r){var i=at.attr(r,e);return null==i?"!="===t:t?(i+="","="===t?i===n:"!="===t?i!==n:"^="===t?n&&0===i.indexOf(n):"*="===t?n&&i.indexOf(n)>-1:"$="===t?n&&i.slice(-n.length)===n:"~="===t?(" "+i+" ").indexOf(n)>-1:"|="===t?i===n||i.slice(0,n.length+1)===n+"-":!1):!0}},CHILD:function(e,t,n,r,i){var o="nth"!==e.slice(0,3),a="last"!==e.slice(-4),s="of-type"===t;return 1===r&&0===i?function(e){return!!e.parentNode}:function(t,n,l){var u,c,p,f,d,h,g=o!==a?"nextSibling":"previousSibling",m=t.parentNode,y=s&&t.nodeName.toLowerCase(),v=!l&&!s;if(m){if(o){while(g){p=t;while(p=p[g])if(s?p.nodeName.toLowerCase()===y:1===p.nodeType)return!1;h=g="only"===e&&!h&&"nextSibling"}return!0}if(h=[a?m.firstChild:m.lastChild],a&&v){c=m[b]||(m[b]={}),u=c[e]||[],d=u[0]===T&&u[1],f=u[0]===T&&u[2],p=d&&m.childNodes[d];while(p=++d&&p&&p[g]||(f=d=0)||h.pop())if(1===p.nodeType&&++f&&p===t){c[e]=[T,d,f];break}}else if(v&&(u=(t[b]||(t[b]={}))[e])&&u[0]===T)f=u[1];else while(p=++d&&p&&p[g]||(f=d=0)||h.pop())if((s?p.nodeName.toLowerCase()===y:1===p.nodeType)&&++f&&(v&&((p[b]||(p[b]={}))[e]=[T,f]),p===t))break;return f-=i,f===r||0===f%r&&f/r>=0}}},PSEUDO:function(e,t){var n,r=o.pseudos[e]||o.setFilters[e.toLowerCase()]||at.error("unsupported pseudo: "+e);return r[b]?r(t):r.length>1?(n=[e,e,"",t],o.setFilters.hasOwnProperty(e.toLowerCase())?lt(function(e,n){var i,o=r(e,t),a=o.length;while(a--)i=F.call(e,o[a]),e[i]=!(n[i]=o[a])}):function(e){return r(e,0,n)}):r}},pseudos:{not:lt(function(e){var t=[],n=[],r=l(e.replace(z,"$1"));return r[b]?lt(function(e,t,n,i){var o,a=r(e,null,i,[]),s=e.length;while(s--)(o=a[s])&&(e[s]=!(t[s]=o))}):function(e,i,o){return t[0]=e,r(t,null,o,n),!n.pop()}}),has:lt(function(e){return function(t){return at(e,t).length>0}}),contains:lt(function(e){return function(t){return(t.textContent||t.innerText||a(t)).indexOf(e)>-1}}),lang:lt(function(e){return G.test(e||"")||at.error("unsupported lang: "+e),e=e.replace(rt,it).toLowerCase(),function(t){var n;do if(n=h?t.lang:t.getAttribute("xml:lang")||t.getAttribute("lang"))return n=n.toLowerCase(),n===e||0===n.indexOf(e+"-");while((t=t.parentNode)&&1===t.nodeType);return!1}}),target:function(t){var n=e.location&&e.location.hash;return n&&n.slice(1)===t.id},root:function(e){return e===d},focus:function(e){return e===f.activeElement&&(!f.hasFocus||f.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:function(e){return e.disabled===!1},disabled:function(e){return e.disabled===!0},checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,e.selected===!0},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeName>"@"||3===e.nodeType||4===e.nodeType)return!1;return!0},parent:function(e){return!o.pseudos.empty(e)},header:function(e){return tt.test(e.nodeName)},input:function(e){return et.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||t.toLowerCase()===e.type)},first:ht(function(){return[0]}),last:ht(function(e,t){return[t-1]}),eq:ht(function(e,t,n){return[0>n?n+t:n]}),even:ht(function(e,t){var n=0;for(;t>n;n+=2)e.push(n);return e}),odd:ht(function(e,t){var n=1;for(;t>n;n+=2)e.push(n);return e}),lt:ht(function(e,t,n){var r=0>n?n+t:n;for(;--r>=0;)e.push(r);return e}),gt:ht(function(e,t,n){var r=0>n?n+t:n;for(;t>++r;)e.push(r);return e})}},o.pseudos.nth=o.pseudos.eq;for(n in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})o.pseudos[n]=ft(n);for(n in{submit:!0,reset:!0})o.pseudos[n]=dt(n);function gt(){}gt.prototype=o.filters=o.pseudos,o.setFilters=new gt;function mt(e,t){var n,r,i,a,s,l,u,c=k[e+" "];if(c)return t?0:c.slice(0);s=e,l=[],u=o.preFilter;while(s){(!n||(r=X.exec(s)))&&(r&&(s=s.slice(r[0].length)||s),l.push(i=[])),n=!1,(r=U.exec(s))&&(n=r.shift(),i.push({value:n,type:r[0].replace(z," ")}),s=s.slice(n.length));for(a in o.filter)!(r=Q[a].exec(s))||u[a]&&!(r=u[a](r))||(n=r.shift(),i.push({value:n,type:a,matches:r}),s=s.slice(n.length));if(!n)break}return t?s.length:s?at.error(e):k(e,l).slice(0)}function yt(e){var t=0,n=e.length,r="";for(;n>t;t++)r+=e[t].value;return r}function vt(e,t,n){var r=t.dir,o=n&&"parentNode"===r,a=C++;return t.first?function(t,n,i){while(t=t[r])if(1===t.nodeType||o)return e(t,n,i)}:function(t,n,s){var l,u,c,p=T+" "+a;if(s){while(t=t[r])if((1===t.nodeType||o)&&e(t,n,s))return!0}else while(t=t[r])if(1===t.nodeType||o)if(c=t[b]||(t[b]={}),(u=c[r])&&u[0]===p){if((l=u[1])===!0||l===i)return l===!0}else if(u=c[r]=[p],u[1]=e(t,n,s)||i,u[1]===!0)return!0}}function bt(e){return e.length>1?function(t,n,r){var i=e.length;while(i--)if(!e[i](t,n,r))return!1;return!0}:e[0]}function xt(e,t,n,r,i){var o,a=[],s=0,l=e.length,u=null!=t;for(;l>s;s++)(o=e[s])&&(!n||n(o,r,i))&&(a.push(o),u&&t.push(s));return a}function wt(e,t,n,r,i,o){return r&&!r[b]&&(r=wt(r)),i&&!i[b]&&(i=wt(i,o)),lt(function(o,a,s,l){var u,c,p,f=[],d=[],h=a.length,g=o||Nt(t||"*",s.nodeType?[s]:s,[]),m=!e||!o&&t?g:xt(g,f,e,s,l),y=n?i||(o?e:h||r)?[]:a:m;if(n&&n(m,y,s,l),r){u=xt(y,d),r(u,[],s,l),c=u.length;while(c--)(p=u[c])&&(y[d[c]]=!(m[d[c]]=p))}if(o){if(i||e){if(i){u=[],c=y.length;while(c--)(p=y[c])&&u.push(m[c]=p);i(null,y=[],u,l)}c=y.length;while(c--)(p=y[c])&&(u=i?F.call(o,p):f[c])>-1&&(o[u]=!(a[u]=p))}}else y=xt(y===a?y.splice(h,y.length):y),i?i(null,a,y,l):M.apply(a,y)})}function Tt(e){var t,n,r,i=e.length,a=o.relative[e[0].type],s=a||o.relative[" "],l=a?1:0,c=vt(function(e){return e===t},s,!0),p=vt(function(e){return F.call(t,e)>-1},s,!0),f=[function(e,n,r){return!a&&(r||n!==u)||((t=n).nodeType?c(e,n,r):p(e,n,r))}];for(;i>l;l++)if(n=o.relative[e[l].type])f=[vt(bt(f),n)];else{if(n=o.filter[e[l].type].apply(null,e[l].matches),n[b]){for(r=++l;i>r;r++)if(o.relative[e[r].type])break;return wt(l>1&&bt(f),l>1&&yt(e.slice(0,l-1).concat({value:" "===e[l-2].type?"*":""})).replace(z,"$1"),n,r>l&&Tt(e.slice(l,r)),i>r&&Tt(e=e.slice(r)),i>r&&yt(e))}f.push(n)}return bt(f)}function Ct(e,t){var n=0,r=t.length>0,a=e.length>0,s=function(s,l,c,p,d){var h,g,m,y=[],v=0,b="0",x=s&&[],w=null!=d,C=u,N=s||a&&o.find.TAG("*",d&&l.parentNode||l),k=T+=null==C?1:Math.random()||.1;for(w&&(u=l!==f&&l,i=n);null!=(h=N[b]);b++){if(a&&h){g=0;while(m=e[g++])if(m(h,l,c)){p.push(h);break}w&&(T=k,i=++n)}r&&((h=!m&&h)&&v--,s&&x.push(h))}if(v+=b,r&&b!==v){g=0;while(m=t[g++])m(x,y,l,c);if(s){if(v>0)while(b--)x[b]||y[b]||(y[b]=q.call(p));y=xt(y)}M.apply(p,y),w&&!s&&y.length>0&&v+t.length>1&&at.uniqueSort(p)}return w&&(T=k,u=C),x};return r?lt(s):s}l=at.compile=function(e,t){var n,r=[],i=[],o=E[e+" "];if(!o){t||(t=mt(e)),n=t.length;while(n--)o=Tt(t[n]),o[b]?r.push(o):i.push(o);o=E(e,Ct(i,r))}return o};function Nt(e,t,n){var r=0,i=t.length;for(;i>r;r++)at(e,t[r],n);return n}function kt(e,t,n,i){var a,s,u,c,p,f=mt(e);if(!i&&1===f.length){if(s=f[0]=f[0].slice(0),s.length>2&&"ID"===(u=s[0]).type&&r.getById&&9===t.nodeType&&h&&o.relative[s[1].type]){if(t=(o.find.ID(u.matches[0].replace(rt,it),t)||[])[0],!t)return n;e=e.slice(s.shift().value.length)}a=Q.needsContext.test(e)?0:s.length;while(a--){if(u=s[a],o.relative[c=u.type])break;if((p=o.find[c])&&(i=p(u.matches[0].replace(rt,it),V.test(s[0].type)&&t.parentNode||t))){if(s.splice(a,1),e=i.length&&yt(s),!e)return M.apply(n,i),n;break}}}return l(e,f)(i,t,!h,n,V.test(e)),n}r.sortStable=b.split("").sort(A).join("")===b,r.detectDuplicates=S,p(),r.sortDetached=ut(function(e){return 1&e.compareDocumentPosition(f.createElement("div"))}),ut(function(e){return e.innerHTML="<a href='#'></a>","#"===e.firstChild.getAttribute("href")})||ct("type|href|height|width",function(e,n,r){return r?t:e.getAttribute(n,"type"===n.toLowerCase()?1:2)}),r.attributes&&ut(function(e){return e.innerHTML="<input/>",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||ct("value",function(e,n,r){return r||"input"!==e.nodeName.toLowerCase()?t:e.defaultValue}),ut(function(e){return null==e.getAttribute("disabled")})||ct(B,function(e,n,r){var i;return r?t:(i=e.getAttributeNode(n))&&i.specified?i.value:e[n]===!0?n.toLowerCase():null}),x.find=at,x.expr=at.selectors,x.expr[":"]=x.expr.pseudos,x.unique=at.uniqueSort,x.text=at.getText,x.isXMLDoc=at.isXML,x.contains=at.contains}(e);var O={};function F(e){var t=O[e]={};return x.each(e.match(T)||[],function(e,n){t[n]=!0}),t}x.Callbacks=function(e){e="string"==typeof e?O[e]||F(e):x.extend({},e);var n,r,i,o,a,s,l=[],u=!e.once&&[],c=function(t){for(r=e.memory&&t,i=!0,a=s||0,s=0,o=l.length,n=!0;l&&o>a;a++)if(l[a].apply(t[0],t[1])===!1&&e.stopOnFalse){r=!1;break}n=!1,l&&(u?u.length&&c(u.shift()):r?l=[]:p.disable())},p={add:function(){if(l){var t=l.length;(function i(t){x.each(t,function(t,n){var r=x.type(n);"function"===r?e.unique&&p.has(n)||l.push(n):n&&n.length&&"string"!==r&&i(n)})})(arguments),n?o=l.length:r&&(s=t,c(r))}return this},remove:function(){return l&&x.each(arguments,function(e,t){var r;while((r=x.inArray(t,l,r))>-1)l.splice(r,1),n&&(o>=r&&o--,a>=r&&a--)}),this},has:function(e){return e?x.inArray(e,l)>-1:!(!l||!l.length)},empty:function(){return l=[],o=0,this},disable:function(){return l=u=r=t,this},disabled:function(){return!l},lock:function(){return u=t,r||p.disable(),this},locked:function(){return!u},fireWith:function(e,t){return!l||i&&!u||(t=t||[],t=[e,t.slice?t.slice():t],n?u.push(t):c(t)),this},fire:function(){return p.fireWith(this,arguments),this},fired:function(){return!!i}};return p},x.extend({Deferred:function(e){var t=[["resolve","done",x.Callbacks("once memory"),"resolved"],["reject","fail",x.Callbacks("once memory"),"rejected"],["notify","progress",x.Callbacks("memory")]],n="pending",r={state:function(){return n},always:function(){return i.done(arguments).fail(arguments),this},then:function(){var e=arguments;return x.Deferred(function(n){x.each(t,function(t,o){var a=o[0],s=x.isFunction(e[t])&&e[t];i[o[1]](function(){var e=s&&s.apply(this,arguments);e&&x.isFunction(e.promise)?e.promise().done(n.resolve).fail(n.reject).progress(n.notify):n[a+"With"](this===r?n.promise():this,s?[e]:arguments)})}),e=null}).promise()},promise:function(e){return null!=e?x.extend(e,r):r}},i={};return r.pipe=r.then,x.each(t,function(e,o){var a=o[2],s=o[3];r[o[1]]=a.add,s&&a.add(function(){n=s},t[1^e][2].disable,t[2][2].lock),i[o[0]]=function(){return i[o[0]+"With"](this===i?r:this,arguments),this},i[o[0]+"With"]=a.fireWith}),r.promise(i),e&&e.call(i,i),i},when:function(e){var t=0,n=g.call(arguments),r=n.length,i=1!==r||e&&x.isFunction(e.promise)?r:0,o=1===i?e:x.Deferred(),a=function(e,t,n){return function(r){t[e]=this,n[e]=arguments.length>1?g.call(arguments):r,n===s?o.notifyWith(t,n):--i||o.resolveWith(t,n)}},s,l,u;if(r>1)for(s=Array(r),l=Array(r),u=Array(r);r>t;t++)n[t]&&x.isFunction(n[t].promise)?n[t].promise().done(a(t,u,n)).fail(o.reject).progress(a(t,l,s)):--i;return i||o.resolveWith(u,n),o.promise()}}),x.support=function(t){var n,r,o,s,l,u,c,p,f,d=a.createElement("div");if(d.setAttribute("className","t"),d.innerHTML=" <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",n=d.getElementsByTagName("*")||[],r=d.getElementsByTagName("a")[0],!r||!r.style||!n.length)return t;s=a.createElement("select"),u=s.appendChild(a.createElement("option")),o=d.getElementsByTagName("input")[0],r.style.cssText="top:1px;float:left;opacity:.5",t.getSetAttribute="t"!==d.className,t.leadingWhitespace=3===d.firstChild.nodeType,t.tbody=!d.getElementsByTagName("tbody").length,t.htmlSerialize=!!d.getElementsByTagName("link").length,t.style=/top/.test(r.getAttribute("style")),t.hrefNormalized="/a"===r.getAttribute("href"),t.opacity=/^0.5/.test(r.style.opacity),t.cssFloat=!!r.style.cssFloat,t.checkOn=!!o.value,t.optSelected=u.selected,t.enctype=!!a.createElement("form").enctype,t.html5Clone="<:nav></:nav>"!==a.createElement("nav").cloneNode(!0).outerHTML,t.inlineBlockNeedsLayout=!1,t.shrinkWrapBlocks=!1,t.pixelPosition=!1,t.deleteExpando=!0,t.noCloneEvent=!0,t.reliableMarginRight=!0,t.boxSizingReliable=!0,o.checked=!0,t.noCloneChecked=o.cloneNode(!0).checked,s.disabled=!0,t.optDisabled=!u.disabled;try{delete d.test}catch(h){t.deleteExpando=!1}o=a.createElement("input"),o.setAttribute("value",""),t.input=""===o.getAttribute("value"),o.value="t",o.setAttribute("type","radio"),t.radioValue="t"===o.value,o.setAttribute("checked","t"),o.setAttribute("name","t"),l=a.createDocumentFragment(),l.appendChild(o),t.appendChecked=o.checked,t.checkClone=l.cloneNode(!0).cloneNode(!0).lastChild.checked,d.attachEvent&&(d.attachEvent("onclick",function(){t.noCloneEvent=!1}),d.cloneNode(!0).click());for(f in{submit:!0,change:!0,focusin:!0})d.setAttribute(c="on"+f,"t"),t[f+"Bubbles"]=c in e||d.attributes[c].expando===!1;d.style.backgroundClip="content-box",d.cloneNode(!0).style.backgroundClip="",t.clearCloneStyle="content-box"===d.style.backgroundClip;for(f in x(t))break;return t.ownLast="0"!==f,x(function(){var n,r,o,s="padding:0;margin:0;border:0;display:block;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;",l=a.getElementsByTagName("body")[0];l&&(n=a.createElement("div"),n.style.cssText="border:0;width:0;height:0;position:absolute;top:0;left:-9999px;margin-top:1px",l.appendChild(n).appendChild(d),d.innerHTML="<table><tr><td></td><td>t</td></tr></table>",o=d.getElementsByTagName("td"),o[0].style.cssText="padding:0;margin:0;border:0;display:none",p=0===o[0].offsetHeight,o[0].style.display="",o[1].style.display="none",t.reliableHiddenOffsets=p&&0===o[0].offsetHeight,d.innerHTML="",d.style.cssText="box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;",x.swap(l,null!=l.style.zoom?{zoom:1}:{},function(){t.boxSizing=4===d.offsetWidth}),e.getComputedStyle&&(t.pixelPosition="1%"!==(e.getComputedStyle(d,null)||{}).top,t.boxSizingReliable="4px"===(e.getComputedStyle(d,null)||{width:"4px"}).width,r=d.appendChild(a.createElement("div")),r.style.cssText=d.style.cssText=s,r.style.marginRight=r.style.width="0",d.style.width="1px",t.reliableMarginRight=!parseFloat((e.getComputedStyle(r,null)||{}).marginRight)),typeof d.style.zoom!==i&&(d.innerHTML="",d.style.cssText=s+"width:1px;padding:1px;display:inline;zoom:1",t.inlineBlockNeedsLayout=3===d.offsetWidth,d.style.display="block",d.innerHTML="<div></div>",d.firstChild.style.width="5px",t.shrinkWrapBlocks=3!==d.offsetWidth,t.inlineBlockNeedsLayout&&(l.style.zoom=1)),l.removeChild(n),n=d=o=r=null)}),n=s=l=u=r=o=null,t
-}({});var B=/(?:\{[\s\S]*\}|\[[\s\S]*\])$/,P=/([A-Z])/g;function R(e,n,r,i){if(x.acceptData(e)){var o,a,s=x.expando,l=e.nodeType,u=l?x.cache:e,c=l?e[s]:e[s]&&s;if(c&&u[c]&&(i||u[c].data)||r!==t||"string"!=typeof n)return c||(c=l?e[s]=p.pop()||x.guid++:s),u[c]||(u[c]=l?{}:{toJSON:x.noop}),("object"==typeof n||"function"==typeof n)&&(i?u[c]=x.extend(u[c],n):u[c].data=x.extend(u[c].data,n)),a=u[c],i||(a.data||(a.data={}),a=a.data),r!==t&&(a[x.camelCase(n)]=r),"string"==typeof n?(o=a[n],null==o&&(o=a[x.camelCase(n)])):o=a,o}}function W(e,t,n){if(x.acceptData(e)){var r,i,o=e.nodeType,a=o?x.cache:e,s=o?e[x.expando]:x.expando;if(a[s]){if(t&&(r=n?a[s]:a[s].data)){x.isArray(t)?t=t.concat(x.map(t,x.camelCase)):t in r?t=[t]:(t=x.camelCase(t),t=t in r?[t]:t.split(" ")),i=t.length;while(i--)delete r[t[i]];if(n?!I(r):!x.isEmptyObject(r))return}(n||(delete a[s].data,I(a[s])))&&(o?x.cleanData([e],!0):x.support.deleteExpando||a!=a.window?delete a[s]:a[s]=null)}}}x.extend({cache:{},noData:{applet:!0,embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"},hasData:function(e){return e=e.nodeType?x.cache[e[x.expando]]:e[x.expando],!!e&&!I(e)},data:function(e,t,n){return R(e,t,n)},removeData:function(e,t){return W(e,t)},_data:function(e,t,n){return R(e,t,n,!0)},_removeData:function(e,t){return W(e,t,!0)},acceptData:function(e){if(e.nodeType&&1!==e.nodeType&&9!==e.nodeType)return!1;var t=e.nodeName&&x.noData[e.nodeName.toLowerCase()];return!t||t!==!0&&e.getAttribute("classid")===t}}),x.fn.extend({data:function(e,n){var r,i,o=null,a=0,s=this[0];if(e===t){if(this.length&&(o=x.data(s),1===s.nodeType&&!x._data(s,"parsedAttrs"))){for(r=s.attributes;r.length>a;a++)i=r[a].name,0===i.indexOf("data-")&&(i=x.camelCase(i.slice(5)),$(s,i,o[i]));x._data(s,"parsedAttrs",!0)}return o}return"object"==typeof e?this.each(function(){x.data(this,e)}):arguments.length>1?this.each(function(){x.data(this,e,n)}):s?$(s,e,x.data(s,e)):null},removeData:function(e){return this.each(function(){x.removeData(this,e)})}});function $(e,n,r){if(r===t&&1===e.nodeType){var i="data-"+n.replace(P,"-$1").toLowerCase();if(r=e.getAttribute(i),"string"==typeof r){try{r="true"===r?!0:"false"===r?!1:"null"===r?null:+r+""===r?+r:B.test(r)?x.parseJSON(r):r}catch(o){}x.data(e,n,r)}else r=t}return r}function I(e){var t;for(t in e)if(("data"!==t||!x.isEmptyObject(e[t]))&&"toJSON"!==t)return!1;return!0}x.extend({queue:function(e,n,r){var i;return e?(n=(n||"fx")+"queue",i=x._data(e,n),r&&(!i||x.isArray(r)?i=x._data(e,n,x.makeArray(r)):i.push(r)),i||[]):t},dequeue:function(e,t){t=t||"fx";var n=x.queue(e,t),r=n.length,i=n.shift(),o=x._queueHooks(e,t),a=function(){x.dequeue(e,t)};"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,a,o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return x._data(e,n)||x._data(e,n,{empty:x.Callbacks("once memory").add(function(){x._removeData(e,t+"queue"),x._removeData(e,n)})})}}),x.fn.extend({queue:function(e,n){var r=2;return"string"!=typeof e&&(n=e,e="fx",r--),r>arguments.length?x.queue(this[0],e):n===t?this:this.each(function(){var t=x.queue(this,e,n);x._queueHooks(this,e),"fx"===e&&"inprogress"!==t[0]&&x.dequeue(this,e)})},dequeue:function(e){return this.each(function(){x.dequeue(this,e)})},delay:function(e,t){return e=x.fx?x.fx.speeds[e]||e:e,t=t||"fx",this.queue(t,function(t,n){var r=setTimeout(t,e);n.stop=function(){clearTimeout(r)}})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,n){var r,i=1,o=x.Deferred(),a=this,s=this.length,l=function(){--i||o.resolveWith(a,[a])};"string"!=typeof e&&(n=e,e=t),e=e||"fx";while(s--)r=x._data(a[s],e+"queueHooks"),r&&r.empty&&(i++,r.empty.add(l));return l(),o.promise(n)}});var z,X,U=/[\t\r\n\f]/g,V=/\r/g,Y=/^(?:input|select|textarea|button|object)$/i,J=/^(?:a|area)$/i,G=/^(?:checked|selected)$/i,Q=x.support.getSetAttribute,K=x.support.input;x.fn.extend({attr:function(e,t){return x.access(this,x.attr,e,t,arguments.length>1)},removeAttr:function(e){return this.each(function(){x.removeAttr(this,e)})},prop:function(e,t){return x.access(this,x.prop,e,t,arguments.length>1)},removeProp:function(e){return e=x.propFix[e]||e,this.each(function(){try{this[e]=t,delete this[e]}catch(n){}})},addClass:function(e){var t,n,r,i,o,a=0,s=this.length,l="string"==typeof e&&e;if(x.isFunction(e))return this.each(function(t){x(this).addClass(e.call(this,t,this.className))});if(l)for(t=(e||"").match(T)||[];s>a;a++)if(n=this[a],r=1===n.nodeType&&(n.className?(" "+n.className+" ").replace(U," "):" ")){o=0;while(i=t[o++])0>r.indexOf(" "+i+" ")&&(r+=i+" ");n.className=x.trim(r)}return this},removeClass:function(e){var t,n,r,i,o,a=0,s=this.length,l=0===arguments.length||"string"==typeof e&&e;if(x.isFunction(e))return this.each(function(t){x(this).removeClass(e.call(this,t,this.className))});if(l)for(t=(e||"").match(T)||[];s>a;a++)if(n=this[a],r=1===n.nodeType&&(n.className?(" "+n.className+" ").replace(U," "):"")){o=0;while(i=t[o++])while(r.indexOf(" "+i+" ")>=0)r=r.replace(" "+i+" "," ");n.className=e?x.trim(r):""}return this},toggleClass:function(e,t){var n=typeof e;return"boolean"==typeof t&&"string"===n?t?this.addClass(e):this.removeClass(e):x.isFunction(e)?this.each(function(n){x(this).toggleClass(e.call(this,n,this.className,t),t)}):this.each(function(){if("string"===n){var t,r=0,o=x(this),a=e.match(T)||[];while(t=a[r++])o.hasClass(t)?o.removeClass(t):o.addClass(t)}else(n===i||"boolean"===n)&&(this.className&&x._data(this,"__className__",this.className),this.className=this.className||e===!1?"":x._data(this,"__className__")||"")})},hasClass:function(e){var t=" "+e+" ",n=0,r=this.length;for(;r>n;n++)if(1===this[n].nodeType&&(" "+this[n].className+" ").replace(U," ").indexOf(t)>=0)return!0;return!1},val:function(e){var n,r,i,o=this[0];{if(arguments.length)return i=x.isFunction(e),this.each(function(n){var o;1===this.nodeType&&(o=i?e.call(this,n,x(this).val()):e,null==o?o="":"number"==typeof o?o+="":x.isArray(o)&&(o=x.map(o,function(e){return null==e?"":e+""})),r=x.valHooks[this.type]||x.valHooks[this.nodeName.toLowerCase()],r&&"set"in r&&r.set(this,o,"value")!==t||(this.value=o))});if(o)return r=x.valHooks[o.type]||x.valHooks[o.nodeName.toLowerCase()],r&&"get"in r&&(n=r.get(o,"value"))!==t?n:(n=o.value,"string"==typeof n?n.replace(V,""):null==n?"":n)}}}),x.extend({valHooks:{option:{get:function(e){var t=x.find.attr(e,"value");return null!=t?t:e.text}},select:{get:function(e){var t,n,r=e.options,i=e.selectedIndex,o="select-one"===e.type||0>i,a=o?null:[],s=o?i+1:r.length,l=0>i?s:o?i:0;for(;s>l;l++)if(n=r[l],!(!n.selected&&l!==i||(x.support.optDisabled?n.disabled:null!==n.getAttribute("disabled"))||n.parentNode.disabled&&x.nodeName(n.parentNode,"optgroup"))){if(t=x(n).val(),o)return t;a.push(t)}return a},set:function(e,t){var n,r,i=e.options,o=x.makeArray(t),a=i.length;while(a--)r=i[a],(r.selected=x.inArray(x(r).val(),o)>=0)&&(n=!0);return n||(e.selectedIndex=-1),o}}},attr:function(e,n,r){var o,a,s=e.nodeType;if(e&&3!==s&&8!==s&&2!==s)return typeof e.getAttribute===i?x.prop(e,n,r):(1===s&&x.isXMLDoc(e)||(n=n.toLowerCase(),o=x.attrHooks[n]||(x.expr.match.bool.test(n)?X:z)),r===t?o&&"get"in o&&null!==(a=o.get(e,n))?a:(a=x.find.attr(e,n),null==a?t:a):null!==r?o&&"set"in o&&(a=o.set(e,r,n))!==t?a:(e.setAttribute(n,r+""),r):(x.removeAttr(e,n),t))},removeAttr:function(e,t){var n,r,i=0,o=t&&t.match(T);if(o&&1===e.nodeType)while(n=o[i++])r=x.propFix[n]||n,x.expr.match.bool.test(n)?K&&Q||!G.test(n)?e[r]=!1:e[x.camelCase("default-"+n)]=e[r]=!1:x.attr(e,n,""),e.removeAttribute(Q?n:r)},attrHooks:{type:{set:function(e,t){if(!x.support.radioValue&&"radio"===t&&x.nodeName(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},propFix:{"for":"htmlFor","class":"className"},prop:function(e,n,r){var i,o,a,s=e.nodeType;if(e&&3!==s&&8!==s&&2!==s)return a=1!==s||!x.isXMLDoc(e),a&&(n=x.propFix[n]||n,o=x.propHooks[n]),r!==t?o&&"set"in o&&(i=o.set(e,r,n))!==t?i:e[n]=r:o&&"get"in o&&null!==(i=o.get(e,n))?i:e[n]},propHooks:{tabIndex:{get:function(e){var t=x.find.attr(e,"tabindex");return t?parseInt(t,10):Y.test(e.nodeName)||J.test(e.nodeName)&&e.href?0:-1}}}}),X={set:function(e,t,n){return t===!1?x.removeAttr(e,n):K&&Q||!G.test(n)?e.setAttribute(!Q&&x.propFix[n]||n,n):e[x.camelCase("default-"+n)]=e[n]=!0,n}},x.each(x.expr.match.bool.source.match(/\w+/g),function(e,n){var r=x.expr.attrHandle[n]||x.find.attr;x.expr.attrHandle[n]=K&&Q||!G.test(n)?function(e,n,i){var o=x.expr.attrHandle[n],a=i?t:(x.expr.attrHandle[n]=t)!=r(e,n,i)?n.toLowerCase():null;return x.expr.attrHandle[n]=o,a}:function(e,n,r){return r?t:e[x.camelCase("default-"+n)]?n.toLowerCase():null}}),K&&Q||(x.attrHooks.value={set:function(e,n,r){return x.nodeName(e,"input")?(e.defaultValue=n,t):z&&z.set(e,n,r)}}),Q||(z={set:function(e,n,r){var i=e.getAttributeNode(r);return i||e.setAttributeNode(i=e.ownerDocument.createAttribute(r)),i.value=n+="","value"===r||n===e.getAttribute(r)?n:t}},x.expr.attrHandle.id=x.expr.attrHandle.name=x.expr.attrHandle.coords=function(e,n,r){var i;return r?t:(i=e.getAttributeNode(n))&&""!==i.value?i.value:null},x.valHooks.button={get:function(e,n){var r=e.getAttributeNode(n);return r&&r.specified?r.value:t},set:z.set},x.attrHooks.contenteditable={set:function(e,t,n){z.set(e,""===t?!1:t,n)}},x.each(["width","height"],function(e,n){x.attrHooks[n]={set:function(e,r){return""===r?(e.setAttribute(n,"auto"),r):t}}})),x.support.hrefNormalized||x.each(["href","src"],function(e,t){x.propHooks[t]={get:function(e){return e.getAttribute(t,4)}}}),x.support.style||(x.attrHooks.style={get:function(e){return e.style.cssText||t},set:function(e,t){return e.style.cssText=t+""}}),x.support.optSelected||(x.propHooks.selected={get:function(e){var t=e.parentNode;return t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex),null}}),x.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){x.propFix[this.toLowerCase()]=this}),x.support.enctype||(x.propFix.enctype="encoding"),x.each(["radio","checkbox"],function(){x.valHooks[this]={set:function(e,n){return x.isArray(n)?e.checked=x.inArray(x(e).val(),n)>=0:t}},x.support.checkOn||(x.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})});var Z=/^(?:input|select|textarea)$/i,et=/^key/,tt=/^(?:mouse|contextmenu)|click/,nt=/^(?:focusinfocus|focusoutblur)$/,rt=/^([^.]*)(?:\.(.+)|)$/;function it(){return!0}function ot(){return!1}function at(){try{return a.activeElement}catch(e){}}x.event={global:{},add:function(e,n,r,o,a){var s,l,u,c,p,f,d,h,g,m,y,v=x._data(e);if(v){r.handler&&(c=r,r=c.handler,a=c.selector),r.guid||(r.guid=x.guid++),(l=v.events)||(l=v.events={}),(f=v.handle)||(f=v.handle=function(e){return typeof x===i||e&&x.event.triggered===e.type?t:x.event.dispatch.apply(f.elem,arguments)},f.elem=e),n=(n||"").match(T)||[""],u=n.length;while(u--)s=rt.exec(n[u])||[],g=y=s[1],m=(s[2]||"").split(".").sort(),g&&(p=x.event.special[g]||{},g=(a?p.delegateType:p.bindType)||g,p=x.event.special[g]||{},d=x.extend({type:g,origType:y,data:o,handler:r,guid:r.guid,selector:a,needsContext:a&&x.expr.match.needsContext.test(a),namespace:m.join(".")},c),(h=l[g])||(h=l[g]=[],h.delegateCount=0,p.setup&&p.setup.call(e,o,m,f)!==!1||(e.addEventListener?e.addEventListener(g,f,!1):e.attachEvent&&e.attachEvent("on"+g,f))),p.add&&(p.add.call(e,d),d.handler.guid||(d.handler.guid=r.guid)),a?h.splice(h.delegateCount++,0,d):h.push(d),x.event.global[g]=!0);e=null}},remove:function(e,t,n,r,i){var o,a,s,l,u,c,p,f,d,h,g,m=x.hasData(e)&&x._data(e);if(m&&(c=m.events)){t=(t||"").match(T)||[""],u=t.length;while(u--)if(s=rt.exec(t[u])||[],d=g=s[1],h=(s[2]||"").split(".").sort(),d){p=x.event.special[d]||{},d=(r?p.delegateType:p.bindType)||d,f=c[d]||[],s=s[2]&&RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),l=o=f.length;while(o--)a=f[o],!i&&g!==a.origType||n&&n.guid!==a.guid||s&&!s.test(a.namespace)||r&&r!==a.selector&&("**"!==r||!a.selector)||(f.splice(o,1),a.selector&&f.delegateCount--,p.remove&&p.remove.call(e,a));l&&!f.length&&(p.teardown&&p.teardown.call(e,h,m.handle)!==!1||x.removeEvent(e,d,m.handle),delete c[d])}else for(d in c)x.event.remove(e,d+t[u],n,r,!0);x.isEmptyObject(c)&&(delete m.handle,x._removeData(e,"events"))}},trigger:function(n,r,i,o){var s,l,u,c,p,f,d,h=[i||a],g=v.call(n,"type")?n.type:n,m=v.call(n,"namespace")?n.namespace.split("."):[];if(u=f=i=i||a,3!==i.nodeType&&8!==i.nodeType&&!nt.test(g+x.event.triggered)&&(g.indexOf(".")>=0&&(m=g.split("."),g=m.shift(),m.sort()),l=0>g.indexOf(":")&&"on"+g,n=n[x.expando]?n:new x.Event(g,"object"==typeof n&&n),n.isTrigger=o?2:3,n.namespace=m.join("."),n.namespace_re=n.namespace?RegExp("(^|\\.)"+m.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,n.result=t,n.target||(n.target=i),r=null==r?[n]:x.makeArray(r,[n]),p=x.event.special[g]||{},o||!p.trigger||p.trigger.apply(i,r)!==!1)){if(!o&&!p.noBubble&&!x.isWindow(i)){for(c=p.delegateType||g,nt.test(c+g)||(u=u.parentNode);u;u=u.parentNode)h.push(u),f=u;f===(i.ownerDocument||a)&&h.push(f.defaultView||f.parentWindow||e)}d=0;while((u=h[d++])&&!n.isPropagationStopped())n.type=d>1?c:p.bindType||g,s=(x._data(u,"events")||{})[n.type]&&x._data(u,"handle"),s&&s.apply(u,r),s=l&&u[l],s&&x.acceptData(u)&&s.apply&&s.apply(u,r)===!1&&n.preventDefault();if(n.type=g,!o&&!n.isDefaultPrevented()&&(!p._default||p._default.apply(h.pop(),r)===!1)&&x.acceptData(i)&&l&&i[g]&&!x.isWindow(i)){f=i[l],f&&(i[l]=null),x.event.triggered=g;try{i[g]()}catch(y){}x.event.triggered=t,f&&(i[l]=f)}return n.result}},dispatch:function(e){e=x.event.fix(e);var n,r,i,o,a,s=[],l=g.call(arguments),u=(x._data(this,"events")||{})[e.type]||[],c=x.event.special[e.type]||{};if(l[0]=e,e.delegateTarget=this,!c.preDispatch||c.preDispatch.call(this,e)!==!1){s=x.event.handlers.call(this,e,u),n=0;while((o=s[n++])&&!e.isPropagationStopped()){e.currentTarget=o.elem,a=0;while((i=o.handlers[a++])&&!e.isImmediatePropagationStopped())(!e.namespace_re||e.namespace_re.test(i.namespace))&&(e.handleObj=i,e.data=i.data,r=((x.event.special[i.origType]||{}).handle||i.handler).apply(o.elem,l),r!==t&&(e.result=r)===!1&&(e.preventDefault(),e.stopPropagation()))}return c.postDispatch&&c.postDispatch.call(this,e),e.result}},handlers:function(e,n){var r,i,o,a,s=[],l=n.delegateCount,u=e.target;if(l&&u.nodeType&&(!e.button||"click"!==e.type))for(;u!=this;u=u.parentNode||this)if(1===u.nodeType&&(u.disabled!==!0||"click"!==e.type)){for(o=[],a=0;l>a;a++)i=n[a],r=i.selector+" ",o[r]===t&&(o[r]=i.needsContext?x(r,this).index(u)>=0:x.find(r,this,null,[u]).length),o[r]&&o.push(i);o.length&&s.push({elem:u,handlers:o})}return n.length>l&&s.push({elem:this,handlers:n.slice(l)}),s},fix:function(e){if(e[x.expando])return e;var t,n,r,i=e.type,o=e,s=this.fixHooks[i];s||(this.fixHooks[i]=s=tt.test(i)?this.mouseHooks:et.test(i)?this.keyHooks:{}),r=s.props?this.props.concat(s.props):this.props,e=new x.Event(o),t=r.length;while(t--)n=r[t],e[n]=o[n];return e.target||(e.target=o.srcElement||a),3===e.target.nodeType&&(e.target=e.target.parentNode),e.metaKey=!!e.metaKey,s.filter?s.filter(e,o):e},props:"altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(e,t){return null==e.which&&(e.which=null!=t.charCode?t.charCode:t.keyCode),e}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(e,n){var r,i,o,s=n.button,l=n.fromElement;return null==e.pageX&&null!=n.clientX&&(i=e.target.ownerDocument||a,o=i.documentElement,r=i.body,e.pageX=n.clientX+(o&&o.scrollLeft||r&&r.scrollLeft||0)-(o&&o.clientLeft||r&&r.clientLeft||0),e.pageY=n.clientY+(o&&o.scrollTop||r&&r.scrollTop||0)-(o&&o.clientTop||r&&r.clientTop||0)),!e.relatedTarget&&l&&(e.relatedTarget=l===e.target?n.toElement:l),e.which||s===t||(e.which=1&s?1:2&s?3:4&s?2:0),e}},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==at()&&this.focus)try{return this.focus(),!1}catch(e){}},delegateType:"focusin"},blur:{trigger:function(){return this===at()&&this.blur?(this.blur(),!1):t},delegateType:"focusout"},click:{trigger:function(){return x.nodeName(this,"input")&&"checkbox"===this.type&&this.click?(this.click(),!1):t},_default:function(e){return x.nodeName(e.target,"a")}},beforeunload:{postDispatch:function(e){e.result!==t&&(e.originalEvent.returnValue=e.result)}}},simulate:function(e,t,n,r){var i=x.extend(new x.Event,n,{type:e,isSimulated:!0,originalEvent:{}});r?x.event.trigger(i,null,t):x.event.dispatch.call(t,i),i.isDefaultPrevented()&&n.preventDefault()}},x.removeEvent=a.removeEventListener?function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n,!1)}:function(e,t,n){var r="on"+t;e.detachEvent&&(typeof e[r]===i&&(e[r]=null),e.detachEvent(r,n))},x.Event=function(e,n){return this instanceof x.Event?(e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||e.returnValue===!1||e.getPreventDefault&&e.getPreventDefault()?it:ot):this.type=e,n&&x.extend(this,n),this.timeStamp=e&&e.timeStamp||x.now(),this[x.expando]=!0,t):new x.Event(e,n)},x.Event.prototype={isDefaultPrevented:ot,isPropagationStopped:ot,isImmediatePropagationStopped:ot,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=it,e&&(e.preventDefault?e.preventDefault():e.returnValue=!1)},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=it,e&&(e.stopPropagation&&e.stopPropagation(),e.cancelBubble=!0)},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=it,this.stopPropagation()}},x.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(e,t){x.event.special[e]={delegateType:t,bindType:t,handle:function(e){var n,r=this,i=e.relatedTarget,o=e.handleObj;return(!i||i!==r&&!x.contains(r,i))&&(e.type=o.origType,n=o.handler.apply(this,arguments),e.type=t),n}}}),x.support.submitBubbles||(x.event.special.submit={setup:function(){return x.nodeName(this,"form")?!1:(x.event.add(this,"click._submit keypress._submit",function(e){var n=e.target,r=x.nodeName(n,"input")||x.nodeName(n,"button")?n.form:t;r&&!x._data(r,"submitBubbles")&&(x.event.add(r,"submit._submit",function(e){e._submit_bubble=!0}),x._data(r,"submitBubbles",!0))}),t)},postDispatch:function(e){e._submit_bubble&&(delete e._submit_bubble,this.parentNode&&!e.isTrigger&&x.event.simulate("submit",this.parentNode,e,!0))},teardown:function(){return x.nodeName(this,"form")?!1:(x.event.remove(this,"._submit"),t)}}),x.support.changeBubbles||(x.event.special.change={setup:function(){return Z.test(this.nodeName)?(("checkbox"===this.type||"radio"===this.type)&&(x.event.add(this,"propertychange._change",function(e){"checked"===e.originalEvent.propertyName&&(this._just_changed=!0)}),x.event.add(this,"click._change",function(e){this._just_changed&&!e.isTrigger&&(this._just_changed=!1),x.event.simulate("change",this,e,!0)})),!1):(x.event.add(this,"beforeactivate._change",function(e){var t=e.target;Z.test(t.nodeName)&&!x._data(t,"changeBubbles")&&(x.event.add(t,"change._change",function(e){!this.parentNode||e.isSimulated||e.isTrigger||x.event.simulate("change",this.parentNode,e,!0)}),x._data(t,"changeBubbles",!0))}),t)},handle:function(e){var n=e.target;return this!==n||e.isSimulated||e.isTrigger||"radio"!==n.type&&"checkbox"!==n.type?e.handleObj.handler.apply(this,arguments):t},teardown:function(){return x.event.remove(this,"._change"),!Z.test(this.nodeName)}}),x.support.focusinBubbles||x.each({focus:"focusin",blur:"focusout"},function(e,t){var n=0,r=function(e){x.event.simulate(t,e.target,x.event.fix(e),!0)};x.event.special[t]={setup:function(){0===n++&&a.addEventListener(e,r,!0)},teardown:function(){0===--n&&a.removeEventListener(e,r,!0)}}}),x.fn.extend({on:function(e,n,r,i,o){var a,s;if("object"==typeof e){"string"!=typeof n&&(r=r||n,n=t);for(a in e)this.on(a,n,r,e[a],o);return this}if(null==r&&null==i?(i=n,r=n=t):null==i&&("string"==typeof n?(i=r,r=t):(i=r,r=n,n=t)),i===!1)i=ot;else if(!i)return this;return 1===o&&(s=i,i=function(e){return x().off(e),s.apply(this,arguments)},i.guid=s.guid||(s.guid=x.guid++)),this.each(function(){x.event.add(this,e,i,r,n)})},one:function(e,t,n,r){return this.on(e,t,n,r,1)},off:function(e,n,r){var i,o;if(e&&e.preventDefault&&e.handleObj)return i=e.handleObj,x(e.delegateTarget).off(i.namespace?i.origType+"."+i.namespace:i.origType,i.selector,i.handler),this;if("object"==typeof e){for(o in e)this.off(o,n,e[o]);return this}return(n===!1||"function"==typeof n)&&(r=n,n=t),r===!1&&(r=ot),this.each(function(){x.event.remove(this,e,r,n)})},trigger:function(e,t){return this.each(function(){x.event.trigger(e,t,this)})},triggerHandler:function(e,n){var r=this[0];return r?x.event.trigger(e,n,r,!0):t}});var st=/^.[^:#\[\.,]*$/,lt=/^(?:parents|prev(?:Until|All))/,ut=x.expr.match.needsContext,ct={children:!0,contents:!0,next:!0,prev:!0};x.fn.extend({find:function(e){var t,n=[],r=this,i=r.length;if("string"!=typeof e)return this.pushStack(x(e).filter(function(){for(t=0;i>t;t++)if(x.contains(r[t],this))return!0}));for(t=0;i>t;t++)x.find(e,r[t],n);return n=this.pushStack(i>1?x.unique(n):n),n.selector=this.selector?this.selector+" "+e:e,n},has:function(e){var t,n=x(e,this),r=n.length;return this.filter(function(){for(t=0;r>t;t++)if(x.contains(this,n[t]))return!0})},not:function(e){return this.pushStack(ft(this,e||[],!0))},filter:function(e){return this.pushStack(ft(this,e||[],!1))},is:function(e){return!!ft(this,"string"==typeof e&&ut.test(e)?x(e):e||[],!1).length},closest:function(e,t){var n,r=0,i=this.length,o=[],a=ut.test(e)||"string"!=typeof e?x(e,t||this.context):0;for(;i>r;r++)for(n=this[r];n&&n!==t;n=n.parentNode)if(11>n.nodeType&&(a?a.index(n)>-1:1===n.nodeType&&x.find.matchesSelector(n,e))){n=o.push(n);break}return this.pushStack(o.length>1?x.unique(o):o)},index:function(e){return e?"string"==typeof e?x.inArray(this[0],x(e)):x.inArray(e.jquery?e[0]:e,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){var n="string"==typeof e?x(e,t):x.makeArray(e&&e.nodeType?[e]:e),r=x.merge(this.get(),n);return this.pushStack(x.unique(r))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}});function pt(e,t){do e=e[t];while(e&&1!==e.nodeType);return e}x.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return x.dir(e,"parentNode")},parentsUntil:function(e,t,n){return x.dir(e,"parentNode",n)},next:function(e){return pt(e,"nextSibling")},prev:function(e){return pt(e,"previousSibling")},nextAll:function(e){return x.dir(e,"nextSibling")},prevAll:function(e){return x.dir(e,"previousSibling")},nextUntil:function(e,t,n){return x.dir(e,"nextSibling",n)},prevUntil:function(e,t,n){return x.dir(e,"previousSibling",n)},siblings:function(e){return x.sibling((e.parentNode||{}).firstChild,e)},children:function(e){return x.sibling(e.firstChild)},contents:function(e){return x.nodeName(e,"iframe")?e.contentDocument||e.contentWindow.document:x.merge([],e.childNodes)}},function(e,t){x.fn[e]=function(n,r){var i=x.map(this,t,n);return"Until"!==e.slice(-5)&&(r=n),r&&"string"==typeof r&&(i=x.filter(r,i)),this.length>1&&(ct[e]||(i=x.unique(i)),lt.test(e)&&(i=i.reverse())),this.pushStack(i)}}),x.extend({filter:function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?x.find.matchesSelector(r,e)?[r]:[]:x.find.matches(e,x.grep(t,function(e){return 1===e.nodeType}))},dir:function(e,n,r){var i=[],o=e[n];while(o&&9!==o.nodeType&&(r===t||1!==o.nodeType||!x(o).is(r)))1===o.nodeType&&i.push(o),o=o[n];return i},sibling:function(e,t){var n=[];for(;e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n}});function ft(e,t,n){if(x.isFunction(t))return x.grep(e,function(e,r){return!!t.call(e,r,e)!==n});if(t.nodeType)return x.grep(e,function(e){return e===t!==n});if("string"==typeof t){if(st.test(t))return x.filter(t,e,n);t=x.filter(t,e)}return x.grep(e,function(e){return x.inArray(e,t)>=0!==n})}function dt(e){var t=ht.split("|"),n=e.createDocumentFragment();if(n.createElement)while(t.length)n.createElement(t.pop());return n}var ht="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",gt=/ jQuery\d+="(?:null|\d+)"/g,mt=RegExp("<(?:"+ht+")[\\s/>]","i"),yt=/^\s+/,vt=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,bt=/<([\w:]+)/,xt=/<tbody/i,wt=/<|&#?\w+;/,Tt=/<(?:script|style|link)/i,Ct=/^(?:checkbox|radio)$/i,Nt=/checked\s*(?:[^=]|=\s*.checked.)/i,kt=/^$|\/(?:java|ecma)script/i,Et=/^true\/(.*)/,St=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,At={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],area:[1,"<map>","</map>"],param:[1,"<object>","</object>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:x.support.htmlSerialize?[0,"",""]:[1,"X<div>","</div>"]},jt=dt(a),Dt=jt.appendChild(a.createElement("div"));At.optgroup=At.option,At.tbody=At.tfoot=At.colgroup=At.caption=At.thead,At.th=At.td,x.fn.extend({text:function(e){return x.access(this,function(e){return e===t?x.text(this):this.empty().append((this[0]&&this[0].ownerDocument||a).createTextNode(e))},null,e,arguments.length)},append:function(){return this.domManip(arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Lt(this,e);t.appendChild(e)}})},prepend:function(){return this.domManip(arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Lt(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return this.domManip(arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return this.domManip(arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},remove:function(e,t){var n,r=e?x.filter(e,this):this,i=0;for(;null!=(n=r[i]);i++)t||1!==n.nodeType||x.cleanData(Ft(n)),n.parentNode&&(t&&x.contains(n.ownerDocument,n)&&_t(Ft(n,"script")),n.parentNode.removeChild(n));return this},empty:function(){var e,t=0;for(;null!=(e=this[t]);t++){1===e.nodeType&&x.cleanData(Ft(e,!1));while(e.firstChild)e.removeChild(e.firstChild);e.options&&x.nodeName(e,"select")&&(e.options.length=0)}return this},clone:function(e,t){return e=null==e?!1:e,t=null==t?e:t,this.map(function(){return x.clone(this,e,t)})},html:function(e){return x.access(this,function(e){var n=this[0]||{},r=0,i=this.length;if(e===t)return 1===n.nodeType?n.innerHTML.replace(gt,""):t;if(!("string"!=typeof e||Tt.test(e)||!x.support.htmlSerialize&&mt.test(e)||!x.support.leadingWhitespace&&yt.test(e)||At[(bt.exec(e)||["",""])[1].toLowerCase()])){e=e.replace(vt,"<$1></$2>");try{for(;i>r;r++)n=this[r]||{},1===n.nodeType&&(x.cleanData(Ft(n,!1)),n.innerHTML=e);n=0}catch(o){}}n&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var e=x.map(this,function(e){return[e.nextSibling,e.parentNode]}),t=0;return this.domManip(arguments,function(n){var r=e[t++],i=e[t++];i&&(r&&r.parentNode!==i&&(r=this.nextSibling),x(this).remove(),i.insertBefore(n,r))},!0),t?this:this.remove()},detach:function(e){return this.remove(e,!0)},domManip:function(e,t,n){e=d.apply([],e);var r,i,o,a,s,l,u=0,c=this.length,p=this,f=c-1,h=e[0],g=x.isFunction(h);if(g||!(1>=c||"string"!=typeof h||x.support.checkClone)&&Nt.test(h))return this.each(function(r){var i=p.eq(r);g&&(e[0]=h.call(this,r,i.html())),i.domManip(e,t,n)});if(c&&(l=x.buildFragment(e,this[0].ownerDocument,!1,!n&&this),r=l.firstChild,1===l.childNodes.length&&(l=r),r)){for(a=x.map(Ft(l,"script"),Ht),o=a.length;c>u;u++)i=l,u!==f&&(i=x.clone(i,!0,!0),o&&x.merge(a,Ft(i,"script"))),t.call(this[u],i,u);if(o)for(s=a[a.length-1].ownerDocument,x.map(a,qt),u=0;o>u;u++)i=a[u],kt.test(i.type||"")&&!x._data(i,"globalEval")&&x.contains(s,i)&&(i.src?x._evalUrl(i.src):x.globalEval((i.text||i.textContent||i.innerHTML||"").replace(St,"")));l=r=null}return this}});function Lt(e,t){return x.nodeName(e,"table")&&x.nodeName(1===t.nodeType?t:t.firstChild,"tr")?e.getElementsByTagName("tbody")[0]||e.appendChild(e.ownerDocument.createElement("tbody")):e}function Ht(e){return e.type=(null!==x.find.attr(e,"type"))+"/"+e.type,e}function qt(e){var t=Et.exec(e.type);return t?e.type=t[1]:e.removeAttribute("type"),e}function _t(e,t){var n,r=0;for(;null!=(n=e[r]);r++)x._data(n,"globalEval",!t||x._data(t[r],"globalEval"))}function Mt(e,t){if(1===t.nodeType&&x.hasData(e)){var n,r,i,o=x._data(e),a=x._data(t,o),s=o.events;if(s){delete a.handle,a.events={};for(n in s)for(r=0,i=s[n].length;i>r;r++)x.event.add(t,n,s[n][r])}a.data&&(a.data=x.extend({},a.data))}}function Ot(e,t){var n,r,i;if(1===t.nodeType){if(n=t.nodeName.toLowerCase(),!x.support.noCloneEvent&&t[x.expando]){i=x._data(t);for(r in i.events)x.removeEvent(t,r,i.handle);t.removeAttribute(x.expando)}"script"===n&&t.text!==e.text?(Ht(t).text=e.text,qt(t)):"object"===n?(t.parentNode&&(t.outerHTML=e.outerHTML),x.support.html5Clone&&e.innerHTML&&!x.trim(t.innerHTML)&&(t.innerHTML=e.innerHTML)):"input"===n&&Ct.test(e.type)?(t.defaultChecked=t.checked=e.checked,t.value!==e.value&&(t.value=e.value)):"option"===n?t.defaultSelected=t.selected=e.defaultSelected:("input"===n||"textarea"===n)&&(t.defaultValue=e.defaultValue)}}x.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,t){x.fn[e]=function(e){var n,r=0,i=[],o=x(e),a=o.length-1;for(;a>=r;r++)n=r===a?this:this.clone(!0),x(o[r])[t](n),h.apply(i,n.get());return this.pushStack(i)}});function Ft(e,n){var r,o,a=0,s=typeof e.getElementsByTagName!==i?e.getElementsByTagName(n||"*"):typeof e.querySelectorAll!==i?e.querySelectorAll(n||"*"):t;if(!s)for(s=[],r=e.childNodes||e;null!=(o=r[a]);a++)!n||x.nodeName(o,n)?s.push(o):x.merge(s,Ft(o,n));return n===t||n&&x.nodeName(e,n)?x.merge([e],s):s}function Bt(e){Ct.test(e.type)&&(e.defaultChecked=e.checked)}x.extend({clone:function(e,t,n){var r,i,o,a,s,l=x.contains(e.ownerDocument,e);if(x.support.html5Clone||x.isXMLDoc(e)||!mt.test("<"+e.nodeName+">")?o=e.cloneNode(!0):(Dt.innerHTML=e.outerHTML,Dt.removeChild(o=Dt.firstChild)),!(x.support.noCloneEvent&&x.support.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||x.isXMLDoc(e)))for(r=Ft(o),s=Ft(e),a=0;null!=(i=s[a]);++a)r[a]&&Ot(i,r[a]);if(t)if(n)for(s=s||Ft(e),r=r||Ft(o),a=0;null!=(i=s[a]);a++)Mt(i,r[a]);else Mt(e,o);return r=Ft(o,"script"),r.length>0&&_t(r,!l&&Ft(e,"script")),r=s=i=null,o},buildFragment:function(e,t,n,r){var i,o,a,s,l,u,c,p=e.length,f=dt(t),d=[],h=0;for(;p>h;h++)if(o=e[h],o||0===o)if("object"===x.type(o))x.merge(d,o.nodeType?[o]:o);else if(wt.test(o)){s=s||f.appendChild(t.createElement("div")),l=(bt.exec(o)||["",""])[1].toLowerCase(),c=At[l]||At._default,s.innerHTML=c[1]+o.replace(vt,"<$1></$2>")+c[2],i=c[0];while(i--)s=s.lastChild;if(!x.support.leadingWhitespace&&yt.test(o)&&d.push(t.createTextNode(yt.exec(o)[0])),!x.support.tbody){o="table"!==l||xt.test(o)?"<table>"!==c[1]||xt.test(o)?0:s:s.firstChild,i=o&&o.childNodes.length;while(i--)x.nodeName(u=o.childNodes[i],"tbody")&&!u.childNodes.length&&o.removeChild(u)}x.merge(d,s.childNodes),s.textContent="";while(s.firstChild)s.removeChild(s.firstChild);s=f.lastChild}else d.push(t.createTextNode(o));s&&f.removeChild(s),x.support.appendChecked||x.grep(Ft(d,"input"),Bt),h=0;while(o=d[h++])if((!r||-1===x.inArray(o,r))&&(a=x.contains(o.ownerDocument,o),s=Ft(f.appendChild(o),"script"),a&&_t(s),n)){i=0;while(o=s[i++])kt.test(o.type||"")&&n.push(o)}return s=null,f},cleanData:function(e,t){var n,r,o,a,s=0,l=x.expando,u=x.cache,c=x.support.deleteExpando,f=x.event.special;for(;null!=(n=e[s]);s++)if((t||x.acceptData(n))&&(o=n[l],a=o&&u[o])){if(a.events)for(r in a.events)f[r]?x.event.remove(n,r):x.removeEvent(n,r,a.handle);
-u[o]&&(delete u[o],c?delete n[l]:typeof n.removeAttribute!==i?n.removeAttribute(l):n[l]=null,p.push(o))}},_evalUrl:function(e){return x.ajax({url:e,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0})}}),x.fn.extend({wrapAll:function(e){if(x.isFunction(e))return this.each(function(t){x(this).wrapAll(e.call(this,t))});if(this[0]){var t=x(e,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstChild&&1===e.firstChild.nodeType)e=e.firstChild;return e}).append(this)}return this},wrapInner:function(e){return x.isFunction(e)?this.each(function(t){x(this).wrapInner(e.call(this,t))}):this.each(function(){var t=x(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=x.isFunction(e);return this.each(function(n){x(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(){return this.parent().each(function(){x.nodeName(this,"body")||x(this).replaceWith(this.childNodes)}).end()}});var Pt,Rt,Wt,$t=/alpha\([^)]*\)/i,It=/opacity\s*=\s*([^)]*)/,zt=/^(top|right|bottom|left)$/,Xt=/^(none|table(?!-c[ea]).+)/,Ut=/^margin/,Vt=RegExp("^("+w+")(.*)$","i"),Yt=RegExp("^("+w+")(?!px)[a-z%]+$","i"),Jt=RegExp("^([+-])=("+w+")","i"),Gt={BODY:"block"},Qt={position:"absolute",visibility:"hidden",display:"block"},Kt={letterSpacing:0,fontWeight:400},Zt=["Top","Right","Bottom","Left"],en=["Webkit","O","Moz","ms"];function tn(e,t){if(t in e)return t;var n=t.charAt(0).toUpperCase()+t.slice(1),r=t,i=en.length;while(i--)if(t=en[i]+n,t in e)return t;return r}function nn(e,t){return e=t||e,"none"===x.css(e,"display")||!x.contains(e.ownerDocument,e)}function rn(e,t){var n,r,i,o=[],a=0,s=e.length;for(;s>a;a++)r=e[a],r.style&&(o[a]=x._data(r,"olddisplay"),n=r.style.display,t?(o[a]||"none"!==n||(r.style.display=""),""===r.style.display&&nn(r)&&(o[a]=x._data(r,"olddisplay",ln(r.nodeName)))):o[a]||(i=nn(r),(n&&"none"!==n||!i)&&x._data(r,"olddisplay",i?n:x.css(r,"display"))));for(a=0;s>a;a++)r=e[a],r.style&&(t&&"none"!==r.style.display&&""!==r.style.display||(r.style.display=t?o[a]||"":"none"));return e}x.fn.extend({css:function(e,n){return x.access(this,function(e,n,r){var i,o,a={},s=0;if(x.isArray(n)){for(o=Rt(e),i=n.length;i>s;s++)a[n[s]]=x.css(e,n[s],!1,o);return a}return r!==t?x.style(e,n,r):x.css(e,n)},e,n,arguments.length>1)},show:function(){return rn(this,!0)},hide:function(){return rn(this)},toggle:function(e){return"boolean"==typeof e?e?this.show():this.hide():this.each(function(){nn(this)?x(this).show():x(this).hide()})}}),x.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=Wt(e,"opacity");return""===n?"1":n}}}},cssNumber:{columnCount:!0,fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":x.support.cssFloat?"cssFloat":"styleFloat"},style:function(e,n,r,i){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var o,a,s,l=x.camelCase(n),u=e.style;if(n=x.cssProps[l]||(x.cssProps[l]=tn(u,l)),s=x.cssHooks[n]||x.cssHooks[l],r===t)return s&&"get"in s&&(o=s.get(e,!1,i))!==t?o:u[n];if(a=typeof r,"string"===a&&(o=Jt.exec(r))&&(r=(o[1]+1)*o[2]+parseFloat(x.css(e,n)),a="number"),!(null==r||"number"===a&&isNaN(r)||("number"!==a||x.cssNumber[l]||(r+="px"),x.support.clearCloneStyle||""!==r||0!==n.indexOf("background")||(u[n]="inherit"),s&&"set"in s&&(r=s.set(e,r,i))===t)))try{u[n]=r}catch(c){}}},css:function(e,n,r,i){var o,a,s,l=x.camelCase(n);return n=x.cssProps[l]||(x.cssProps[l]=tn(e.style,l)),s=x.cssHooks[n]||x.cssHooks[l],s&&"get"in s&&(a=s.get(e,!0,r)),a===t&&(a=Wt(e,n,i)),"normal"===a&&n in Kt&&(a=Kt[n]),""===r||r?(o=parseFloat(a),r===!0||x.isNumeric(o)?o||0:a):a}}),e.getComputedStyle?(Rt=function(t){return e.getComputedStyle(t,null)},Wt=function(e,n,r){var i,o,a,s=r||Rt(e),l=s?s.getPropertyValue(n)||s[n]:t,u=e.style;return s&&(""!==l||x.contains(e.ownerDocument,e)||(l=x.style(e,n)),Yt.test(l)&&Ut.test(n)&&(i=u.width,o=u.minWidth,a=u.maxWidth,u.minWidth=u.maxWidth=u.width=l,l=s.width,u.width=i,u.minWidth=o,u.maxWidth=a)),l}):a.documentElement.currentStyle&&(Rt=function(e){return e.currentStyle},Wt=function(e,n,r){var i,o,a,s=r||Rt(e),l=s?s[n]:t,u=e.style;return null==l&&u&&u[n]&&(l=u[n]),Yt.test(l)&&!zt.test(n)&&(i=u.left,o=e.runtimeStyle,a=o&&o.left,a&&(o.left=e.currentStyle.left),u.left="fontSize"===n?"1em":l,l=u.pixelLeft+"px",u.left=i,a&&(o.left=a)),""===l?"auto":l});function on(e,t,n){var r=Vt.exec(t);return r?Math.max(0,r[1]-(n||0))+(r[2]||"px"):t}function an(e,t,n,r,i){var o=n===(r?"border":"content")?4:"width"===t?1:0,a=0;for(;4>o;o+=2)"margin"===n&&(a+=x.css(e,n+Zt[o],!0,i)),r?("content"===n&&(a-=x.css(e,"padding"+Zt[o],!0,i)),"margin"!==n&&(a-=x.css(e,"border"+Zt[o]+"Width",!0,i))):(a+=x.css(e,"padding"+Zt[o],!0,i),"padding"!==n&&(a+=x.css(e,"border"+Zt[o]+"Width",!0,i)));return a}function sn(e,t,n){var r=!0,i="width"===t?e.offsetWidth:e.offsetHeight,o=Rt(e),a=x.support.boxSizing&&"border-box"===x.css(e,"boxSizing",!1,o);if(0>=i||null==i){if(i=Wt(e,t,o),(0>i||null==i)&&(i=e.style[t]),Yt.test(i))return i;r=a&&(x.support.boxSizingReliable||i===e.style[t]),i=parseFloat(i)||0}return i+an(e,t,n||(a?"border":"content"),r,o)+"px"}function ln(e){var t=a,n=Gt[e];return n||(n=un(e,t),"none"!==n&&n||(Pt=(Pt||x("<iframe frameborder='0' width='0' height='0'/>").css("cssText","display:block !important")).appendTo(t.documentElement),t=(Pt[0].contentWindow||Pt[0].contentDocument).document,t.write("<!doctype html><html><body>"),t.close(),n=un(e,t),Pt.detach()),Gt[e]=n),n}function un(e,t){var n=x(t.createElement(e)).appendTo(t.body),r=x.css(n[0],"display");return n.remove(),r}x.each(["height","width"],function(e,n){x.cssHooks[n]={get:function(e,r,i){return r?0===e.offsetWidth&&Xt.test(x.css(e,"display"))?x.swap(e,Qt,function(){return sn(e,n,i)}):sn(e,n,i):t},set:function(e,t,r){var i=r&&Rt(e);return on(e,t,r?an(e,n,r,x.support.boxSizing&&"border-box"===x.css(e,"boxSizing",!1,i),i):0)}}}),x.support.opacity||(x.cssHooks.opacity={get:function(e,t){return It.test((t&&e.currentStyle?e.currentStyle.filter:e.style.filter)||"")?.01*parseFloat(RegExp.$1)+"":t?"1":""},set:function(e,t){var n=e.style,r=e.currentStyle,i=x.isNumeric(t)?"alpha(opacity="+100*t+")":"",o=r&&r.filter||n.filter||"";n.zoom=1,(t>=1||""===t)&&""===x.trim(o.replace($t,""))&&n.removeAttribute&&(n.removeAttribute("filter"),""===t||r&&!r.filter)||(n.filter=$t.test(o)?o.replace($t,i):o+" "+i)}}),x(function(){x.support.reliableMarginRight||(x.cssHooks.marginRight={get:function(e,n){return n?x.swap(e,{display:"inline-block"},Wt,[e,"marginRight"]):t}}),!x.support.pixelPosition&&x.fn.position&&x.each(["top","left"],function(e,n){x.cssHooks[n]={get:function(e,r){return r?(r=Wt(e,n),Yt.test(r)?x(e).position()[n]+"px":r):t}}})}),x.expr&&x.expr.filters&&(x.expr.filters.hidden=function(e){return 0>=e.offsetWidth&&0>=e.offsetHeight||!x.support.reliableHiddenOffsets&&"none"===(e.style&&e.style.display||x.css(e,"display"))},x.expr.filters.visible=function(e){return!x.expr.filters.hidden(e)}),x.each({margin:"",padding:"",border:"Width"},function(e,t){x.cssHooks[e+t]={expand:function(n){var r=0,i={},o="string"==typeof n?n.split(" "):[n];for(;4>r;r++)i[e+Zt[r]+t]=o[r]||o[r-2]||o[0];return i}},Ut.test(e)||(x.cssHooks[e+t].set=on)});var cn=/%20/g,pn=/\[\]$/,fn=/\r?\n/g,dn=/^(?:submit|button|image|reset|file)$/i,hn=/^(?:input|select|textarea|keygen)/i;x.fn.extend({serialize:function(){return x.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=x.prop(this,"elements");return e?x.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!x(this).is(":disabled")&&hn.test(this.nodeName)&&!dn.test(e)&&(this.checked||!Ct.test(e))}).map(function(e,t){var n=x(this).val();return null==n?null:x.isArray(n)?x.map(n,function(e){return{name:t.name,value:e.replace(fn,"\r\n")}}):{name:t.name,value:n.replace(fn,"\r\n")}}).get()}}),x.param=function(e,n){var r,i=[],o=function(e,t){t=x.isFunction(t)?t():null==t?"":t,i[i.length]=encodeURIComponent(e)+"="+encodeURIComponent(t)};if(n===t&&(n=x.ajaxSettings&&x.ajaxSettings.traditional),x.isArray(e)||e.jquery&&!x.isPlainObject(e))x.each(e,function(){o(this.name,this.value)});else for(r in e)gn(r,e[r],n,o);return i.join("&").replace(cn,"+")};function gn(e,t,n,r){var i;if(x.isArray(t))x.each(t,function(t,i){n||pn.test(e)?r(e,i):gn(e+"["+("object"==typeof i?t:"")+"]",i,n,r)});else if(n||"object"!==x.type(t))r(e,t);else for(i in t)gn(e+"["+i+"]",t[i],n,r)}x.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(e,t){x.fn[t]=function(e,n){return arguments.length>0?this.on(t,null,e,n):this.trigger(t)}}),x.fn.extend({hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)},bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)}});var mn,yn,vn=x.now(),bn=/\?/,xn=/#.*$/,wn=/([?&])_=[^&]*/,Tn=/^(.*?):[ \t]*([^\r\n]*)\r?$/gm,Cn=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Nn=/^(?:GET|HEAD)$/,kn=/^\/\//,En=/^([\w.+-]+:)(?:\/\/([^\/?#:]*)(?::(\d+)|)|)/,Sn=x.fn.load,An={},jn={},Dn="*/".concat("*");try{yn=o.href}catch(Ln){yn=a.createElement("a"),yn.href="",yn=yn.href}mn=En.exec(yn.toLowerCase())||[];function Hn(e){return function(t,n){"string"!=typeof t&&(n=t,t="*");var r,i=0,o=t.toLowerCase().match(T)||[];if(x.isFunction(n))while(r=o[i++])"+"===r[0]?(r=r.slice(1)||"*",(e[r]=e[r]||[]).unshift(n)):(e[r]=e[r]||[]).push(n)}}function qn(e,n,r,i){var o={},a=e===jn;function s(l){var u;return o[l]=!0,x.each(e[l]||[],function(e,l){var c=l(n,r,i);return"string"!=typeof c||a||o[c]?a?!(u=c):t:(n.dataTypes.unshift(c),s(c),!1)}),u}return s(n.dataTypes[0])||!o["*"]&&s("*")}function _n(e,n){var r,i,o=x.ajaxSettings.flatOptions||{};for(i in n)n[i]!==t&&((o[i]?e:r||(r={}))[i]=n[i]);return r&&x.extend(!0,e,r),e}x.fn.load=function(e,n,r){if("string"!=typeof e&&Sn)return Sn.apply(this,arguments);var i,o,a,s=this,l=e.indexOf(" ");return l>=0&&(i=e.slice(l,e.length),e=e.slice(0,l)),x.isFunction(n)?(r=n,n=t):n&&"object"==typeof n&&(a="POST"),s.length>0&&x.ajax({url:e,type:a,dataType:"html",data:n}).done(function(e){o=arguments,s.html(i?x("<div>").append(x.parseHTML(e)).find(i):e)}).complete(r&&function(e,t){s.each(r,o||[e.responseText,t,e])}),this},x.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){x.fn[t]=function(e){return this.on(t,e)}}),x.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:yn,type:"GET",isLocal:Cn.test(mn[1]),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Dn,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":x.parseJSON,"text xml":x.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?_n(_n(e,x.ajaxSettings),t):_n(x.ajaxSettings,e)},ajaxPrefilter:Hn(An),ajaxTransport:Hn(jn),ajax:function(e,n){"object"==typeof e&&(n=e,e=t),n=n||{};var r,i,o,a,s,l,u,c,p=x.ajaxSetup({},n),f=p.context||p,d=p.context&&(f.nodeType||f.jquery)?x(f):x.event,h=x.Deferred(),g=x.Callbacks("once memory"),m=p.statusCode||{},y={},v={},b=0,w="canceled",C={readyState:0,getResponseHeader:function(e){var t;if(2===b){if(!c){c={};while(t=Tn.exec(a))c[t[1].toLowerCase()]=t[2]}t=c[e.toLowerCase()]}return null==t?null:t},getAllResponseHeaders:function(){return 2===b?a:null},setRequestHeader:function(e,t){var n=e.toLowerCase();return b||(e=v[n]=v[n]||e,y[e]=t),this},overrideMimeType:function(e){return b||(p.mimeType=e),this},statusCode:function(e){var t;if(e)if(2>b)for(t in e)m[t]=[m[t],e[t]];else C.always(e[C.status]);return this},abort:function(e){var t=e||w;return u&&u.abort(t),k(0,t),this}};if(h.promise(C).complete=g.add,C.success=C.done,C.error=C.fail,p.url=((e||p.url||yn)+"").replace(xn,"").replace(kn,mn[1]+"//"),p.type=n.method||n.type||p.method||p.type,p.dataTypes=x.trim(p.dataType||"*").toLowerCase().match(T)||[""],null==p.crossDomain&&(r=En.exec(p.url.toLowerCase()),p.crossDomain=!(!r||r[1]===mn[1]&&r[2]===mn[2]&&(r[3]||("http:"===r[1]?"80":"443"))===(mn[3]||("http:"===mn[1]?"80":"443")))),p.data&&p.processData&&"string"!=typeof p.data&&(p.data=x.param(p.data,p.traditional)),qn(An,p,n,C),2===b)return C;l=p.global,l&&0===x.active++&&x.event.trigger("ajaxStart"),p.type=p.type.toUpperCase(),p.hasContent=!Nn.test(p.type),o=p.url,p.hasContent||(p.data&&(o=p.url+=(bn.test(o)?"&":"?")+p.data,delete p.data),p.cache===!1&&(p.url=wn.test(o)?o.replace(wn,"$1_="+vn++):o+(bn.test(o)?"&":"?")+"_="+vn++)),p.ifModified&&(x.lastModified[o]&&C.setRequestHeader("If-Modified-Since",x.lastModified[o]),x.etag[o]&&C.setRequestHeader("If-None-Match",x.etag[o])),(p.data&&p.hasContent&&p.contentType!==!1||n.contentType)&&C.setRequestHeader("Content-Type",p.contentType),C.setRequestHeader("Accept",p.dataTypes[0]&&p.accepts[p.dataTypes[0]]?p.accepts[p.dataTypes[0]]+("*"!==p.dataTypes[0]?", "+Dn+"; q=0.01":""):p.accepts["*"]);for(i in p.headers)C.setRequestHeader(i,p.headers[i]);if(p.beforeSend&&(p.beforeSend.call(f,C,p)===!1||2===b))return C.abort();w="abort";for(i in{success:1,error:1,complete:1})C[i](p[i]);if(u=qn(jn,p,n,C)){C.readyState=1,l&&d.trigger("ajaxSend",[C,p]),p.async&&p.timeout>0&&(s=setTimeout(function(){C.abort("timeout")},p.timeout));try{b=1,u.send(y,k)}catch(N){if(!(2>b))throw N;k(-1,N)}}else k(-1,"No Transport");function k(e,n,r,i){var c,y,v,w,T,N=n;2!==b&&(b=2,s&&clearTimeout(s),u=t,a=i||"",C.readyState=e>0?4:0,c=e>=200&&300>e||304===e,r&&(w=Mn(p,C,r)),w=On(p,w,C,c),c?(p.ifModified&&(T=C.getResponseHeader("Last-Modified"),T&&(x.lastModified[o]=T),T=C.getResponseHeader("etag"),T&&(x.etag[o]=T)),204===e||"HEAD"===p.type?N="nocontent":304===e?N="notmodified":(N=w.state,y=w.data,v=w.error,c=!v)):(v=N,(e||!N)&&(N="error",0>e&&(e=0))),C.status=e,C.statusText=(n||N)+"",c?h.resolveWith(f,[y,N,C]):h.rejectWith(f,[C,N,v]),C.statusCode(m),m=t,l&&d.trigger(c?"ajaxSuccess":"ajaxError",[C,p,c?y:v]),g.fireWith(f,[C,N]),l&&(d.trigger("ajaxComplete",[C,p]),--x.active||x.event.trigger("ajaxStop")))}return C},getJSON:function(e,t,n){return x.get(e,t,n,"json")},getScript:function(e,n){return x.get(e,t,n,"script")}}),x.each(["get","post"],function(e,n){x[n]=function(e,r,i,o){return x.isFunction(r)&&(o=o||i,i=r,r=t),x.ajax({url:e,type:n,dataType:o,data:r,success:i})}});function Mn(e,n,r){var i,o,a,s,l=e.contents,u=e.dataTypes;while("*"===u[0])u.shift(),o===t&&(o=e.mimeType||n.getResponseHeader("Content-Type"));if(o)for(s in l)if(l[s]&&l[s].test(o)){u.unshift(s);break}if(u[0]in r)a=u[0];else{for(s in r){if(!u[0]||e.converters[s+" "+u[0]]){a=s;break}i||(i=s)}a=a||i}return a?(a!==u[0]&&u.unshift(a),r[a]):t}function On(e,t,n,r){var i,o,a,s,l,u={},c=e.dataTypes.slice();if(c[1])for(a in e.converters)u[a.toLowerCase()]=e.converters[a];o=c.shift();while(o)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!l&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),l=o,o=c.shift())if("*"===o)o=l;else if("*"!==l&&l!==o){if(a=u[l+" "+o]||u["* "+o],!a)for(i in u)if(s=i.split(" "),s[1]===o&&(a=u[l+" "+s[0]]||u["* "+s[0]])){a===!0?a=u[i]:u[i]!==!0&&(o=s[0],c.unshift(s[1]));break}if(a!==!0)if(a&&e["throws"])t=a(t);else try{t=a(t)}catch(p){return{state:"parsererror",error:a?p:"No conversion from "+l+" to "+o}}}return{state:"success",data:t}}x.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/(?:java|ecma)script/},converters:{"text script":function(e){return x.globalEval(e),e}}}),x.ajaxPrefilter("script",function(e){e.cache===t&&(e.cache=!1),e.crossDomain&&(e.type="GET",e.global=!1)}),x.ajaxTransport("script",function(e){if(e.crossDomain){var n,r=a.head||x("head")[0]||a.documentElement;return{send:function(t,i){n=a.createElement("script"),n.async=!0,e.scriptCharset&&(n.charset=e.scriptCharset),n.src=e.url,n.onload=n.onreadystatechange=function(e,t){(t||!n.readyState||/loaded|complete/.test(n.readyState))&&(n.onload=n.onreadystatechange=null,n.parentNode&&n.parentNode.removeChild(n),n=null,t||i(200,"success"))},r.insertBefore(n,r.firstChild)},abort:function(){n&&n.onload(t,!0)}}}});var Fn=[],Bn=/(=)\?(?=&|$)|\?\?/;x.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Fn.pop()||x.expando+"_"+vn++;return this[e]=!0,e}}),x.ajaxPrefilter("json jsonp",function(n,r,i){var o,a,s,l=n.jsonp!==!1&&(Bn.test(n.url)?"url":"string"==typeof n.data&&!(n.contentType||"").indexOf("application/x-www-form-urlencoded")&&Bn.test(n.data)&&"data");return l||"jsonp"===n.dataTypes[0]?(o=n.jsonpCallback=x.isFunction(n.jsonpCallback)?n.jsonpCallback():n.jsonpCallback,l?n[l]=n[l].replace(Bn,"$1"+o):n.jsonp!==!1&&(n.url+=(bn.test(n.url)?"&":"?")+n.jsonp+"="+o),n.converters["script json"]=function(){return s||x.error(o+" was not called"),s[0]},n.dataTypes[0]="json",a=e[o],e[o]=function(){s=arguments},i.always(function(){e[o]=a,n[o]&&(n.jsonpCallback=r.jsonpCallback,Fn.push(o)),s&&x.isFunction(a)&&a(s[0]),s=a=t}),"script"):t});var Pn,Rn,Wn=0,$n=e.ActiveXObject&&function(){var e;for(e in Pn)Pn[e](t,!0)};function In(){try{return new e.XMLHttpRequest}catch(t){}}function zn(){try{return new e.ActiveXObject("Microsoft.XMLHTTP")}catch(t){}}x.ajaxSettings.xhr=e.ActiveXObject?function(){return!this.isLocal&&In()||zn()}:In,Rn=x.ajaxSettings.xhr(),x.support.cors=!!Rn&&"withCredentials"in Rn,Rn=x.support.ajax=!!Rn,Rn&&x.ajaxTransport(function(n){if(!n.crossDomain||x.support.cors){var r;return{send:function(i,o){var a,s,l=n.xhr();if(n.username?l.open(n.type,n.url,n.async,n.username,n.password):l.open(n.type,n.url,n.async),n.xhrFields)for(s in n.xhrFields)l[s]=n.xhrFields[s];n.mimeType&&l.overrideMimeType&&l.overrideMimeType(n.mimeType),n.crossDomain||i["X-Requested-With"]||(i["X-Requested-With"]="XMLHttpRequest");try{for(s in i)l.setRequestHeader(s,i[s])}catch(u){}l.send(n.hasContent&&n.data||null),r=function(e,i){var s,u,c,p;try{if(r&&(i||4===l.readyState))if(r=t,a&&(l.onreadystatechange=x.noop,$n&&delete Pn[a]),i)4!==l.readyState&&l.abort();else{p={},s=l.status,u=l.getAllResponseHeaders(),"string"==typeof l.responseText&&(p.text=l.responseText);try{c=l.statusText}catch(f){c=""}s||!n.isLocal||n.crossDomain?1223===s&&(s=204):s=p.text?200:404}}catch(d){i||o(-1,d)}p&&o(s,c,p,u)},n.async?4===l.readyState?setTimeout(r):(a=++Wn,$n&&(Pn||(Pn={},x(e).unload($n)),Pn[a]=r),l.onreadystatechange=r):r()},abort:function(){r&&r(t,!0)}}}});var Xn,Un,Vn=/^(?:toggle|show|hide)$/,Yn=RegExp("^(?:([+-])=|)("+w+")([a-z%]*)$","i"),Jn=/queueHooks$/,Gn=[nr],Qn={"*":[function(e,t){var n=this.createTween(e,t),r=n.cur(),i=Yn.exec(t),o=i&&i[3]||(x.cssNumber[e]?"":"px"),a=(x.cssNumber[e]||"px"!==o&&+r)&&Yn.exec(x.css(n.elem,e)),s=1,l=20;if(a&&a[3]!==o){o=o||a[3],i=i||[],a=+r||1;do s=s||".5",a/=s,x.style(n.elem,e,a+o);while(s!==(s=n.cur()/r)&&1!==s&&--l)}return i&&(a=n.start=+a||+r||0,n.unit=o,n.end=i[1]?a+(i[1]+1)*i[2]:+i[2]),n}]};function Kn(){return setTimeout(function(){Xn=t}),Xn=x.now()}function Zn(e,t,n){var r,i=(Qn[t]||[]).concat(Qn["*"]),o=0,a=i.length;for(;a>o;o++)if(r=i[o].call(n,t,e))return r}function er(e,t,n){var r,i,o=0,a=Gn.length,s=x.Deferred().always(function(){delete l.elem}),l=function(){if(i)return!1;var t=Xn||Kn(),n=Math.max(0,u.startTime+u.duration-t),r=n/u.duration||0,o=1-r,a=0,l=u.tweens.length;for(;l>a;a++)u.tweens[a].run(o);return s.notifyWith(e,[u,o,n]),1>o&&l?n:(s.resolveWith(e,[u]),!1)},u=s.promise({elem:e,props:x.extend({},t),opts:x.extend(!0,{specialEasing:{}},n),originalProperties:t,originalOptions:n,startTime:Xn||Kn(),duration:n.duration,tweens:[],createTween:function(t,n){var r=x.Tween(e,u.opts,t,n,u.opts.specialEasing[t]||u.opts.easing);return u.tweens.push(r),r},stop:function(t){var n=0,r=t?u.tweens.length:0;if(i)return this;for(i=!0;r>n;n++)u.tweens[n].run(1);return t?s.resolveWith(e,[u,t]):s.rejectWith(e,[u,t]),this}}),c=u.props;for(tr(c,u.opts.specialEasing);a>o;o++)if(r=Gn[o].call(u,e,c,u.opts))return r;return x.map(c,Zn,u),x.isFunction(u.opts.start)&&u.opts.start.call(e,u),x.fx.timer(x.extend(l,{elem:e,anim:u,queue:u.opts.queue})),u.progress(u.opts.progress).done(u.opts.done,u.opts.complete).fail(u.opts.fail).always(u.opts.always)}function tr(e,t){var n,r,i,o,a;for(n in e)if(r=x.camelCase(n),i=t[r],o=e[n],x.isArray(o)&&(i=o[1],o=e[n]=o[0]),n!==r&&(e[r]=o,delete e[n]),a=x.cssHooks[r],a&&"expand"in a){o=a.expand(o),delete e[r];for(n in o)n in e||(e[n]=o[n],t[n]=i)}else t[r]=i}x.Animation=x.extend(er,{tweener:function(e,t){x.isFunction(e)?(t=e,e=["*"]):e=e.split(" ");var n,r=0,i=e.length;for(;i>r;r++)n=e[r],Qn[n]=Qn[n]||[],Qn[n].unshift(t)},prefilter:function(e,t){t?Gn.unshift(e):Gn.push(e)}});function nr(e,t,n){var r,i,o,a,s,l,u=this,c={},p=e.style,f=e.nodeType&&nn(e),d=x._data(e,"fxshow");n.queue||(s=x._queueHooks(e,"fx"),null==s.unqueued&&(s.unqueued=0,l=s.empty.fire,s.empty.fire=function(){s.unqueued||l()}),s.unqueued++,u.always(function(){u.always(function(){s.unqueued--,x.queue(e,"fx").length||s.empty.fire()})})),1===e.nodeType&&("height"in t||"width"in t)&&(n.overflow=[p.overflow,p.overflowX,p.overflowY],"inline"===x.css(e,"display")&&"none"===x.css(e,"float")&&(x.support.inlineBlockNeedsLayout&&"inline"!==ln(e.nodeName)?p.zoom=1:p.display="inline-block")),n.overflow&&(p.overflow="hidden",x.support.shrinkWrapBlocks||u.always(function(){p.overflow=n.overflow[0],p.overflowX=n.overflow[1],p.overflowY=n.overflow[2]}));for(r in t)if(i=t[r],Vn.exec(i)){if(delete t[r],o=o||"toggle"===i,i===(f?"hide":"show"))continue;c[r]=d&&d[r]||x.style(e,r)}if(!x.isEmptyObject(c)){d?"hidden"in d&&(f=d.hidden):d=x._data(e,"fxshow",{}),o&&(d.hidden=!f),f?x(e).show():u.done(function(){x(e).hide()}),u.done(function(){var t;x._removeData(e,"fxshow");for(t in c)x.style(e,t,c[t])});for(r in c)a=Zn(f?d[r]:0,r,u),r in d||(d[r]=a.start,f&&(a.end=a.start,a.start="width"===r||"height"===r?1:0))}}function rr(e,t,n,r,i){return new rr.prototype.init(e,t,n,r,i)}x.Tween=rr,rr.prototype={constructor:rr,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||"swing",this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(x.cssNumber[n]?"":"px")},cur:function(){var e=rr.propHooks[this.prop];return e&&e.get?e.get(this):rr.propHooks._default.get(this)},run:function(e){var t,n=rr.propHooks[this.prop];return this.pos=t=this.options.duration?x.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):rr.propHooks._default.set(this),this}},rr.prototype.init.prototype=rr.prototype,rr.propHooks={_default:{get:function(e){var t;return null==e.elem[e.prop]||e.elem.style&&null!=e.elem.style[e.prop]?(t=x.css(e.elem,e.prop,""),t&&"auto"!==t?t:0):e.elem[e.prop]},set:function(e){x.fx.step[e.prop]?x.fx.step[e.prop](e):e.elem.style&&(null!=e.elem.style[x.cssProps[e.prop]]||x.cssHooks[e.prop])?x.style(e.elem,e.prop,e.now+e.unit):e.elem[e.prop]=e.now}}},rr.propHooks.scrollTop=rr.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},x.each(["toggle","show","hide"],function(e,t){var n=x.fn[t];x.fn[t]=function(e,r,i){return null==e||"boolean"==typeof e?n.apply(this,arguments):this.animate(ir(t,!0),e,r,i)}}),x.fn.extend({fadeTo:function(e,t,n,r){return this.filter(nn).css("opacity",0).show().end().animate({opacity:t},e,n,r)},animate:function(e,t,n,r){var i=x.isEmptyObject(e),o=x.speed(t,n,r),a=function(){var t=er(this,x.extend({},e),o);(i||x._data(this,"finish"))&&t.stop(!0)};return a.finish=a,i||o.queue===!1?this.each(a):this.queue(o.queue,a)},stop:function(e,n,r){var i=function(e){var t=e.stop;delete e.stop,t(r)};return"string"!=typeof e&&(r=n,n=e,e=t),n&&e!==!1&&this.queue(e||"fx",[]),this.each(function(){var t=!0,n=null!=e&&e+"queueHooks",o=x.timers,a=x._data(this);if(n)a[n]&&a[n].stop&&i(a[n]);else for(n in a)a[n]&&a[n].stop&&Jn.test(n)&&i(a[n]);for(n=o.length;n--;)o[n].elem!==this||null!=e&&o[n].queue!==e||(o[n].anim.stop(r),t=!1,o.splice(n,1));(t||!r)&&x.dequeue(this,e)})},finish:function(e){return e!==!1&&(e=e||"fx"),this.each(function(){var t,n=x._data(this),r=n[e+"queue"],i=n[e+"queueHooks"],o=x.timers,a=r?r.length:0;for(n.finish=!0,x.queue(this,e,[]),i&&i.stop&&i.stop.call(this,!0),t=o.length;t--;)o[t].elem===this&&o[t].queue===e&&(o[t].anim.stop(!0),o.splice(t,1));for(t=0;a>t;t++)r[t]&&r[t].finish&&r[t].finish.call(this);delete n.finish})}});function ir(e,t){var n,r={height:e},i=0;for(t=t?1:0;4>i;i+=2-t)n=Zt[i],r["margin"+n]=r["padding"+n]=e;return t&&(r.opacity=r.width=e),r}x.each({slideDown:ir("show"),slideUp:ir("hide"),slideToggle:ir("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,t){x.fn[e]=function(e,n,r){return this.animate(t,e,n,r)}}),x.speed=function(e,t,n){var r=e&&"object"==typeof e?x.extend({},e):{complete:n||!n&&t||x.isFunction(e)&&e,duration:e,easing:n&&t||t&&!x.isFunction(t)&&t};return r.duration=x.fx.off?0:"number"==typeof r.duration?r.duration:r.duration in x.fx.speeds?x.fx.speeds[r.duration]:x.fx.speeds._default,(null==r.queue||r.queue===!0)&&(r.queue="fx"),r.old=r.complete,r.complete=function(){x.isFunction(r.old)&&r.old.call(this),r.queue&&x.dequeue(this,r.queue)},r},x.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2}},x.timers=[],x.fx=rr.prototype.init,x.fx.tick=function(){var e,n=x.timers,r=0;for(Xn=x.now();n.length>r;r++)e=n[r],e()||n[r]!==e||n.splice(r--,1);n.length||x.fx.stop(),Xn=t},x.fx.timer=function(e){e()&&x.timers.push(e)&&x.fx.start()},x.fx.interval=13,x.fx.start=function(){Un||(Un=setInterval(x.fx.tick,x.fx.interval))},x.fx.stop=function(){clearInterval(Un),Un=null},x.fx.speeds={slow:600,fast:200,_default:400},x.fx.step={},x.expr&&x.expr.filters&&(x.expr.filters.animated=function(e){return x.grep(x.timers,function(t){return e===t.elem}).length}),x.fn.offset=function(e){if(arguments.length)return e===t?this:this.each(function(t){x.offset.setOffset(this,e,t)});var n,r,o={top:0,left:0},a=this[0],s=a&&a.ownerDocument;if(s)return n=s.documentElement,x.contains(n,a)?(typeof a.getBoundingClientRect!==i&&(o=a.getBoundingClientRect()),r=or(s),{top:o.top+(r.pageYOffset||n.scrollTop)-(n.clientTop||0),left:o.left+(r.pageXOffset||n.scrollLeft)-(n.clientLeft||0)}):o},x.offset={setOffset:function(e,t,n){var r=x.css(e,"position");"static"===r&&(e.style.position="relative");var i=x(e),o=i.offset(),a=x.css(e,"top"),s=x.css(e,"left"),l=("absolute"===r||"fixed"===r)&&x.inArray("auto",[a,s])>-1,u={},c={},p,f;l?(c=i.position(),p=c.top,f=c.left):(p=parseFloat(a)||0,f=parseFloat(s)||0),x.isFunction(t)&&(t=t.call(e,n,o)),null!=t.top&&(u.top=t.top-o.top+p),null!=t.left&&(u.left=t.left-o.left+f),"using"in t?t.using.call(e,u):i.css(u)}},x.fn.extend({position:function(){if(this[0]){var e,t,n={top:0,left:0},r=this[0];return"fixed"===x.css(r,"position")?t=r.getBoundingClientRect():(e=this.offsetParent(),t=this.offset(),x.nodeName(e[0],"html")||(n=e.offset()),n.top+=x.css(e[0],"borderTopWidth",!0),n.left+=x.css(e[0],"borderLeftWidth",!0)),{top:t.top-n.top-x.css(r,"marginTop",!0),left:t.left-n.left-x.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent||s;while(e&&!x.nodeName(e,"html")&&"static"===x.css(e,"position"))e=e.offsetParent;return e||s})}}),x.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(e,n){var r=/Y/.test(n);x.fn[e]=function(i){return x.access(this,function(e,i,o){var a=or(e);return o===t?a?n in a?a[n]:a.document.documentElement[i]:e[i]:(a?a.scrollTo(r?x(a).scrollLeft():o,r?o:x(a).scrollTop()):e[i]=o,t)},e,i,arguments.length,null)}});function or(e){return x.isWindow(e)?e:9===e.nodeType?e.defaultView||e.parentWindow:!1}x.each({Height:"height",Width:"width"},function(e,n){x.each({padding:"inner"+e,content:n,"":"outer"+e},function(r,i){x.fn[i]=function(i,o){var a=arguments.length&&(r||"boolean"!=typeof i),s=r||(i===!0||o===!0?"margin":"border");return x.access(this,function(n,r,i){var o;return x.isWindow(n)?n.document.documentElement["client"+e]:9===n.nodeType?(o=n.documentElement,Math.max(n.body["scroll"+e],o["scroll"+e],n.body["offset"+e],o["offset"+e],o["client"+e])):i===t?x.css(n,r,s):x.style(n,r,i,s)},n,a?i:t,a,null)}})}),x.fn.size=function(){return this.length},x.fn.andSelf=x.fn.addBack,"object"==typeof module&&module&&"object"==typeof module.exports?module.exports=x:(e.jQuery=e.$=x,"function"==typeof define&&define.amd&&define("jquery",[],function(){return x}))})(window);
+++ /dev/null
-/*
-Copyright (c) 2013 Intel Corporation.
-
-Redistribution and use in source and binary forms, with or without modification,
-are permitted provided that the following conditions are met:
-
-* Redistributions of works must retain the original copyright notice, this list
- of conditions and the following disclaimer.
-* Redistributions in binary form must reproduce the original copyright notice,
- this list of conditions and the following disclaimer in the documentation
- and/or other materials provided with the distribution.
-* Neither the name of Intel Corporation nor the names of its contributors
- may be used to endorse or promote products derived from this work without
- specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY INTEL CORPORATION "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL INTEL CORPORATION BE LIABLE FOR ANY DIRECT,
-INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
-BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
-OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
-EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-Authors:
- Wang, Jing <jing.j.wang@intel.com>
-
-*/
-$(function(){
- try {
- // Checks if a device supports bluetooth API or not
- var shape = tizen.systeminfo.getCapability("http://tizen.org/feature/screen.shape");
- console.log("Shape = " + shape);
- //alert(" Shape = " + shape);
- } catch (error) {
- // alert("Error name: " + error.name + ", message: " + error.message);
- console.log("Error name: " + error.name + ", message: " + error.message);
- }
-
- if(shape=="circle"){
- $('body').css('max-width', '100%');
- $('body').css('max-height', '100%');
- $('body').css('background-color', 'white');
- $('body').css('margin-top', '20%');
- $('body').css('margin-bottom', '20%');
- $('body').css('margin-left', '20%');
- $('body').css('margin-right', '20%');
- }
-});
-
-var STUB_PORT = "";
-var RESOURCE_DIR;
-$.ajax({
- url:"/tmp/TCT_CONFIG",
- data:{},
- async:false,
- success:function(data){
- var regEx = /DEVICE_SUITE_TARGET_30=(.+)/i;
- var path = regEx.exec(data);
- RESOURCE_DIR = path[1];
- }
-});
-$.ajax({
- url:RESOURCE_DIR + "/tct/portconfigure.json",
- dataType:"json",
- data:{},
- async:false,
- success:function(data){
- STUB_PORT = data[0]["STUB_PORT"];
- }
-});
-(function (window){
- function TestRunner() {
- this.start = null;
- this.ui = null;
- this.submitResult = function () {};
- this.report = function (result, message) {};
- this.doTest = function () {};
- }
-
- TestRunner.prototype = (function () {
- var index = -1;
- var Tests = [];
- var Testsuites = {};
- var TestsuiteSums = {};
- var TestsetSums = {};
- var sum = newSummary();
- var testContext = newTestContext();
- function newSummary(sum) {
- if (typeof sum === "undefined")
- return {"TOTAL": 0, "PASS" : 0, "FAIL" : 0, "BLOCK" : 0, "NOTRUN" : 0};
- return {"TOTAL": sum.TOTAL, "PASS": sum.PASS, "FAIL": sum.FAIL, "BLOCK": sum.BLOCK, "NOTRUN": sum.NOTRUN};
- }
- function newTestContext() {
- return {start_time: null, prev_uri: "", uri: "", sub_index: 0, onload_delay: 0};
- }
- function getParms () {
- var parms = {};
- var items = location.search.substring(1).split('&');
- for ( var i = 0, max = items.length; i < max; i++) {
- var pos = items[i].indexOf('=');
- if (pos > 0) {
- var key = items[i].substring(0, pos);
- var val = items[i].substring(pos + 1);
- if (!parms[key]) {
- var rawVal = decodeURI(val);
- if (rawVal.indexOf(',') < 0)
- parms[key] = rawVal;
- else
- parms[key] = rawVal.split(',');
- }
- } else
- parms[items[i]] = 1;
- }
- return parms;
- }
- return {
- constructor: TestRunner,
- options: getParms(),
- addTestsuite: function (testsuite, category) {
- if (!category)
- category = "default";
- if (typeof Testsuites[category] === "undefined")
- Testsuites[category] = [];
- Testsuites[category].push(testsuite);
- },
-
- goNext: function () {
- if (Tests.length === 0) return false;
- if (index >= Tests.length) {
- index = -1;
- return false;
- }
- index++;
- return true;
- },
-
- goPrev: function () {
- if (Tests.length === 0) return false;
- if (index < 0) {
- index = Tests.length;
- return false;
- }
- index--;
- return true;
- },
-
- runAll: function () {
- testContext = newTestContext();
- VIEWFLAGS.add("batch");
- this.ui.updateView(VIEWFLAGS.del("suite"));
- this.testIndex(-1);
- this.doTest();
- },
-
- cleanTests: function () {
- Tests = [];
- },
-
- testIndex: function (ind) {
- if (typeof ind === "undefined")
- return index;
- index = ind;
- },
-
- getTest: function (ind) {
- if (typeof ind === "undefined")
- ind = index;
- return Tests[ind];
- },
-
- addTest: function (test) {
- if (test instanceof Array)
- Tests = Tests.concat(test);
- else
- Tests.push(test);
- },
-
- sumInit: function (num) {
- if (typeof num === "undefined")
- num = Tests.length;
- sum.TOTAL = sum.NOTRUN = num;
- sum.PASS = sum.FAIL = sum.BLOCK = 0;
- },
-
- sumUpdate: function (oldRes, newRes, set) {
- if (oldRes !== null) {
- sum[oldRes]--;
- if (set !== null) TestsetSums[set][oldRes]--;
- }
- if (newRes !== null) {
- sum[newRes]++;
- if (set != null) TestsetSums[set][newRes]++;
- }
- },
-
- checkResult: function (oTestDoc) {
- var message = "";
- if (!oTestDoc) {
- this.report('FAIL', 'Test page crash');
- return true;
- }
- // Handle sub-index test
- if (testContext.sub_index > 0) {
- var oRes = $(oTestDoc).find("table#results");
- if (oRes.length == 0)
- return false;
- var ind = testContext.sub_index - 1;
- var $n = $(oRes).find('tbody > tr').eq(ind);
- if ($n.length == 0)
- return false
- var result = $n.children("td:eq(0)").text();
- message = $n.children("td:eq(2)").text();
- this.report(result.toUpperCase(), message);
- return true;
- }
-
- var oPass = $(oTestDoc).find(".pass");
- var oFail = $(oTestDoc).find(".fail");
- // Qunit sub-cases
- var oUnitRes = $(oTestDoc).find("ol.qunit-assert-list");
- $(oUnitRes).find('li').each(function() {
- message += "[assert]" + $(this).attr("class");
- message += "[message]*" + $(this).children("span").text() + "\n";
- });
- // All tests pass
- if (oPass.length > 0 && oFail.length == 0) {
- this.report('PASS', message);
- return true;
- }
- // Handle failed tests
- if (oFail.length > 0) {
- var oRes = $(oTestDoc).find("table#results");
- $(oRes).find('tr.fail').each(function() {
- message += " *" + $(this).children("td:eq(1)").text() + ": ";
- message += $(this).children("td:eq(2)").text();
- });
- this.report('FAIL', message);
- return true;
- }
- return false;
- },
-
- testInfo: function (ind) {
- var info = "";
- var tc = this.getTest();
- if (!tc) return info;
- info += "Test : (" + (index + 1) + "/" + sum.TOTAL + ") ";
- info += tc.test_script_entry;
- info += "\nPurpose: " + tc.purpose;
- if (tc.pre_condition)
- info += "\nPrecondition: " + tc.pre_condition;
- if (tc.steps)
- info += "\n" + tc.steps;
- return info;
- },
-
- getTestCaseUrl: function () {
- function getUriField(uri, param) {
- var querys = uri.split("?")
- if (querys.length <= 1)
- return "";
- uri = querys[1];
- var start = uri.indexOf(param);
- if (start == -1)
- return "";
- start += param.length + 1;
- var end = uri.indexOf("&", start);
- if (end == -1)
- return uri.substring(start);
- return uri.substring(start, end);
- }
- var tc = this.getTest();
- if (!tc) return null;
- var delay = tc.onload_delay;
- if (delay)
- testContext.onload_delay = parseInt(delay) * 1000;
- else
- testContext.onload_delay = 5000;
-
- var uri = tc.test_script_entry;
- if (typeof this.options.testprefix !== "undefined") {
- var pos = uri.indexOf('http://');
- if (pos !== 0)
- uri = this.options.testprefix + uri
- }
- var val = getUriField(uri, "value");
- if (val && tc.execution_type == "auto" && VIEWFLAGS.has("batch")) { // Need sub index in TC
- testContext.sub_index = parseInt(val);
- testContext.uri = uri.split("?")[0];
- if (testContext.uri == testContext.prev_uri)
- return "";
- } else {
- testContext.uri = uri;
- testContext.sub_index = 0;
- }
- testContext.prev_uri = testContext.uri;
- testContext.start_time = new Date();
- return testContext.uri;
- },
-
- loadReady: function () {
- if (!VIEWFLAGS.has("batch"))
- return;
- if (!this.ui.testComplete()){
- if (testContext.onload_delay > 0){
- var tval = 500;
- var self = this;
- setTimeout(function() {self.loadReady();}, tval);
- testContext.onload_delay -= tval;
- return
- }
- this.report("BLOCK", "Timeout");
- }
- this.doTest();
- },
-
- getListSum: function () {
- var sumdata = "";
- sumdata += "<p><table id='browse'><tr><th>Testsuite</th>";
- sumdata += "<th>Total</th><th>Pass</th><th>Fail</th><th>Block</th></tr>";
- $.each(TestsuiteSums, function (key, val){
- sumdata += "<tr><td>" + key+ "</td>";
- sumdata += "<td style='color:black;'>" + val.TOTAL + "</td>";
- sumdata += "<td style='color:green;'>" + val.PASS + "</td>";
- sumdata += "<td style='color:red;'>" + val.FAIL + "</td>";
- sumdata += "<td style='color:orange;'>" + val.BLOCK + "</td></tr>";
- });
- sumdata += "</table>";
- return sumdata;
- },
-
- getTestSum: function (include_set) {
- var sumdata = "<section><h3>Total:" + sum.TOTAL
- + " Pass:<span style='color:green;'>" + sum.PASS
- + "</span> Fail:<span style='color:red;'>" + sum.FAIL
- + "</span> Block:<span style='color:orange;'>" + sum.BLOCK
- + "</span> Notrun:<span style='color:black;'>" + sum.NOTRUN
- + "</span>";
- if (this.options.notifyInfo) {
- sumdata += "<span style='color:slateblue;'> " + this.options.notifyInfo + "</span>";
- this.options.notifyInfo = "";
- }
- sumdata += "</h3></section>";
- if (VIEWFLAGS.has("batch")) {
- var tc = this.getTest();
- if (tc) sumdata += "<h4><span style='background-color: wheat'>(#" + index + ") " + tc.id + "</span></h4>";
- }
- if (this.options.testsuite_name)
- TestsuiteSums[this.options.testsuite_name] = newSummary(sum)
- if (include_set) {
- sumdata += "<p><table id='browse'><tr><th>Testset</th>";
- sumdata += "<th>Total</th><th>Pass</th><th>Fail</th><th>Block</th></tr>";
- $.each(TestsetSums, function (key, val){
- sumdata += "<tr><td>" + key+ "</td>";
- sumdata += "<td style='color:black;'>" + val.TOTAL + "</td>";
- sumdata += "<td style='color:green;'>" + val.PASS + "</td>";
- sumdata += "<td style='color:red;'>" + val.FAIL + "</td>";
- sumdata += "<td style='color:orange;'>" + val.BLOCK + "</td></tr>";
- });
- sumdata += "</table>";
- }
- return sumdata;
- },
-
- getListInfo: function () {
- function createList(category) {
- var testList = "";
- $.each(Testsuites[category], function (ind, val) {
- testList += "<li><input type='checkbox' id='" + val + "'> <a href=''>" + val + "</a>" + "</li>";
- });
- return testList;
- }
- var data = "<html><head><style>.category{background: #cccccc;border: 1px solid #aaaaaa;} li{list-style-type: none; padding-left: 0.6em; padding-bottom:0.8em; font-size: 1.3em;}html{font-family:DejaVu Sans, Bitstream Vera Sans, Arial, Sans;}</style></head><body>";
- $.each(Testsuites, function(key, val) {
- data += "<section><h3 class='category'><input type='checkbox' id='" + key + "'> " + key + "</h3>"
- data += createList(key) + "</section>";
- });
- data += "</body></html>";
- return data;
- },
-
- getBrowseInfo: function () {
- var failList = passList = blockList = notrunList = "";
- function createTestList(tc, color, ind) {
- var mtag = (tc.execution_type === "manual") ? "(M)" : "";
- return "<li>" + mtag + "<a rel='" + ind + "' href='' style ='color:" + color + ";'>" + tc.id + "</a>" + "</li>";
- }
- TestsetSums = {};
- $.each(Tests, function (ind, val) {
- if (this.set === null)
- this.set = "default";
- if (typeof TestsetSums[this.set] === "undefined")
- TestsetSums[this.set] = newSummary();
- TestsetSums[this.set][this.result]++;
- TestsetSums[this.set]["TOTAL"]++;
- if (this.result == "FAIL")
- failList += createTestList(this, "red", ind);
- if (this.result == "PASS")
- passList += createTestList(this, "green", ind);
- if (this.result == "BLOCK")
- blockList += createTestList(this, "orange", ind);
- if (this.result == "NOTRUN")
- notrunList += createTestList(this, "black", ind);
- });
- var data = "<html><head><style>ul li {padding-bottom:0.8em;font-size: 1.3em;}";
- data += "html{font-family:DejaVu Sans, Bitstream Vera Sans, Arial, Sans;}</style></head><body>";
- if (notrunList)
- data += "<section><h3>Notrun</h3><ul>" + notrunList + "</ul></section>";
- if (failList)
- data += "<section><h3 style='color: red;'>Fail</h3><ul>" + failList + "</ul></section>";
- if (blockList)
- data += "<section><h3 style='color: orange;'>Block</h3><ul>" + blockList + "</ul></section>";
- if (passList)
- data += "<section><h3 style='color: green'>Pass</h3><ul>" + passList + "</ul></section>";
- data += "</body></html>";
- return data;
- },
-
- TestCase: function () {
- return {
- id: null,
- test_script_entry: null,
- execution_type: "manual",
- result: "NOTRUN",
- purpose: "",
- set: null,
- pre_condition: "",
- onload_delay: 0,
- steps: "",
- data: null};
- },
-
- TestSuite: function () {
- return {
- id: null,
- sum: null,
- data: null};
- }
-
- };
- }());
- // Standalone test runner
- var master_runner = new TestRunner();
- master_runner.start = function (ui) {
- function filter(xml, self) {
- var set_ind = 0;
- var manuals = [];
- $(xml).find("set").each(function () {
- var setname = $(this).attr("name");
- if (!setname)
- setname = "set" + set_ind;
- $(this).find("testcase").each(function () {
- var v = $(this).attr('execution_type');
- if (self.options.execution_type && v != self.options.execution_type
- && $.inArray(v, self.options.execution_type) < 0) {
- $(this).remove();
- return;
- }
- v = $(this).attr('priority');
- if (self.options.priority && v != self.options.priority
- && $.inArray(v, self.options.priority) < 0){
- $(this).remove();
- return;
- }
- var test = self.TestCase();
- test.id = $(this).attr("id");
- test.execution_type = $(this).attr("execution_type");
- test.test_script_entry = $(this).find("test_script_entry").text();
- test.purpose = $(this).attr("purpose");
- test.pre_condition = $(this).find("pre_condition").text();
- test.onload_delay = $(this).attr("onload_delay");
- test.result = "NOTRUN";
- test.set = setname;
- test.data = this;
- if (test.execution_type === "auto")
- self.addTest(test);
- else
- manuals.push(test);
- });
- set_ind++;
- });
- self.addTest(manuals);
- }
-
- var self = this;
- if (ui) ui.bind(self);
- if (self.options.testsuite_name)
- self.options.testsuite = "opt/" + self.options.testsuite_name + "/tests.xml";
- if (!self.options.testsuite) {
- $.getJSON(TESTLIST_FILE, function(data) {
- for (var i = 0, imax = data.length; i < imax; i++) {
- for (var j = 0, jmax = data[i].tests.length; j < jmax; j++)
- self.addTestsuite(data[i].tests[j], data[i].category);
- }
- self.ui.list();
- self.options.multiplex = true;
- });
- } else {
- $.get(self.options.testsuite, null, function (xml) {
- self.internal.xmldoc = xml;
- filter(xml, self);
- self.sumInit();
- self.ui.browse();
- setTimeout(function () {
- if (self.options.autorun)
- self.runAll();
- }, 500);
- }, "xml");
- }
- };
-
- master_runner.doTest = function () {
- var self = this, tc = null;
- while (self.goNext()) {
- tc = self.getTest();
- if (!tc || tc.execution_type === "manual")
- break;
- self.ui.updateTestInfo(self.testInfo(), null, null);
- self.ui.runTest(self.getTestCaseUrl());
- return;
- }
- this.ui.updateView(VIEWFLAGS.del("batch"));
- if (self.options.autorun) {
- self.submitResult();
- if (self.options.multiplex) {
- self.ui.list();
- return;
- }
- close_window();
- return;
- }
- if (!tc) {
- setTimeout(function () {self.ui.browse();}, 500);
- return;
- }
- this.ui.updateTest();
- };
-
- master_runner.report = function (result, log) {
- var tc = this.getTest();
- if (!tc) return;
- var oldresult = tc.result;
- this.sumUpdate(oldresult, result, tc.set);
- tc.result = result;
- $(tc.data).find('result_info').remove();
- $(tc.data).attr('result', result);
- var doc = $.parseXML("<result_info><actual_result>" + result +
- "</actual_result><stdout>" +
- escape_html(log) + "</stdout></result_info>");
- $(tc.data).append(doc.documentElement);
- if (VIEWFLAGS.has("batch")) result = null;
- this.ui.updateTestInfo(null, this.getTestSum(false), result);
- };
-
- master_runner.submitResult = function () {
- var SERVER = "http://127.0.0.1:8080";
- var contents = (new XMLSerializer()).serializeToString(this.internal.xmldoc);
- var resfile = "tests.res.xml";
- if (this.options.testsuite_name)
- resfile = this.options.testsuite_name + "." + resfile;
- $.post(SERVER + "/save_file", {filename: resfile, data: contents})
- };
-
- master_runner.internal = {xmldoc: null};
-
- // Controlled test runner
- var slave_runner = new TestRunner();
- slave_runner.start = function (ui) {
- function sync_session_id() {
- $.get(SERVER + "/init_session_id?session_id="
- + self.internal.session_id);
- }
- var self = this;
- self.internal.session_id = Math.round(Math.random() * 10000);
- sync_session_id();
- var next_step = self.internal.get_json("ask_next_step");
- if (!next_step || next_step.step != "continue") {
- close_window();
- return false;
- }
- ui.bind(self);
- var f = function () {
- var p = self.internal.get_json("check_execution_progress");
- if (p) self.sumInit(parseInt(p.total));
- self.doTest();
- };
- self.ui.updateView(VIEWFLAGS.add("batch"));
- self.ui.updateView(VIEWFLAGS.del("suite"));
- setTimeout(f, 1000);
- return true;
- };
-
- slave_runner.doTest = function () {
- var self = this;
- if (self.internal.stage > 0) {
- self.ui.updateView(VIEWFLAGS.del("batch"));
- self.goNext();
- self.ui.updateTest();
- return;
- }
- var next_step = self.internal.get_json("ask_next_step");
- if (next_step && next_step.step == "continue") {
- var task = self.internal.get_json("auto_test_task");
- if (task === null) {
- print_error("ask_test_task", "Fail get task");
- } else if (task.invalid === 0) {
- print_error("ask_test_task", "Invalid session");
- } else if (task.stop === 0) {
- print_error("ask_test_task", "close window");
- } else if (task.none !== 0) { //handle auto test
- var test = self.TestCase();
- test.id = task.case_id;
- test.onload_delay = task.onload_delay;
- test.test_script_entry = task.entry;
- test.execution_type = "auto";
- test.purpose = task.purpose;
- test.pre_condition = task.pre_condition;
- self.addTest(test);
- self.goNext();
- self.ui.updateTestInfo(self.testInfo(), null, null);
- self.ui.runTest(self.getTestCaseUrl());
- return;
- } else { //handle manual test
- self.ui.updateView(VIEWFLAGS.del("batch"));
- self.internal.stage = 1;
- var mtask = self.internal.get_json("manual_cases");
- if (mtask && mtask.none != 0) {
- self.cleanTests();
- for (var i = 0, max = mtask.length; i < max; i++) {
- var test = self.TestCase();
- test.id = mtask[i].case_id;
- test.test_script_entry = mtask[i].entry;
- test.purpose = mtask[i].purpose;
- test.pre_condition = mtask[i].pre_condition;
- test.result = "NOTRUN";
- test.execution_type = "manual";
- test.index = i;
- var steps = "";
- $(mtask[i].steps).each(function () {
- steps += "Step-" + this.order + "\t: " + this.step_desc + "\n";
- steps += "Expect\t: " + this.expected + "\n";
- });
- test.steps = steps;
- self.addTest(test);
- }
- self.ui.updateTest(-1);
- self.sumInit();
- self.ui.browse();
- } else
- close_window();
- return;
- }
- }
- close_window();
- };
-
- slave_runner.report = function(result, log) {
- var tc = this.getTest();
- var oldresult;
- if (this.internal.stage > 0) {
- this.internal.post_json("commit_manual_result",
- {"case_id": tc.id, "result": result});
- oldresult = tc.result
- tc.result = result;
- } else {
- this.internal.post_json("commit_result",
- { "case_id" : tc.id,
- "result" : result,
- "msg" : "[Message]" + log,
- "session_id" : this.internal.session_id});
- oldresult = "NOTRUN";
- }
- this.sumUpdate(oldresult, result, null);
- if (VIEWFLAGS.has("batch")) result = null;
- this.ui.updateTestInfo(null, this.getTestSum(false), result);
- };
-
- slave_runner.submitResult = function () {
- $.get(SERVER + "/generate_xml");
- };
-
- slave_runner.internal = {
- session_id: null,
- stage: 0,
- get_json: function (name) {
- var jsondata = null;
- $.getJSON(SERVER + "/" + name + "?session_id="
- + this.session_id, function(data) {
- jsondata = data;});
- return jsondata; },
- post_json: function (name, d) {
- $.post(SERVER + "/" + name, d, null, "json");
- }
- };
-
- var i_ui = (function () {
- var testinfo = $("#testinfo").get(0);
- var frmTest = $("#frmTest").get(0);
- var textTest = $("#textTest").get(0);
- var btnPass = $("#btnPass").get(0);
- var btnFail = $("#btnFail").get(0);
- var btnBlock = $("#btnBlock").get(0);
- var btnExit = $("#btnExit").get(0);
- var btnNext = $("#btnNext").get(0);
- var btnPrev = $("#btnPrev").get(0);
- var btnRun = $("#btnRun").get(0);
- var divSum = $("#divSum").get(0);
- var btnBack = $("#btnBack").get(0);
- var btnSave = $("#btnSave").get(0);
- var runner = null;
- var listmode = null;
- var nextTest = function () {
- runner.goNext();
- selectTest();
- };
-
- var prevTest = function() {
- runner.goPrev();
- selectTest();
- };
-
- var selectResult = function() {
- runner.report(this.value, "");
- };
-
- var selectTest = function () {
- frmTest.src = "";
- var tc = runner.getTest();
- if (!tc) {
- if (runner.testIndex() === -1)
- textTest.value = "---Begin---";
- else
- textTest.value = "---End---";
- changeColor("NOTRUN");
- return;
- }
- testinfo.value = runner.testInfo();
- $(divSum).html(runner.getTestSum(false));
- textTest.value = ((tc.execution_type === "manual") ? "(M)" : "") + tc.id;
- changeColor(tc.result);
- };
-
- function changeColor(result) {
- if (result === "PASS")
- $(textTest).css("backgroundColor", "lightgreen");
- else if (result === "FAIL")
- $(textTest).css("backgroundColor", "tomato");
- else if (result === "BLOCK")
- $(textTest).css("backgroundColor", "yellow");
- else
- $(textTest).css("backgroundColor", "white");
- }
-
- return {
- bind: function (r) {
- var self = this;
- r.ui = self;
- runner = r;
- $(btnPass).on("click", selectResult);
- $(btnFail).on("click", selectResult);
- $(btnBlock).on("click", selectResult);
- $(btnNext).on("click", nextTest);
- $(btnPrev).on("click", prevTest);
- $(btnRun).on("click", function () {
- if (VIEWFLAGS.has("list")) {
- runner.options.auto_testsuites = [];
- var tdoc = frmTest.contentWindow.document;
- $(tdoc).find("section li>input:checked").each(function () {
- var tname = $(this).attr("id");
- runner.options.auto_testsuites.push(tname);
- });
- self.list();
- } else if (VIEWFLAGS.has("suite")) {
- runner.runAll();
- } else
- self.runTest(runner.getTestCaseUrl());
- });
- $(frmTest).on("load", function () {runner.loadReady();});
- $(btnExit).on("click", function () {
- runner.submitResult();
- if (runner.options.multiplex && VIEWFLAGS.has("suite"))
- self.list();
- else
- close_window();
- });
- $(btnBack).on("click", function () {
- frmTest.src = "";
- setTimeout(function () {self.browse();}, 300);
- });
- $(btnSave).on("click", function () {
- runner.submitResult();
- runner.options.notifyInfo = "*Save succeed*";
- $(divSum).html(runner.getTestSum(true));
- });
- frmTest.height = $(window).height();
- },
-
- list: function () {
- var tdoc = frmTest.contentWindow.document;
- $(btnExit).attr("value", "Exit");
- tdoc.open("text/html", "replace");
- tdoc.writeln(runner.getListInfo());
- var self = this;
- $(tdoc).find("section li>a").on("click", function (e) {
- runner.options.testsuite_name = $(this).text();
- VIEWFLAGS.del("list");
- runner.start();
- window.scrollTo(0, 0);
- e.preventDefault();
- });
- $(tdoc).find("section h3>input[type=checkbox]").on("click", function () {
- $boxs = $(this).parent().parent().find("li>input[type=checkbox]");
- $boxs.prop('checked', $(this).is(':checked'));
- });
- $(divSum).html(runner.getListSum());
- runner.cleanTests();
- self.updateView(VIEWFLAGS.add("list"));
- if (runner.options.auto_testsuites) {
- if (runner.options.auto_testsuites.length > 0) {
- var ts = runner.options.auto_testsuites.shift();
- runner.options.testsuite_name = ts;
- runner.options.autorun = true;
- VIEWFLAGS.del("list");
- runner.start();
- } else
- runner.options.autorun = false;
- }
- },
-
- browse: function () {
- var tdoc = frmTest.contentWindow.document;
- if (runner.options.multiplex)
- $(btnExit).attr("value", "Back");
- tdoc.open("text/html", "replace");
- tdoc.writeln(runner.getBrowseInfo());
- var self = this;
- $(tdoc).find("section ul li>a").on("click", function (e) {
- var ind = parseInt($(this).attr("rel"));
- self.updateView(VIEWFLAGS.del("suite"));
- self.updateTest(ind);
- window.scrollTo(0, 0);
- e.preventDefault();
- });
- $(divSum).html(runner.getTestSum(true));
- self.updateView(VIEWFLAGS.add("suite"));
- },
-
- updateTest: function (ind) {
- if (typeof ind !== "undefined") runner.testIndex(ind);
- selectTest();
- },
-
- updateView: function (flags) {
- if (flags & VIEWFLAGS.flags.batch)
- $(".batchhide").hide();
- else {
- $(".batchhide").show();
- if (flags & VIEWFLAGS.flags.list) {
- $(".tchide").show();
- $(".suitehide").show();
- $(".listhide").hide();
- } else if (flags & VIEWFLAGS.flags.suite) {
- $(".listhide").show();
- $(".tchide").show();
- $(".suitehide").hide();
- } else {
- $(".listhide").show();
- $(".suitehide").show();
- $(".tchide").hide();
- }
- }
- },
-
- testComplete: function () {
- return runner.checkResult(frmTest.contentWindow.document);
- },
-
- runTest: function (uri) {
- if (uri === null) return;
- if (uri)
- frmTest.src = uri;
- else
- runner.loadReady();
- },
-
- updateTestInfo: function (info, sum, result) {
- if (info !== null)
- testinfo.value = info;
- if (sum !== null)
- $(divSum).html(sum);
- if (result !== null)
- changeColor(result);
- },
- };
- } ());
-
- function escape_html(s) {
- return s.replace(/\&/g, "&").replace(/</g, "<").replace(/"/g,
- """).replace(/'/g, "'");
- }
-
- function print_error(command, message) {
- console.warn("Command -" + command + ": " + message);
- }
-
- function close_window() {
- setTimeout(function () {
- window.open('', '_self', '');
- window.close();
- if (window.parent != window.self) {
- window.parent.onbeforeunload = null;
- window.parent.close();
- }
- }, 1000);
- }
-
- function pre_init() {
- var runner_ok = false;
- $.get(SERVER + "/check_server", function () {
- runner_ok = slave_runner.start(i_ui);
- });
- if (!runner_ok)
- master_runner.start(i_ui);
- }
- var SERVER = "http://127.0.0.1:8000";
- var TESTLIST_FILE = "testlist.json"
- var VIEWFLAGS = { val: 0,
- flags: {suite: 1, batch: 2, list: 4},
- add: function (f) { this.val |= this.flags[f]; return this.val},
- del: function (f) { this.val &= ~this.flags[f]; return this.val},
- has: function (f) { return this.val & this.flags[f];},
- };
- $.ajaxSetup({ async: false});
- $(window).on("ready", pre_init);
-})(window);