diff options
author | gloryj.kim <gloryj.kim@samsung.com> | 2015-06-08 18:38:29 +0900 |
---|---|---|
committer | gloryj.kim <gloryj.kim@samsung.com> | 2015-06-08 18:38:29 +0900 |
commit | 93e25e2ef5fafd79617c074399c625041eafb43e (patch) | |
tree | 81c5a908558684a54932131af82e1242d95eaad4 | |
parent | aeb671b4d8b5072e08a43fa3ed8149422c1c2f91 (diff) | |
download | url-download-accepted/tizen_3.0.2015.q2_common.tar.gz url-download-accepted/tizen_3.0.2015.q2_common.tar.bz2 url-download-accepted/tizen_3.0.2015.q2_common.zip |
New url-download for Tizen 3.0tizen_3.0.m2.a1_tv_releasetizen_3.0.m2.a1_mobile_releasetizen_3.0.m1_tv_releasetizen_3.0.m1_mobile_releasesubmit/tizen_common/20151019.135620submit/tizen_common/20151015.190624submit/tizen_3.0.2015.q2_common/20150615.075539submit/tizen_3.0.2015.q2_common/20150609.170642submit/tizen/20150608.102459submit/tizen/20150608.094656accepted/tizen/wearable/20150609.011841accepted/tizen/tv/20150609.011822accepted/tizen/mobile/20150609.011903accepted/tizen/common/20150608.151251accepted/tizen/3.0.2015.q2/common/20150615.091825accepted/tizen/3.0.2015.q2/common/20150609.181938tizen_3.0.m1_tvtizen_3.0.m1_mobiletizen_3.0.2015.q2_commonaccepted/tizen_3.0.2015.q2_common
Change-Id: I7fbe9474a0781ab285331057346ad1cef83007c8
113 files changed, 9673 insertions, 0 deletions
@@ -0,0 +1,2 @@ +Kwangmin Bang <justine.bang@samsung.com>
+Jungki Kwak <jungki.kwak@samsung.com>
diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..33db456 --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,101 @@ + +CMAKE_MINIMUM_REQUIRED(VERSION 2.6) +SET(fw_name "capi-web-url-download") + +PROJECT(${fw_name}) + +SET(CMAKE_INSTALL_PREFIX /usr) +SET(PREFIX ${CMAKE_INSTALL_PREFIX}) +SET(VERSION_MAJOR 0) +SET(VERSION "${VERSION_MAJOR}.1.0") + +SET(INC_DIR include) +SET(DOC_DIR doc) +INCLUDE_DIRECTORIES(${INC_DIR}) + +SET(requires "dlog capi-base-common capi-appfw-application download-provider-interface") +MESSAGE(STATUS "PACKAGES : ${requires}") +SET(pc_requires "capi-base-common capi-appfw-application") + +INCLUDE(FindPkgConfig) +pkg_check_modules(${fw_name} REQUIRED ${requires}) +FOREACH(flag ${${fw_name}_CFLAGS}) + SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} ${flag}") +ENDFOREACH(flag) + +SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_CFLAGS} -fPIC -Wall") +SET(CMAKE_C_FLAGS_DEBUG "-O0 -g") + +IF("${ARCH}" STREQUAL "arm") + ADD_DEFINITIONS("-DTARGET") +ENDIF("${ARCH}" STREQUAL "arm") + +ADD_DEFINITIONS("-DPREFIX=\"${CMAKE_INSTALL_PREFIX}\"") +ADD_DEFINITIONS("-DSLP_DEBUG") +ADD_DEFINITIONS(-DDP_SUPPORT_DBUS_ACTIVATION) + +SET(CMAKE_EXE_LINKER_FLAGS "-Wl,--as-needed -Wl,--rpath=${LIB_INSTALL_DIR}") + +SET(SOURCES src/download-wrapping.c) +MESSAGE(STATUS "SOURCES : ${SOURCES}") +ADD_LIBRARY(${fw_name} SHARED ${SOURCES}) + +TARGET_LINK_LIBRARIES(${fw_name} ${${fw_name}_LDFLAGS}) +SET_TARGET_PROPERTIES(${fw_name} PROPERTIES VERSION ${VERSION}) +SET_TARGET_PROPERTIES(${fw_name} PROPERTIES SOVERSION ${VERSION_MAJOR}) + +INSTALL(TARGETS ${fw_name} DESTINATION ${LIB_INSTALL_DIR}) +INSTALL(FILES ${INC_DIR}/download.h DESTINATION include/web/) +INSTALL(FILES ${INC_DIR}/download_product.h DESTINATION include/web/) +INSTALL(FILES ${DOC_DIR}/download_doc.h DESTINATION include/web/) + +SET(PC_NAME ${fw_name}) +SET(PC_REQUIRED ${pc_requires}) +SET(PC_LDFLAGS -l${fw_name}) +SET(PC_CFLAGS -I\${includedir}/system) + +CONFIGURE_FILE( + capi-web-url-download.pc.in + ${CMAKE_CURRENT_SOURCE_DIR}/${fw_name}.pc + @ONLY +) +CONFIGURE_FILE( + LICENSE.APLv2 + ${fw_name} + @ONLY +) +INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/${fw_name}.pc DESTINATION ${LIB_INSTALL_DIR}/pkgconfig) +INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/${fw_name} DESTINATION share/license) + +IF(UNIX) + +ADD_CUSTOM_TARGET (distclean @echo cleaning for source distribution) +ADD_CUSTOM_COMMAND( + DEPENDS clean + COMMENT "distribution clean" + COMMAND find + ARGS . + -not -name config.cmake -and \( + -name tester.c -or + -name Testing -or + -name CMakeFiles -or + -name cmake.depends -or + -name cmake.check_depends -or + -name CMakeCache.txt -or + -name cmake.check_cache -or + -name *.cmake -or + -name Makefile -or + -name core -or + -name core.* -or + -name gmon.out -or + -name install_manifest.txt -or + -name *.pc -or + -name *~ \) + | grep -v TC | xargs rm -rf + TARGET distclean + VERBATIM +) + +ENDIF(UNIX) + +ADD_SUBDIRECTORY(testcase/) diff --git a/LICENSE.APLv2 b/LICENSE.APLv2 new file mode 100644 index 0000000..d645695 --- /dev/null +++ b/LICENSE.APLv2 @@ -0,0 +1,202 @@ + + 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. @@ -0,0 +1,3 @@ +Copyright (c) 2012 Samsung Electronics Co., Ltd. All rights reserved. +Except as noted, this software is licensed under Apache License, Version 2. +Please, see the LICENSE file for Apache License terms and conditions. diff --git a/TC/_export_env.sh b/TC/_export_env.sh new file mode 100644 index 0000000..b8d2ea9 --- /dev/null +++ b/TC/_export_env.sh @@ -0,0 +1,8 @@ +# Customize below path information +TET_INSTALL_PATH=/home/warmtree/git_private/DTS/TETware +TET_TARGET_PATH=$TET_INSTALL_PATH/tetware-target + +export ARCH=target +export TET_ROOT=$TET_TARGET_PATH +export PATH=$TET_ROOT/bin:$PATH +export LD_LIBRARY_PATH=$TET_ROOT/lib/tet3:$LD_LIBRARY_PATH diff --git a/TC/_export_target_env.sh b/TC/_export_target_env.sh new file mode 100644 index 0000000..b48c54b --- /dev/null +++ b/TC/_export_target_env.sh @@ -0,0 +1,8 @@ +# Customize below path information +TET_INSTALL_PATH=/mnt/dts/TETware +TET_TARGET_PATH=$TET_INSTALL_PATH/tetware-target + +export ARCH=target +export TET_ROOT=$TET_TARGET_PATH +export PATH=$TET_ROOT/bin:$PATH +export LD_LIBRARY_PATH=$TET_ROOT/lib/tet3:$LD_LIBRARY_PATH diff --git a/TC/build.sh b/TC/build.sh new file mode 100644 index 0000000..72aad6c --- /dev/null +++ b/TC/build.sh @@ -0,0 +1,16 @@ +#!/bin/sh + +. ./_export_env.sh # setting environment variables + +export TET_SUITE_ROOT=`pwd` +FILE_NAME_EXTENSION=`date +%s` + +RESULT_DIR=results +HTML_RESULT=$RESULT_DIR/build-tar-result-$FILE_NAME_EXTENSION.html +JOURNAL_RESULT=$RESULT_DIR/build-tar-result-$FILE_NAME_EXTENSION.journal + +mkdir -p $RESULT_DIR + +tcc -c -p ./ +tcc -b -j $JOURNAL_RESULT -p ./ +grw -c 7 -f chtml -o $HTML_RESULT $JOURNAL_RESULT diff --git a/TC/clean.sh b/TC/clean.sh new file mode 100644 index 0000000..29743e0 --- /dev/null +++ b/TC/clean.sh @@ -0,0 +1,11 @@ +#!/bin/sh + +. ./_export_env.sh # setting environment variables + +export TET_SUITE_ROOT=`pwd` +RESULT_DIR=results + +tcc -c -p ./ # executing tcc, with clean option (-c) +rm -r $RESULT_DIR +rm -r tet_tmp_dir +rm testcase/tet_captured diff --git a/TC/config b/TC/config new file mode 100644 index 0000000..f3e2091 --- /dev/null +++ b/TC/config @@ -0,0 +1,3 @@ +PKG_NAME=capi-web-url-download +TET_INSTALL_HOST_PATH=/var/tmp/dts_fw/TC/TETware +TET_INSTALL_TARGET_PATH=/opt/home/$PKG_NAME/TETware diff --git a/TC/execute.sh b/TC/execute.sh new file mode 100644 index 0000000..a4f6095 --- /dev/null +++ b/TC/execute.sh @@ -0,0 +1,15 @@ +#!/bin/sh + +. ./_export_target_env.sh # setting environment variables + +export TET_SUITE_ROOT=`pwd` +FILE_NAME_EXTENSION=`date +%s` + +RESULT_DIR=results +HTML_RESULT=$RESULT_DIR/exec-tar-result-$FILE_NAME_EXTENSION.html +JOURNAL_RESULT=$RESULT_DIR/exec-tar-result-$FILE_NAME_EXTENSION.journal + +mkdir -p $RESULT_DIR + +tcc -e -j $JOURNAL_RESULT -p ./ +grw -c 3 -f chtml -o $HTML_RESULT $JOURNAL_RESULT diff --git a/TC/testcase/Makefile b/TC/testcase/Makefile new file mode 100644 index 0000000..97e14c4 --- /dev/null +++ b/TC/testcase/Makefile @@ -0,0 +1,27 @@ +include ../config + +CC ?= gcc + +C_FILES = $(shell ls *.c) + +PKGS = $(PKG_NAME) +PKGS += glib-2.0 +PKGS += gobject-2.0 +LDFLAGS = `pkg-config --libs $(PKGS)` +LDFLAGS += $(TET_ROOT)/lib/tet3/tcm_s.o +LDFLAGS += -L$(TET_ROOT)/lib/tet3 -ltcm_s +LDFLAGS += -L$(TET_ROOT)/lib/tet3 -lapi_s + +CFLAGS = -I. `pkg-config --cflags $(PKGS)` +CFLAGS += -I$(TET_ROOT)/inc/tet3 +CFLAGS += -Wall + +TCS := $(shell ls -1 *.c | cut -d. -f1) + +all: $(TCS) + +%: %.c + $(CC) -o $@ $< $(CFLAGS) $(LDFLAGS) + +clean: + rm -f $(TCS) diff --git a/TC/testcase/tslist b/TC/testcase/tslist new file mode 100644 index 0000000..1fc0d45 --- /dev/null +++ b/TC/testcase/tslist @@ -0,0 +1,84 @@ +/testcase/utc_download_set_auto_download_negative +/testcase/utc_download_set_auto_download_positive +/testcase/utc_download_get_auto_download_negative +/testcase/utc_download_get_auto_download_positive +/testcase/utc_download_get_http_header_field_list_negative +/testcase/utc_download_get_http_header_field_list_positive +/testcase/utc_download_get_mime_type_negative +/testcase/utc_download_get_mime_type_positive +/testcase/utc_download_get_downloaded_file_path_negative +/testcase/utc_download_get_downloaded_file_path_positive +/testcase/utc_download_get_file_name_negative +/testcase/utc_download_get_file_name_positive +/testcase/utc_download_set_file_name_negative +/testcase/utc_download_set_file_name_positive +/testcase/utc_download_get_temp_path_negative +/testcase/utc_download_get_temp_path_positive +/testcase/utc_download_get_content_name_negative +/testcase/utc_download_get_content_name_positive +/testcase/utc_download_get_content_size_negative +/testcase/utc_download_get_content_size_positive +/testcase/utc_download_get_error_negative +/testcase/utc_download_get_error_positive +/testcase/utc_download_get_http_status_negative +/testcase/utc_download_get_http_status_positive +/testcase/utc_download_set_network_type_negative +/testcase/utc_download_set_network_type_positive +/testcase/utc_download_get_network_type_negative +/testcase/utc_download_get_network_type_positive +/testcase/utc_download_set_network_bonding_negative +/testcase/utc_download_set_network_bonding_positive +/testcase/utc_download_get_network_bonding_negative +/testcase/utc_download_get_network_bonding_positive +/testcase/utc_download_start_negative +/testcase/utc_download_start_positive +/testcase/utc_download_create_negative +/testcase/utc_download_create_positive +/testcase/utc_download_destroy_negative +/testcase/utc_download_destroy_positive +/testcase/utc_download_add_http_header_field_negative +/testcase/utc_download_add_http_header_field_positive +/testcase/utc_download_get_destination_negative +/testcase/utc_download_get_destination_positive +/testcase/utc_download_get_http_header_field_negative +/testcase/utc_download_get_http_header_field_positive +/testcase/utc_download_get_state_negative +/testcase/utc_download_get_state_positive +/testcase/utc_download_get_url_negative +/testcase/utc_download_get_url_positive +/testcase/utc_download_pause_negative +/testcase/utc_download_pause_positive +/testcase/utc_download_remove_http_header_field_negative +/testcase/utc_download_remove_http_header_field_positive +/testcase/utc_download_set_destination_negative +/testcase/utc_download_set_destination_positive +/testcase/utc_download_set_url_negative +/testcase/utc_download_set_url_positive +/testcase/utc_download_set_notification_title_negative +/testcase/utc_download_set_notification_title_positive +/testcase/utc_download_get_notification_title_negative +/testcase/utc_download_get_notification_title_positive +/testcase/utc_download_set_notification_description_negative +/testcase/utc_download_set_notification_description_positive +/testcase/utc_download_get_notification_description_negative +/testcase/utc_download_get_notification_description_positive +/testcase/utc_download_set_notification_type_negative +/testcase/utc_download_set_notification_type_positive +/testcase/utc_download_get_notification_type_negative +/testcase/utc_download_get_notification_type_positive +/testcase/utc_download_set_notification_bundle_negative +/testcase/utc_download_set_notification_bundle_positive +/testcase/utc_download_get_notification_bundle_negative +/testcase/utc_download_get_notification_bundle_positive +/testcase/utc_download_set_state_changed_cb_negative +/testcase/utc_download_set_state_changed_cb_positive +/testcase/utc_download_set_progress_cb_negative +/testcase/utc_download_set_progress_cb_positive +/testcase/utc_download_unset_state_changed_cb_negative +/testcase/utc_download_unset_state_changed_cb_positive +/testcase/utc_download_unset_progress_cb_negative +/testcase/utc_download_unset_progress_cb_positive +/testcase/utc_download_get_etag_positive +/testcase/utc_download_get_etag_negative +/testcase/utc_download_set_temp_file_path_negative +/testcase/utc_download_set_temp_file_path_positive diff --git a/TC/testcase/utc_download_add_http_header_field_negative.c b/TC/testcase/utc_download_add_http_header_field_negative.c new file mode 100644 index 0000000..f854ba6 --- /dev/null +++ b/TC/testcase/utc_download_add_http_header_field_negative.c @@ -0,0 +1,91 @@ +/* + * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved + * + * Licensed under the Apache License, Version 2.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include <tet_api.h> +#include <download.h> + +static void startup(void); +static void cleanup(void); + +void (*tet_startup)(void) = startup; +void (*tet_cleanup)(void) = cleanup; + +static void utc_download_add_http_header_field_negative1(void); +static void utc_download_add_http_header_field_negative2(void); +static void utc_download_add_http_header_field_negative3(void); + +struct tet_testlist tet_testlist[] = { + {utc_download_add_http_header_field_negative1, 1}, + {utc_download_add_http_header_field_negative2, 2}, + {utc_download_add_http_header_field_negative3, 3}, + {NULL, 0}, +}; + +static void startup(void) +{ + +} + +static void cleanup(void) +{ + /* end of TC */ +} + +void utc_download_add_http_header_field_negative1(void) +{ + const char *TC_NAME = __FUNCTION__; + int retcode = 0; + + retcode = download_add_http_header_field(-1, "field", "value"); + + if (retcode == DOWNLOAD_ERROR_INVALID_PARAMETER) + dts_pass(TC_NAME, "retcode has invalid parameter"); + else + dts_fail(TC_NAME, "retcode does not have invalid parameter"); +} + +void utc_download_add_http_header_field_negative2(void) +{ + const char *TC_NAME = __FUNCTION__; + int retcode = 0; + int id = 0; + + download_create(&id); + retcode = download_add_http_header_field(id, NULL, "value"); + download_destroy(id); + + if (retcode == DOWNLOAD_ERROR_INVALID_PARAMETER) + dts_pass(TC_NAME, "retcode has invalid parameter"); + else + dts_fail(TC_NAME, "retcode does not have invalid parameter"); +} + +void utc_download_add_http_header_field_negative3(void) +{ + const char *TC_NAME = __FUNCTION__; + int retcode = 0; + int id = 0; + + download_create(&id); + retcode = download_add_http_header_field(id, "field", NULL); + download_destroy(id); + + if (retcode == DOWNLOAD_ERROR_INVALID_PARAMETER) + dts_pass(TC_NAME, "retcode has invalid parameter"); + else + dts_fail(TC_NAME, "retcode does not have invalid parameter"); +} + diff --git a/TC/testcase/utc_download_add_http_header_field_positive.c b/TC/testcase/utc_download_add_http_header_field_positive.c new file mode 100644 index 0000000..c9dbe58 --- /dev/null +++ b/TC/testcase/utc_download_add_http_header_field_positive.c @@ -0,0 +1,58 @@ +/* + * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved + * + * Licensed under the Apache License, Version 2.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include <tet_api.h> +#include <download.h> + +static void startup(void); +static void cleanup(void); + +void (*tet_startup)(void) = startup; +void (*tet_cleanup)(void) = cleanup; + +static void utc_download_add_http_header_field_positive1(void); + +struct tet_testlist tet_testlist[] = { + {utc_download_add_http_header_field_positive1, 1}, + {NULL, 0}, +}; + +static void startup(void) +{ + +} + +static void cleanup(void) +{ + /* end of TC */ +} + +void utc_download_add_http_header_field_positive1(void) +{ + const char *TC_NAME = __FUNCTION__; + int retcode = 0; + int id = 0; + + download_create(&id); + retcode = download_add_http_header_field(id, "field", "value"); + download_destroy(id); + + if (retcode == DOWNLOAD_ERROR_NONE) + dts_pass(TC_NAME, "retcode has no error"); + else + dts_fail(TC_NAME, "retcode has error"); +} + diff --git a/TC/testcase/utc_download_create_negative.c b/TC/testcase/utc_download_create_negative.c new file mode 100644 index 0000000..16b34ad --- /dev/null +++ b/TC/testcase/utc_download_create_negative.c @@ -0,0 +1,55 @@ +/* + * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved + * + * Licensed under the Apache License, Version 2.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include <tet_api.h> +#include <download.h> + +static void startup(void); +static void cleanup(void); + +void (*tet_startup)(void) = startup; +void (*tet_cleanup)(void) = cleanup; + +static void utc_download_create_negative1(void); + +struct tet_testlist tet_testlist[] = { + {utc_download_create_negative1, 1}, + {NULL, 0}, +}; + +static void startup(void) +{ + +} + +static void cleanup(void) +{ + /* end of TC */ +} + +void utc_download_create_negative1(void) +{ + const char *TC_NAME = __FUNCTION__; + int retcode = 0; + + retcode = download_create(NULL); + + if (retcode != DOWNLOAD_ERROR_NONE) + dts_pass(TC_NAME, "retcode has invalid parameter"); + else + dts_fail(TC_NAME, "retcode does not have invalid parameter"); +} + diff --git a/TC/testcase/utc_download_create_positive.c b/TC/testcase/utc_download_create_positive.c new file mode 100644 index 0000000..6965efc --- /dev/null +++ b/TC/testcase/utc_download_create_positive.c @@ -0,0 +1,58 @@ +/* + * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved + * + * Licensed under the Apache License, Version 2.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include <tet_api.h> +#include <download.h> + +static void startup(void); +static void cleanup(void); + +void (*tet_startup)(void) = startup; +void (*tet_cleanup)(void) = cleanup; + +static void utc_download_create_positive1(void); + +struct tet_testlist tet_testlist[] = { + {utc_download_create_positive1, 1}, + {NULL, 0}, +}; + +static void startup(void) +{ + +} + +static void cleanup(void) +{ + /* end of TC */ +} + +void utc_download_create_positive1(void) +{ + const char *TC_NAME = __FUNCTION__; + int retcode = 0; + int id = 0; + + retcode = download_create(&id); + + if (retcode == DOWNLOAD_ERROR_NONE) { + download_destroy(id); + dts_pass(TC_NAME, "retcode has no error"); + } + else + dts_fail(TC_NAME, "retcode has error"); +} + diff --git a/TC/testcase/utc_download_destroy_negative.c b/TC/testcase/utc_download_destroy_negative.c new file mode 100644 index 0000000..a7194ec --- /dev/null +++ b/TC/testcase/utc_download_destroy_negative.c @@ -0,0 +1,53 @@ +/* + * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved + * + * Licensed under the Apache License, Version 2.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include <tet_api.h> +#include <download.h> + +static void startup(void); +static void cleanup(void); + +void (*tet_startup)(void) = startup; +void (*tet_cleanup)(void) = cleanup; + +static void utc_download_destroy_negative1(void); +struct tet_testlist tet_testlist[] = { + {utc_download_destroy_negative1, 1}, + {NULL, 0}, +}; + +static void startup(void) +{ + +} + +static void cleanup(void) +{ + /* end of TC */ +} + +void utc_download_destroy_negative1(void) +{ + const char *TC_NAME = __FUNCTION__; + int retcode = 0; + retcode = download_destroy(-1); + + if (retcode != DOWNLOAD_ERROR_NONE) + dts_pass(TC_NAME, "retcode has invalid parameter"); + else + dts_fail(TC_NAME, "retcode does not have invalid parameter"); +} + diff --git a/TC/testcase/utc_download_destroy_positive.c b/TC/testcase/utc_download_destroy_positive.c new file mode 100644 index 0000000..166eedf --- /dev/null +++ b/TC/testcase/utc_download_destroy_positive.c @@ -0,0 +1,63 @@ +/* + * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved + * + * Licensed under the Apache License, Version 2.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include <tet_api.h> +#include <download.h> + +static void startup(void); +static void cleanup(void); + +void (*tet_startup)(void) = startup; +void (*tet_cleanup)(void) = cleanup; + +static void utc_download_destroy_positive1(void); + +struct tet_testlist tet_testlist[] = { + {utc_download_destroy_positive1, 1}, + {NULL, 0}, +}; + +static void startup(void) +{ + +} + +static void cleanup(void) +{ + /* end of TC */ +} + +void utc_download_destroy_positive1(void) +{ + const char *TC_NAME = __FUNCTION__; + int retcode = 0; + int id = 0; + + retcode = download_create(&id); + + if (retcode == DOWNLOAD_ERROR_NONE) + retcode = download_destroy(id); + else { + dts_fail(TC_NAME, "create failed"); + return; + } + + if (retcode == DOWNLOAD_ERROR_NONE) + dts_pass(TC_NAME, "retcode has no error"); + else + dts_fail(TC_NAME, "retcode has error"); +} + diff --git a/TC/testcase/utc_download_get_auto_download_negative.c b/TC/testcase/utc_download_get_auto_download_negative.c new file mode 100644 index 0000000..4c033a2 --- /dev/null +++ b/TC/testcase/utc_download_get_auto_download_negative.c @@ -0,0 +1,89 @@ +/*
+ * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * Licensed under the Apache License, Version 2.0 (the License);
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an AS IS BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include <tet_api.h>
+#include <download.h>
+
+static void startup(void);
+static void cleanup(void);
+
+void (*tet_startup)(void) = startup;
+void (*tet_cleanup)(void) = cleanup;
+
+static void utc_download_get_auto_download_negative1(void);
+static void utc_download_get_auto_download_negative2(void);
+static void utc_download_get_auto_download_negative3(void);
+
+struct tet_testlist tet_testlist[] = {
+ {utc_download_get_auto_download_negative1, 1},
+ {utc_download_get_auto_download_negative2, 2},
+ {utc_download_get_auto_download_negative3, 3},
+ {NULL, 0},
+};
+
+static void startup(void)
+{
+
+}
+
+static void cleanup(void)
+{
+ /* end of TC */
+}
+
+void utc_download_get_auto_download_negative1(void)
+{
+ const char *TC_NAME = __FUNCTION__;
+ int retcode = 0;
+ bool get_enable = false;
+
+ retcode = download_get_auto_download(-1, &get_enable);
+
+ if (retcode == DOWNLOAD_ERROR_INVALID_PARAMETER)
+ dts_pass(TC_NAME, "retcode has invalid parameter");
+ else
+ dts_fail(TC_NAME, "retcode does not have invalid parameter");
+}
+
+void utc_download_get_auto_download_negative2(void)
+{
+ const char *TC_NAME = __FUNCTION__;
+ int retcode = 0;
+ int id = 0;
+
+ download_create(&id);
+ retcode = download_get_auto_download(id, NULL);
+ download_destroy(id);
+
+ if (retcode == DOWNLOAD_ERROR_INVALID_PARAMETER)
+ dts_pass(TC_NAME, "retcode has invalid parameter");
+ else
+ dts_fail(TC_NAME, "retcode does not have invalid parameter");
+}
+
+void utc_download_get_auto_download_negative3(void)
+{
+ const char *TC_NAME = __FUNCTION__;
+ int retcode = 0;
+
+ retcode = download_get_auto_download(-1, NULL);
+
+ if (retcode == DOWNLOAD_ERROR_INVALID_PARAMETER)
+ dts_pass(TC_NAME, "retcode has invalid parameter");
+ else
+ dts_fail(TC_NAME, "retcode does not have invalid parameter");
+}
+
diff --git a/TC/testcase/utc_download_get_auto_download_positive.c b/TC/testcase/utc_download_get_auto_download_positive.c new file mode 100644 index 0000000..d1823f5 --- /dev/null +++ b/TC/testcase/utc_download_get_auto_download_positive.c @@ -0,0 +1,61 @@ +/*
+ * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * Licensed under the Apache License, Version 2.0 (the License);
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an AS IS BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include <tet_api.h>
+#include <download.h>
+
+static void startup(void);
+static void cleanup(void);
+
+void (*tet_startup)(void) = startup;
+void (*tet_cleanup)(void) = cleanup;
+
+static void utc_download_get_auto_download_positive1(void);
+
+struct tet_testlist tet_testlist[] = {
+ {utc_download_get_auto_download_positive1, 1},
+ {NULL, 0},
+};
+
+static void startup(void)
+{
+
+}
+
+static void cleanup(void)
+{
+ /* end of TC */
+}
+
+void utc_download_get_auto_download_positive1(void)
+{
+ const char *TC_NAME = __FUNCTION__;
+ int retcode = 0;
+ bool enable = true;
+ bool getenable = false;
+ int id = 0;
+
+ download_create(&id);
+ download_set_auto_download(id, enable);
+ retcode = download_get_auto_download(id, &getenable);
+ download_destroy(id);
+
+ if (retcode == DOWNLOAD_ERROR_NONE && (enable == getenable))
+ dts_pass(TC_NAME, "retcode has no error and the auto nofication status of set API is same as of get API ");
+ else
+ dts_fail(TC_NAME, "retcode has error or the auto notification status of set API is not same as of get API");
+}
+
diff --git a/TC/testcase/utc_download_get_content_name_negative.c b/TC/testcase/utc_download_get_content_name_negative.c new file mode 100644 index 0000000..c6f9717 --- /dev/null +++ b/TC/testcase/utc_download_get_content_name_negative.c @@ -0,0 +1,89 @@ +/* + * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved + * + * Licensed under the Apache License, Version 2.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include <tet_api.h> +#include <download.h> + +static void startup(void); +static void cleanup(void); + +void (*tet_startup)(void) = startup; +void (*tet_cleanup)(void) = cleanup; + +static void utc_download_get_content_name_negative1(void); +static void utc_download_get_content_name_negative2(void); +static void utc_download_get_content_name_negative3(void); + +struct tet_testlist tet_testlist[] = { + {utc_download_get_content_name_negative1, 1}, + {utc_download_get_content_name_negative2, 2}, + {utc_download_get_content_name_negative3, 3}, + {NULL, 0}, +}; + +static void startup(void) +{ + +} + +static void cleanup(void) +{ + /* end of TC */ +} + +void utc_download_get_content_name_negative1(void) +{ + const char *TC_NAME = __FUNCTION__; + int retcode = 0; + char *output = NULL; + + retcode = download_get_content_name(-1, &output); + + if (retcode == DOWNLOAD_ERROR_INVALID_PARAMETER) + dts_pass(TC_NAME, "retcode has invalid parameter"); + else + dts_fail(TC_NAME, "retcode does not have invalid parameter"); +} + +void utc_download_get_content_name_negative2(void) +{ + const char *TC_NAME = __FUNCTION__; + int retcode = 0; + int id = 0; + + download_create(&id); + retcode = download_get_content_name(id, NULL); + download_destroy(id); + + if (retcode == DOWNLOAD_ERROR_INVALID_PARAMETER) + dts_pass(TC_NAME, "retcode has invalid parameter"); + else + dts_fail(TC_NAME, "retcode does not have invalid parameter"); +} + +void utc_download_get_content_name_negative3(void) +{ + const char *TC_NAME = __FUNCTION__; + int retcode = 0; + + retcode = download_get_content_name(-1, NULL); + + if (retcode == DOWNLOAD_ERROR_INVALID_PARAMETER) + dts_pass(TC_NAME, "retcode has invalid parameter"); + else + dts_fail(TC_NAME, "retcode does not have invalid parameter"); +} + diff --git a/TC/testcase/utc_download_get_content_name_positive.c b/TC/testcase/utc_download_get_content_name_positive.c new file mode 100644 index 0000000..9a850ea --- /dev/null +++ b/TC/testcase/utc_download_get_content_name_positive.c @@ -0,0 +1,107 @@ +/* + * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved + * + * Licensed under the Apache License, Version 2.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include <tet_api.h> +#include <download.h> +#include <glib.h> +#include <glib-object.h> + + +static void startup(void); +static void cleanup(void); + +void (*tet_startup)(void) = startup; +void (*tet_cleanup)(void) = cleanup; + +static void utc_download_get_content_name_positive1(void); + +struct tet_testlist tet_testlist[] = { + {utc_download_get_content_name_positive1, 1}, + {NULL, 0}, +}; + +static GMainLoop* gloop = NULL; +#define TEST_URL "http://static.campaign.naver.com/0/hangeul/2011/img/img_family.gif" + +static void state_cb (int download_id, download_state_e state, void *user_data) +{ + const char *TC_NAME = __FUNCTION__; + int retcode = 0; + download_error_e err = DOWNLOAD_ERROR_NONE; + if (state == DOWNLOAD_STATE_DOWNLOADING) + g_main_loop_quit(gloop); + + retcode = download_get_error(download_id, &err); + if (retcode != DOWNLOAD_ERROR_NONE) { + dts_fail(TC_NAME, "Fail to get error"); + g_main_loop_quit(gloop); + return; + } + dts_message(TC_NAME, "err[%d]", err); + if (err == DOWNLOAD_ERROR_INVALID_URL) + dts_message(TC_NAME, "invaild url err"); + else + dts_message(TC_NAME, "another error[%d]", err); +} + +static void startup(void) +{ + g_type_init(); + gloop = g_main_loop_new (NULL, 0); +} + +static void cleanup(void) +{ + g_main_loop_unref(gloop); + gloop = NULL; +} + +void utc_download_get_content_name_positive1(void) +{ + const char *TC_NAME = __FUNCTION__; + int retcode = 0; + char *output = NULL; + int id = 0; + + retcode = download_create(&id); + if (retcode != DOWNLOAD_ERROR_NONE) { + dts_fail(TC_NAME,"Fail to create download handle"); + return; + } + retcode = download_set_url(id, TEST_URL); + if ( retcode != DOWNLOAD_ERROR_NONE ) { + dts_fail(TC_NAME,"Fail to set url"); + return; + } + retcode = download_set_state_changed_cb(id, state_cb, NULL); + if (retcode != DOWNLOAD_ERROR_NONE) + dts_fail(TC_NAME, "Fail to set callback"); + + retcode = download_start(id); + if (retcode == DOWNLOAD_ERROR_NONE) + g_main_loop_run(gloop); + + retcode = download_get_content_name(id, &output); + + download_unset_state_changed_cb(id); + download_destroy(id); + + if (retcode == DOWNLOAD_ERROR_NONE && output) + dts_pass(TC_NAME, "retcode has no error and content exists"); + else + dts_fail(TC_NAME, "retcode has error or content does not exists"); +} + diff --git a/TC/testcase/utc_download_get_content_size_negative.c b/TC/testcase/utc_download_get_content_size_negative.c new file mode 100644 index 0000000..8e8ba46 --- /dev/null +++ b/TC/testcase/utc_download_get_content_size_negative.c @@ -0,0 +1,89 @@ +/* + * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved + * + * Licensed under the Apache License, Version 2.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include <tet_api.h> +#include <download.h> + +static void startup(void); +static void cleanup(void); + +void (*tet_startup)(void) = startup; +void (*tet_cleanup)(void) = cleanup; + +static void utc_download_get_content_size_negative1(void); +static void utc_download_get_content_size_negative2(void); +static void utc_download_get_content_size_negative3(void); + +struct tet_testlist tet_testlist[] = { + {utc_download_get_content_size_negative1, 1}, + {utc_download_get_content_size_negative2, 2}, + {utc_download_get_content_size_negative3, 3}, + {NULL, 0}, +}; + +static void startup(void) +{ + +} + +static void cleanup(void) +{ + /* end of TC */ +} + +void utc_download_get_content_size_negative1(void) +{ + const char *TC_NAME = __FUNCTION__; + int retcode = 0; + unsigned long long output = 0; + + retcode = download_get_content_size(-1, &output); + + if (retcode == DOWNLOAD_ERROR_INVALID_PARAMETER) + dts_pass(TC_NAME, "retcode has invalid parameter"); + else + dts_fail(TC_NAME, "retcode does not have invalid parameter"); +} + +void utc_download_get_content_size_negative2(void) +{ + const char *TC_NAME = __FUNCTION__; + int retcode = 0; + int id = 0; + + download_create(&id); + retcode = download_get_content_size(id, NULL); + download_destroy(id); + + if (retcode == DOWNLOAD_ERROR_INVALID_PARAMETER) + dts_pass(TC_NAME, "retcode has invalid parameter"); + else + dts_fail(TC_NAME, "retcode does not have invalid parameter"); +} + +void utc_download_get_content_size_negative3(void) +{ + const char *TC_NAME = __FUNCTION__; + int retcode = 0; + + retcode = download_get_content_size(-1, NULL); + + if (retcode == DOWNLOAD_ERROR_INVALID_PARAMETER) + dts_pass(TC_NAME, "retcode has invalid parameter"); + else + dts_fail(TC_NAME, "retcode does not have invalid parameter"); +} + diff --git a/TC/testcase/utc_download_get_content_size_positive.c b/TC/testcase/utc_download_get_content_size_positive.c new file mode 100644 index 0000000..b0cdd1e --- /dev/null +++ b/TC/testcase/utc_download_get_content_size_positive.c @@ -0,0 +1,112 @@ +/* + * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved + * + * Licensed under the Apache License, Version 2.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include <tet_api.h> +#include <download.h> +#include <glib.h> +#include <glib-object.h> + + +static void startup(void); +static void cleanup(void); + +void (*tet_startup)(void) = startup; +void (*tet_cleanup)(void) = cleanup; + +static void utc_download_get_content_size_positive1(void); + +struct tet_testlist tet_testlist[] = { + {utc_download_get_content_size_positive1, 1}, + {NULL, 0}, +}; + +static GMainLoop* gloop = NULL; +#define TEST_URL "http://static.campaign.naver.com/0/hangeul/2011/img/img_family.gif" + +static void state_cb (int download_id, download_state_e state, void *user_data) +{ + const char *TC_NAME = __FUNCTION__; + int retcode = 0; + download_error_e err = DOWNLOAD_ERROR_NONE; + if (state == DOWNLOAD_STATE_DOWNLOADING) + g_main_loop_quit(gloop); + + retcode = download_get_error(download_id, &err); + if (retcode != DOWNLOAD_ERROR_NONE) { + dts_fail(TC_NAME, "Fail to get error"); + g_main_loop_quit(gloop); + return; + } + dts_message(TC_NAME, "err[%d]", err); + if (err == DOWNLOAD_ERROR_INVALID_URL) + dts_message(TC_NAME, "invaild url err"); + else + dts_message(TC_NAME, "another error[%d]", err); +} + +static void startup(void) +{ + g_type_init(); + gloop = g_main_loop_new (NULL, 0); +} + +static void cleanup(void) +{ + g_main_loop_unref(gloop); + gloop = NULL; +} + +void utc_download_get_content_size_positive1(void) +{ + const char *TC_NAME = __FUNCTION__; + int retcode = 0; + unsigned long long output = 0; + int id = 0; + + retcode = download_create(&id); + if (retcode != DOWNLOAD_ERROR_NONE) { + dts_fail(TC_NAME,"Fail to create download handle"); + return; + } + retcode = download_set_url(id, TEST_URL); + if ( retcode != DOWNLOAD_ERROR_NONE ) { + dts_fail(TC_NAME,"Fail to set url"); + return; + } + retcode = download_set_state_changed_cb(id, state_cb, NULL); + if (retcode != DOWNLOAD_ERROR_NONE) + dts_fail(TC_NAME, "Fail to set callback"); + + retcode = download_start(id); + if (retcode == DOWNLOAD_ERROR_NONE) + g_main_loop_run(gloop); + + retcode = download_get_content_size(id, &output); + if ( retcode != DOWNLOAD_ERROR_NONE ) + dts_message(TC_NAME,"Fail to get content name"); + + retcode = download_unset_state_changed_cb(id); + if ( retcode != DOWNLOAD_ERROR_NONE ) + dts_message(TC_NAME,"Fail to unset callback"); + + download_destroy(id); + + if (retcode == DOWNLOAD_ERROR_NONE && (output > 0)) + dts_pass(TC_NAME, "retcode has no error and size is valid"); + else + dts_fail(TC_NAME, "retcode has error or size not valid"); +} + diff --git a/TC/testcase/utc_download_get_destination_negative.c b/TC/testcase/utc_download_get_destination_negative.c new file mode 100644 index 0000000..28b28dc --- /dev/null +++ b/TC/testcase/utc_download_get_destination_negative.c @@ -0,0 +1,92 @@ +/* + * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved + * + * Licensed under the Apache License, Version 2.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include <tet_api.h> +#include <download.h> + +static void startup(void); +static void cleanup(void); + +void (*tet_startup)(void) = startup; +void (*tet_cleanup)(void) = cleanup; + +static void utc_download_get_destination_negative1(void); +static void utc_download_get_destination_negative2(void); +static void utc_download_get_destination_negative3(void); + +struct tet_testlist tet_testlist[] = { + {utc_download_get_destination_negative1, 1}, + {utc_download_get_destination_negative2, 2}, + {utc_download_get_destination_negative3, 3}, + {NULL, 0}, +}; + +static void startup(void) +{ + +} + +static void cleanup(void) +{ + /* end of TC */ +} + +void utc_download_get_destination_negative1(void) +{ + const char *TC_NAME = __FUNCTION__; + int retcode = 0; + char *output = NULL; + + retcode = download_get_destination(-1, &output); + + if (retcode == DOWNLOAD_ERROR_INVALID_PARAMETER) + dts_pass(TC_NAME, "retcode has invalid parameter"); + else + dts_fail(TC_NAME, "retcode does not have invalid parameter"); +} + +void utc_download_get_destination_negative2(void) +{ + const char *TC_NAME = __FUNCTION__; + int retcode = 0; + char *input = "URL"; + int id = 0; + + download_create(&id); + download_set_destination(id, input); + retcode = download_get_destination(id, NULL); + + download_destroy(id); + + if (retcode == DOWNLOAD_ERROR_INVALID_PARAMETER) + dts_pass(TC_NAME, "retcode has invalid parameter"); + else + dts_fail(TC_NAME, "retcode does not have invalid parameter"); +} + +void utc_download_get_destination_negative3(void) +{ + const char *TC_NAME = __FUNCTION__; + int retcode = 0; + + retcode = download_get_destination(-1, NULL); + + if (retcode == DOWNLOAD_ERROR_INVALID_PARAMETER) + dts_pass(TC_NAME, "retcode has invalid parameter"); + else + dts_fail(TC_NAME, "retcode does not have invalid parameter"); +} + diff --git a/TC/testcase/utc_download_get_destination_positive.c b/TC/testcase/utc_download_get_destination_positive.c new file mode 100644 index 0000000..52f4b88 --- /dev/null +++ b/TC/testcase/utc_download_get_destination_positive.c @@ -0,0 +1,61 @@ +/* + * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved + * + * Licensed under the Apache License, Version 2.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include <tet_api.h> +#include <download.h> + +static void startup(void); +static void cleanup(void); + +void (*tet_startup)(void) = startup; +void (*tet_cleanup)(void) = cleanup; + +static void utc_download_get_destination_positive1(void); + +struct tet_testlist tet_testlist[] = { + {utc_download_get_destination_positive1, 1}, + {NULL, 0}, +}; + +static void startup(void) +{ + +} + +static void cleanup(void) +{ + /* end of TC */ +} + +void utc_download_get_destination_positive1(void) +{ + const char *TC_NAME = __FUNCTION__; + int retcode = 0; + char *input = "/opt/usr/media/Downloads"; + char *output = NULL; + int id = 0; + + download_create(&id); + download_set_destination(id, input); + retcode = download_get_destination(id, &output); + download_destroy(id); + + if (retcode == DOWNLOAD_ERROR_NONE && !strcmp(input, output)) + dts_pass(TC_NAME, "retcode has no error and the destination of set API is same to destination of get API "); + else + dts_fail(TC_NAME, "retcode has error or the destination of set API is not same to destination of get API"); +} + diff --git a/TC/testcase/utc_download_get_downloaded_file_path_negative.c b/TC/testcase/utc_download_get_downloaded_file_path_negative.c new file mode 100644 index 0000000..c2151da --- /dev/null +++ b/TC/testcase/utc_download_get_downloaded_file_path_negative.c @@ -0,0 +1,90 @@ +/*
+ * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * Licensed under the Apache License, Version 2.0 (the License);
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an AS IS BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include <tet_api.h>
+#include <download.h>
+
+static void startup(void);
+static void cleanup(void);
+
+void (*tet_startup)(void) = startup;
+void (*tet_cleanup)(void) = cleanup;
+
+static void utc_download_get_downloaded_file_path_negative1(void);
+static void utc_download_get_downloaded_file_path_negative2(void);
+static void utc_download_get_downloaded_file_path_negative3(void);
+
+struct tet_testlist tet_testlist[] = {
+ {utc_download_get_downloaded_file_path_negative1, 1},
+ {utc_download_get_downloaded_file_path_negative2, 2},
+ {utc_download_get_downloaded_file_path_negative3, 3},
+ {NULL, 0},
+};
+
+static void startup(void)
+{
+
+}
+
+static void cleanup(void)
+{
+ /* end of TC */
+}
+
+void utc_download_get_downloaded_file_path_negative1(void)
+{
+ const char *TC_NAME = __FUNCTION__;
+ int retcode = 0;
+ char *output = NULL;
+
+ retcode = download_get_downloaded_file_path(-1, &output);
+
+ if (retcode == DOWNLOAD_ERROR_INVALID_PARAMETER)
+ dts_pass(TC_NAME, "retcode has invalid parameter");
+ else
+ dts_fail(TC_NAME, "retcode does not have invalid parameter");
+}
+
+void utc_download_get_downloaded_file_path_negative2(void)
+{
+ const char *TC_NAME = __FUNCTION__;
+ int retcode = 0;
+ int id = 0;
+
+ download_create(&id);
+ retcode = download_get_downloaded_file_path(id, NULL);
+
+ download_destroy(id);
+
+ if (retcode == DOWNLOAD_ERROR_INVALID_PARAMETER)
+ dts_pass(TC_NAME, "retcode has invalid parameter");
+ else
+ dts_fail(TC_NAME, "retcode does not have invalid parameter");
+}
+
+void utc_download_get_downloaded_file_path_negative3(void)
+{
+ const char *TC_NAME = __FUNCTION__;
+ int retcode = 0;
+
+ retcode = download_get_downloaded_file_path(-1, NULL);
+
+ if (retcode == DOWNLOAD_ERROR_INVALID_PARAMETER)
+ dts_pass(TC_NAME, "retcode has invalid parameter");
+ else
+ dts_fail(TC_NAME, "retcode does not have invalid parameter");
+}
+
diff --git a/TC/testcase/utc_download_get_downloaded_file_path_positive.c b/TC/testcase/utc_download_get_downloaded_file_path_positive.c new file mode 100644 index 0000000..b510776 --- /dev/null +++ b/TC/testcase/utc_download_get_downloaded_file_path_positive.c @@ -0,0 +1,111 @@ +/*
+ * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * Licensed under the Apache License, Version 2.0 (the License);
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an AS IS BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include <tet_api.h>
+#include <download.h>
+#include <glib.h>
+#include <glib-object.h>
+
+
+static void startup(void);
+static void cleanup(void);
+
+void (*tet_startup)(void) = startup;
+void (*tet_cleanup)(void) = cleanup;
+
+static void utc_download_get_downloaded_file_path_positive1(void);
+
+struct tet_testlist tet_testlist[] = {
+ {utc_download_get_downloaded_file_path_positive1, 1},
+ {NULL, 0},
+};
+
+static GMainLoop* gloop = NULL;
+#define TEST_URL "http://static.campaign.naver.com/0/hangeul/2011/img/img_family.gif"
+
+static void state_cb (int download_id, download_state_e state, void *user_data)
+{
+ const char *TC_NAME = __FUNCTION__;
+ int retcode = 0;
+ download_error_e err = DOWNLOAD_ERROR_NONE;
+ if (state == DOWNLOAD_STATE_COMPLETED)
+ g_main_loop_quit(gloop);
+
+ retcode = download_get_error(download_id, &err);
+ if (retcode != DOWNLOAD_ERROR_NONE) {
+ dts_fail(TC_NAME, "Fail to get error");
+ g_main_loop_quit(gloop);
+ return;
+ }
+ dts_message(TC_NAME, "err[%d]", err);
+ if (err == DOWNLOAD_ERROR_INVALID_URL)
+ dts_message(TC_NAME, "invaild url err");
+ else
+ dts_message(TC_NAME, "another error[%d]", err);
+}
+
+
+static void startup(void)
+{
+ g_type_init();
+ gloop = g_main_loop_new (NULL, 0);
+}
+
+static void cleanup(void)
+{
+ g_main_loop_unref(gloop);
+ gloop = NULL;
+}
+
+
+void utc_download_get_downloaded_file_path_positive1(void)
+{
+ const char *TC_NAME = __FUNCTION__;
+ int retcode = 0;
+ char *output = NULL;
+ int id = 0;
+
+ retcode = download_create(&id);
+ if (retcode != DOWNLOAD_ERROR_NONE) {
+ dts_fail(TC_NAME,"Fail to create download handle");
+ return;
+ }
+ retcode = download_set_url(id, TEST_URL);
+ if ( retcode != DOWNLOAD_ERROR_NONE ) {
+ dts_fail(TC_NAME,"Fail to set url");
+ return;
+ }
+ retcode = download_set_state_changed_cb(id, state_cb, NULL);
+ if (retcode != DOWNLOAD_ERROR_NONE)
+ dts_fail(TC_NAME, "Fail to set callback");
+
+ retcode = download_start(id);
+ if (retcode == DOWNLOAD_ERROR_NONE)
+ g_main_loop_run(gloop);
+
+ retcode = download_get_downloaded_file_path(id, &output);
+ if ( retcode != DOWNLOAD_ERROR_NONE )
+ dts_message(TC_NAME,"Fail to get content name");
+
+ download_unset_state_changed_cb(id);
+ download_destroy(id);
+
+ if (retcode == DOWNLOAD_ERROR_NONE)
+ dts_pass(TC_NAME, "retcode has no error");
+ else
+ dts_fail(TC_NAME, "retcode has error");
+}
+
diff --git a/TC/testcase/utc_download_get_error_negative.c b/TC/testcase/utc_download_get_error_negative.c new file mode 100644 index 0000000..90ef410 --- /dev/null +++ b/TC/testcase/utc_download_get_error_negative.c @@ -0,0 +1,89 @@ +/* + * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved + * + * Licensed under the Apache License, Version 2.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include <tet_api.h> +#include <download.h> + +static void startup(void); +static void cleanup(void); + +void (*tet_startup)(void) = startup; +void (*tet_cleanup)(void) = cleanup; + +static void utc_download_get_error_negative1(void); +static void utc_download_get_error_negative2(void); +static void utc_download_get_error_negative3(void); + +struct tet_testlist tet_testlist[] = { + {utc_download_get_error_negative1, 1}, + {utc_download_get_error_negative2, 2}, + {utc_download_get_error_negative3, 3}, + {NULL, 0}, +}; + +static void startup(void) +{ + +} + +static void cleanup(void) +{ + /* end of TC */ +} + +void utc_download_get_error_negative1(void) +{ + const char *TC_NAME = __FUNCTION__; + int retcode = 0; + download_error_e err = DOWNLOAD_ERROR_NONE; + + retcode = download_get_error(-1, &err); + + if (retcode == DOWNLOAD_ERROR_INVALID_PARAMETER) + dts_pass(TC_NAME, "retcode has invalid parameter"); + else + dts_fail(TC_NAME, "retcode does not have invalid parameter"); +} + +void utc_download_get_error_negative2(void) +{ + const char *TC_NAME = __FUNCTION__; + int retcode = 0; + int id = 0; + + download_create(&id); + retcode = download_get_error(id, NULL); + download_destroy(id); + + if (retcode == DOWNLOAD_ERROR_INVALID_PARAMETER) + dts_pass(TC_NAME, "retcode has invalid parameter"); + else + dts_fail(TC_NAME, "retcode does not have invalid parameter"); +} + +void utc_download_get_error_negative3(void) +{ + const char *TC_NAME = __FUNCTION__; + int retcode = 0; + + retcode = download_get_error(-1, NULL); + + if (retcode == DOWNLOAD_ERROR_INVALID_PARAMETER) + dts_pass(TC_NAME, "retcode has invalid parameter"); + else + dts_fail(TC_NAME, "retcode does not have invalid parameter"); +} + diff --git a/TC/testcase/utc_download_get_error_positive.c b/TC/testcase/utc_download_get_error_positive.c new file mode 100644 index 0000000..39064d0 --- /dev/null +++ b/TC/testcase/utc_download_get_error_positive.c @@ -0,0 +1,59 @@ +/* + * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved + * + * Licensed under the Apache License, Version 2.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include <tet_api.h> +#include <download.h> + +static void startup(void); +static void cleanup(void); + +void (*tet_startup)(void) = startup; +void (*tet_cleanup)(void) = cleanup; + +static void utc_download_get_error_positive1(void); + +struct tet_testlist tet_testlist[] = { + {utc_download_get_error_positive1, 1}, + {NULL, 0}, +}; + +static void startup(void) +{ + +} + +static void cleanup(void) +{ + /* end of TC */ +} + +void utc_download_get_error_positive1(void) +{ + const char *TC_NAME = __FUNCTION__; + int retcode = 0; + download_error_e err = DOWNLOAD_ERROR_NONE; + int id = 0; + + download_create(&id); + retcode = download_get_error(id, &err); + download_destroy(id); + + if (retcode == DOWNLOAD_ERROR_NONE) + dts_pass(TC_NAME, "retcode has no error and temp path exists"); + else + dts_fail(TC_NAME, "retcode has error or temp path does not exists"); +} + diff --git a/TC/testcase/utc_download_get_etag_negative.c b/TC/testcase/utc_download_get_etag_negative.c new file mode 100644 index 0000000..510ff32 --- /dev/null +++ b/TC/testcase/utc_download_get_etag_negative.c @@ -0,0 +1,74 @@ +/* + * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved + * + * Licensed under the Apache License, Version 2.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include <tet_api.h> +#include <download.h> + +static void startup(void); +static void cleanup(void); + +void (*tet_startup)(void) = startup; +void (*tet_cleanup)(void) = cleanup; + +static void utc_download_get_etag_negative1(void); +static void utc_download_get_etag_negative2(void); + +struct tet_testlist tet_testlist[] = { + {utc_download_get_etag_negative1, 1}, + {utc_download_get_etag_negative2, 2}, + {NULL, 0}, +}; + +static void startup(void) +{ + +} + +static void cleanup(void) +{ + /* end of TC */ +} + +void utc_download_get_etag_negative1(void) +{ + const char *TC_NAME = __FUNCTION__; + int retcode = 0; + char *etag = NULL; + + retcode = download_get_etag(-1,&etag); + + if (retcode == DOWNLOAD_ERROR_INVALID_PARAMETER) + dts_pass(TC_NAME, "retcode has invalid parameter"); + else + dts_fail(TC_NAME, "retcode does not have invalid parameter"); +} + +void utc_download_get_etag_negative2(void) +{ + const char *TC_NAME = __FUNCTION__; + int retcode = 0; + int id = 0; + + download_create(&id); + retcode = download_get_etag(id, NULL); + download_destroy(id); + + if (retcode == DOWNLOAD_ERROR_INVALID_PARAMETER) + dts_pass(TC_NAME, "retcode has invalid parameter"); + else + dts_fail(TC_NAME, "retcode does not have invalid parameter"); +} + diff --git a/TC/testcase/utc_download_get_etag_positive.c b/TC/testcase/utc_download_get_etag_positive.c new file mode 100644 index 0000000..5f70d41 --- /dev/null +++ b/TC/testcase/utc_download_get_etag_positive.c @@ -0,0 +1,102 @@ +/* + * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved + * + * Licensed under the Apache License, Version 2.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include <tet_api.h> +#include <download.h> +#include <glib.h> +#include <glib-object.h> + +static void startup(void); +static void cleanup(void); + +void (*tet_startup)(void) = startup; +void (*tet_cleanup)(void) = cleanup; + +static void utc_download_get_etag_positive1(void); + +struct tet_testlist tet_testlist[] = { + {utc_download_get_etag_positive1, 1}, + {NULL, 0}, +}; + +static GMainLoop* gloop = NULL; +#define TEST_URL "http://download.tizen.org/sdk/InstallManager/tizen-sdk-2.2.1/tizen-sdk-ubuntu32-v2.2.71.bin" + +static void state_cb (int download_id, download_state_e state, void *user_data) +{ + const char *TC_NAME = __FUNCTION__; + int retcode = 0; + download_error_e err = DOWNLOAD_ERROR_NONE; + if (state == DOWNLOAD_STATE_DOWNLOADING) + g_main_loop_quit(gloop); + retcode = download_get_error(download_id, &err); + if (retcode != DOWNLOAD_ERROR_NONE) { + dts_fail(TC_NAME, "Fail to get error"); + g_main_loop_quit(gloop); + return; + } + dts_message(TC_NAME, "err[%d]", err); +} + +static void startup(void) +{ + g_type_init(); + gloop = g_main_loop_new (NULL, 0); +} + +static void cleanup(void) +{ + g_main_loop_unref(gloop); + gloop = NULL; + /* end of TC */ +} + +void utc_download_get_etag_positive1(void) +{ + const char *TC_NAME = __FUNCTION__; + int retcode = 0; + char *etag = NULL; + int id = 0; + + retcode = download_create(&id); + if (retcode != DOWNLOAD_ERROR_NONE) { + dts_fail(TC_NAME,"Fail to create download handle"); + return; + } + retcode = download_set_url(id, TEST_URL); + if ( retcode != DOWNLOAD_ERROR_NONE ) { + dts_fail(TC_NAME,"Fail to set url"); + return; + } + retcode = download_set_state_changed_cb(id, state_cb, NULL); + if (retcode != DOWNLOAD_ERROR_NONE) + dts_fail(TC_NAME, "Fail to set callback"); + + retcode = download_start(id); + if (retcode == DOWNLOAD_ERROR_NONE) + g_main_loop_run(gloop); + + retcode = download_get_etag(id, &etag); + download_cancel(id); + download_unset_state_changed_cb(id); + download_destroy(id); + + if (retcode == DOWNLOAD_ERROR_NONE) + dts_pass(TC_NAME, "retcode has no error"); + else + dts_fail(TC_NAME, "retcode has error"); +} + diff --git a/TC/testcase/utc_download_get_file_name_negative.c b/TC/testcase/utc_download_get_file_name_negative.c new file mode 100644 index 0000000..cfe4011 --- /dev/null +++ b/TC/testcase/utc_download_get_file_name_negative.c @@ -0,0 +1,74 @@ +/*
+ * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * Licensed under the Apache License, Version 2.0 (the License);
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an AS IS BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include <tet_api.h>
+#include <download.h>
+
+static void startup(void);
+static void cleanup(void);
+
+void (*tet_startup)(void) = startup;
+void (*tet_cleanup)(void) = cleanup;
+
+static void utc_download_get_file_name_negative1(void);
+static void utc_download_get_file_name_negative2(void);
+
+struct tet_testlist tet_testlist[] = {
+ {utc_download_get_file_name_negative1, 1},
+ {utc_download_get_file_name_negative2, 2},
+ {NULL, 0},
+};
+
+static void startup(void)
+{
+
+}
+
+static void cleanup(void)
+{
+ /* end of TC */
+}
+
+void utc_download_get_file_name_negative1(void)
+{
+ const char *TC_NAME = __FUNCTION__;
+ int retcode = 0;
+ char *file_name = NULL;
+
+ retcode = download_get_file_name(-1,&file_name);
+
+ if (retcode == DOWNLOAD_ERROR_INVALID_PARAMETER)
+ dts_pass(TC_NAME, "retcode has invalid parameter");
+ else
+ dts_fail(TC_NAME, "retcode does not have invalid parameter");
+}
+
+void utc_download_get_file_name_negative2(void)
+{
+ const char *TC_NAME = __FUNCTION__;
+ int retcode = 0;
+ int id = 0;
+
+ download_create(&id);
+ retcode = download_get_file_name(id, NULL);
+ download_destroy(id);
+
+ if (retcode == DOWNLOAD_ERROR_INVALID_PARAMETER)
+ dts_pass(TC_NAME, "retcode has invalid parameter");
+ else
+ dts_fail(TC_NAME, "retcode does not have invalid parameter");
+}
+
diff --git a/TC/testcase/utc_download_get_file_name_positive.c b/TC/testcase/utc_download_get_file_name_positive.c new file mode 100644 index 0000000..085872e --- /dev/null +++ b/TC/testcase/utc_download_get_file_name_positive.c @@ -0,0 +1,61 @@ +/*
+ * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * Licensed under the Apache License, Version 2.0 (the License);
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an AS IS BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include <tet_api.h>
+#include <download.h>
+
+static void startup(void);
+static void cleanup(void);
+
+void (*tet_startup)(void) = startup;
+void (*tet_cleanup)(void) = cleanup;
+
+static void utc_download_get_file_name_positive1(void);
+
+struct tet_testlist tet_testlist[] = {
+ {utc_download_get_file_name_positive1, 1},
+ {NULL, 0},
+};
+
+static void startup(void)
+{
+
+}
+
+static void cleanup(void)
+{
+ /* end of TC */
+}
+
+void utc_download_get_file_name_positive1(void)
+{
+ const char *TC_NAME = __FUNCTION__;
+ int retcode = 0;
+ char *file_name1 = "file";
+ char *file_name2 = NULL;
+ int id = 0;
+
+ download_create(&id);
+ download_set_file_name(id, file_name1);
+ retcode = download_get_file_name(id, &file_name2);
+ download_destroy(id);
+
+ if (retcode == DOWNLOAD_ERROR_NONE && !strcmp(file_name1,file_name2))
+ dts_pass(TC_NAME, "retcode has no error and file name of set API is same as file name of get API");
+ else
+ dts_fail(TC_NAME, "retcode has error or file_name of set API and get API are not same");
+}
+
diff --git a/TC/testcase/utc_download_get_http_header_field_list_negative.c b/TC/testcase/utc_download_get_http_header_field_list_negative.c new file mode 100644 index 0000000..ed45176 --- /dev/null +++ b/TC/testcase/utc_download_get_http_header_field_list_negative.c @@ -0,0 +1,101 @@ +/*
+ * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * Licensed under the Apache License, Version 2.0 (the License);
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an AS IS BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include <tet_api.h>
+#include <download.h>
+
+static void startup(void);
+static void cleanup(void);
+
+void (*tet_startup)(void) = startup;
+void (*tet_cleanup)(void) = cleanup;
+
+static void utc_download_get_http_header_field_list_negative1(void);
+static void utc_download_get_http_header_field_list_negative2(void);
+static void utc_download_get_http_header_field_list_negative3(void);
+
+struct tet_testlist tet_testlist[] = {
+ {utc_download_get_http_header_field_list_negative1, 1},
+ {utc_download_get_http_header_field_list_negative2, 2},
+ {utc_download_get_http_header_field_list_negative3, 3},
+ {NULL, 0},
+};
+
+static void startup(void)
+{
+
+}
+
+static void cleanup(void)
+{
+ /* end of TC */
+}
+
+void utc_download_get_http_header_field_list_negative1(void)
+{
+ const char *TC_NAME = __FUNCTION__;
+ int retcode = 0;
+ int id = 0;
+ int length=0;
+
+ download_create(&id);
+ download_add_http_header_field(id, "field1","value1");
+ retcode = download_get_http_header_field_list(id, NULL, &length);
+ download_destroy(id);
+
+ if (retcode == DOWNLOAD_ERROR_INVALID_PARAMETER)
+ dts_pass(TC_NAME, "retcode has invalid parameter");
+ else
+ dts_fail(TC_NAME, "retcode does not have invalid parameter");
+}
+
+void utc_download_get_http_header_field_list_negative2(void)
+{
+ const char *TC_NAME = __FUNCTION__;
+ int retcode = 0;
+ int id = 0;
+ char **fields = NULL;
+
+ download_create(&id);
+ download_add_http_header_field(id, "field1","value1");
+ retcode = download_get_http_header_field_list(id, &fields, NULL);
+ download_destroy(id);
+
+ if (retcode == DOWNLOAD_ERROR_INVALID_PARAMETER)
+ dts_pass(TC_NAME, "retcode has invalid parameter");
+ else
+ dts_fail(TC_NAME, "retcode does not have invalid parameter");
+}
+
+void utc_download_get_http_header_field_list_negative3(void)
+{
+ const char *TC_NAME = __FUNCTION__;
+ int retcode = 0;
+ char **fields = NULL;
+ int length = 0;
+ int id = 0;
+
+ download_create(&id);
+ download_add_http_header_field(id, "field1","value1");
+ retcode = download_get_http_header_field_list(-1, &fields, &length);
+ download_destroy(id);
+
+ if (retcode == DOWNLOAD_ERROR_INVALID_PARAMETER)
+ dts_pass(TC_NAME, "retcode has invalid parameter");
+ else
+ dts_fail(TC_NAME, "retcode does not have invalid parameter");
+}
+
diff --git a/TC/testcase/utc_download_get_http_header_field_list_positive.c b/TC/testcase/utc_download_get_http_header_field_list_positive.c new file mode 100644 index 0000000..763d5c4 --- /dev/null +++ b/TC/testcase/utc_download_get_http_header_field_list_positive.c @@ -0,0 +1,61 @@ +/*
+ * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * Licensed under the Apache License, Version 2.0 (the License);
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an AS IS BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include <tet_api.h>
+#include <download.h>
+
+static void startup(void);
+static void cleanup(void);
+
+void (*tet_startup)(void) = startup;
+void (*tet_cleanup)(void) = cleanup;
+
+static void utc_download_get_http_header_field_list_positive1(void);
+
+struct tet_testlist tet_testlist[] = {
+ {utc_download_get_http_header_field_list_positive1, 1},
+ {NULL, 0},
+};
+
+static void startup(void)
+{
+
+}
+
+static void cleanup(void)
+{
+ /* end of TC */
+}
+
+void utc_download_get_http_header_field_list_positive1(void)
+{
+ const char *TC_NAME = __FUNCTION__;
+ int retcode = 0;
+ char **fields = NULL;
+ int length = 0;
+ int id = 0;
+
+ download_create(&id);
+ download_add_http_header_field(id, "field1","value1");
+ download_add_http_header_field(id, "field2","value2");
+ retcode =download_get_http_header_field_list(id, &fields,&length);
+ download_destroy(id);
+
+ if (retcode == DOWNLOAD_ERROR_NONE)
+ dts_pass(TC_NAME, "retcode has no error");
+ else
+ dts_fail(TC_NAME, "retcode has error");
+}
diff --git a/TC/testcase/utc_download_get_http_header_field_negative.c b/TC/testcase/utc_download_get_http_header_field_negative.c new file mode 100644 index 0000000..fd39560 --- /dev/null +++ b/TC/testcase/utc_download_get_http_header_field_negative.c @@ -0,0 +1,105 @@ +/* + * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved + * + * Licensed under the Apache License, Version 2.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include <tet_api.h> +#include <download.h> + +static void startup(void); +static void cleanup(void); + +void (*tet_startup)(void) = startup; +void (*tet_cleanup)(void) = cleanup; + +static void utc_download_get_http_header_field_negative1(void); +static void utc_download_get_http_header_field_negative2(void); +static void utc_download_get_http_header_field_negative3(void); + +struct tet_testlist tet_testlist[] = { + {utc_download_get_http_header_field_negative1, 1}, + {utc_download_get_http_header_field_negative2, 2}, + {utc_download_get_http_header_field_negative3, 3}, + {NULL, 0}, +}; + +static void startup(void) +{ + +} + +static void cleanup(void) +{ + /* end of TC */ +} + +void utc_download_get_http_header_field_negative1(void) +{ + const char *TC_NAME = __FUNCTION__; + int retcode = 0; + char *field = "field"; + char *input = "input"; + char *output = NULL; + int id = 0; + + download_create(&id); + download_add_http_header_field(id, field, input); + retcode = download_get_http_header_field(id, NULL, &output); + download_destroy(id); + + if (retcode == DOWNLOAD_ERROR_INVALID_PARAMETER) + dts_pass(TC_NAME, "retcode has invalid parameter"); + else + dts_fail(TC_NAME, "retcode does not have invalid parameter"); +} + +void utc_download_get_http_header_field_negative2(void) +{ + const char *TC_NAME = __FUNCTION__; + int retcode = 0; + char *field = "field"; + char *input = "input"; + int id = 0; + + download_create(&id); + download_add_http_header_field(id, field, input); + retcode = download_get_http_header_field(id, field, NULL); + download_destroy(id); + + if (retcode == DOWNLOAD_ERROR_INVALID_PARAMETER) + dts_pass(TC_NAME, "retcode has invalid parameter"); + else + dts_fail(TC_NAME, "retcode does not have invalid parameter"); +} + +void utc_download_get_http_header_field_negative3(void) +{ + const char *TC_NAME = __FUNCTION__; + int retcode = 0; + char *field = "field"; + char *input = "input"; + char *output = NULL; + int id = 0; + + download_create(&id); + download_add_http_header_field(id, field, input); + retcode = download_get_http_header_field(-1, field, &output); + download_destroy(id); + + if (retcode == DOWNLOAD_ERROR_INVALID_PARAMETER) + dts_pass(TC_NAME, "retcode has invalid parameter"); + else + dts_fail(TC_NAME, "retcode does not have invalid parameter"); +} + diff --git a/TC/testcase/utc_download_get_http_header_field_positive.c b/TC/testcase/utc_download_get_http_header_field_positive.c new file mode 100644 index 0000000..1b46816 --- /dev/null +++ b/TC/testcase/utc_download_get_http_header_field_positive.c @@ -0,0 +1,62 @@ +/* + * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved + * + * Licensed under the Apache License, Version 2.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include <tet_api.h> +#include <download.h> + +static void startup(void); +static void cleanup(void); + +void (*tet_startup)(void) = startup; +void (*tet_cleanup)(void) = cleanup; + +static void utc_download_get_http_header_field_positive1(void); + +struct tet_testlist tet_testlist[] = { + {utc_download_get_http_header_field_positive1, 1}, + {NULL, 0}, +}; + +static void startup(void) +{ + +} + +static void cleanup(void) +{ + /* end of TC */ +} + +void utc_download_get_http_header_field_positive1(void) +{ + const char *TC_NAME = __FUNCTION__; + int retcode = 0; + char *field = "field"; + char *input = "input"; + char *output = NULL; + int id = 0; + + download_create(&id); + download_add_http_header_field(id, field, input); + retcode = download_get_http_header_field(id, field, &output); + download_destroy(id); + + if (retcode == DOWNLOAD_ERROR_NONE && !strcmp(input, output)) + dts_pass(TC_NAME, "retcode has no error and the http header of set API is same to http header of get API "); + else + dts_fail(TC_NAME, "retcode has error or the http header of set API is not same to http header of get API"); +} + diff --git a/TC/testcase/utc_download_get_http_status_negative.c b/TC/testcase/utc_download_get_http_status_negative.c new file mode 100644 index 0000000..4ebb88e --- /dev/null +++ b/TC/testcase/utc_download_get_http_status_negative.c @@ -0,0 +1,89 @@ +/* + * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved + * + * Licensed under the Apache License, Version 2.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include <tet_api.h> +#include <download.h> + +static void startup(void); +static void cleanup(void); + +void (*tet_startup)(void) = startup; +void (*tet_cleanup)(void) = cleanup; + +static void utc_download_get_http_status_negative1(void); +static void utc_download_get_http_status_negative2(void); +static void utc_download_get_http_status_negative3(void); + +struct tet_testlist tet_testlist[] = { + {utc_download_get_http_status_negative1, 1}, + {utc_download_get_http_status_negative2, 2}, + {utc_download_get_http_status_negative3, 3}, + {NULL, 0}, +}; + +static void startup(void) +{ + +} + +static void cleanup(void) +{ + /* end of TC */ +} + +void utc_download_get_http_status_negative1(void) +{ + const char *TC_NAME = __FUNCTION__; + int retcode = 0; + int status = 0; + + retcode = download_get_http_status(-1, &status); + + if (retcode == DOWNLOAD_ERROR_INVALID_PARAMETER) + dts_pass(TC_NAME, "retcode has invalid parameter"); + else + dts_fail(TC_NAME, "retcode does not have invalid parameter"); +} + +void utc_download_get_http_status_negative2(void) +{ + const char *TC_NAME = __FUNCTION__; + int retcode = 0; + int id = 0; + + download_create(&id); + retcode = download_get_http_status(id, NULL); + download_destroy(id); + + if (retcode == DOWNLOAD_ERROR_INVALID_PARAMETER) + dts_pass(TC_NAME, "retcode has invalid parameter"); + else + dts_fail(TC_NAME, "retcode does not have invalid parameter"); +} + +void utc_download_get_http_status_negative3(void) +{ + const char *TC_NAME = __FUNCTION__; + int retcode = 0; + + retcode = download_get_http_status(-1, NULL); + + if (retcode == DOWNLOAD_ERROR_INVALID_PARAMETER) + dts_pass(TC_NAME, "retcode has invalid parameter"); + else + dts_fail(TC_NAME, "retcode does not have invalid parameter"); +} + diff --git a/TC/testcase/utc_download_get_http_status_positive.c b/TC/testcase/utc_download_get_http_status_positive.c new file mode 100644 index 0000000..cccde62 --- /dev/null +++ b/TC/testcase/utc_download_get_http_status_positive.c @@ -0,0 +1,107 @@ +/* + * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved + * + * Licensed under the Apache License, Version 2.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include <tet_api.h> +#include <download.h> +#include <glib.h> +#include <glib-object.h> + + +static void startup(void); +static void cleanup(void); + +void (*tet_startup)(void) = startup; +void (*tet_cleanup)(void) = cleanup; + +static void utc_download_get_http_status_positive1(void); + +struct tet_testlist tet_testlist[] = { + {utc_download_get_http_status_positive1, 1}, + {NULL, 0}, +}; + +static GMainLoop* gloop = NULL; +#define TEST_URL "http://static.campaign.naver.com/0/hangeul/2011/img/img_family.gif" + +static void state_cb (int download_id, download_state_e state, void *user_data) +{ + const char *TC_NAME = __FUNCTION__; + int retcode = 0; + download_error_e err = DOWNLOAD_ERROR_NONE; + if (state == DOWNLOAD_STATE_DOWNLOADING) + g_main_loop_quit(gloop); + + retcode = download_get_error(download_id, &err); + if (retcode != DOWNLOAD_ERROR_NONE) { + dts_fail(TC_NAME, "Fail to get error"); + g_main_loop_quit(gloop); + return; + } + dts_message(TC_NAME, "err[%d]", err); + if (err == DOWNLOAD_ERROR_INVALID_URL) + dts_message(TC_NAME, "invaild url err"); + else + dts_message(TC_NAME, "another error[%d]", err); +} + +static void startup(void) +{ + g_type_init(); + gloop = g_main_loop_new (NULL, 0); +} + +static void cleanup(void) +{ + g_main_loop_unref(gloop); + gloop = NULL; +} + +void utc_download_get_http_status_positive1(void) +{ + const char *TC_NAME = __FUNCTION__; + int retcode = 0; + int status = 0; + int id = 0; + + retcode = download_create(&id); + if (retcode != DOWNLOAD_ERROR_NONE) { + dts_fail(TC_NAME,"Fail to create download handle"); + return; + } + retcode = download_set_url(id, TEST_URL); + if ( retcode != DOWNLOAD_ERROR_NONE ) { + dts_fail(TC_NAME,"Fail to set url"); + return; + } + retcode = download_set_state_changed_cb(id, state_cb, NULL); + if (retcode != DOWNLOAD_ERROR_NONE) + dts_fail(TC_NAME, "Fail to set callback"); + + retcode = download_start(id); + if (retcode == DOWNLOAD_ERROR_NONE) + g_main_loop_run(gloop); + + retcode = download_get_http_status(id, &status); + + download_unset_state_changed_cb(id); + download_destroy(id); + + if (retcode == DOWNLOAD_ERROR_NONE) + dts_pass(TC_NAME, "retcode has no error"); + else + dts_fail(TC_NAME, "retcode has error"); +} + diff --git a/TC/testcase/utc_download_get_mime_type_negative.c b/TC/testcase/utc_download_get_mime_type_negative.c new file mode 100644 index 0000000..77e3059 --- /dev/null +++ b/TC/testcase/utc_download_get_mime_type_negative.c @@ -0,0 +1,89 @@ +/*
+ * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * Licensed under the Apache License, Version 2.0 (the License);
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an AS IS BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include <tet_api.h>
+#include <download.h>
+
+static void startup(void);
+static void cleanup(void);
+
+void (*tet_startup)(void) = startup;
+void (*tet_cleanup)(void) = cleanup;
+
+static void utc_download_get_mime_type_negative1(void);
+static void utc_download_get_mime_type_negative2(void);
+static void utc_download_get_mime_type_negative3(void);
+
+struct tet_testlist tet_testlist[] = {
+ {utc_download_get_mime_type_negative1, 1},
+ {utc_download_get_mime_type_negative2, 2},
+ {utc_download_get_mime_type_negative3, 3},
+ {NULL, 0},
+};
+
+static void startup(void)
+{
+
+}
+
+static void cleanup(void)
+{
+ /* end of TC */
+}
+
+void utc_download_get_mime_type_negative1(void)
+{
+ const char *TC_NAME = __FUNCTION__;
+ int retcode = 0;
+ char *output = NULL;
+
+ retcode = download_get_mime_type(-1, &output);
+
+ if (retcode == DOWNLOAD_ERROR_INVALID_PARAMETER)
+ dts_pass(TC_NAME, "retcode has invalid parameter");
+ else
+ dts_fail(TC_NAME, "retcode does not have invalid parameter");
+}
+
+void utc_download_get_mime_type_negative2(void)
+{
+ const char *TC_NAME = __FUNCTION__;
+ int retcode = 0;
+ int id = 0;
+
+ download_create(&id);
+ retcode = download_get_mime_type(id, NULL);
+ download_destroy(id);
+
+ if (retcode == DOWNLOAD_ERROR_INVALID_PARAMETER)
+ dts_pass(TC_NAME, "retcode has invalid parameter");
+ else
+ dts_fail(TC_NAME, "retcode does not have invalid parameter");
+}
+
+void utc_download_get_mime_type_negative3(void)
+{
+ const char *TC_NAME = __FUNCTION__;
+ int retcode = 0;
+
+ retcode = download_get_mime_type(-1, NULL);
+
+ if (retcode == DOWNLOAD_ERROR_INVALID_PARAMETER)
+ dts_pass(TC_NAME, "retcode has invalid parameter");
+ else
+ dts_fail(TC_NAME, "retcode does not have invalid parameter");
+}
+
diff --git a/TC/testcase/utc_download_get_mime_type_positive.c b/TC/testcase/utc_download_get_mime_type_positive.c new file mode 100644 index 0000000..5cebbfc --- /dev/null +++ b/TC/testcase/utc_download_get_mime_type_positive.c @@ -0,0 +1,110 @@ +/*
+ * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * Licensed under the Apache License, Version 2.0 (the License);
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an AS IS BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include <tet_api.h>
+#include <download.h>
+#include <glib.h>
+#include <glib-object.h>
+
+
+static void startup(void);
+static void cleanup(void);
+
+void (*tet_startup)(void) = startup;
+void (*tet_cleanup)(void) = cleanup;
+
+static void utc_download_get_mime_type_positive1(void);
+
+struct tet_testlist tet_testlist[] = {
+ {utc_download_get_mime_type_positive1, 1},
+ {NULL, 0},
+};
+
+static GMainLoop* gloop = NULL;
+#define TEST_URL "http://static.campaign.naver.com/0/hangeul/2011/img/img_family.gif"
+
+static void state_cb (int download_id, download_state_e state, void *user_data)
+{
+ const char *TC_NAME = __FUNCTION__;
+ int retcode = 0;
+ download_error_e err = DOWNLOAD_ERROR_NONE;
+ if (state == DOWNLOAD_STATE_DOWNLOADING)
+ g_main_loop_quit(gloop);
+
+ retcode = download_get_error(download_id, &err);
+ if (retcode != DOWNLOAD_ERROR_NONE) {
+ dts_fail(TC_NAME, "Fail to get error");
+ g_main_loop_quit(gloop);
+ return;
+ }
+ dts_message(TC_NAME, "err[%d]", err);
+ if (err == DOWNLOAD_ERROR_INVALID_URL)
+ dts_message(TC_NAME, "invaild url err");
+ else
+ dts_message(TC_NAME, "another error[%d]", err);
+}
+
+
+static void startup(void)
+{
+ g_type_init();
+ gloop = g_main_loop_new (NULL, 0);
+}
+
+static void cleanup(void)
+{
+ g_main_loop_unref(gloop);
+ gloop = NULL;
+}
+
+void utc_download_get_mime_type_positive1(void)
+{
+ const char *TC_NAME = __FUNCTION__;
+ int retcode = 0;
+ char *output = NULL;
+ int id = 0;
+
+ retcode = download_create(&id);
+ if (retcode != DOWNLOAD_ERROR_NONE) {
+ dts_fail(TC_NAME,"Fail to create download handle");
+ return;
+ }
+ retcode = download_set_url(id, TEST_URL);
+ if ( retcode != DOWNLOAD_ERROR_NONE ) {
+ dts_fail(TC_NAME,"Fail to set url");
+ return;
+ }
+ retcode = download_set_state_changed_cb(id, state_cb, NULL);
+ if (retcode != DOWNLOAD_ERROR_NONE)
+ dts_fail(TC_NAME, "Fail to set callback");
+
+ retcode = download_start(id);
+ if (retcode == DOWNLOAD_ERROR_NONE)
+ g_main_loop_run(gloop);
+
+ retcode = download_get_mime_type(id, &output);
+ if ( retcode != DOWNLOAD_ERROR_NONE )
+ dts_message(TC_NAME,"Fail to get content name");
+
+ download_unset_state_changed_cb(id);
+ download_destroy(id);
+
+ if (retcode == DOWNLOAD_ERROR_NONE)
+ dts_pass(TC_NAME, "retcode has no error");
+ else
+ dts_fail(TC_NAME, "retcode has error");
+}
+
diff --git a/TC/testcase/utc_download_get_network_bonding_negative.c b/TC/testcase/utc_download_get_network_bonding_negative.c new file mode 100644 index 0000000..90c0802 --- /dev/null +++ b/TC/testcase/utc_download_get_network_bonding_negative.c @@ -0,0 +1,89 @@ +/*
+ * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * Licensed under the Apache License, Version 2.0 (the License);
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an AS IS BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include <tet_api.h>
+#include <download.h>
+
+static void startup(void);
+static void cleanup(void);
+
+void (*tet_startup)(void) = startup;
+void (*tet_cleanup)(void) = cleanup;
+
+static void utc_download_get_network_bonding_negative1(void);
+static void utc_download_get_network_bonding_negative2(void);
+static void utc_download_get_network_bonding_negative3(void);
+
+struct tet_testlist tet_testlist[] = {
+ {utc_download_get_network_bonding_negative1, 1},
+ {utc_download_get_network_bonding_negative2, 2},
+ {utc_download_get_network_bonding_negative3, 3},
+ {NULL, 0},
+};
+
+static void startup(void)
+{
+
+}
+
+static void cleanup(void)
+{
+ /* end of TC */
+}
+
+void utc_download_get_network_bonding_negative1(void)
+{
+ const char *TC_NAME = __FUNCTION__;
+ int retcode = 0;
+ bool get_enable = false;
+
+ retcode = download_get_network_bonding(-1, &get_enable);
+
+ if (retcode == DOWNLOAD_ERROR_INVALID_PARAMETER)
+ dts_pass(TC_NAME, "retcode has invalid parameter");
+ else
+ dts_fail(TC_NAME, "retcode does not have invalid parameter");
+}
+
+void utc_download_get_network_bonding_negative2(void)
+{
+ const char *TC_NAME = __FUNCTION__;
+ int retcode = 0;
+ int id = 0;
+
+ download_create(&id);
+ retcode = download_get_network_bonding(id, NULL);
+ download_destroy(id);
+
+ if (retcode == DOWNLOAD_ERROR_INVALID_PARAMETER)
+ dts_pass(TC_NAME, "retcode has invalid parameter");
+ else
+ dts_fail(TC_NAME, "retcode does not have invalid parameter");
+}
+
+void utc_download_get_network_bonding_negative3(void)
+{
+ const char *TC_NAME = __FUNCTION__;
+ int retcode = 0;
+
+ retcode = download_get_network_bonding(-1, NULL);
+
+ if (retcode == DOWNLOAD_ERROR_INVALID_PARAMETER)
+ dts_pass(TC_NAME, "retcode has invalid parameter");
+ else
+ dts_fail(TC_NAME, "retcode does not have invalid parameter");
+}
+
diff --git a/TC/testcase/utc_download_get_network_bonding_positive.c b/TC/testcase/utc_download_get_network_bonding_positive.c new file mode 100644 index 0000000..3084072 --- /dev/null +++ b/TC/testcase/utc_download_get_network_bonding_positive.c @@ -0,0 +1,61 @@ +/*
+ * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * Licensed under the Apache License, Version 2.0 (the License);
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an AS IS BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include <tet_api.h>
+#include <download.h>
+
+static void startup(void);
+static void cleanup(void);
+
+void (*tet_startup)(void) = startup;
+void (*tet_cleanup)(void) = cleanup;
+
+static void utc_download_get_network_bonding_positive1(void);
+
+struct tet_testlist tet_testlist[] = {
+ {utc_download_get_network_bonding_positive1, 1},
+ {NULL, 0},
+};
+
+static void startup(void)
+{
+
+}
+
+static void cleanup(void)
+{
+ /* end of TC */
+}
+
+void utc_download_get_network_bonding_positive1(void)
+{
+ const char *TC_NAME = __FUNCTION__;
+ int retcode = 0;
+ bool enable = true;
+ bool getenable = false;
+ int id = 0;
+
+ download_create(&id);
+ download_set_network_bonding(id, enable);
+ retcode = download_get_network_bonding(id, &getenable);
+ download_destroy(id);
+
+ if (retcode == DOWNLOAD_ERROR_NONE && (enable == getenable))
+ dts_pass(TC_NAME, "retcode has no error and the network bonding status of set API is same as of get API ");
+ else
+ dts_fail(TC_NAME, "retcode has error or the network bonding status of set API is not same as of get API");
+}
+
diff --git a/TC/testcase/utc_download_get_network_type_negative.c b/TC/testcase/utc_download_get_network_type_negative.c new file mode 100644 index 0000000..97874dc --- /dev/null +++ b/TC/testcase/utc_download_get_network_type_negative.c @@ -0,0 +1,74 @@ +/* + * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved + * + * Licensed under the Apache License, Version 2.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include <tet_api.h> +#include <download.h> + +static void startup(void); +static void cleanup(void); + +void (*tet_startup)(void) = startup; +void (*tet_cleanup)(void) = cleanup; + +static void utc_download_get_network_type_negative1(void); +static void utc_download_get_network_type_negative2(void); + +struct tet_testlist tet_testlist[] = { + {utc_download_get_network_type_negative1, 1}, + {utc_download_get_network_type_negative2, 2}, + {NULL, 0}, +}; + +static void startup(void) +{ + +} + +static void cleanup(void) +{ + /* end of TC */ +} + +void utc_download_get_network_type_negative1(void) +{ + const char *TC_NAME = __FUNCTION__; + int retcode = 0; + download_network_type_e type = DOWNLOAD_NETWORK_DATA_NETWORK; + + retcode = download_get_network_type(-1, &type); + + if (retcode == DOWNLOAD_ERROR_INVALID_PARAMETER) + dts_pass(TC_NAME, "retcode has invalid parameter"); + else + dts_fail(TC_NAME, "retcode does not have invalid parameter"); +} + +void utc_download_get_network_type_negative2(void) +{ + const char *TC_NAME = __FUNCTION__; + int retcode = 0; + int id = 0; + + download_create(&id); + retcode = download_get_network_type(id, NULL); + download_destroy(id); + + if (retcode != DOWNLOAD_ERROR_NONE) + dts_pass(TC_NAME, "retcode has error"); + else + dts_fail(TC_NAME, "retcode does not have error"); +} + diff --git a/TC/testcase/utc_download_get_network_type_positive.c b/TC/testcase/utc_download_get_network_type_positive.c new file mode 100644 index 0000000..517233d --- /dev/null +++ b/TC/testcase/utc_download_get_network_type_positive.c @@ -0,0 +1,60 @@ +/* + * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved + * + * Licensed under the Apache License, Version 2.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include <tet_api.h> +#include <download.h> + +static void startup(void); +static void cleanup(void); + +void (*tet_startup)(void) = startup; +void (*tet_cleanup)(void) = cleanup; + +static void utc_download_get_network_type_positive1(void); + +struct tet_testlist tet_testlist[] = { + {utc_download_get_network_type_positive1, 1}, + {NULL, 0}, +}; + +static void startup(void) +{ + +} + +static void cleanup(void) +{ + /* end of TC */ +} + +void utc_download_get_network_type_positive1(void) +{ + const char *TC_NAME = __FUNCTION__; + int retcode = 0; + download_network_type_e output; + int id = 0; + + download_create(&id); + download_set_network_type(id, DOWNLOAD_NETWORK_DATA_NETWORK); + retcode = download_get_network_type(id, &output); + download_destroy(id); + + if (retcode == DOWNLOAD_ERROR_NONE && (output == DOWNLOAD_NETWORK_DATA_NETWORK)) + dts_pass(TC_NAME, "retcode has no error and the type of set API is same to type of get API "); + else + dts_fail(TC_NAME, "retcode has error or the type of set API is not same to type of get API"); +} + diff --git a/TC/testcase/utc_download_get_notification_bundle_negative.c b/TC/testcase/utc_download_get_notification_bundle_negative.c new file mode 100644 index 0000000..0524418 --- /dev/null +++ b/TC/testcase/utc_download_get_notification_bundle_negative.c @@ -0,0 +1,92 @@ +/* + * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved + * + * Licensed under the Apache License, Version 2.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include <tet_api.h> +#include <download.h> + +static void startup(void); +static void cleanup(void); + +void (*tet_startup)(void) = startup; +void (*tet_cleanup)(void) = cleanup; + +static void utc_download_get_notification_bundle_negative1(void); +static void utc_download_get_notification_bundle_negative2(void); +static void utc_download_get_notification_bundle_negative3(void); + +struct tet_testlist tet_testlist[] = { + {utc_download_get_notification_bundle_negative1, 1}, + {utc_download_get_notification_bundle_negative2, 2}, + {utc_download_get_notification_bundle_negative3, 3}, + {NULL, 0}, +}; + +static void startup(void) +{ + +} + +static void cleanup(void) +{ + /* end of TC */ +} + +void utc_download_get_notification_bundle_negative1(void) +{ + const char *TC_NAME = __FUNCTION__; + int retcode = 0; + bundle *b = NULL; + + retcode = download_get_notification_bundle(-1, DOWNLOAD_NOTIFICATION_BUNDLE_TYPE_ONGOING, &b); + + if (retcode == DOWNLOAD_ERROR_INVALID_PARAMETER) + dts_pass(TC_NAME, "retcode has invalid parameter"); + else + dts_fail(TC_NAME, "retcode does not have invalid parameter"); +} + +void utc_download_get_notification_bundle_negative2(void) +{ + const char *TC_NAME = __FUNCTION__; + int retcode = 0; + int id = 0; + + download_create(&id); + retcode = download_get_notification_bundle(id, DOWNLOAD_NOTIFICATION_BUNDLE_TYPE_ONGOING, NULL); + download_destroy(id); + + if (retcode == DOWNLOAD_ERROR_INVALID_PARAMETER) + dts_pass(TC_NAME, "retcode has invalid parameter"); + else + dts_fail(TC_NAME, "retcode does not have invalid parameter"); +} + +void utc_download_get_notification_bundle_negative3(void) +{ + const char *TC_NAME = __FUNCTION__; + int retcode = 0; + int id = 0; + bundle *b = NULL; + + download_create(&id); + retcode = download_get_notification_bundle(id, 4, &b); + + if (retcode != DOWNLOAD_ERROR_NONE) + dts_pass(TC_NAME, "retcode has error"); + else + dts_fail(TC_NAME, "retcode does not have error"); +} + diff --git a/TC/testcase/utc_download_get_notification_bundle_positive.c b/TC/testcase/utc_download_get_notification_bundle_positive.c new file mode 100644 index 0000000..e1b73df --- /dev/null +++ b/TC/testcase/utc_download_get_notification_bundle_positive.c @@ -0,0 +1,67 @@ +/* + * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved + * + * Licensed under the Apache License, Version 2.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include <tet_api.h> +#include <download.h> +#include <bundle_internal.h> + +static void startup(void); +static void cleanup(void); + +void (*tet_startup)(void) = startup; +void (*tet_cleanup)(void) = cleanup; + +static void utc_download_get_notification_bundle_positive1(void); + +struct tet_testlist tet_testlist[] = { + {utc_download_get_notification_bundle_positive1, 1}, + {NULL, 0}, +}; + +static void startup(void) +{ + +} + +static void cleanup(void) +{ + /* end of TC */ +} + +void utc_download_get_notification_bundle_positive1(void) +{ + const char *TC_NAME = __FUNCTION__; + int retcode = 0; + char *input = "ongoing"; + char *output = NULL; + int id = 0; + bundle *b = bundle_create(); + bundle *b_db = NULL; + bundle_add(b, "key", input); + + download_create(&id); + download_set_notification_bundle(id, DOWNLOAD_NOTIFICATION_BUNDLE_TYPE_ONGOING, b); + retcode = download_get_notification_bundle(id, DOWNLOAD_NOTIFICATION_BUNDLE_TYPE_ONGOING, &b_db); + output = bundle_get_val(b_db, "key"); + download_destroy(id); + if (retcode == DOWNLOAD_ERROR_NONE && !strcmp(input, output)) + dts_pass(TC_NAME, "retcode has no error and the bundle of set API is same to bundle of get API "); + else + dts_fail(TC_NAME, "retcode has error or the bundle of set API is not same to bundle of get API"); + bundle_free(b); + bundle_free(b_db); +} + diff --git a/TC/testcase/utc_download_get_notification_description_negative.c b/TC/testcase/utc_download_get_notification_description_negative.c new file mode 100644 index 0000000..c4f566a --- /dev/null +++ b/TC/testcase/utc_download_get_notification_description_negative.c @@ -0,0 +1,89 @@ +/* + * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved + * + * Licensed under the Apache License, Version 2.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include <tet_api.h> +#include <download.h> + +static void startup(void); +static void cleanup(void); + +void (*tet_startup)(void) = startup; +void (*tet_cleanup)(void) = cleanup; + +static void utc_download_get_notification_description_negative1(void); +static void utc_download_get_notification_description_negative2(void); +static void utc_download_get_notification_description_negative3(void); + +struct tet_testlist tet_testlist[] = { + {utc_download_get_notification_description_negative1, 1}, + {utc_download_get_notification_description_negative2, 2}, + {utc_download_get_notification_description_negative3, 3}, + {NULL, 0}, +}; + +static void startup(void) +{ + +} + +static void cleanup(void) +{ + /* end of TC */ +} + +void utc_download_get_notification_description_negative1(void) +{ + const char *TC_NAME = __FUNCTION__; + int retcode = 0; + char *output = NULL; + + retcode = download_get_notification_description(-1, &output); + + if (retcode == DOWNLOAD_ERROR_INVALID_PARAMETER) + dts_pass(TC_NAME, "retcode has invalid parameter"); + else + dts_fail(TC_NAME, "retcode does not have invalid parameter"); +} + +void utc_download_get_notification_description_negative2(void) +{ + const char *TC_NAME = __FUNCTION__; + int retcode = 0; + int id = 0; + + download_create(&id); + retcode = download_get_notification_description(id, NULL); + download_destroy(id); + + if (retcode == DOWNLOAD_ERROR_INVALID_PARAMETER) + dts_pass(TC_NAME, "retcode has invalid parameter"); + else + dts_fail(TC_NAME, "retcode does not have invalid parameter"); +} + +void utc_download_get_notification_description_negative3(void) +{ + const char *TC_NAME = __FUNCTION__; + int retcode = 0; + + retcode = download_get_notification_description(-1, NULL); + + if (retcode == DOWNLOAD_ERROR_INVALID_PARAMETER) + dts_pass(TC_NAME, "retcode has invalid parameter"); + else + dts_fail(TC_NAME, "retcode does not have invalid parameter"); +} + diff --git a/TC/testcase/utc_download_get_notification_description_positive.c b/TC/testcase/utc_download_get_notification_description_positive.c new file mode 100644 index 0000000..c1f34ba --- /dev/null +++ b/TC/testcase/utc_download_get_notification_description_positive.c @@ -0,0 +1,61 @@ +/* + * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved + * + * Licensed under the Apache License, Version 2.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include <tet_api.h> +#include <download.h> + +static void startup(void); +static void cleanup(void); + +void (*tet_startup)(void) = startup; +void (*tet_cleanup)(void) = cleanup; + +static void utc_download_get_notification_description_positive1(void); + +struct tet_testlist tet_testlist[] = { + {utc_download_get_notification_description_positive1, 1}, + {NULL, 0}, +}; + +static void startup(void) +{ + +} + +static void cleanup(void) +{ + /* end of TC */ +} + +void utc_download_get_notification_description_positive1(void) +{ + const char *TC_NAME = __FUNCTION__; + int retcode = 0; + char *input = "description"; + char *output = NULL; + int id = 0; + + download_create(&id); + download_set_notification_description(id, input); + retcode = download_get_notification_description(id, &output); + download_destroy(id); + + if (retcode == DOWNLOAD_ERROR_NONE && !strcmp(input, output)) + dts_pass(TC_NAME, "retcode has no error and the description of set API is same to description of get API "); + else + dts_fail(TC_NAME, "retcode has error or the description of set API is not same to description of get API"); +} + diff --git a/TC/testcase/utc_download_get_notification_title_negative.c b/TC/testcase/utc_download_get_notification_title_negative.c new file mode 100644 index 0000000..e5c7a41 --- /dev/null +++ b/TC/testcase/utc_download_get_notification_title_negative.c @@ -0,0 +1,89 @@ +/* + * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved + * + * Licensed under the Apache License, Version 2.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include <tet_api.h> +#include <download.h> + +static void startup(void); +static void cleanup(void); + +void (*tet_startup)(void) = startup; +void (*tet_cleanup)(void) = cleanup; + +static void utc_download_get_notification_title_negative1(void); +static void utc_download_get_notification_title_negative2(void); +static void utc_download_get_notification_title_negative3(void); + +struct tet_testlist tet_testlist[] = { + {utc_download_get_notification_title_negative1, 1}, + {utc_download_get_notification_title_negative2, 2}, + {utc_download_get_notification_title_negative3, 3}, + {NULL, 0}, +}; + +static void startup(void) +{ + +} + +static void cleanup(void) +{ + /* end of TC */ +} + +void utc_download_get_notification_title_negative1(void) +{ + const char *TC_NAME = __FUNCTION__; + int retcode = 0; + char *output = NULL; + + retcode = download_get_notification_title(-1, &output); + + if (retcode == DOWNLOAD_ERROR_INVALID_PARAMETER) + dts_pass(TC_NAME, "retcode has invalid parameter"); + else + dts_fail(TC_NAME, "retcode does not have invalid parameter"); +} + +void utc_download_get_notification_title_negative2(void) +{ + const char *TC_NAME = __FUNCTION__; + int retcode = 0; + int id = 0; + + download_create(&id); + retcode = download_get_notification_title(id, NULL); + download_destroy(id); + + if (retcode == DOWNLOAD_ERROR_INVALID_PARAMETER) + dts_pass(TC_NAME, "retcode has invalid parameter"); + else + dts_fail(TC_NAME, "retcode does not have invalid parameter"); +} + +void utc_download_get_notification_title_negative3(void) +{ + const char *TC_NAME = __FUNCTION__; + int retcode = 0; + + retcode = download_get_notification_title(-1, NULL); + + if (retcode == DOWNLOAD_ERROR_INVALID_PARAMETER) + dts_pass(TC_NAME, "retcode has invalid parameter"); + else + dts_fail(TC_NAME, "retcode does not have invalid parameter"); +} + diff --git a/TC/testcase/utc_download_get_notification_title_positive.c b/TC/testcase/utc_download_get_notification_title_positive.c new file mode 100644 index 0000000..8dd15ce --- /dev/null +++ b/TC/testcase/utc_download_get_notification_title_positive.c @@ -0,0 +1,61 @@ +/* + * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved + * + * Licensed under the Apache License, Version 2.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include <tet_api.h> +#include <download.h> + +static void startup(void); +static void cleanup(void); + +void (*tet_startup)(void) = startup; +void (*tet_cleanup)(void) = cleanup; + +static void utc_download_get_notification_title_positive1(void); + +struct tet_testlist tet_testlist[] = { + {utc_download_get_notification_title_positive1, 1}, + {NULL, 0}, +}; + +static void startup(void) +{ + +} + +static void cleanup(void) +{ + /* end of TC */ +} + +void utc_download_get_notification_title_positive1(void) +{ + const char *TC_NAME = __FUNCTION__; + int retcode = 0; + char *input = "title"; + char *output = NULL; + int id = 0; + + download_create(&id); + download_set_notification_title(id, input); + retcode = download_get_notification_title(id, &output); + download_destroy(id); + + if (retcode == DOWNLOAD_ERROR_NONE && !strcmp(input, output)) + dts_pass(TC_NAME, "retcode has no error and the title of set API is same to title of get API "); + else + dts_fail(TC_NAME, "retcode has error or the title of set API is not same to title of get API"); +} + diff --git a/TC/testcase/utc_download_get_notification_type_negative.c b/TC/testcase/utc_download_get_notification_type_negative.c new file mode 100644 index 0000000..470fc0e --- /dev/null +++ b/TC/testcase/utc_download_get_notification_type_negative.c @@ -0,0 +1,73 @@ +/* + * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved + * + * Licensed under the Apache License, Version 2.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include <tet_api.h> +#include <download.h> + +static void startup(void); +static void cleanup(void); + +void (*tet_startup)(void) = startup; +void (*tet_cleanup)(void) = cleanup; + +static void utc_download_get_notification_type_negative1(void); +static void utc_download_get_notification_type_negative2(void); + +struct tet_testlist tet_testlist[] = { + {utc_download_get_notification_type_negative1, 1}, + {utc_download_get_notification_type_negative2, 2}, + {NULL, 0}, +}; + +static void startup(void) +{ + +} + +static void cleanup(void) +{ + /* end of TC */ +} + +void utc_download_get_notification_type_negative1(void) +{ + const char *TC_NAME = __FUNCTION__; + int retcode = 0; + download_notification_type_e *type = NULL; + + retcode = download_get_notification_type(-1, &type); + + if (retcode == DOWNLOAD_ERROR_INVALID_PARAMETER) + dts_pass(TC_NAME, "retcode has invalid parameter"); + else + dts_fail(TC_NAME, "retcode does not have invalid parameter"); +} + +void utc_download_get_notification_type_negative2(void) +{ + const char *TC_NAME = __FUNCTION__; + int retcode = 0; + int id = 0; + + download_create(&id); + retcode = download_get_notification_type(id, NULL); + download_destroy(id); + + if (retcode != DOWNLOAD_ERROR_NONE) + dts_pass(TC_NAME, "retcode has error"); + else + dts_fail(TC_NAME, "retcode does not have error"); +} diff --git a/TC/testcase/utc_download_get_notification_type_positive.c b/TC/testcase/utc_download_get_notification_type_positive.c new file mode 100644 index 0000000..8522edf --- /dev/null +++ b/TC/testcase/utc_download_get_notification_type_positive.c @@ -0,0 +1,60 @@ +/* + * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved + * + * Licensed under the Apache License, Version 2.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include <tet_api.h> +#include <download.h> + +static void startup(void); +static void cleanup(void); + +void (*tet_startup)(void) = startup; +void (*tet_cleanup)(void) = cleanup; + +static void utc_download_get_notification_type_positive1(void); + +struct tet_testlist tet_testlist[] = { + {utc_download_get_notification_type_positive1, 1}, + {NULL, 0}, +}; + +static void startup(void) +{ + +} + +static void cleanup(void) +{ + /* end of TC */ +} + +void utc_download_get_notification_type_positive1(void) +{ + const char *TC_NAME = __FUNCTION__; + int retcode = 0; + download_notification_type_e output; + int id = 0; + + download_create(&id); + download_set_notification_type(id, DOWNLOAD_NOTIFICATION_TYPE_NONE); + retcode = download_get_notification_type(id, &output); + download_destroy(id); + + if (retcode == DOWNLOAD_ERROR_NONE && (output == DOWNLOAD_NOTIFICATION_TYPE_NONE)) + dts_pass(TC_NAME, "retcode has no error and the type of set API is same to type of get API "); + else + dts_fail(TC_NAME, "retcode has error or the type of set API is not same to type of get API"); +} + diff --git a/TC/testcase/utc_download_get_state_negative.c b/TC/testcase/utc_download_get_state_negative.c new file mode 100644 index 0000000..dfbc8f7 --- /dev/null +++ b/TC/testcase/utc_download_get_state_negative.c @@ -0,0 +1,74 @@ +/* + * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved + * + * Licensed under the Apache License, Version 2.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include <tet_api.h> +#include <download.h> + +static void startup(void); +static void cleanup(void); + +void (*tet_startup)(void) = startup; +void (*tet_cleanup)(void) = cleanup; + +static void utc_download_get_state_negative1(void); +static void utc_download_get_state_negative2(void); + +struct tet_testlist tet_testlist[] = { + {utc_download_get_state_negative1, 1}, + {utc_download_get_state_negative2, 2}, + {NULL, 0}, +}; + +static void startup(void) +{ + +} + +static void cleanup(void) +{ + /* end of TC */ +} + +static void utc_download_get_state_negative1(void) +{ + const char *TC_NAME = __FUNCTION__; + int retcode = 0; + download_state_e state = 0; + + retcode = download_get_state(-1, &state); + + if (retcode == DOWNLOAD_ERROR_INVALID_PARAMETER) + dts_pass(TC_NAME, "retcode has invalid parameter"); + else + dts_fail(TC_NAME, "retcode does not have invalid parameter"); +} + +static void utc_download_get_state_negative2(void) +{ + const char *TC_NAME = __FUNCTION__; + int retcode = 0; + int id = 0; + + download_create(&id); + retcode = download_get_state(id, NULL); + download_destroy(id); + + if (retcode == DOWNLOAD_ERROR_INVALID_PARAMETER) + dts_pass(TC_NAME, "retcode has invalid parameter"); + else + dts_fail(TC_NAME, "retcode does not have invalid parameter"); +} + diff --git a/TC/testcase/utc_download_get_state_positive.c b/TC/testcase/utc_download_get_state_positive.c new file mode 100644 index 0000000..d6351d3 --- /dev/null +++ b/TC/testcase/utc_download_get_state_positive.c @@ -0,0 +1,59 @@ +/* + * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved + * + * Licensed under the Apache License, Version 2.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include <tet_api.h> +#include <download.h> + +static void startup(void); +static void cleanup(void); + +void (*tet_startup)(void) = startup; +void (*tet_cleanup)(void) = cleanup; + +static void utc_download_get_state_positive1(void); + +struct tet_testlist tet_testlist[] = { + {utc_download_get_state_positive1, 1}, + {NULL, 0}, +}; + +static void startup(void) +{ + +} + +static void cleanup(void) +{ + /* end of TC */ +} + +static void utc_download_get_state_positive1(void) +{ + const char *TC_NAME = __FUNCTION__; + int retcode = 0; + int id = 0; + download_state_e state = 0; + + download_create(&id); + retcode = download_get_state(id, &state); + download_destroy(id); + + if (retcode == DOWNLOAD_ERROR_NONE && state == DOWNLOAD_STATE_READY) + dts_pass(TC_NAME, "retcode has no error and the url of set API is same to url of get API"); + else + dts_fail(TC_NAME, "retcode has error or the url of set API is not same to url of get API"); +} + diff --git a/TC/testcase/utc_download_get_temp_path_negative.c b/TC/testcase/utc_download_get_temp_path_negative.c new file mode 100644 index 0000000..7a3eadb --- /dev/null +++ b/TC/testcase/utc_download_get_temp_path_negative.c @@ -0,0 +1,89 @@ +/* + * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved + * + * Licensed under the Apache License, Version 2.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include <tet_api.h> +#include <download.h> + +static void startup(void); +static void cleanup(void); + +void (*tet_startup)(void) = startup; +void (*tet_cleanup)(void) = cleanup; + +static void utc_download_get_temp_path_negative1(void); +static void utc_download_get_temp_path_negative2(void); +static void utc_download_get_temp_path_negative3(void); + +struct tet_testlist tet_testlist[] = { + {utc_download_get_temp_path_negative1, 1}, + {utc_download_get_temp_path_negative2, 2}, + {utc_download_get_temp_path_negative3, 3}, + {NULL, 0}, +}; + +static void startup(void) +{ + +} + +static void cleanup(void) +{ + /* end of TC */ +} + +void utc_download_get_temp_path_negative1(void) +{ + const char *TC_NAME = __FUNCTION__; + int retcode = 0; + char *output = NULL; + + retcode = download_get_temp_path(-1, &output); + + if (retcode == DOWNLOAD_ERROR_INVALID_PARAMETER) + dts_pass(TC_NAME, "retcode has invalid parameter"); + else + dts_fail(TC_NAME, "retcode does not have invalid parameter"); +} + +void utc_download_get_temp_path_negative2(void) +{ + const char *TC_NAME = __FUNCTION__; + int retcode = 0; + int id = 0; + + download_create(&id); + retcode = download_get_temp_path(id, NULL); + download_destroy(id); + + if (retcode == DOWNLOAD_ERROR_INVALID_PARAMETER) + dts_pass(TC_NAME, "retcode has invalid parameter"); + else + dts_fail(TC_NAME, "retcode does not have invalid parameter"); +} + +void utc_download_get_temp_path_negative3(void) +{ + const char *TC_NAME = __FUNCTION__; + int retcode = 0; + + retcode = download_get_temp_path(-1, NULL); + + if (retcode == DOWNLOAD_ERROR_INVALID_PARAMETER) + dts_pass(TC_NAME, "retcode has invalid parameter"); + else + dts_fail(TC_NAME, "retcode does not have invalid parameter"); +} + diff --git a/TC/testcase/utc_download_get_temp_path_positive.c b/TC/testcase/utc_download_get_temp_path_positive.c new file mode 100644 index 0000000..394975d --- /dev/null +++ b/TC/testcase/utc_download_get_temp_path_positive.c @@ -0,0 +1,109 @@ +/* + * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved + * + * Licensed under the Apache License, Version 2.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include <tet_api.h> +#include <download.h> +#include <glib.h> +#include <glib-object.h> + + +static void startup(void); +static void cleanup(void); + +void (*tet_startup)(void) = startup; +void (*tet_cleanup)(void) = cleanup; + +static void utc_download_get_temp_path_positive1(void); + +struct tet_testlist tet_testlist[] = { + {utc_download_get_temp_path_positive1, 1}, + {NULL, 0}, +}; + +static GMainLoop* gloop = NULL; +#define TEST_URL "http://static.campaign.naver.com/0/hangeul/2011/img/img_family.gif" + +static void state_cb (int download_id, download_state_e state, void *user_data) +{ + const char *TC_NAME = __FUNCTION__; + int retcode = 0; + download_error_e err = DOWNLOAD_ERROR_NONE; + if (state == DOWNLOAD_STATE_DOWNLOADING) + g_main_loop_quit(gloop); + + retcode = download_get_error(download_id, &err); + if (retcode != DOWNLOAD_ERROR_NONE) { + dts_fail(TC_NAME, "Fail to get error"); + g_main_loop_quit(gloop); + return; + } + dts_message(TC_NAME, "err[%d]", err); + if (err == DOWNLOAD_ERROR_INVALID_URL) + dts_message(TC_NAME, "invaild url err"); + else + dts_message(TC_NAME, "another error[%d]", err); +} + + +static void startup(void) +{ + g_type_init(); + gloop = g_main_loop_new (NULL, 0); +} + +static void cleanup(void) +{ + g_main_loop_unref(gloop); + gloop = NULL; +} + + +void utc_download_get_temp_path_positive1(void) +{ + const char *TC_NAME = __FUNCTION__; + int retcode = 0; + char *output = NULL; + int id = 0; + + retcode = download_create(&id); + if (retcode != DOWNLOAD_ERROR_NONE) { + dts_fail(TC_NAME,"Fail to create download handle"); + return; + } + retcode = download_set_url(id, TEST_URL); + if ( retcode != DOWNLOAD_ERROR_NONE ) { + dts_fail(TC_NAME,"Fail to set url"); + return; + } + retcode = download_set_state_changed_cb(id, state_cb, NULL); + if (retcode != DOWNLOAD_ERROR_NONE) + dts_fail(TC_NAME, "Fail to set callback"); + + retcode = download_start(id); + if (retcode == DOWNLOAD_ERROR_NONE) + g_main_loop_run(gloop); + + retcode = download_get_temp_path(id, &output); + + download_unset_state_changed_cb(id); + download_destroy(id); + + if (retcode == DOWNLOAD_ERROR_NONE) + dts_pass(TC_NAME, "retcode has no error"); + else + dts_fail(TC_NAME, "retcode has error"); +} + diff --git a/TC/testcase/utc_download_get_url_negative.c b/TC/testcase/utc_download_get_url_negative.c new file mode 100644 index 0000000..4f1575a --- /dev/null +++ b/TC/testcase/utc_download_get_url_negative.c @@ -0,0 +1,91 @@ +/* + * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved + * + * Licensed under the Apache License, Version 2.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include <tet_api.h> +#include <download.h> + +static void startup(void); +static void cleanup(void); + +void (*tet_startup)(void) = startup; +void (*tet_cleanup)(void) = cleanup; + +static void utc_download_get_url_negative1(void); +static void utc_download_get_url_negative2(void); +static void utc_download_get_url_negative3(void); + +struct tet_testlist tet_testlist[] = { + {utc_download_get_url_negative1, 1}, + {utc_download_get_url_negative2, 2}, + {utc_download_get_url_negative3, 3}, + {NULL, 0}, +}; + +static void startup(void) +{ + +} + +static void cleanup(void) +{ + /* end of TC */ +} + +void utc_download_get_url_negative1(void) +{ + const char *TC_NAME = __FUNCTION__; + int retcode = 0; + char *output = NULL; + + retcode = download_get_url(NULL, &output); + + if (retcode == DOWNLOAD_ERROR_INVALID_PARAMETER) + dts_pass(TC_NAME, "retcode has invalid parameter"); + else + dts_fail(TC_NAME, "retcode does not have invalid parameter"); +} + +void utc_download_get_url_negative2(void) +{ + const char *TC_NAME = __FUNCTION__; + int retcode = 0; + char *input = "URL"; + int id = 0; + + download_create(&id); + download_set_url(id, input); + retcode = download_get_url(id, NULL); + download_destroy(id); + + if (retcode == DOWNLOAD_ERROR_INVALID_PARAMETER) + dts_pass(TC_NAME, "retcode has invalid parameter"); + else + dts_fail(TC_NAME, "retcode does not have invalid parameter"); +} + +void utc_download_get_url_negative3(void) +{ + const char *TC_NAME = __FUNCTION__; + int retcode = 0; + + retcode = download_get_url(NULL, NULL); + + if (retcode == DOWNLOAD_ERROR_INVALID_PARAMETER) + dts_pass(TC_NAME, "retcode has invalid parameter"); + else + dts_fail(TC_NAME, "retcode does not have invalid parameter"); +} + diff --git a/TC/testcase/utc_download_get_url_positive.c b/TC/testcase/utc_download_get_url_positive.c new file mode 100644 index 0000000..d46fffe --- /dev/null +++ b/TC/testcase/utc_download_get_url_positive.c @@ -0,0 +1,61 @@ +/* + * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved + * + * Licensed under the Apache License, Version 2.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include <tet_api.h> +#include <download.h> + +static void startup(void); +static void cleanup(void); + +void (*tet_startup)(void) = startup; +void (*tet_cleanup)(void) = cleanup; + +static void utc_download_get_url_positive1(void); + +struct tet_testlist tet_testlist[] = { + {utc_download_get_url_positive1, 1}, + {NULL, 0}, +}; + +static void startup(void) +{ + +} + +static void cleanup(void) +{ + /* end of TC */ +} + +void utc_download_get_url_positive1(void) +{ + const char *TC_NAME = __FUNCTION__; + int retcode = 0; + char *input = "URL"; + char *output = NULL; + int id = 0; + + download_create(&id); + download_set_url(id, input); + retcode = download_get_url(id, &output); + download_destroy(id); + + if (retcode == DOWNLOAD_ERROR_NONE && !strcmp(input, output)) + dts_pass(TC_NAME, "retcode has no error and the url of set API is same to url of get API "); + else + dts_fail(TC_NAME, "retcode has error or the url of set API is not same to url of get API"); +} + diff --git a/TC/testcase/utc_download_pause_negative.c b/TC/testcase/utc_download_pause_negative.c new file mode 100644 index 0000000..9ce109b --- /dev/null +++ b/TC/testcase/utc_download_pause_negative.c @@ -0,0 +1,55 @@ +/* + * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved + * + * Licensed under the Apache License, Version 2.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include <tet_api.h> +#include <download.h> + +static void startup(void); +static void cleanup(void); + +void (*tet_startup)(void) = startup; +void (*tet_cleanup)(void) = cleanup; + +static void utc_download_pause_negative1(void); + +struct tet_testlist tet_testlist[] = { + {utc_download_pause_negative1, 1}, + {NULL, 0}, +}; + +static void startup(void) +{ + +} + +static void cleanup(void) +{ + /* end of TC */ +} + +static void utc_download_pause_negative1(void) +{ + const char *TC_NAME = __FUNCTION__; + int retcode = 0; + + retcode = download_pause(-1); + + if (retcode != DOWNLOAD_ERROR_NONE) + dts_pass(TC_NAME, "retcode has invalid parameter"); + else + dts_fail(TC_NAME, "retcode does not have invalid parameter"); +} + diff --git a/TC/testcase/utc_download_pause_positive.c b/TC/testcase/utc_download_pause_positive.c new file mode 100644 index 0000000..ce918e3 --- /dev/null +++ b/TC/testcase/utc_download_pause_positive.c @@ -0,0 +1,131 @@ +/* + * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved + * + * Licensed under the Apache License, Version 2.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include <tet_api.h> +#include <download.h> +#include <glib.h> +#include <glib-object.h> +#include <unistd.h> + +static void startup(void); +static void cleanup(void); + +void (*tet_startup)(void) = startup; +void (*tet_cleanup)(void) = cleanup; + +static void utc_download_pause_positive1(void); + +struct tet_testlist tet_testlist[] = { + {utc_download_pause_positive1, 1}, + {NULL, 0}, +}; + +static GMainLoop* gloop = NULL; +static int is_pause_success = false; +static int is_started = false; + +#define TEST_URL "http://cdn.naver.com/naver/NanumFont/setup/NanumFontSetup_TTF_GOTHIC_hangeulcamp.exe" + +static void state_cb (int download_id, download_state_e state, void *user_data) +{ + const char *TC_NAME = __FUNCTION__; + int retcode = 0; + download_error_e err = DOWNLOAD_ERROR_NONE; + if (state == DOWNLOAD_STATE_COMPLETED) + g_main_loop_quit(gloop); + else if(state == DOWNLOAD_STATE_PAUSED) { + is_pause_success = true; + g_main_loop_quit(gloop); + } else if(state == DOWNLOAD_STATE_DOWNLOADING) + is_started = true; + + retcode = download_get_error(download_id, &err); + if (retcode != DOWNLOAD_ERROR_NONE) { + dts_fail(TC_NAME, "Fail to get error"); + g_main_loop_quit(gloop); + return; + } + dts_message(TC_NAME, "err[%d]", err); + if (err == DOWNLOAD_ERROR_INVALID_URL) + dts_message(TC_NAME, "invaild url err"); + else + dts_message(TC_NAME, "another error[%d]", err); +} + +static void startup(void) +{ + g_type_init(); + gloop = g_main_loop_new (NULL, 0); + is_pause_success = true; +} + +static void cleanup(void) +{ + is_pause_success = false; + g_main_loop_unref(gloop); + gloop = NULL; +} + +static void utc_download_pause_positive1(void) +{ + const char *TC_NAME = __FUNCTION__; + int retcode = 0; + int id = 0; + + + retcode = download_create(&id); + if (retcode != DOWNLOAD_ERROR_NONE) { + dts_fail(TC_NAME,"Fail to create download handle"); + return; + } + retcode = download_set_url(id, TEST_URL); + if ( retcode != DOWNLOAD_ERROR_NONE ) { + dts_fail(TC_NAME,"Fail to set url"); + return; + } + retcode = download_set_state_changed_cb(id, state_cb, NULL); + if (retcode != DOWNLOAD_ERROR_NONE) + dts_fail(TC_NAME, "Fail to set callback"); + + retcode = download_start(id); + if (retcode != DOWNLOAD_ERROR_NONE) { + dts_message(TC_NAME,"Fail to start download"); + is_started = false; + } + + if (is_started) { + sleep(1); + retcode = download_pause(id); + if (retcode == DOWNLOAD_ERROR_NONE) + g_main_loop_run(gloop); + else { + dts_message(TC_NAME,"Fail to pause download"); + is_pause_success = false; + } + } + + retcode = download_unset_state_changed_cb(id); + if ( retcode != DOWNLOAD_ERROR_NONE ) + dts_message(TC_NAME,"Fail to unset callback"); + + download_destroy(id); + + if (is_pause_success) + dts_pass(TC_NAME, "It is success to pause download content"); + else + dts_fail(TC_NAME, "It is not success to pause download content"); +} + diff --git a/TC/testcase/utc_download_remove_http_header_field_negative.c b/TC/testcase/utc_download_remove_http_header_field_negative.c new file mode 100644 index 0000000..e85c021 --- /dev/null +++ b/TC/testcase/utc_download_remove_http_header_field_negative.c @@ -0,0 +1,98 @@ +/* + * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved + * + * Licensed under the Apache License, Version 2.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include <tet_api.h> +#include <download.h> + +static void startup(void); +static void cleanup(void); + +void (*tet_startup)(void) = startup; +void (*tet_cleanup)(void) = cleanup; + +static void utc_download_remove_http_header_field_negative1(void); +static void utc_download_remove_http_header_field_negative2(void); +static void utc_download_remove_http_header_field_negative3(void); + +struct tet_testlist tet_testlist[] = { + {utc_download_remove_http_header_field_negative1, 1}, + {utc_download_remove_http_header_field_negative2, 2}, + {utc_download_remove_http_header_field_negative3, 3}, + {NULL, 0}, +}; + +static void startup(void) +{ + +} + +static void cleanup(void) +{ + /* end of TC */ +} + +void utc_download_remove_http_header_field_negative1(void) +{ + const char *TC_NAME = __FUNCTION__; + int retcode = 0; + char *field = "negativefield1"; + int id = 0; + + download_create(&id); + retcode = download_remove_http_header_field(id, field); + download_destroy(id); + + dts_message(TC_NAME, "retcode[%d]",retcode); + if (retcode != DOWNLOAD_ERROR_NONE) + dts_pass(TC_NAME, "retcode has error about no found field"); + else + dts_fail(TC_NAME, "retcode does not have error about no found field"); +} + +void utc_download_remove_http_header_field_negative2(void) +{ + const char *TC_NAME = __FUNCTION__; + int retcode = 0; + char *field = "negativefield2"; + int id = 0; + + download_create(&id); + retcode = download_remove_http_header_field(-1, field); + download_destroy(id); + + if (retcode == DOWNLOAD_ERROR_INVALID_PARAMETER) + dts_pass(TC_NAME, "retcode has invalid parameter"); + else + dts_fail(TC_NAME, "retcode does not have invalid parameter"); +} + +void utc_download_remove_http_header_field_negative3(void) +{ + const char *TC_NAME = __FUNCTION__; + int retcode = 0; + int id = 0; + + download_create(&id); + retcode = download_remove_http_header_field(id, NULL); + download_destroy(id); + + if (retcode == DOWNLOAD_ERROR_INVALID_PARAMETER) + dts_pass(TC_NAME, "retcode has invalid parameter"); + else + dts_fail(TC_NAME, "retcode does not have invalid parameter"); +} + + diff --git a/TC/testcase/utc_download_remove_http_header_field_positive.c b/TC/testcase/utc_download_remove_http_header_field_positive.c new file mode 100644 index 0000000..8d5cd3e --- /dev/null +++ b/TC/testcase/utc_download_remove_http_header_field_positive.c @@ -0,0 +1,61 @@ +/* + * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved + * + * Licensed under the Apache License, Version 2.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include <tet_api.h> +#include <download.h> + +static void startup(void); +static void cleanup(void); + +void (*tet_startup)(void) = startup; +void (*tet_cleanup)(void) = cleanup; + +static void utc_download_remove_http_header_field_positive1(void); + +struct tet_testlist tet_testlist[] = { + {utc_download_remove_http_header_field_positive1, 1}, + {NULL, 0}, +}; + +static void startup(void) +{ + +} + +static void cleanup(void) +{ + /* end of TC */ +} + +void utc_download_remove_http_header_field_positive1(void) +{ + const char *TC_NAME = __FUNCTION__; + int retcode = 0; + char *field = "field"; + char *input = "input"; + int id = 0; + + download_create(&id); + download_add_http_header_field(id, field, input); + retcode = download_remove_http_header_field(id, field); + download_destroy(id); + + if (retcode == DOWNLOAD_ERROR_NONE) + dts_pass(TC_NAME, "retcode has no error"); + else + dts_fail(TC_NAME, "retcode has error"); +} + diff --git a/TC/testcase/utc_download_set_auto_download_negative.c b/TC/testcase/utc_download_set_auto_download_negative.c new file mode 100644 index 0000000..8e3358d --- /dev/null +++ b/TC/testcase/utc_download_set_auto_download_negative.c @@ -0,0 +1,56 @@ +/*
+ * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * Licensed under the Apache License, Version 2.0 (the License);
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an AS IS BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include <tet_api.h>
+#include <download.h>
+
+static void startup(void);
+static void cleanup(void);
+
+void (*tet_startup)(void) = startup;
+void (*tet_cleanup)(void) = cleanup;
+
+static void utc_download_set_auto_download_negative1(void);
+
+struct tet_testlist tet_testlist[] = {
+ {utc_download_set_auto_download_negative1, 1},
+ {NULL, 0},
+};
+
+static void startup(void)
+{
+
+}
+
+static void cleanup(void)
+{
+ /* end of TC */
+}
+
+void utc_download_set_auto_download_negative1(void)
+{
+ const char *TC_NAME = __FUNCTION__;
+ int retcode = 0;
+ bool enable = false;
+
+ retcode = download_set_auto_download(-1,enable );
+
+ if (retcode != DOWNLOAD_ERROR_NONE)
+ dts_pass(TC_NAME, "retcode has invalid parameter");
+ else
+ dts_fail(TC_NAME, "retcode does not have invalid parameter");
+}
+
diff --git a/TC/testcase/utc_download_set_auto_download_positive.c b/TC/testcase/utc_download_set_auto_download_positive.c new file mode 100644 index 0000000..7b127c5 --- /dev/null +++ b/TC/testcase/utc_download_set_auto_download_positive.c @@ -0,0 +1,59 @@ +/*
+ * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * Licensed under the Apache License, Version 2.0 (the License);
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an AS IS BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include <tet_api.h>
+#include <download.h>
+
+static void startup(void);
+static void cleanup(void);
+
+void (*tet_startup)(void) = startup;
+void (*tet_cleanup)(void) = cleanup;
+
+static void utc_download_set_auto_download_positive1(void);
+
+struct tet_testlist tet_testlist[] = {
+ {utc_download_set_auto_download_positive1, 1},
+ {NULL, 0},
+};
+
+static void startup(void)
+{
+
+}
+
+static void cleanup(void)
+{
+ /* end of TC */
+}
+
+void utc_download_set_auto_download_positive1(void)
+{
+ const char *TC_NAME = __FUNCTION__;
+ int retcode = 0;
+ int id = 0;
+ bool enable = true;
+
+ download_create(&id);
+ retcode = download_set_auto_download(id, enable);
+ download_destroy(id);
+
+ if (retcode == DOWNLOAD_ERROR_NONE)
+ dts_pass(TC_NAME, "retcode has no error");
+ else
+ dts_fail(TC_NAME, "retcode has error");
+}
+
diff --git a/TC/testcase/utc_download_set_destination_negative.c b/TC/testcase/utc_download_set_destination_negative.c new file mode 100644 index 0000000..71c9761 --- /dev/null +++ b/TC/testcase/utc_download_set_destination_negative.c @@ -0,0 +1,70 @@ +/* + * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved + * + * Licensed under the Apache License, Version 2.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include <tet_api.h> +#include <download.h> + +static void startup(void); +static void cleanup(void); + +void (*tet_startup)(void) = startup; +void (*tet_cleanup)(void) = cleanup; + +static void utc_download_set_destination_negative1(void); +static void utc_download_set_destination_negative2(void); + +struct tet_testlist tet_testlist[] = { + {utc_download_set_destination_negative1, 1}, + {utc_download_set_destination_negative2, 2}, + {NULL, 0}, +}; + +static void startup(void) +{ + +} + +static void cleanup(void) +{ + /* end of TC */ +} + +void utc_download_set_destination_negative1(void) +{ + const char *TC_NAME = __FUNCTION__; + int retcode = 0; + + retcode = download_set_destination(-1, "destination"); + + if (retcode == DOWNLOAD_ERROR_INVALID_PARAMETER) + dts_pass(TC_NAME, "retcode has invalid parameter"); + else + dts_fail(TC_NAME, "retcode does not have invalid parameter"); +} + +void utc_download_set_destination_negative2(void) +{ + const char *TC_NAME = __FUNCTION__; + int retcode = 0; + + retcode = download_set_destination(-1, NULL); + + if (retcode == DOWNLOAD_ERROR_INVALID_PARAMETER) + dts_pass(TC_NAME, "retcode has invalid parameter"); + else + dts_fail(TC_NAME, "retcode does not have invalid parameter"); +} + diff --git a/TC/testcase/utc_download_set_destination_positive.c b/TC/testcase/utc_download_set_destination_positive.c new file mode 100644 index 0000000..d84d47f --- /dev/null +++ b/TC/testcase/utc_download_set_destination_positive.c @@ -0,0 +1,57 @@ +/* + * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved + * + * Licensed under the Apache License, Version 2.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include <tet_api.h> +#include <download.h> + +static void startup(void); +static void cleanup(void); + +void (*tet_startup)(void) = startup; +void (*tet_cleanup)(void) = cleanup; + +static void utc_download_set_destination_positive1(void); + +struct tet_testlist tet_testlist[] = { + {utc_download_set_destination_positive1, 1}, + {NULL, 0}, +}; + +static void startup(void) +{ + +} + +static void cleanup(void) +{ + /* end of TC */ +} + +void utc_download_set_destination_positive1(void) +{ + const char *TC_NAME = __FUNCTION__; + int retcode = 0; + int id = 0; + + download_create(&id); + retcode = download_set_destination(id, "/opt/usr/media/Downloads"); + download_destroy(id); + + if (retcode == DOWNLOAD_ERROR_NONE) + dts_pass(TC_NAME, "retcode has no error"); + else + dts_fail(TC_NAME, "retcode has error"); +} diff --git a/TC/testcase/utc_download_set_file_name_negative.c b/TC/testcase/utc_download_set_file_name_negative.c new file mode 100644 index 0000000..bdeaf76 --- /dev/null +++ b/TC/testcase/utc_download_set_file_name_negative.c @@ -0,0 +1,73 @@ +/*
+ * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * Licensed under the Apache License, Version 2.0 (the License);
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an AS IS BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include <tet_api.h>
+#include <download.h>
+
+static void startup(void);
+static void cleanup(void);
+
+void (*tet_startup)(void) = startup;
+void (*tet_cleanup)(void) = cleanup;
+
+static void utc_download_set_file_name_negative1(void);
+static void utc_download_set_file_name_negative2(void);
+
+struct tet_testlist tet_testlist[] = {
+ {utc_download_set_file_name_negative1, 1},
+ {utc_download_set_file_name_negative2, 2},
+ {NULL, 0},
+};
+
+static void startup(void)
+{
+
+}
+
+static void cleanup(void)
+{
+ /* end of TC */
+}
+
+void utc_download_set_file_name_negative1(void)
+{
+ const char *TC_NAME = __FUNCTION__;
+ int retcode = 0;
+
+ retcode = download_set_file_name(-1, "file1");
+
+ if (retcode == DOWNLOAD_ERROR_INVALID_PARAMETER)
+ dts_pass(TC_NAME, "retcode has invalid parameter");
+ else
+ dts_fail(TC_NAME, "retcode does not have invalid parameter");
+}
+
+void utc_download_set_file_name_negative2(void)
+{
+ const char *TC_NAME = __FUNCTION__;
+ int retcode = 0;
+ int id = 0;
+
+ download_create(&id);
+ retcode = download_set_file_name(id, NULL);
+ download_destroy(id);
+
+ if (retcode == DOWNLOAD_ERROR_INVALID_PARAMETER)
+ dts_pass(TC_NAME, "retcode has invalid parameter");
+ else
+ dts_fail(TC_NAME, "retcode does not have invalid parameter");
+}
+
diff --git a/TC/testcase/utc_download_set_file_name_positive.c b/TC/testcase/utc_download_set_file_name_positive.c new file mode 100644 index 0000000..556f5b3 --- /dev/null +++ b/TC/testcase/utc_download_set_file_name_positive.c @@ -0,0 +1,58 @@ +/*
+ * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * Licensed under the Apache License, Version 2.0 (the License);
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an AS IS BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include <tet_api.h>
+#include <download.h>
+
+static void startup(void);
+static void cleanup(void);
+
+void (*tet_startup)(void) = startup;
+void (*tet_cleanup)(void) = cleanup;
+
+static void utc_download_set_file_name_positive1(void);
+
+struct tet_testlist tet_testlist[] = {
+ {utc_download_set_file_name_positive1, 1},
+ {NULL, 0},
+};
+
+static void startup(void)
+{
+
+}
+
+static void cleanup(void)
+{
+ /* end of TC */
+}
+
+void utc_download_set_file_name_positive1(void)
+{
+ const char *TC_NAME = __FUNCTION__;
+ int retcode = 0;
+ int id = 0;
+
+ download_create(&id);
+ retcode = download_set_file_name(id, "file1");
+ download_destroy(id);
+
+ if (retcode == DOWNLOAD_ERROR_NONE)
+ dts_pass(TC_NAME, "retcode has no error");
+ else
+ dts_fail(TC_NAME, "retcode has error");
+}
+
diff --git a/TC/testcase/utc_download_set_network_bonding_negative.c b/TC/testcase/utc_download_set_network_bonding_negative.c new file mode 100644 index 0000000..66cc77d --- /dev/null +++ b/TC/testcase/utc_download_set_network_bonding_negative.c @@ -0,0 +1,56 @@ +/*
+ * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * Licensed under the Apache License, Version 2.0 (the License);
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an AS IS BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include <tet_api.h>
+#include <download.h>
+
+static void startup(void);
+static void cleanup(void);
+
+void (*tet_startup)(void) = startup;
+void (*tet_cleanup)(void) = cleanup;
+
+static void utc_download_set_network_bonding_negative1(void);
+
+struct tet_testlist tet_testlist[] = {
+ {utc_download_set_network_bonding_negative1, 1},
+ {NULL, 0},
+};
+
+static void startup(void)
+{
+
+}
+
+static void cleanup(void)
+{
+ /* end of TC */
+}
+
+void utc_download_set_network_bonding_negative1(void)
+{
+ const char *TC_NAME = __FUNCTION__;
+ int retcode = 0;
+ bool enable = false;
+
+ retcode = download_set_network_bonding(-1,enable );
+
+ if (retcode != DOWNLOAD_ERROR_NONE)
+ dts_pass(TC_NAME, "retcode has invalid parameter");
+ else
+ dts_fail(TC_NAME, "retcode does not have invalid parameter");
+}
+
diff --git a/TC/testcase/utc_download_set_network_bonding_positive.c b/TC/testcase/utc_download_set_network_bonding_positive.c new file mode 100644 index 0000000..cadbef9 --- /dev/null +++ b/TC/testcase/utc_download_set_network_bonding_positive.c @@ -0,0 +1,59 @@ +/*
+ * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * Licensed under the Apache License, Version 2.0 (the License);
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an AS IS BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include <tet_api.h>
+#include <download.h>
+
+static void startup(void);
+static void cleanup(void);
+
+void (*tet_startup)(void) = startup;
+void (*tet_cleanup)(void) = cleanup;
+
+static void utc_download_set_network_bonding_positive1(void);
+
+struct tet_testlist tet_testlist[] = {
+ {utc_download_set_network_bonding_positive1, 1},
+ {NULL, 0},
+};
+
+static void startup(void)
+{
+
+}
+
+static void cleanup(void)
+{
+ /* end of TC */
+}
+
+void utc_download_set_network_bonding_positive1(void)
+{
+ const char *TC_NAME = __FUNCTION__;
+ int retcode = 0;
+ int id = 0;
+ bool enable = true;
+
+ download_create(&id);
+ retcode = download_set_network_bonding(id, enable);
+ download_destroy(id);
+
+ if (retcode == DOWNLOAD_ERROR_NONE)
+ dts_pass(TC_NAME, "retcode has no error");
+ else
+ dts_fail(TC_NAME, "retcode has error");
+}
+
diff --git a/TC/testcase/utc_download_set_network_type_negative.c b/TC/testcase/utc_download_set_network_type_negative.c new file mode 100644 index 0000000..677b159 --- /dev/null +++ b/TC/testcase/utc_download_set_network_type_negative.c @@ -0,0 +1,73 @@ +/* + * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved + * + * Licensed under the Apache License, Version 2.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include <tet_api.h> +#include <download.h> + +static void startup(void); +static void cleanup(void); + +void (*tet_startup)(void) = startup; +void (*tet_cleanup)(void) = cleanup; + +static void utc_download_set_network_type_negative1(void); +static void utc_download_set_network_type_negative2(void); + +struct tet_testlist tet_testlist[] = { + {utc_download_set_network_type_negative1, 1}, + {utc_download_set_network_type_negative2, 2}, + {NULL, 0}, +}; + +static void startup(void) +{ + +} + +static void cleanup(void) +{ + /* end of TC */ +} + +void utc_download_set_network_type_negative1(void) +{ + const char *TC_NAME = __FUNCTION__; + int retcode = 0; + + retcode = download_set_network_type(-1, DOWNLOAD_NETWORK_DATA_NETWORK); + + if (retcode == DOWNLOAD_ERROR_INVALID_PARAMETER) + dts_pass(TC_NAME, "retcode has invalid parameter"); + else + dts_fail(TC_NAME, "retcode does not have invalid parameter"); +} + +void utc_download_set_network_type_negative2(void) +{ + const char *TC_NAME = __FUNCTION__; + int retcode = 0; + int id = 0; + + download_create(&id); + retcode = download_set_network_type(id, 10); + download_destroy(id); + + if (retcode != DOWNLOAD_ERROR_NONE) + dts_pass(TC_NAME, "retcode has error"); + else + dts_fail(TC_NAME, "retcode does not have error"); +} + diff --git a/TC/testcase/utc_download_set_network_type_positive.c b/TC/testcase/utc_download_set_network_type_positive.c new file mode 100644 index 0000000..f0df3f9 --- /dev/null +++ b/TC/testcase/utc_download_set_network_type_positive.c @@ -0,0 +1,58 @@ +/* + * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved + * + * Licensed under the Apache License, Version 2.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include <tet_api.h> +#include <download.h> + +static void startup(void); +static void cleanup(void); + +void (*tet_startup)(void) = startup; +void (*tet_cleanup)(void) = cleanup; + +static void utc_download_set_network_type_positive1(void); + +struct tet_testlist tet_testlist[] = { + {utc_download_set_network_type_positive1, 1}, + {NULL, 0}, +}; + +static void startup(void) +{ + +} + +static void cleanup(void) +{ + /* end of TC */ +} + +void utc_download_set_network_type_positive1(void) +{ + const char *TC_NAME = __FUNCTION__; + int retcode = 0; + int id = 0; + + download_create(&id); + retcode = download_set_network_type(id, DOWNLOAD_NETWORK_DATA_NETWORK); + download_destroy(id); + + if (retcode == DOWNLOAD_ERROR_NONE) + dts_pass(TC_NAME, "retcode has no error"); + else + dts_fail(TC_NAME, "retcode has error"); +} + diff --git a/TC/testcase/utc_download_set_notification_bundle_negative.c b/TC/testcase/utc_download_set_notification_bundle_negative.c new file mode 100644 index 0000000..e6ce44f --- /dev/null +++ b/TC/testcase/utc_download_set_notification_bundle_negative.c @@ -0,0 +1,97 @@ +/* + * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved + * + * Licensed under the Apache License, Version 2.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include <tet_api.h> +#include <download.h> +#include <bundle_internal.h> + +static void startup(void); +static void cleanup(void); + +void (*tet_startup)(void) = startup; +void (*tet_cleanup)(void) = cleanup; + +static void utc_download_set_notification_bundle_negative1(void); +static void utc_download_set_notification_bundle_negative2(void); +static void utc_download_set_notification_bundle_negative3(void); + +struct tet_testlist tet_testlist[] = { + {utc_download_set_notification_bundle_negative1, 1}, + {utc_download_set_notification_bundle_negative2, 2}, + {utc_download_set_notification_bundle_negative3, 3}, + {NULL, 0}, +}; + +static void startup(void) +{ + +} + +static void cleanup(void) +{ + /* end of TC */ +} + +void utc_download_set_notification_bundle_negative1(void) +{ + const char *TC_NAME = __FUNCTION__; + int retcode = 0; + bundle *b = bundle_create(); + + bundle_add(b, "key", "ongoing"); + retcode = download_set_notification_bundle(-1, DOWNLOAD_NOTIFICATION_BUNDLE_TYPE_ONGOING, b); + bundle_free(b); + + if (retcode == DOWNLOAD_ERROR_INVALID_PARAMETER) + dts_pass(TC_NAME, "retcode has invalid parameter"); + else + dts_fail(TC_NAME, "retcode does not have invalid parameter"); +} + +void utc_download_set_notification_bundle_negative2(void) +{ + const char *TC_NAME = __FUNCTION__; + int retcode = 0; + int id = 0; + + download_create(&id); + retcode = download_set_notification_bundle(id, DOWNLOAD_NOTIFICATION_BUNDLE_TYPE_ONGOING, NULL); + download_destroy(id); + + if (retcode == DOWNLOAD_ERROR_INVALID_PARAMETER) + dts_pass(TC_NAME, "retcode has invalid parameter"); + else + dts_fail(TC_NAME, "retcode does not have invalid parameter"); +} + +void utc_download_set_notification_bundle_negative3(void) +{ + const char *TC_NAME = __FUNCTION__; + int retcode = 0; + int id = 0; + bundle *b = bundle_create(); + bundle_add(b, "key", "ongoing"); + + download_create(&id); + retcode = download_set_notification_bundle(id, 4, b); + download_destroy(id); + bundle_free(b); + + if (retcode == DOWNLOAD_ERROR_INVALID_PARAMETER) + dts_pass(TC_NAME, "retcode has invalid parameter"); + else + dts_fail(TC_NAME, "retcode does not have invalid parameter"); +} diff --git a/TC/testcase/utc_download_set_notification_bundle_positive.c b/TC/testcase/utc_download_set_notification_bundle_positive.c new file mode 100644 index 0000000..dc1a303 --- /dev/null +++ b/TC/testcase/utc_download_set_notification_bundle_positive.c @@ -0,0 +1,62 @@ +/* + * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved + * + * Licensed under the Apache License, Version 2.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include <tet_api.h> +#include <download.h> +#include <bundle_internal.h> + +static void startup(void); +static void cleanup(void); + +void (*tet_startup)(void) = startup; +void (*tet_cleanup)(void) = cleanup; + +static void utc_download_set_notification_bundle_positive1(void); + +struct tet_testlist tet_testlist[] = { + {utc_download_set_notification_bundle_positive1, 1}, + {NULL, 0}, +}; + +static void startup(void) +{ + +} + +static void cleanup(void) +{ + /* end of TC */ +} + +void utc_download_set_notification_bundle_positive1(void) +{ + const char *TC_NAME = __FUNCTION__; + int retcode = 0; + int id = 0; + bundle *b = bundle_create(); + bundle_add(b, "key", "ongoing"); + + download_create(&id); + retcode = download_set_notification_bundle(id, DOWNLOAD_NOTIFICATION_BUNDLE_TYPE_ONGOING, b); + download_destroy(id); + bundle_free(b); + + if (retcode == DOWNLOAD_ERROR_NONE) + dts_pass(TC_NAME, "retcode has no error"); + else + dts_fail(TC_NAME, "retcode has error"); +} + diff --git a/TC/testcase/utc_download_set_notification_description_negative.c b/TC/testcase/utc_download_set_notification_description_negative.c new file mode 100644 index 0000000..fdf51df --- /dev/null +++ b/TC/testcase/utc_download_set_notification_description_negative.c @@ -0,0 +1,90 @@ +/* + * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved + * + * Licensed under the Apache License, Version 2.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include <tet_api.h> +#include <download.h> + +static void startup(void); +static void cleanup(void); + +void (*tet_startup)(void) = startup; +void (*tet_cleanup)(void) = cleanup; + +static void utc_download_set_notification_description_negative1(void); +static void utc_download_set_notification_description_negative2(void); +static void utc_download_set_notification_description_negative3(void); + +struct tet_testlist tet_testlist[] = { + {utc_download_set_notification_description_negative1, 1}, + {utc_download_set_notification_description_negative2, 2}, + {utc_download_set_notification_description_negative3, 3}, + {NULL, 0}, +}; + +static void startup(void) +{ + +} + +static void cleanup(void) +{ + /* end of TC */ +} + +void utc_download_set_notification_description_negative1(void) +{ + const char *TC_NAME = __FUNCTION__; + int retcode = 0; + + retcode = download_set_notification_description(-1, "description"); + + if (retcode == DOWNLOAD_ERROR_INVALID_PARAMETER) + dts_pass(TC_NAME, "retcode has invalid parameter"); + else + dts_fail(TC_NAME, "retcode does not have invalid parameter"); +} + +void utc_download_set_notification_description_negative2(void) +{ + const char *TC_NAME = __FUNCTION__; + int retcode = 0; + int id = 0; + + download_create(&id); + retcode = download_set_notification_description(id, NULL); + download_destroy(id); + + if (retcode == DOWNLOAD_ERROR_INVALID_PARAMETER) + dts_pass(TC_NAME, "retcode has invalid parameter"); + else + dts_fail(TC_NAME, "retcode does not have invalid parameter"); +} + +void utc_download_set_notification_description_negative3(void) +{ + const char *TC_NAME = __FUNCTION__; + int retcode = 0; + int id = 0; + + download_create(&id); + retcode = download_set_notification_description(id, ""); + download_destroy(id); + + if (retcode == DOWNLOAD_ERROR_INVALID_PARAMETER) + dts_pass(TC_NAME, "retcode has invalid parameter"); + else + dts_fail(TC_NAME, "retcode does not have invalid parameter"); +} diff --git a/TC/testcase/utc_download_set_notification_description_positive.c b/TC/testcase/utc_download_set_notification_description_positive.c new file mode 100644 index 0000000..890426e --- /dev/null +++ b/TC/testcase/utc_download_set_notification_description_positive.c @@ -0,0 +1,58 @@ +/* + * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved + * + * Licensed under the Apache License, Version 2.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include <tet_api.h> +#include <download.h> + +static void startup(void); +static void cleanup(void); + +void (*tet_startup)(void) = startup; +void (*tet_cleanup)(void) = cleanup; + +static void utc_download_set_notification_description_positive1(void); + +struct tet_testlist tet_testlist[] = { + {utc_download_set_notification_description_positive1, 1}, + {NULL, 0}, +}; + +static void startup(void) +{ + +} + +static void cleanup(void) +{ + /* end of TC */ +} + +void utc_download_set_notification_description_positive1(void) +{ + const char *TC_NAME = __FUNCTION__; + int retcode = 0; + int id = 0; + + download_create(&id); + retcode = download_set_notification_title(id, "description"); + download_destroy(id); + + if (retcode == DOWNLOAD_ERROR_NONE) + dts_pass(TC_NAME, "retcode has no error"); + else + dts_fail(TC_NAME, "retcode has error"); +} + diff --git a/TC/testcase/utc_download_set_notification_title_negative.c b/TC/testcase/utc_download_set_notification_title_negative.c new file mode 100644 index 0000000..6f493c7 --- /dev/null +++ b/TC/testcase/utc_download_set_notification_title_negative.c @@ -0,0 +1,90 @@ +/* + * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved + * + * Licensed under the Apache License, Version 2.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include <tet_api.h> +#include <download.h> + +static void startup(void); +static void cleanup(void); + +void (*tet_startup)(void) = startup; +void (*tet_cleanup)(void) = cleanup; + +static void utc_download_set_notification_title_negative1(void); +static void utc_download_set_notification_title_negative2(void); +static void utc_download_set_notification_title_negative3(void); + +struct tet_testlist tet_testlist[] = { + {utc_download_set_notification_title_negative1, 1}, + {utc_download_set_notification_title_negative2, 2}, + {utc_download_set_notification_title_negative3, 3}, + {NULL, 0}, +}; + +static void startup(void) +{ + +} + +static void cleanup(void) +{ + /* end of TC */ +} + +void utc_download_set_notification_title_negative1(void) +{ + const char *TC_NAME = __FUNCTION__; + int retcode = 0; + + retcode = download_set_notification_title(-1, "title"); + + if (retcode == DOWNLOAD_ERROR_INVALID_PARAMETER) + dts_pass(TC_NAME, "retcode has invalid parameter"); + else + dts_fail(TC_NAME, "retcode does not have invalid parameter"); +} + +void utc_download_set_notification_title_negative2(void) +{ + const char *TC_NAME = __FUNCTION__; + int retcode = 0; + int id = 0; + + download_create(&id); + retcode = download_set_notification_title(id, NULL); + download_destroy(id); + + if (retcode == DOWNLOAD_ERROR_INVALID_PARAMETER) + dts_pass(TC_NAME, "retcode has invalid parameter"); + else + dts_fail(TC_NAME, "retcode does not have invalid parameter"); +} + +void utc_download_set_notification_title_negative3(void) +{ + const char *TC_NAME = __FUNCTION__; + int retcode = 0; + int id = 0; + + download_create(&id); + retcode = download_set_notification_title(id, ""); + download_destroy(id); + + if (retcode == DOWNLOAD_ERROR_INVALID_PARAMETER) + dts_pass(TC_NAME, "retcode has invalid parameter"); + else + dts_fail(TC_NAME, "retcode does not have invalid parameter"); +} diff --git a/TC/testcase/utc_download_set_notification_title_positive.c b/TC/testcase/utc_download_set_notification_title_positive.c new file mode 100644 index 0000000..8996d9d --- /dev/null +++ b/TC/testcase/utc_download_set_notification_title_positive.c @@ -0,0 +1,58 @@ +/* + * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved + * + * Licensed under the Apache License, Version 2.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include <tet_api.h> +#include <download.h> + +static void startup(void); +static void cleanup(void); + +void (*tet_startup)(void) = startup; +void (*tet_cleanup)(void) = cleanup; + +static void utc_download_set_notification_title_positive1(void); + +struct tet_testlist tet_testlist[] = { + {utc_download_set_notification_title_positive1, 1}, + {NULL, 0}, +}; + +static void startup(void) +{ + +} + +static void cleanup(void) +{ + /* end of TC */ +} + +void utc_download_set_notification_title_positive1(void) +{ + const char *TC_NAME = __FUNCTION__; + int retcode = 0; + int id = 0; + + download_create(&id); + retcode = download_set_notification_title(id, "title"); + download_destroy(id); + + if (retcode == DOWNLOAD_ERROR_NONE) + dts_pass(TC_NAME, "retcode has no error"); + else + dts_fail(TC_NAME, "retcode has error"); +} + diff --git a/TC/testcase/utc_download_set_notification_type_negative.c b/TC/testcase/utc_download_set_notification_type_negative.c new file mode 100644 index 0000000..6f57ec2 --- /dev/null +++ b/TC/testcase/utc_download_set_notification_type_negative.c @@ -0,0 +1,72 @@ +/* + * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved + * + * Licensed under the Apache License, Version 2.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include <tet_api.h> +#include <download.h> + +static void startup(void); +static void cleanup(void); + +void (*tet_startup)(void) = startup; +void (*tet_cleanup)(void) = cleanup; + +static void utc_download_set_notification_type_negative1(void); +static void utc_download_set_notification_type_negative2(void); + +struct tet_testlist tet_testlist[] = { + {utc_download_set_notification_type_negative1, 1}, + {utc_download_set_notification_type_negative2, 2}, + {NULL, 0}, +}; + +static void startup(void) +{ + +} + +static void cleanup(void) +{ + /* end of TC */ +} + +void utc_download_set_notification_type_negative1(void) +{ + const char *TC_NAME = __FUNCTION__; + int retcode = 0; + + retcode = download_set_notification_type(-1, DOWNLOAD_NOTIFICATION_TYPE_NONE); + + if (retcode == DOWNLOAD_ERROR_INVALID_PARAMETER) + dts_pass(TC_NAME, "retcode has invalid parameter"); + else + dts_fail(TC_NAME, "retcode does not have invalid parameter"); +} + +void utc_download_set_notification_type_negative2(void) +{ + const char *TC_NAME = __FUNCTION__; + int retcode = 0; + int id = 0; + + download_create(&id); + retcode = download_set_notification_type(id, 5); + download_destroy(id); + + if (retcode != DOWNLOAD_ERROR_NONE) + dts_pass(TC_NAME, "retcode has error"); + else + dts_fail(TC_NAME, "retcode does not have error"); +} diff --git a/TC/testcase/utc_download_set_notification_type_positive.c b/TC/testcase/utc_download_set_notification_type_positive.c new file mode 100644 index 0000000..505aadd --- /dev/null +++ b/TC/testcase/utc_download_set_notification_type_positive.c @@ -0,0 +1,58 @@ +/* + * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved + * + * Licensed under the Apache License, Version 2.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include <tet_api.h> +#include <download.h> + +static void startup(void); +static void cleanup(void); + +void (*tet_startup)(void) = startup; +void (*tet_cleanup)(void) = cleanup; + +static void utc_download_set_notification_type_positive1(void); + +struct tet_testlist tet_testlist[] = { + {utc_download_set_notification_type_positive1, 1}, + {NULL, 0}, +}; + +static void startup(void) +{ + +} + +static void cleanup(void) +{ + /* end of TC */ +} + +void utc_download_set_notification_type_positive1(void) +{ + const char *TC_NAME = __FUNCTION__; + int retcode = 0; + int id = 0; + + download_create(&id); + retcode = download_set_notification_type(id, DOWNLOAD_NOTIFICATION_TYPE_NONE); + download_destroy(id); + + if (retcode == DOWNLOAD_ERROR_NONE) + dts_pass(TC_NAME, "retcode has no error"); + else + dts_fail(TC_NAME, "retcode has error"); +} + diff --git a/TC/testcase/utc_download_set_progress_cb_negative.c b/TC/testcase/utc_download_set_progress_cb_negative.c new file mode 100644 index 0000000..b6520d1 --- /dev/null +++ b/TC/testcase/utc_download_set_progress_cb_negative.c @@ -0,0 +1,60 @@ +/* + * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved + * + * Licensed under the Apache License, Version 2.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include <tet_api.h> +#include <download.h> + +static void startup(void); +static void cleanup(void); + +void (*tet_startup)(void) = startup; +void (*tet_cleanup)(void) = cleanup; + +static void utc_download_set_progress_cb_negative1(void); + +struct tet_testlist tet_testlist[] = { + {utc_download_set_progress_cb_negative1, 1}, + {NULL, 0}, +}; + +static void startup(void) +{ + +} + +static void cleanup(void) +{ + /* end of TC */ +} + +static void on_url_download_progess(int id, unsigned long long received, unsigned long long total, void *user_data) +{ + +} + +static void utc_download_set_progress_cb_negative1(void) +{ + const char *TC_NAME = __FUNCTION__; + int retcode = 0; + + retcode = download_set_progress_cb(-1, on_url_download_progess, NULL); + + if (retcode == DOWNLOAD_ERROR_INVALID_PARAMETER) + dts_pass(TC_NAME, "retcode has invalid parameter"); + else + dts_fail(TC_NAME, "retcode does not have invalid parameter"); +} + diff --git a/TC/testcase/utc_download_set_progress_cb_positive.c b/TC/testcase/utc_download_set_progress_cb_positive.c new file mode 100644 index 0000000..e7f0d9e --- /dev/null +++ b/TC/testcase/utc_download_set_progress_cb_positive.c @@ -0,0 +1,63 @@ +/* + * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved + * + * Licensed under the Apache License, Version 2.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include <tet_api.h> +#include <download.h> + +static void startup(void); +static void cleanup(void); + +void (*tet_startup)(void) = startup; +void (*tet_cleanup)(void) = cleanup; + +static void utc_download_set_progress_cb_positive1(void); + +struct tet_testlist tet_testlist[] = { + {utc_download_set_progress_cb_positive1, 1}, + {NULL, 0}, +}; + +static void startup(void) +{ + +} + +static void cleanup(void) +{ + /* end of TC */ +} + +static void on_url_download_progess(int id, unsigned long long received, unsigned long long total, void *user_data) +{ + +} + +static void utc_download_set_progress_cb_positive1(void) +{ + const char *TC_NAME = __FUNCTION__; + int retcode = 0; + int id = 0; + + download_create(&id); + retcode = download_set_progress_cb(id, on_url_download_progess, NULL); + download_destroy(id); + + if (retcode == DOWNLOAD_ERROR_NONE) + dts_pass(TC_NAME, "retcode has no error"); + else + dts_fail(TC_NAME, "retcode has error"); +} + diff --git a/TC/testcase/utc_download_set_state_changed_cb_negative.c b/TC/testcase/utc_download_set_state_changed_cb_negative.c new file mode 100644 index 0000000..070fce8 --- /dev/null +++ b/TC/testcase/utc_download_set_state_changed_cb_negative.c @@ -0,0 +1,60 @@ +/* + * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved + * + * Licensed under the Apache License, Version 2.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include <tet_api.h> +#include <download.h> + +static void startup(void); +static void cleanup(void); + +void (*tet_startup)(void) = startup; +void (*tet_cleanup)(void) = cleanup; + +static void utc_download_set_state_changed_cb_negative1(void); + +struct tet_testlist tet_testlist[] = { + {utc_download_set_state_changed_cb_negative1, 1}, + {NULL, 0}, +}; + +static void startup(void) +{ + +} + +static void cleanup(void) +{ + /* end of TC */ +} + +static void on_url_download_state_changed(int download_id, download_state_e state, void *user_data) +{ + +} + +static void utc_download_set_state_changed_cb_negative1(void) +{ + const char *TC_NAME = __FUNCTION__; + int retcode = 0; + + retcode = download_set_state_changed_cb(-1, on_url_download_state_changed, NULL); + + if (retcode == DOWNLOAD_ERROR_INVALID_PARAMETER) + dts_pass(TC_NAME, "retcode has invalid parameter"); + else + dts_fail(TC_NAME, "retcode does not have invalid parameter"); + +} diff --git a/TC/testcase/utc_download_set_state_changed_cb_positive.c b/TC/testcase/utc_download_set_state_changed_cb_positive.c new file mode 100644 index 0000000..e05e598 --- /dev/null +++ b/TC/testcase/utc_download_set_state_changed_cb_positive.c @@ -0,0 +1,63 @@ +/* + * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved + * + * Licensed under the Apache License, Version 2.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include <tet_api.h> +#include <download.h> + +static void startup(void); +static void cleanup(void); + +void (*tet_startup)(void) = startup; +void (*tet_cleanup)(void) = cleanup; + +static void utc_download_set_state_changed_cb_positive1(void); + +struct tet_testlist tet_testlist[] = { + {utc_download_set_state_changed_cb_positive1, 1}, + {NULL, 0}, +}; + +static void startup(void) +{ + +} + +static void cleanup(void) +{ + /* end of TC */ +} + +static void on_url_download_state_changed(int download_id, download_state_e state, void *user_data) +{ + +} + +static void utc_download_set_state_changed_cb_positive1(void) +{ + const char *TC_NAME = __FUNCTION__; + int retcode = 0; + int id = 0; + + download_create(&id); + retcode = download_set_state_changed_cb(id, on_url_download_state_changed, NULL); + download_destroy(id); + + if (retcode == DOWNLOAD_ERROR_NONE) + dts_pass(TC_NAME, "retcode has no error"); + else + dts_fail(TC_NAME, "retcode has error"); +} + diff --git a/TC/testcase/utc_download_set_temp_file_path_negative.c b/TC/testcase/utc_download_set_temp_file_path_negative.c new file mode 100644 index 0000000..2f1f21a --- /dev/null +++ b/TC/testcase/utc_download_set_temp_file_path_negative.c @@ -0,0 +1,70 @@ +/* + * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved + * + * Licensed under the Apache License, Version 2.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include <tet_api.h> +#include <download.h> + +static void startup(void); +static void cleanup(void); + +void (*tet_startup)(void) = startup; +void (*tet_cleanup)(void) = cleanup; + +static void utc_download_set_temp_file_path_negative1(void); +static void utc_download_set_temp_file_path_negative2(void); + +struct tet_testlist tet_testlist[] = { + {utc_download_set_temp_file_path_negative1, 1}, + {utc_download_set_temp_file_path_negative2, 2}, + {NULL, 0}, +}; + +static void startup(void) +{ + +} + +static void cleanup(void) +{ + /* end of TC */ +} + +void utc_download_set_temp_file_path_negative1(void) +{ + const char *TC_NAME = __FUNCTION__; + int retcode = 0; + + retcode = download_set_temp_file_path(-1, "temp_file"); + + if (retcode == DOWNLOAD_ERROR_INVALID_PARAMETER) + dts_pass(TC_NAME, "retcode has invalid parameter"); + else + dts_fail(TC_NAME, "retcode does not have invalid parameter"); +} + +void utc_download_set_temp_file_path_negative2(void) +{ + const char *TC_NAME = __FUNCTION__; + int retcode = 0; + + retcode = download_set_temp_file_path(-1, NULL); + + if (retcode == DOWNLOAD_ERROR_INVALID_PARAMETER) + dts_pass(TC_NAME, "retcode has invalid parameter"); + else + dts_fail(TC_NAME, "retcode does not have invalid parameter"); +} + diff --git a/TC/testcase/utc_download_set_temp_file_path_positive.c b/TC/testcase/utc_download_set_temp_file_path_positive.c new file mode 100644 index 0000000..cf442a7 --- /dev/null +++ b/TC/testcase/utc_download_set_temp_file_path_positive.c @@ -0,0 +1,58 @@ +/* + * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved + * + * Licensed under the Apache License, Version 2.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include <tet_api.h> +#include <download.h> + +static void startup(void); +static void cleanup(void); + +void (*tet_startup)(void) = startup; +void (*tet_cleanup)(void) = cleanup; + +static void utc_download_set_temp_file_path_positive1(void); + +struct tet_testlist tet_testlist[] = { + {utc_download_set_temp_file_path_positive1, 1}, + {NULL, 0}, +}; + +static void startup(void) +{ + +} + +static void cleanup(void) +{ + /* end of TC */ +} + +void utc_download_set_temp_file_path_positive1(void) +{ + const char *TC_NAME = __FUNCTION__; + int retcode = 0; + int id = 0; + + download_create(&id); + retcode = download_set_temp_file_path(id, + "/opt/usr/media/Downloads/.temp_download/abc.txt"); + download_destroy(id); + + if (retcode == DOWNLOAD_ERROR_NONE) + dts_pass(TC_NAME, "retcode has no error"); + else + dts_fail(TC_NAME, "retcode has error"); +} diff --git a/TC/testcase/utc_download_set_url_negative.c b/TC/testcase/utc_download_set_url_negative.c new file mode 100644 index 0000000..0f3e24c --- /dev/null +++ b/TC/testcase/utc_download_set_url_negative.c @@ -0,0 +1,73 @@ +/* + * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved + * + * Licensed under the Apache License, Version 2.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include <tet_api.h> +#include <download.h> + +static void startup(void); +static void cleanup(void); + +void (*tet_startup)(void) = startup; +void (*tet_cleanup)(void) = cleanup; + +static void utc_download_set_url_negative1(void); +static void utc_download_set_url_negative2(void); + +struct tet_testlist tet_testlist[] = { + {utc_download_set_url_negative1, 1}, + {utc_download_set_url_negative2, 2}, + {NULL, 0}, +}; + +static void startup(void) +{ + +} + +static void cleanup(void) +{ + /* end of TC */ +} + +void utc_download_set_url_negative1(void) +{ + const char *TC_NAME = __FUNCTION__; + int retcode = 0; + + retcode = download_set_url(-1, "URL"); + + if (retcode == DOWNLOAD_ERROR_INVALID_PARAMETER) + dts_pass(TC_NAME, "retcode has invalid parameter"); + else + dts_fail(TC_NAME, "retcode does not have invalid parameter"); +} + +void utc_download_set_url_negative2(void) +{ + const char *TC_NAME = __FUNCTION__; + int retcode = 0; + int id = 0; + + download_create(&id); + retcode = download_set_url(id, NULL); + download_destroy(id); + + if (retcode == DOWNLOAD_ERROR_INVALID_PARAMETER) + dts_pass(TC_NAME, "retcode has invalid parameter"); + else + dts_fail(TC_NAME, "retcode does not have invalid parameter"); +} + diff --git a/TC/testcase/utc_download_set_url_positive.c b/TC/testcase/utc_download_set_url_positive.c new file mode 100644 index 0000000..e448e54 --- /dev/null +++ b/TC/testcase/utc_download_set_url_positive.c @@ -0,0 +1,58 @@ +/* + * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved + * + * Licensed under the Apache License, Version 2.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include <tet_api.h> +#include <download.h> + +static void startup(void); +static void cleanup(void); + +void (*tet_startup)(void) = startup; +void (*tet_cleanup)(void) = cleanup; + +static void utc_download_set_url_positive1(void); + +struct tet_testlist tet_testlist[] = { + {utc_download_set_url_positive1, 1}, + {NULL, 0}, +}; + +static void startup(void) +{ + +} + +static void cleanup(void) +{ + /* end of TC */ +} + +void utc_download_set_url_positive1(void) +{ + const char *TC_NAME = __FUNCTION__; + int retcode = 0; + int id = 0; + + download_create(&id); + retcode = download_set_url(id, "URL"); + download_destroy(id); + + if (retcode == DOWNLOAD_ERROR_NONE) + dts_pass(TC_NAME, "retcode has no error"); + else + dts_fail(TC_NAME, "retcode has error"); +} + diff --git a/TC/testcase/utc_download_start_negative.c b/TC/testcase/utc_download_start_negative.c new file mode 100644 index 0000000..a0af182 --- /dev/null +++ b/TC/testcase/utc_download_start_negative.c @@ -0,0 +1,107 @@ +/* + * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved + * + * Licensed under the Apache License, Version 2.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include <tet_api.h> +#include <download.h> +#include <glib.h> +#include <glib-object.h> + +static void startup(void); +static void cleanup(void); + +void (*tet_startup)(void) = startup; +void (*tet_cleanup)(void) = cleanup; + +static void utc_download_start_negative1(void); + +struct tet_testlist tet_testlist[] = { + {utc_download_start_negative1, 1}, + {NULL, 0}, +}; + +static GMainLoop *gloop = NULL; +static int is_download_failed = 0; + +static void startup(void) +{ + g_type_init(); + gloop = g_main_loop_new (NULL, 0); + is_download_failed = false; +} + +static void cleanup(void) +{ + /* end of TC */ + is_download_failed = false; + g_main_loop_quit(gloop); + g_main_loop_unref(gloop); + gloop = NULL; +} +static void state_cb (int download_id, download_state_e state, void *user_data) +{ + const char *TC_NAME = __FUNCTION__; + int retcode = 0; + download_error_e err = DOWNLOAD_ERROR_NONE; + if (state == DOWNLOAD_STATE_FAILED || state == DOWNLOAD_STATE_CANCELED) { + is_download_failed = true; + g_main_loop_quit(gloop); + } + else + is_download_failed = false; + retcode = download_get_error(download_id, &err); + if (retcode != DOWNLOAD_ERROR_NONE) { + dts_fail(TC_NAME, "Fail to get error"); + g_main_loop_quit(gloop); + return; + } + dts_message(TC_NAME, "err[%d]", err); + if (err == DOWNLOAD_ERROR_INVALID_URL) + dts_message(TC_NAME, "invaild url err"); + else + dts_message(TC_NAME, "another error[%d]", err); +} + +static void utc_download_start_negative1(void) +{ + const char *TC_NAME = __FUNCTION__; + int retcode = 0; + int id = 0; + + retcode = download_create(&id); + if (retcode != DOWNLOAD_ERROR_NONE) + dts_fail(TC_NAME, "Fail to create download id"); + retcode = download_set_url(id, "abc.com"); + if (retcode != DOWNLOAD_ERROR_NONE) + dts_fail(TC_NAME, "Fail to set url"); + retcode = download_set_state_changed_cb(id, state_cb, NULL); + if (retcode != DOWNLOAD_ERROR_NONE) + dts_fail(TC_NAME, "Fail to set callback"); + + retcode = download_start(id); + if (retcode == DOWNLOAD_ERROR_NONE) + g_main_loop_run(gloop); + + retcode = download_unset_state_changed_cb(id); + if ( retcode != DOWNLOAD_ERROR_NONE ) + dts_message(TC_NAME,"Fail to unset callback"); + download_destroy(id); + + if (is_download_failed) + dts_pass(TC_NAME, "retcode has invalid url"); + else + dts_fail(TC_NAME, "retcode does not have invalid url"); +} + diff --git a/TC/testcase/utc_download_start_positive.c b/TC/testcase/utc_download_start_positive.c new file mode 100644 index 0000000..ff7ee76 --- /dev/null +++ b/TC/testcase/utc_download_start_positive.c @@ -0,0 +1,117 @@ +/* + * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved + * + * Licensed under the Apache License, Version 2.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include <tet_api.h> +#include <download.h> +#include <glib.h> +#include <glib-object.h> + +static void startup(void); +static void cleanup(void); + +void (*tet_startup)(void) = startup; +void (*tet_cleanup)(void) = cleanup; + +static void utc_download_start_positive1(void); + +struct tet_testlist tet_testlist[] = { + {utc_download_start_positive1, 1}, + {NULL, 0}, +}; + +//static url_download_h handle = NULL; +static GMainLoop* gloop = NULL; +static int is_download_success = true; + +#define TEST_URL "http://static.campaign.naver.com/0/hangeul/2011/img/img_family.gif" +//#define TEST_URL "http://cdn.naver.com/naver/NanumFont/setup/NanumFontSetup_TTF_GOTHICLIGHT_hangeulcamp.exe" + +static void state_cb (int download_id, download_state_e state, void *user_data) +{ + const char *TC_NAME = __FUNCTION__; + int retcode = 0; + download_error_e err = DOWNLOAD_ERROR_NONE; + if (state == DOWNLOAD_STATE_COMPLETED || state == DOWNLOAD_STATE_DOWNLOADING) { + is_download_success = true; + g_main_loop_quit(gloop); + } else + is_download_success = false; + + retcode = download_get_error(download_id, &err); + if (retcode != DOWNLOAD_ERROR_NONE) { + dts_fail(TC_NAME, "Fail to get error"); + g_main_loop_quit(gloop); + return; + } + dts_message(TC_NAME, "err[%d]", err); + if (err == DOWNLOAD_ERROR_INVALID_URL) + dts_message(TC_NAME, "invaild url err"); + else + dts_message(TC_NAME, "another error[%d]", err); +} + +static void startup(void) +{ + g_type_init(); + gloop = g_main_loop_new (NULL, 0); + is_download_success = true; +} + +static void cleanup(void) +{ + is_download_success = false; + g_main_loop_unref(gloop); + gloop = NULL; +} + +static void utc_download_start_positive1(void) +{ + const char *TC_NAME = __FUNCTION__; + int retcode = 0; + int id = 0; + + retcode = download_create(&id); + if (retcode != DOWNLOAD_ERROR_NONE) { + dts_fail(TC_NAME,"Fail to create download handle"); + return; + } + retcode = download_set_url(id, TEST_URL); + if ( retcode != DOWNLOAD_ERROR_NONE ) { + dts_fail(TC_NAME,"Fail to set url"); + return; + } + retcode = download_set_state_changed_cb(id, state_cb, NULL); + if (retcode != DOWNLOAD_ERROR_NONE) + dts_fail(TC_NAME, "Fail to set callback"); + + retcode = download_start(id); + + if (retcode == DOWNLOAD_ERROR_NONE) + g_main_loop_run(gloop); + else + is_download_success = false; + + retcode = download_unset_state_changed_cb(id); + if ( retcode != DOWNLOAD_ERROR_NONE ) + dts_message(TC_NAME,"Fail to unset callback"); + download_destroy(id); + + if (is_download_success) + dts_pass(TC_NAME, "download content is success"); + else + dts_fail(TC_NAME, "download content is not success"); +} + diff --git a/TC/testcase/utc_download_unset_progress_cb_negative.c b/TC/testcase/utc_download_unset_progress_cb_negative.c new file mode 100644 index 0000000..6cf7c00 --- /dev/null +++ b/TC/testcase/utc_download_unset_progress_cb_negative.c @@ -0,0 +1,55 @@ +/* + * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved + * + * Licensed under the Apache License, Version 2.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include <tet_api.h> +#include <download.h> + +static void startup(void); +static void cleanup(void); + +void (*tet_startup)(void) = startup; +void (*tet_cleanup)(void) = cleanup; + +static void utc_download_unset_progress_cb_negative1(void); + +struct tet_testlist tet_testlist[] = { + {utc_download_unset_progress_cb_negative1, 1}, + {NULL, 0}, +}; + +static void startup(void) +{ + +} + +static void cleanup(void) +{ + /* end of TC */ +} + +static void utc_download_unset_progress_cb_negative1(void) +{ + const char *TC_NAME = __FUNCTION__; + int retcode = 0; + + retcode = download_unset_progress_cb(-1); + + if (retcode == DOWNLOAD_ERROR_INVALID_PARAMETER) + dts_pass(TC_NAME, "retcode has invalid parameter"); + else + dts_fail(TC_NAME, "retcode does not have invalid parameter"); +} + diff --git a/TC/testcase/utc_download_unset_progress_cb_positive.c b/TC/testcase/utc_download_unset_progress_cb_positive.c new file mode 100644 index 0000000..4b4e0f5 --- /dev/null +++ b/TC/testcase/utc_download_unset_progress_cb_positive.c @@ -0,0 +1,64 @@ +/* + * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved + * + * Licensed under the Apache License, Version 2.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include <tet_api.h> +#include <download.h> + +static void startup(void); +static void cleanup(void); + +void (*tet_startup)(void) = startup; +void (*tet_cleanup)(void) = cleanup; + +static void utc_download_unset_progress_cb_positive1(void); + +struct tet_testlist tet_testlist[] = { + {utc_download_unset_progress_cb_positive1, 1}, + {NULL, 0}, +}; + +static void startup(void) +{ + +} + +static void cleanup(void) +{ + /* end of TC */ +} + +static void on_url_download_progess(int id, unsigned long long received, unsigned long long total, void *user_data) +{ + +} + +static void utc_download_unset_progress_cb_positive1(void) +{ + const char *TC_NAME = __FUNCTION__; + int retcode = 0; + int id = 0; + + download_create(&id); + download_set_progress_cb(id, on_url_download_progess, NULL); + retcode = download_unset_progress_cb(id); + download_destroy(id); + + if (retcode == DOWNLOAD_ERROR_NONE) + dts_pass(TC_NAME, "retcode has no error"); + else + dts_fail(TC_NAME, "retcode has error"); +} + diff --git a/TC/testcase/utc_download_unset_state_changed_cb_negative.c b/TC/testcase/utc_download_unset_state_changed_cb_negative.c new file mode 100644 index 0000000..7d82c65 --- /dev/null +++ b/TC/testcase/utc_download_unset_state_changed_cb_negative.c @@ -0,0 +1,56 @@ +/* + * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved + * + * Licensed under the Apache License, Version 2.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include <tet_api.h> +#include <download.h> + +static void startup(void); +static void cleanup(void); + +void (*tet_startup)(void) = startup; +void (*tet_cleanup)(void) = cleanup; + +static void utc_url_download_unset_state_changed_cb_negative1(void); + +struct tet_testlist tet_testlist[] = { + {utc_url_download_unset_state_changed_cb_negative1, 1}, + {NULL, 0}, +}; + +static void startup(void) +{ + +} + +static void cleanup(void) +{ + /* end of TC */ +} + +static void utc_url_download_unset_state_changed_cb_negative1(void) +{ + const char *TC_NAME = __FUNCTION__; + int retcode = 0; + + retcode = download_unset_state_changed_cb(-1); + + if (retcode == DOWNLOAD_ERROR_INVALID_PARAMETER) + dts_pass(TC_NAME, "retcode has invalid parameter"); + else + dts_fail(TC_NAME, "retcode does not have invalid parameter"); + +} + diff --git a/TC/testcase/utc_download_unset_state_changed_cb_positive.c b/TC/testcase/utc_download_unset_state_changed_cb_positive.c new file mode 100644 index 0000000..be578dd --- /dev/null +++ b/TC/testcase/utc_download_unset_state_changed_cb_positive.c @@ -0,0 +1,64 @@ +/* + * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved + * + * Licensed under the Apache License, Version 2.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include <tet_api.h> +#include <download.h> + +static void startup(void); +static void cleanup(void); + +void (*tet_startup)(void) = startup; +void (*tet_cleanup)(void) = cleanup; + +static void utc_url_download_unset_state_changed_cb_positive1(void); + +struct tet_testlist tet_testlist[] = { + {utc_url_download_unset_state_changed_cb_positive1, 1}, + {NULL, 0}, +}; + +static void startup(void) +{ + +} + +static void cleanup(void) +{ + /* end of TC */ +} + +static void on_url_download_state_changed(int download_id, download_state_e state, void *user_data) +{ + +} + +static void utc_url_download_unset_state_changed_cb_positive1(void) +{ + const char *TC_NAME = __FUNCTION__; + int retcode = 0; + int id = 0; + + download_create(&id); + download_set_state_changed_cb(id, on_url_download_state_changed, NULL); + retcode = download_unset_state_changed_cb(id); + download_destroy(id); + + if (retcode == DOWNLOAD_ERROR_NONE) + dts_pass(TC_NAME, "retcode has no error"); + else + dts_fail(TC_NAME, "retcode has error"); +} + diff --git a/TC/tet_scen b/TC/tet_scen new file mode 100644 index 0000000..03f029a --- /dev/null +++ b/TC/tet_scen @@ -0,0 +1,7 @@ +all + ^TEST +##### Scenarios for TEST ##### + +# Test scenario +TEST + :include:/testcase/tslist diff --git a/TC/tetbuild.cfg b/TC/tetbuild.cfg new file mode 100644 index 0000000..f7eda55 --- /dev/null +++ b/TC/tetbuild.cfg @@ -0,0 +1,5 @@ +TET_OUTPUT_CAPTURE=True # capture option for build operation checking +TET_BUILD_TOOL=make # build with using make command +TET_BUILD_FILE=-f Makefile # execution file (Makefile) for build +TET_API_COMPLIANT=True # use TET API in Test Case ? +TET_PASS_TC_NAME=True # report passed TC name in Journal file? diff --git a/TC/tetclean.cfg b/TC/tetclean.cfg new file mode 100644 index 0000000..02d7030 --- /dev/null +++ b/TC/tetclean.cfg @@ -0,0 +1,5 @@ +TET_OUTPUT_CAPTURE=True # capture option +TET_CLEAN_TOOL= make clean # clean tool +TET_CLEAN_FILE= Makefile # file for clean +TET_API_COMPLIANT=True # TET API useage +TET_PASS_TC_NAME=True # showing name , passed TC diff --git a/TC/tetexec.cfg b/TC/tetexec.cfg new file mode 100644 index 0000000..ef3e452 --- /dev/null +++ b/TC/tetexec.cfg @@ -0,0 +1,5 @@ +TET_OUTPUT_CAPTURE=True # capturing execution or not +TET_EXEC_TOOL= # ex) exec : execution tool set up/ Optional +TET_EXEC_FILE= # ex) exectool : execution file/ Optional +TET_API_COMPLIANT=True # Test case or Tool usesTET API? +TET_PASS_TC_NAME=True # showing Passed TC name ? diff --git a/build.sh b/build.sh new file mode 100755 index 0000000..7c5ce45 --- /dev/null +++ b/build.sh @@ -0,0 +1 @@ +gbs -c gbs.conf build -P tzm -A aarch64 --include-all $@ diff --git a/capi-web-url-download.manifest b/capi-web-url-download.manifest new file mode 100755 index 0000000..ca37499 --- /dev/null +++ b/capi-web-url-download.manifest @@ -0,0 +1,6 @@ +<manifest> + <request> + <domain name="_" /> + </request> +</manifest> + diff --git a/capi-web-url-download.pc.in b/capi-web-url-download.pc.in new file mode 100644 index 0000000..ebd57ce --- /dev/null +++ b/capi-web-url-download.pc.in @@ -0,0 +1,15 @@ + +# Package Information for pkg-config + +prefix=@PREFIX@ +exec_prefix=/usr +libdir=@LIB_INSTALL_DIR@ +includedir=/usr/include/web + +Name: @PC_NAME@ +Description: @PACKAGE_DESCRIPTION@ +Version: @VERSION@ +Requires: @PC_REQUIRED@ +Libs: -L${libdir} @PC_LDFLAGS@ +Cflags: -I${includedir} + diff --git a/doc/download_doc.h b/doc/download_doc.h new file mode 100644 index 0000000..03b06ce --- /dev/null +++ b/doc/download_doc.h @@ -0,0 +1,54 @@ +/* + * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved + * + * Licensed under the Apache License, Version 2.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef __TIZEN_WEB_DOWNLOAD_DOC_H__ +#define __TIZEN_WEB_DOWNLOAD_DOC_H__ + +/** + * @ingroup CAPI_CONTENT_FRAMEWORK + * @defgroup CAPI_WEB_DOWNLOAD_MODULE Download + * @brief The DOWNLOAD API provides functions to create and manage one or more download requests. + * + * @section CAPI_WEB_DOWNLOAD_MODULE_HEADER Required Header + * \#include <download.h> + * + * @section CAPI_WEB_DOWNLOAD_MODULE_OVERVIEW Overview + * The DOWNLOAD API provides functions to create and manage one or more download requests. + * + * Major features : + * - After getting @a download_id from download_create(), other APIs use @a download_id as parameter. + * - Even if the device is off, @a download_id is available for 48 hours if the user does not call download_destroy(). + * - Supports the callback that is called whenever the status of download changes. + * - Even if the client process is terminated, download is going on. + * If you want to stop a download, download_cancel() or download_destroy() should be called. + * + * @section CAPI_WEB_DOWNLOAD_MODULE_FEATURE Related Features + * This API is related with the following features:\n + * - http://tizen.org/feature/network.telephony\n + * - http://tizen.org/feature/network.wifi\n + * - http://tizen.org/feature/network.wifi.direct\n + * + * It is recommended to design feature related codes in your application for reliability.\n + * + * You can check if a device supports the related features for this API by using @ref CAPI_SYSTEM_SYSTEM_INFO_MODULE, thereby controlling the procedure of your application.\n + * + * To ensure your application is only running on the device with specific features, please define the features in your manifest file using the manifest editor in the SDK.\n + * + * More details on featuring your application can be found from <a href="../org.tizen.mobile.native.appprogramming/html/ide_sdk_tools/feature_element.htm"><b>Feature Element</b>.</a> + * + */ + +#endif /* __TIZEN_WEB_DOWNLOAD_DOC_H__ */ diff --git a/doc_prod/download_doc.h b/doc_prod/download_doc.h new file mode 100644 index 0000000..a86796f --- /dev/null +++ b/doc_prod/download_doc.h @@ -0,0 +1,40 @@ +/* + * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved + * + * Licensed under the Apache License, Version 2.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef __TIZEN_WEB_DOWNLOAD_DOC_H__ +#define __TIZEN_WEB_DOWNLOAD_DOC_H__ + +/** + * @ingroup CAPI_CONTENT_FRAMEWORK + * @defgroup CAPI_WEB_DOWNLOAD_MODULE Download + * @brief The DOWNLOAD API provides functions to create and manage one or more download requests. + * + * @section CAPI_WEB_DOWNLOAD_MODULE_HEADER Required Header + * \#include <download_product.h> + * + * @section CAPI_WEB_DOWNLOAD_MODULE_OVERVIEW Overview + * The DOWNLOAD API provides functions to create and manage one or more download requests. + * + * Major features : + * - After getting download_id from download_create(), other APIs use download_id as parameter. + * - Even if the device is off, download_id is available for 48 hours if user did't call download_destroy(). + * - support the callback that called whenever changed the status of download. + * - Even if the client process is terminated, download is going on. + * If wanna stop a download, download_cancel() or download_destroy() should be called. + * + */ + +#endif /* __TIZEN_WEB_DOWNLOAD_DOC_H__ */ diff --git a/gbs.conf b/gbs.conf new file mode 100644 index 0000000..399db56 --- /dev/null +++ b/gbs.conf @@ -0,0 +1,285 @@ +############################################### +# +# Tizen v2.4 for mobile +# +[profile.tizenmb_v2.4] +obs = obs.tizenmb +# The order is IMPORTANT! +repos = repo.tizenmb_base_v2.4_obs +buildroot = ~/GBS-ROOT-2.4-DEV + +[repo.tizenmb_base_v2.4_obs] +url = http://168.219.209.55/download/snapshots/2.4-mobile/common/latest/repos/target/packages + +############################################### +# +# Tizen v2.4 for emulator(i586) +# +[profile.tizen_emulator_v2.4] +obs = obs.tizenmb +# The order is IMPORTANT! +repos = repo.tizen_emulator_base_v2.4_obs +buildroot = ~/GBS-ROOT-2.4-DEV + +[repo.tizen_emulator_base_v2.4_obs] +url = http://168.219.209.55/download/snapshots/2.4-mobile/common/latest/repos/emulator/packages + +############################################### +# +# Tizen v2.3 for mobile +# +[profile.tizenmb_v2.3] +obs = obs.tizenmb +# The order is IMPORTANT! +repos = repo.tizenmb_supplement_v2.3, repo.tizenmb_supplement_chromium_v2.3, repo.tizenmb_base_v2.3 +buildroot = ~/GBS-ROOT-2.3-DEV + +[repo.tizenmb_supplement_v2.3] +url = http://10.251.52.177/tizenrepo/eur-open/supplement_v2.3 + +[repo.tizenmb_base_v2.3] +url = http://10.251.52.177/tizenrepo/eur-open/PtnZ910FXX_20141020.002 + +# Supplementary repo for chromium +[repo.tizenmb_supplement_chromium_v2.3] +url = http://10.251.52.177/tizenrepo/eur-open/supplement_mobile_chromium_orange_v2.3_1 + +############################################### +# +# Tizen v2.1 for mobile +# +[profile.tizenmb_v2.1] +passwdx = +obs = obs.tizenmb +# The order is IMPORTANT! +repos = repo.tizenmb_supplement, repo.tizenmb_base +buildroot = ~/GBS-ROOT + +[obs.tizenmb] +url = http://slp-build.sec.samsung.net:81 + +# base repo +[repo.tizenmb_base] +url = http://10.251.52.177/tizenrepo/jpn-dcm/Redwood8974JPNDCM_20131218.006 + +# Supplementary repo for additional rpms packages required in gbs build +[repo.tizenmb_supplement] +url = http://10.251.52.177/tizenrepo/jpn-dcm/supplement + +############################################### +# +# Tizen v2.2.1 for tv (GolfP Platform Binary) +# +[profile.tztv_v2.2.1_golfp] +repos = repo.tztv_2.2.1_golfp_supplement, repo.tztv_2.2.1_golfp_product, repo.tztv_2.2.1_golfp_profile, repo.tztv_2.2.1_golfp_product_i586, repo.tztv_2.2.1_golfp_profile_i586, repo.tztv_2.2.1_golfp_base +buildroot = ~/GBS-TV-2.2.1-GOLFP + +[repo.tztv_2.2.1_golfp_product] +url = http://10.251.52.177/tizenrepo/tv_repo/snapshots/tztv-2.2.1/product/tztv-2.2.1_20140807.3/repos/product/armv7l/packages/ + +[repo.tztv_2.2.1_golfp_profile] +url = http://10.251.52.177/tizenrepo/tv_repo/snapshots/tztv-2.2.1/product/tztv-2.2.1_20140807.3/repos/profile/armv7l/packages/ + +[repo.tztv_2.2.1_golfp_product_i586] +url = http://10.251.52.177/tizenrepo/tv_repo/snapshots/tztv-2.2.1/product/tztv-2.2.1_20140807.3/repos/product/ia32/packages/ + +[repo.tztv_2.2.1_golfp_profile_i586] +url = http://10.251.52.177/tizenrepo/tv_repo/snapshots/tztv-2.2.1/product/tztv-2.2.1_20140807.3/repos/profile/ia32/packages/ + +[repo.tztv_2.2.1_golfp_base] +url = http://10.251.52.177/tizenrepo/tv_repo/tizen-rsa/tizen-2.2.1 + +# Supplementary repo for additional rpms packages required in gbs build +[repo.tztv_2.2.1_golfp_supplement] +url = http://10.251.52.177/tizenrepo/tv_repo/supplement_tv + +############################################### +# +# Tizen v2.2.1 for tv (Prehawk Platform Binary) +# +[profile.tztv_v2.2.1_prehawk] +repos = repo.tztv_2.2.1_prehawk_supplement, repo.tztv_2.2.1_prehawk_product, repo.tztv_2.2.1_prehawk_profile, repo.tztv_2.2.1_prehawk_base +buildroot = ~/GBS-TV-2.2.1-PREHAWK + +[repo.tztv_2.2.1_prehawk_product] +url = http://10.251.52.177/tizenrepo/tv_repo/Prehawk_atsc_20141018.5/repos/product/armv7l/packages/ + +[repo.tztv_2.2.1_prehawk_profile] +url = http://10.251.52.177/tizenrepo/tv_repo/Prehawk_atsc_20141018.5/repos/profile/armv7l/packages/ + +[repo.tztv_2.2.1_prehawk_base] +url = http://10.251.52.177/tizenrepo/tv_repo/tizen-2.2.1-vd-4.8_20140822.1 + +# Supplementary repo for additional rpms packages required in gbs build +[repo.tztv_2.2.1_prehawk_supplement] +# This supplement is temporary repository for capi-media-player package +# which added new API (player_get_content_video_size). +# If this package will be merged, I'll change this codes +url = http://10.251.52.177/tizenrepo/tv_repo/supplement_tv_prehawk_player + +############################################### +# +# Tizen v3.0 for TV (arm-x11) +# +[obs.tizen] +url = https://api.tizen.org + +[profile.tztv_v3.0] +obs = obs.tizen +repos = repo.tv_arm-x11 +buildroot = ~/GBS-ROOT-3.0-TV + +[repo.tv_arm-x11] +url = http://download.tizen.org/snapshots/tizen/tv/latest/repos/arm-x11/packages/ +#url = http://download.tizen.org/snapshots/tizen/mobile/latest/repos/arm64-wayland/packages/ + +############################################### +# +# Tizen v3.0 for tv (emulator32-x11) +# +[obs.tizentv] +url = https://api.tizen.org + +[profile.tztv_v3.0_emulator] +obs = obs.tizentv +repos = repo.tztv_v3.0_emul +buildroot = ~/GBS-ROOT-3.0-TV-EMUL + +[repo.tztv_v3.0_emul] +url = http://download.tizen.org/snapshots/tizen/tv/latest/repos/emulator32-x11/packages/ + +############################################### +# +# Tizen v3.0 for tv (arm64-x11) +# +[obs.tizentv] +url = https://api.tizen.org + +[profile.tztv_v3.0_arm64-x11] +obs = obs.tizentv +repos = repo.tztv_v3.0_arm64-x11 +buildroot = ~/GBS-ROOT-3.0-TV-arm64-x11 + +[repo.tztv_v3.0_arm64-x11] +url = http://download.tizen.org/snapshots/tizen/tv/latest/repos/arm64-x11/packages/ + +############################################### +# +# Tizen v3.0 for tv (ia32-x11) +# +[obs.tizentv] +url = https://api.tizen.org + +[profile.tztv_v3.0_ia32-x11] +obs = obs.tizentv +repos = repo.tztv_v3.0_ia32-x11 +buildroot = ~/GBS-ROOT-3.0-TV-ia32-x11 + +[repo.tztv_v3.0_ia32-x11] +url = http://download.tizen.org/snapshots/tizen/tv/latest/repos/ia32-x11/packages/ + +############################################### +# +# Tizen v3.0 for tv (x86_64-x11) +# +[obs.tizentv] +url = https://api.tizen.org + +[profile.tztv_v3.0_x86_64-x11] +obs = obs.tizentv +repos = repo.tztv_v3.0_x86_64-x11 +buildroot = ~/GBS-ROOT-3.0-TV-x86_64-x11 + +[repo.tztv_v3.0_x86_64-x11] +url = http://download.tizen.org/snapshots/tizen/tv/latest/repos/x86_64-x11/packages/ + +############################################### +# +# Tizen v3.0 for TV (arm-wayland) +# +[obs.tizen] +url = https://api.tizen.org + +[profile.tztv_v3.0-wayland] +obs = obs.tizen +repos = repo.tv_arm-wayland +buildroot = ~/GBS-ROOT-3.0-TV-wayland + +[repo.tv_arm-wayland] +url = http://download.tizen.org/snapshots/tizen/tv/latest/repos/arm-wayland/packages/ + +############################################### +# +# Tizen v3.0 for tv (emulator32-wayland) +# +[obs.tizentv] +url = https://api.tizen.org + +[profile.tztv_v3.0_emulator-wayland] +obs = obs.tizentv +repos = repo.tztv_v3.0_emul-wayland +buildroot = ~/GBS-ROOT-3.0-TV-EMUL-wayland + +[repo.tztv_v3.0_emul-wayland] +url = http://download.tizen.org/snapshots/tizen/tv/latest/repos/emulator32-wayland/packages/ + +############################################### +# +# Tizen v3.0 for tv (arm64-wayland) +# +[obs.tizentv] +url = https://api.tizen.org + +[profile.tztv_v3.0_arm64-wayland] +obs = obs.tizentv +repos = repo.tztv_v3.0_arm64-wayland +buildroot = ~/GBS-ROOT-3.0-TV-arm64-wayland + +[repo.tztv_v3.0_arm64-wayland] +url = http://download.tizen.org/snapshots/tizen/tv/latest/repos/arm64-wayland/packages/ +#url = http://download.tizen.org/snapshots/tizen/mobile/latest/repos/arm64-wayland/packages/ + +############################################### +# +# Tizen v3.0 for tv (ia32-wayland) +# +[obs.tizentv] +url = https://api.tizen.org + +[profile.tztv_v3.0_ia32-wayland] +obs = obs.tizentv +repos = repo.tztv_v3.0_ia32-wayland +buildroot = ~/GBS-ROOT-3.0-TV-ia32-wayland + +[repo.tztv_v3.0_ia32-wayland] +url = http://download.tizen.org/snapshots/tizen/tv/latest/repos/ia32-wayland/packages/ + +############################################### +# +# Tizen v3.0 for tv (x86_64-wayland) +# +[obs.tizentv] +url = https://api.tizen.org + +[profile.tztv_v3.0_x86_64-wayland] +obs = obs.tizentv +repos = repo.tztv_v3.0_x86_64-wayland +buildroot = ~/GBS-ROOT-3.0-TV-x86_64-wayland + +[repo.tztv_v3.0_x86_64-wayland] +url = http://download.tizen.org/snapshots/tizen/tv/latest/repos/x86_64-wayland/packages/ + +############################################### +# +# Tizen v3.0 for Mobile (arm64-wayland) +# +[obs.tizen] +url = https://api.tizen.org + +[profile.tzm] +obs = obs.tizen +repos = repo.arm64-wayland +buildroot = ~/GBS-ROOT-3.0-Mobile-wayland64 + +[repo.arm64-wayland] +url = http://download.tizen.org/snapshots/tizen/mobile/latest/repos/arm64-wayland/packages/
\ No newline at end of file diff --git a/include/download.h b/include/download.h new file mode 100755 index 0000000..453bfb1 --- /dev/null +++ b/include/download.h @@ -0,0 +1,1384 @@ +/* + * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved + * + * Licensed under the Apache License, Version 2.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef __TIZEN_WEB_DOWNLOAD_H__ +#define __TIZEN_WEB_DOWNLOAD_H__ + +#include <tizen.h> +#include <app_control.h> + +#ifndef DEPRECATED + #define DEPRECATED __attribute__((deprecated)) +#endif + +#ifdef __cplusplus +extern "C" +{ +#endif + +/** + * @file download.h + */ + + /** + * @addtogroup CAPI_WEB_DOWNLOAD_MODULE + * @{ + */ + +/** + * @brief Enumeration for error codes of URL download. + * @since_tizen 2.3 + */ +typedef enum +{ + DOWNLOAD_ERROR_NONE = TIZEN_ERROR_NONE, /**< Successful */ + DOWNLOAD_ERROR_INVALID_PARAMETER = TIZEN_ERROR_INVALID_PARAMETER, /**< Invalid parameter */ + DOWNLOAD_ERROR_OUT_OF_MEMORY = TIZEN_ERROR_OUT_OF_MEMORY, /**< Out of memory */ + DOWNLOAD_ERROR_NETWORK_UNREACHABLE = TIZEN_ERROR_NETWORK_UNREACHABLE, /**< Network is unreachable */ + DOWNLOAD_ERROR_CONNECTION_TIMED_OUT = TIZEN_ERROR_CONNECTION_TIME_OUT, /**< HTTP session time-out */ + DOWNLOAD_ERROR_NO_SPACE = TIZEN_ERROR_FILE_NO_SPACE_ON_DEVICE, /**< No space left on device */ + DOWNLOAD_ERROR_PERMISSION_DENIED = TIZEN_ERROR_PERMISSION_DENIED, /**< Permission denied */ + DOWNLOAD_ERROR_NOT_SUPPORTED = TIZEN_ERROR_NOT_SUPPORTED, /**< Not supported */ + DOWNLOAD_ERROR_INVALID_STATE = TIZEN_ERROR_DOWNLOAD | 0x21, /**< Invalid state */ + DOWNLOAD_ERROR_CONNECTION_FAILED = TIZEN_ERROR_DOWNLOAD | 0x22, /**< Connection failed */ + DOWNLOAD_ERROR_INVALID_URL = TIZEN_ERROR_DOWNLOAD | 0x24, /**< Invalid URL */ + DOWNLOAD_ERROR_INVALID_DESTINATION = TIZEN_ERROR_DOWNLOAD | 0x25, /**< Invalid destination */ + DOWNLOAD_ERROR_TOO_MANY_DOWNLOADS = TIZEN_ERROR_DOWNLOAD | 0x26, /**< Too many simultaneous downloads */ + DOWNLOAD_ERROR_QUEUE_FULL = TIZEN_ERROR_DOWNLOAD | 0x27, /**< Download server queue is full*/ + DOWNLOAD_ERROR_ALREADY_COMPLETED = TIZEN_ERROR_DOWNLOAD | 0x28, /**< The download is already completed */ + DOWNLOAD_ERROR_FILE_ALREADY_EXISTS = TIZEN_ERROR_DOWNLOAD | 0x29, /**< Failed to rename the downloaded file */ + DOWNLOAD_ERROR_CANNOT_RESUME = TIZEN_ERROR_DOWNLOAD | 0x2a, /**< Cannot resume */ + DOWNLOAD_ERROR_FIELD_NOT_FOUND = TIZEN_ERROR_DOWNLOAD | 0x2b, /**< Specified field not found */ + DOWNLOAD_ERROR_TOO_MANY_REDIRECTS = TIZEN_ERROR_DOWNLOAD | 0x30, /**< Too many redirects from HTTP response header*/ + DOWNLOAD_ERROR_UNHANDLED_HTTP_CODE = TIZEN_ERROR_DOWNLOAD | 0x31, /**< The download cannot handle the HTTP status value */ + DOWNLOAD_ERROR_REQUEST_TIMEOUT = TIZEN_ERROR_DOWNLOAD | 0x32, /**< No action after client creates a download ID*/ + DOWNLOAD_ERROR_RESPONSE_TIMEOUT = TIZEN_ERROR_DOWNLOAD | 0x33, /**< No call to start API for some time although the download is created*/ + DOWNLOAD_ERROR_SYSTEM_DOWN = TIZEN_ERROR_DOWNLOAD | 0x34, /**< No response from client after rebooting download daemon*/ + DOWNLOAD_ERROR_ID_NOT_FOUND = TIZEN_ERROR_DOWNLOAD | 0x35, /**< Download ID does not exist in download service module*/ + DOWNLOAD_ERROR_INVALID_NETWORK_TYPE = TIZEN_ERROR_DOWNLOAD | 0x36, /**< Network bonding is set but network type is not set as DOWNLOAD_NETWORK_ALL*/ + DOWNLOAD_ERROR_NO_DATA = TIZEN_ERROR_NO_DATA, /**< No data because the set API is not called */ + DOWNLOAD_ERROR_IO_ERROR = TIZEN_ERROR_IO_ERROR , /**< Internal I/O error */ +} download_error_e; + + +/** + * @brief Enumeration for download states. + * @since_tizen 2.3 + */ +typedef enum +{ + DOWNLOAD_STATE_NONE, /**< Unhandled exception */ + DOWNLOAD_STATE_READY, /**< Ready to download */ + DOWNLOAD_STATE_QUEUED, /**< Queued to start downloading */ + DOWNLOAD_STATE_DOWNLOADING, /**< Currently downloading */ + DOWNLOAD_STATE_PAUSED, /**< The download is waiting to resume */ + DOWNLOAD_STATE_COMPLETED, /**< The download is completed */ + DOWNLOAD_STATE_FAILED, /**< The download failed */ + DOWNLOAD_STATE_CANCELED, /**< User canceled the download item */ +} download_state_e; + +/** + * @brief Enumeration for network type for downloading. + * @since_tizen 2.3 + */ +typedef enum +{ + DOWNLOAD_NETWORK_DATA_NETWORK, /**< Download is available through data network */ + DOWNLOAD_NETWORK_WIFI, /**< Download is available through WiFi */ + DOWNLOAD_NETWORK_WIFI_DIRECT, /**< Download is available through WiFi-Direct */ + DOWNLOAD_NETWORK_ALL /**< Download is available through either data network or WiFi */ +} download_network_type_e; + + +/** + * @brief Enumeration for notification types when a client wants to register. + * @since_tizen 2.3 + * + * @see download_set_notification_type() + * @see download_get_notification_type() + */ +typedef enum +{ + DOWNLOAD_NOTIFICATION_TYPE_NONE = 0, /**< Do not register notification */ + DOWNLOAD_NOTIFICATION_TYPE_COMPLETE_ONLY, /**< Completion notification for success state and failed state */ + DOWNLOAD_NOTIFICATION_TYPE_ALL /**< All download notifications for ongoing state, success state and failed state */ +} download_notification_type_e; + + +/** + * @brief Enumeration for the type of notification app control action which the client wants to set when registering notification. + * @since_tizen 2.3 + * + * @see download_set_notification_app_control() + * @see download_get_notification_app_control() + */ +typedef enum +{ + DOWNLOAD_NOTIFICATION_APP_CONTROL_TYPE_ONGOING = 0, /**< App control action for failed and ongoing notification */ + DOWNLOAD_NOTIFICATION_APP_CONTROL_TYPE_COMPLETE, /**< App control action for completed notification */ + DOWNLOAD_NOTIFICATION_APP_CONTROL_TYPE_FAILED /**< App control action for failed notification*/ +} download_notification_app_control_type_e; + +/** + * @brief Called when a download state is changed. + * + * @since_tizen 2.3 + * + * @param[in] download_id The download ID + * @param[in] state The state of download + * @param[in] user_data The user data passed from download_set_state_changed_cb() + * + * @pre download_start() will invoke this callback if you register this callback using download_set_state_changed_cb(). + * + * @see download_set_state_changed_cb() + * @see download_unset_state_changed_cb() + */ +typedef void (*download_state_changed_cb) (int download_id, + download_state_e state, void *user_data); + +/** + * @brief Called when the progress of download changes. + * + * @since_tizen 2.3 + * + * @remarks This callback function is only invoked in the downloading state. + * + * @param[in] download_id The download ID + * @param[in] received The size of the data received in bytes + * @param[in] user_data The user data passed from download_set_progress_cb() + * + * @pre This callback function is invoked if you register this callback using download_set_progress_cb(). + * + * @see download_cancel() + * @see download_set_progress_cb() + * @see download_unset_progress_cb() + */ +typedef void (*download_progress_cb) (int download_id, unsigned long long received, void *user_data); + +/** + * @brief Creates a new download request and return its download ID. + * + * @since_tizen 2.3 + * @privlevel public + * @privilege %http://tizen.org/privilege/download + * + * @remarks The @a download_id is released with download_destroy() by client. + * + * @param[out] download_id The download ID that is newly created on success + * + * @return @c 0 on success, + * otherwise a negative error value + * + * @retval #DOWNLOAD_ERROR_NONE Successful + * @retval #DOWNLOAD_ERROR_INVALID_PARAMETER Invalid parameter + * @retval #DOWNLOAD_ERROR_OUT_OF_MEMORY Out of memory + * @retval #DOWNLOAD_ERROR_IO_ERROR Internal I/O error + * @retval #DOWNLOAD_ERROR_QUEUE_FULL Download server queue is full + * @retval #DOWNLOAD_ERROR_PERMISSION_DENIED Permission denied + * + * @post The download state will be #DOWNLOAD_STATE_READY. + * + * @see download_destroy() + */ +int download_create(int *download_id); + + +/** + * @brief Unloads all data concerning a download ID from memory. + * + * @details After calling this API, a download ID is existed at DB in certain time. + * Within that time, it is able to use the other API with the download ID. + * + * @since_tizen 2.3 + * @privlevel public + * @privilege %http://tizen.org/privilege/download + * + * + * @remarks If #DOWNLOAD_ERROR_ID_NOT_FOUND is returned, it means that the download ID is completely removed from DB. + * + * @param[in] download_id The download ID + * + * @return @c 0 on success, + * otherwise a negative error value + * + * @retval #DOWNLOAD_ERROR_NONE Successful + * @retval #DOWNLOAD_ERROR_INVALID_PARAMETER Invalid parameter + * @retval #DOWNLOAD_ERROR_ID_NOT_FOUND No download ID + * @retval #DOWNLOAD_ERROR_PERMISSION_DENIED Permission denied + * + * @see download_create() + */ +int download_destroy(int download_id); + + +/** + * @brief Sets the URL to download. + * + * @since_tizen 2.3 + * @privlevel public + * @privilege %http://tizen.org/privilege/download + * + * @remarks This function should be called before downloading (see download_start()). + * + * @param[in] download_id The download ID + * @param[in] url The URL to download \n + * If @a url is @c NULL, it clears the previous value. + * + * @return @c 0 on success, + * otherwise a negative error value + * + * @retval #DOWNLOAD_ERROR_NONE Successful + * @retval #DOWNLOAD_ERROR_INVALID_PARAMETER Invalid parameter + * @retval #DOWNLOAD_ERROR_OUT_OF_MEMORY Out of memory + * @retval #DOWNLOAD_ERROR_INVALID_STATE Invalid state + * @retval #DOWNLOAD_ERROR_ID_NOT_FOUND No download ID + * @retval #DOWNLOAD_ERROR_PERMISSION_DENIED Permission denied + * + * @pre The state must be #DOWNLOAD_STATE_READY, #DOWNLOAD_STATE_FAILED, or #DOWNLOAD_STATE_CANCELED. + * + * @see download_get_url() + */ +int download_set_url(int download_id, const char *url); + + +/** + * @brief Gets the URL to download. + * + * @since_tizen 2.3 + * @privlevel public + * @privilege %http://tizen.org/privilege/download + * + * @remarks You must release @a url using free(). + * + * @param[in] download_id The download ID + * @param[out] url The URL to download + * + * @return @c 0 on success, + * otherwise a negative error value + * + * @retval #DOWNLOAD_ERROR_NONE Successful + * @retval #DOWNLOAD_ERROR_INVALID_PARAMETER Invalid parameter + * @retval #DOWNLOAD_ERROR_OUT_OF_MEMORY Out of memory + * @retval #DOWNLOAD_ERROR_ID_NOT_FOUND No download ID + * @retval #DOWNLOAD_ERROR_PERMISSION_DENIED Permission denied + * + * @see download_set_url() + */ +int download_get_url(int download_id, char **url); + + +/** + * @brief Sets the allowed network type for the downloaded file. + * + * @details The file can be downloaded only under the allowed network. + * + * @since_tizen 2.3 + * @privlevel public + * @privilege %http://tizen.org/privilege/download + * + * @remarks This function should be called before downloading (see download_start()). + * + * @param[in] download_id The download ID + * @param[in] net_type The network type that the client prefers + * + * @return @c 0 on success, + * otherwise a negative error value + * + * @retval #DOWNLOAD_ERROR_NONE Successful + * @retval #DOWNLOAD_ERROR_INVALID_PARAMETER Invalid parameter + * @retval #DOWNLOAD_ERROR_INVALID_STATE Invalid state + * @retval #DOWNLOAD_ERROR_ID_NOT_FOUND No download ID + * @retval #DOWNLOAD_ERROR_PERMISSION_DENIED Permission denied + * @retval #DOWNLOAD_ERROR_NOT_SUPPORTED Not supported + * + * @pre The state must be #DOWNLOAD_STATE_READY, #DOWNLOAD_STATE_FAILED, or #DOWNLOAD_STATE_CANCELED. + * + * @see download_get_network_type() + * @see #download_network_type_e + */ +int download_set_network_type(int download_id, download_network_type_e net_type); + + +/** + * @brief Gets the network type for the downloaded file. + * + * @since_tizen 2.3 + * @privlevel public + * @privilege %http://tizen.org/privilege/download + * + * @param[in] download_id The download ID + * @param[out] net_type The network type that is defined by client + * + * @return @c 0 on success, + * otherwise a negative error value + * + * @retval #DOWNLOAD_ERROR_NONE Successful + * @retval #DOWNLOAD_ERROR_INVALID_PARAMETER Invalid parameter + * @retval #DOWNLOAD_ERROR_ID_NOT_FOUND No download ID + * @retval #DOWNLOAD_ERROR_PERMISSION_DENIED Permission denied + * + * @see download_set_network_type() + * @see #download_network_type_e + */ +int download_get_network_type(int download_id, download_network_type_e *net_type); + +/** + * @brief Sets the destination for the downloaded file. + * + * @details The file will be downloaded to the specified destination. + * The downloaded file is saved to an auto-generated file name in the destination. + * If the destination is not specified, the file will be downloaded to default storage (see the @ref CAPI_SYSTEM_STORAGE_MODULE API). + * + * @since_tizen 2.3 + * @privlevel public + * @privilege %http://tizen.org/privilege/download + * + * @remarks This function should be called before downloading (see download_start()). + * + * @param[in] download_id The download ID + * @param[in] path The absolute path to the downloaded file \n + * If @a path is @c NULL, it clears the previous value. + * + * @return @c 0 on success, + * otherwise a negative error value + * + * @retval #DOWNLOAD_ERROR_NONE Successful + * @retval #DOWNLOAD_ERROR_INVALID_PARAMETER Invalid parameter + * @retval #DOWNLOAD_ERROR_OUT_OF_MEMORY Out of memory + * @retval #DOWNLOAD_ERROR_INVALID_STATE Invalid state + * @retval #DOWNLOAD_ERROR_ID_NOT_FOUND No download ID + * @retval #DOWNLOAD_ERROR_PERMISSION_DENIED Permission denied + * + * @pre The state must be #DOWNLOAD_STATE_READY, #DOWNLOAD_STATE_FAILED, or #DOWNLOAD_STATE_CANCELED. + * + * @see download_get_destination() + */ +int download_set_destination(int download_id, const char *path); + + +/** + * @brief Gets the destination path for the downloaded file. + * + * @since_tizen 2.3 + * @privlevel public + * @privilege %http://tizen.org/privilege/download + * + * @remarks You must release @a path using free(). + * + * @param[in] download_id The download ID + * @param[out] path The absolute path to the downloaded file + * + * @return @c 0 on success, + * otherwise a negative error value + * + * @retval #DOWNLOAD_ERROR_NONE Successful + * @retval #DOWNLOAD_ERROR_INVALID_PARAMETER Invalid parameter + * @retval #DOWNLOAD_ERROR_OUT_OF_MEMORY Out of memory + * @retval #DOWNLOAD_ERROR_ID_NOT_FOUND No download ID + * @retval #DOWNLOAD_ERROR_PERMISSION_DENIED Permission denied + * + * @see download_set_destination() + */ +int download_get_destination(int download_id, char **path); + + +/** + * @brief Sets the name for the downloaded file. + * + * @details The file will be saved in the specified destination with the given file name. + * If the file name is not specified, the downloaded file will be saved with an auto-generated file name in the destination. + * + * @since_tizen 2.3 + * @privlevel public + * @privilege %http://tizen.org/privilege/download + * + * @remarks This function should be called before downloading (see download_start()). + * + * @param[in] download_id The download ID + * @param[in] file_name The file name for the downloaded file \n + * If @a name is @c NULL it clears the previous value. + * + * @return @c 0 on success, + * otherwise a negative error value + * + * @retval #DOWNLOAD_ERROR_NONE Successful + * @retval #DOWNLOAD_ERROR_INVALID_PARAMETER Invalid parameter + * @retval #DOWNLOAD_ERROR_OUT_OF_MEMORY Out of memory + * @retval #DOWNLOAD_ERROR_INVALID_STATE Invalid state + * @retval #DOWNLOAD_ERROR_ID_NOT_FOUND No download ID + * @retval #DOWNLOAD_ERROR_PERMISSION_DENIED Permission denied + * + * @pre The state must be #DOWNLOAD_STATE_READY, #DOWNLOAD_STATE_FAILED, or #DOWNLOAD_STATE_CANCELED. + * + * @see download_get_file_name() + */ +int download_set_file_name(int download_id, const char *file_name); + +/** + * @brief Gets the name of the downloaded file set previously by download_set_file_name(). + * + * @details If the name is not set, @c NULL is returned. + * + * @since_tizen 2.3 + * @privlevel public + * @privilege %http://tizen.org/privilege/download + * + * @remarks You must release @a file_name using free(). + * + * @param[in] download_id The download ID + * @param[out] file_name The file name which is set by user + * + * @return @c 0 on success, + * otherwise a negative error value + * + * @retval #DOWNLOAD_ERROR_NONE Successful + * @retval #DOWNLOAD_ERROR_INVALID_PARAMETER Invalid parameter + * @retval #DOWNLOAD_ERROR_OUT_OF_MEMORY Out of memory + * @retval #DOWNLOAD_ERROR_ID_NOT_FOUND No download ID + * @retval #DOWNLOAD_ERROR_PERMISSION_DENIED Permission denied + * + * @see download_set_file_name() + */ +int download_get_file_name(int download_id, char **file_name); + + +/** + * @brief Gets the absolute path to save the downloaded file. + * + * @since_tizen 2.3 + * @privlevel public + * @privilege %http://tizen.org/privilege/download + * + * @remarks This function returns #DOWNLOAD_ERROR_INVALID_STATE if the download is not completed. + * You must release @a path using free(). + * + * @param[in] download_id The download ID + * @param[out] path The absolute path to the downloaded file + * + * @return @c 0 on success, + * otherwise a negative error value + * + * @retval #DOWNLOAD_ERROR_NONE Successful + * @retval #DOWNLOAD_ERROR_INVALID_PARAMETER Invalid parameter + * @retval #DOWNLOAD_ERROR_OUT_OF_MEMORY Out of memory + * @retval #DOWNLOAD_ERROR_ID_NOT_FOUND No download ID + * @retval #DOWNLOAD_ERROR_PERMISSION_DENIED Permission denied + * + * @pre The download state must be #DOWNLOAD_STATE_COMPLETED. + * + * @see download_set_file_name() + * @see download_set_destination() + */ +int download_get_downloaded_file_path(int download_id, char **path); + + +/** + * @brief Gets the MIME type of the downloaded content. + * + * @since_tizen 2.3 + * @privlevel public + * @privilege %http://tizen.org/privilege/download + * + * @remarks This function returns #DOWNLOAD_ERROR_INVALID_STATE if the download has not been started. + * You must release @a mime_type using free(). + * + * @param[in] download_id The download ID + * @param[out] mime_type The MIME type of the downloaded file + * + * @return @c 0 on success, + * otherwise a negative error value + * + * @retval #DOWNLOAD_ERROR_NONE Successful + * @retval #DOWNLOAD_ERROR_INVALID_PARAMETER Invalid parameter + * @retval #DOWNLOAD_ERROR_OUT_OF_MEMORY Out of memory + * @retval #DOWNLOAD_ERROR_ID_NOT_FOUND No download ID + * @retval #DOWNLOAD_ERROR_PERMISSION_DENIED Permission denied + * + * @see download_set_file_name() + * @see download_set_destination() + * @see download_get_downloaded_file_path() + */ +int download_get_mime_type(int download_id, char **mime_type); + + +/** + * @brief Enables or disables auto download. + * @details If this option is enabled, + * the previous downloading item is restarted automatically as soon as the download daemon is restarted. + * The download progress continues after the client process is terminated. + * + * @since_tizen 2.3 + * @privlevel public + * @privilege %http://tizen.org/privilege/download + * + * @remarks The client should call download_set_notification() and download_set_notification_extra_param() after calling this API. + * If it is not done, the user will not receive the download result in case the client process is not alive. \n + * The default value is @c false. + * + * @param[in] download_id The download ID + * @param[in] enable Set @c true to enable auto download, + * otherwise set @c false to disable auto download + * + * @return @c 0 on success, + * otherwise a negative error value + * + * @retval #DOWNLOAD_ERROR_NONE Successful + * @retval #DOWNLOAD_ERROR_INVALID_PARAMETER Invalid parameter + * @retval #DOWNLOAD_ERROR_ID_NOT_FOUND No download ID + * @retval #DOWNLOAD_ERROR_PERMISSION_DENIED Permission denied + * + * @pre The state must be #DOWNLOAD_STATE_READY, #DOWNLOAD_STATE_FAILED, or #DOWNLOAD_STATE_CANCELED. + * + * @see download_get_auto_download() + * @see download_set_notification() + * @see download_set_notification_extra_param() + * + */ +int download_set_auto_download(int download_id, bool enable); + + +/** + * @brief Checks whether auto download is enabled. + * + * @since_tizen 2.3 + * @privlevel public + * @privilege %http://tizen.org/privilege/download + * + * @param[in] download_id The download ID + * @param[out] enable @c true if auto download is enabled, + * otherwise @c false if auto download is disabled + * + * @return @c 0 on success, + * otherwise a negative error value + * + * @retval #DOWNLOAD_ERROR_NONE Successful + * @retval #DOWNLOAD_ERROR_INVALID_PARAMETER Invalid parameter + * @retval #DOWNLOAD_ERROR_ID_NOT_FOUND No download ID + * @retval #DOWNLOAD_ERROR_PERMISSION_DENIED Permission denied + * + * @see download_set_auto_download() + */ +int download_get_auto_download(int download_id, bool *enable); + + +/** + * @brief Adds a HTTP header field to the download request. + * + * @details The given HTTP header field will be included with the HTTP request of the download request. + * For more information, see <a href="HTTP://www.w3.org/Protocols/rfc2616/rfc2616-sec4.html#sec4.2">HTTP/1.1: HTTP Message Headers</a>. + * + * @since_tizen 2.3 + * @privlevel public + * @privilege %http://tizen.org/privilege/download + * + * @remarks This function should be called before downloading (see download_start()). + * This function replaces any existing value for the given key. + * This function returns #DOWNLOAD_ERROR_INVALID_PARAMETER if @a field or @a value is a zero-length string. + * + * @param[in] download_id The download ID + * @param[in] field The name of the HTTP header field + * @param[in] value The value associated with given field + * + * @return @c 0 on success, + * otherwise a negative error value + * + * @retval #DOWNLOAD_ERROR_NONE Successful + * @retval #DOWNLOAD_ERROR_INVALID_PARAMETER Invalid parameter + * @retval #DOWNLOAD_ERROR_OUT_OF_MEMORY Out of memory + * @retval #DOWNLOAD_ERROR_INVALID_STATE Invalid state + * @retval #DOWNLOAD_ERROR_IO_ERROR Internal I/O error + * @retval #DOWNLOAD_ERROR_ID_NOT_FOUND No download ID + * @retval #DOWNLOAD_ERROR_PERMISSION_DENIED Permission denied + * + * @pre The state must be #DOWNLOAD_STATE_READY, #DOWNLOAD_STATE_FAILED, or #DOWNLOAD_STATE_CANCELED. + * + * @see download_get_http_header_field() + * @see download_remove_http_header_field() + */ +int download_add_http_header_field(int download_id, const char *field, const char *value); + + +/** + * @brief Gets a value associated with a given HTTP header field from the download. + * + * @since_tizen 2.3 + * @privlevel public + * @privilege %http://tizen.org/privilege/download + * + * @remarks This function returns #DOWNLOAD_ERROR_INVALID_PARAMETER if @a field is zero-length string. + * You must release @a value using free(). + * + * @param[in] download_id The download ID + * @param[in] field The name of the HTTP header field + * @param[out] value The value associated with given field + * + * @return @c 0 on success, + * otherwise a negative error value + * + * @retval #DOWNLOAD_ERROR_NONE Successful + * @retval #DOWNLOAD_ERROR_INVALID_PARAMETER Invalid parameter + * @retval #DOWNLOAD_ERROR_OUT_OF_MEMORY Out of memory + * @retval #DOWNLOAD_ERROR_INVALID_STATE Invalid state + * @retval #DOWNLOAD_ERROR_FIELD_NOT_FOUND Specified field not found + * @retval #DOWNLOAD_ERROR_ID_NOT_FOUND No download ID + * @retval #DOWNLOAD_ERROR_PERMISSION_DENIED Permission denied + * + * @see download_add_http_header_field() + * @see download_remove_http_header_field() + */ +int download_get_http_header_field(int download_id, const char *field, char **value); + +/** + * @brief Gets all the HTTP header fields added to the download request. + * + * @since_tizen 2.3 + * @privlevel public + * @privilege %http://tizen.org/privilege/download + * + * @remarks You must release @a value using free(). + * + * @param[in] download_id The download ID + * @param[out] fields The array of the HTTP header fields + * @param[out] length The number of the HTTP header fields + * + * @return @c 0 on success, + * otherwise a negative error value + * + * @retval #DOWNLOAD_ERROR_NONE Successful + * @retval #DOWNLOAD_ERROR_INVALID_PARAMETER Invalid parameter + * @retval #DOWNLOAD_ERROR_OUT_OF_MEMORY Out of memory + * @retval #DOWNLOAD_ERROR_INVALID_STATE Invalid state + * @retval #DOWNLOAD_ERROR_ID_NOT_FOUND No download ID + * @retval #DOWNLOAD_ERROR_PERMISSION_DENIED Permission denied + * + * @see download_add_http_header_field() + * @see download_remove_http_header_field() + */ +int download_get_http_header_field_list(int download_id, char ***fields, int *length); + +/** + * @brief Removes a given HTTP header field from the download. + * + * @since_tizen 2.3 + * @privlevel public + * @privilege %http://tizen.org/privilege/download + * + * @remarks This function should be called before downloading (see download_start()). + * This function returns #DOWNLOAD_ERROR_INVALID_PARAMETER if field is zero-length string. + * + * @param[in] download_id The download ID + * @param[in] field The name of the HTTP header field + * + * @return @c 0 on success, + * otherwise a negative error value + * + * @retval #DOWNLOAD_ERROR_NONE Successful + * @retval #DOWNLOAD_ERROR_INVALID_PARAMETER Invalid parameter + * @retval #DOWNLOAD_ERROR_OUT_OF_MEMORY Out of memory + * @retval #DOWNLOAD_ERROR_INVALID_STATE Invalid state + * @retval #DOWNLOAD_ERROR_FIELD_NOT_FOUND Specified field not found + * @retval #DOWNLOAD_ERROR_IO_ERROR Internal I/O error + * @retval #DOWNLOAD_ERROR_ID_NOT_FOUND No download ID + * @retval #DOWNLOAD_ERROR_PERMISSION_DENIED Permission denied + * + * @pre The state must be #DOWNLOAD_STATE_READY, #DOWNLOAD_STATE_FAILED, or #DOWNLOAD_STATE_CANCELED. + * + * @see download_add_http_header_field() + * @see download_get_http_header_field() + */ +int download_remove_http_header_field(int download_id, const char *field); + + +/** + * @brief Registers a callback function to be invoked when a download state is changed. + * + * @since_tizen 2.3 + * @privlevel public + * @privilege %http://tizen.org/privilege/download + * + * @remarks This function should be called before downloading (see download_start()). + * + * @param[in] download_id The download ID + * @param[in] callback The callback function to register + * @param[in] user_data The user data to be passed to the callback function + * + * @return @c 0 on success, + * otherwise a negative error value + * + * @retval #DOWNLOAD_ERROR_NONE Successful + * @retval #DOWNLOAD_ERROR_INVALID_PARAMETER Invalid parameter + * @retval #DOWNLOAD_ERROR_ID_NOT_FOUND No download ID + * @retval #DOWNLOAD_ERROR_PERMISSION_DENIED Permission denied + * + * @post download_state_changed_cb() will be invoked. + * + * @see download_unset_state_changed_cb() + * @see download_state_changed_cb() +*/ +int download_set_state_changed_cb(int download_id, download_state_changed_cb callback, void* user_data); + + +/** + * @brief Unregisters the download state change callback function. + * + * @since_tizen 2.3 + * @privlevel public + * @privilege %http://tizen.org/privilege/download + * + * @remarks This function should be called before downloading (see download_start()). + * + * @param[in] download_id The download ID + * + * @return @c 0 on success, + * otherwise a negative error value + * + * @retval #DOWNLOAD_ERROR_NONE Successful + * @retval #DOWNLOAD_ERROR_INVALID_PARAMETER Invalid parameter + * @retval #DOWNLOAD_ERROR_ID_NOT_FOUND No download ID + * @retval #DOWNLOAD_ERROR_PERMISSION_DENIED Permission denied + * + * @see download_set_state_changed_cb() + * @see download_state_changed_cb() +*/ +int download_unset_state_changed_cb(int download_id); + + +/** + * @brief Registers a callback function to be invoked when progress of the download changes. + * + * @since_tizen 2.3 + * @privlevel public + * @privilege %http://tizen.org/privilege/download + * + * @remarks This function should be called before downloading (see download_start()). + * + * @param[in] download_id The download ID + * @param[in] callback The callback function to register + * @param[in] user_data The user data to be passed to the callback function + * + * @return @c 0 on success, + * otherwise a negative error value + * + * @retval #DOWNLOAD_ERROR_NONE Successful + * @retval #DOWNLOAD_ERROR_INVALID_PARAMETER Invalid parameter + * @retval #DOWNLOAD_ERROR_INVALID_STATE Invalid state + * @retval #DOWNLOAD_ERROR_ID_NOT_FOUND No download ID + * @retval #DOWNLOAD_ERROR_PERMISSION_DENIED Permission denied + * + * @post download_progress_cb() will be invoked. + * + * @see download_unset_progress_cb() + * @see download_progress_cb() +*/ +int download_set_progress_cb(int download_id, download_progress_cb callback, void *user_data); + + +/** + * @brief Unregisters the download progress change callback function. + * + * @since_tizen 2.3 + * @privlevel public + * @privilege %http://tizen.org/privilege/download + * + * @remarks This function should be called before downloading (see download_start()). + * + * @param[in] download_id The download ID + * + * @return @c 0 on success, + * otherwise a negative error value + * + * @retval #DOWNLOAD_ERROR_NONE Successful + * @retval #DOWNLOAD_ERROR_INVALID_PARAMETER Invalid parameter + * @retval #DOWNLOAD_ERROR_INVALID_STATE Invalid state + * @retval #DOWNLOAD_ERROR_ID_NOT_FOUND No download ID + * @retval #DOWNLOAD_ERROR_PERMISSION_DENIED Permission denied + * + * @see download_set_progress_cb() + * @see download_progress_cb() +*/ +int download_unset_progress_cb(int download_id); + + +/** + * @brief Starts or resumes the download, asynchronously. + * + * @details This function starts to download the current URL, or resumes the download if paused. + * + * @since_tizen 2.3 + * @privlevel public + * @privilege %http://tizen.org/privilege/download + * + * @remarks The URL is the mandatory information to start the download. + * @remarks It should call download_set_progress_cb() and download_set_state_changed_cb() again + * after the client process is restarted or download_destroy() is called. + * + * @param[in] download_id The download ID + * + * @return @c 0 on success, + * otherwise a negative error value + * + * @retval #DOWNLOAD_ERROR_NONE Successful + * @retval #DOWNLOAD_ERROR_INVALID_PARAMETER Invalid parameter + * @retval #DOWNLOAD_ERROR_OUT_OF_MEMORY Out of memory + * @retval #DOWNLOAD_ERROR_INVALID_STATE Invalid state + * @retval #DOWNLOAD_ERROR_IO_ERROR Internal I/O error + * @retval #DOWNLOAD_ERROR_INVALID_URL Invalid URL + * @retval #DOWNLOAD_ERROR_INVALID_DESTINATION Invalid destination + * @retval #DOWNLOAD_ERROR_ID_NOT_FOUND No download ID + * @retval #DOWNLOAD_ERROR_QUEUE_FULL Download server queue is full + * @retval #DOWNLOAD_ERROR_PERMISSION_DENIED Permission denied + * + * @pre The download state must be #DOWNLOAD_STATE_READY, #DOWNLOAD_STATE_PAUSED, #DOWNLOAD_STATE_CANCELED, or #DOWNLOAD_STATE_FAILED. + * @post The download state will be #DOWNLOAD_STATE_QUEUED or #DOWNLOAD_STATE_DOWNLOADING. + * + * @see download_set_url() + * @see download_pause() + * @see download_cancel() + */ +int download_start(int download_id); + + +/** + * @brief Pauses the download, asynchronously. + * + * @since_tizen 2.3 + * @privlevel public + * @privilege %http://tizen.org/privilege/download + * + * @remarks The paused download can be restarted with download_start() or cancelled with download_cancel(). + * + * @param[in] download_id The download ID + * + * @return @c 0 on success, + * otherwise a negative error value + * + * @retval #DOWNLOAD_ERROR_NONE Successful + * @retval #DOWNLOAD_ERROR_INVALID_PARAMETER Invalid parameter + * @retval #DOWNLOAD_ERROR_OUT_OF_MEMORY Out of memory + * @retval #DOWNLOAD_ERROR_INVALID_STATE Invalid state + * @retval #DOWNLOAD_ERROR_IO_ERROR Internal I/O error + * @retval #DOWNLOAD_ERROR_ID_NOT_FOUND No download ID + * @retval #DOWNLOAD_ERROR_PERMISSION_DENIED Permission denied + * + * @pre The download state must be #DOWNLOAD_STATE_DOWNLOADING. + * @post The download state will be #DOWNLOAD_STATE_PAUSED. + * + * @see download_start() + * @see download_cancel() + */ +int download_pause(int download_id); + + +/** + * @brief Cancels the download, asynchronously. + * + * @details This function cancels the running download and its state will be #DOWNLOAD_STATE_READY. + * + * @since_tizen 2.3 + * @privlevel public + * @privilege %http://tizen.org/privilege/download + * + * @remarks The canceled download can be restarted with download_start(). + * + * @param[in] download_id The download ID + * + * @return @c 0 on success, + * otherwise a negative error value + * + * @retval #DOWNLOAD_ERROR_NONE Successful + * @retval #DOWNLOAD_ERROR_INVALID_PARAMETER Invalid parameter + * @retval #DOWNLOAD_ERROR_OUT_OF_MEMORY Out of memory + * @retval #DOWNLOAD_ERROR_INVALID_STATE Invalid state + * @retval #DOWNLOAD_ERROR_IO_ERROR Internal I/O error + * @retval #DOWNLOAD_ERROR_ID_NOT_FOUND No download ID + * @retval #DOWNLOAD_ERROR_PERMISSION_DENIED Permission denied + * + * @pre The download state must be #DOWNLOAD_STATE_QUEUED, #DOWNLOAD_STATE_DOWNLOADING, or #DOWNLOAD_STATE_PAUSED. + * @post The download state will be #DOWNLOAD_STATE_CANCELED. + * + * @see download_start() + */ +int download_cancel(int download_id); + + +/** + * @brief Gets the current state of the download. + * + * @since_tizen 2.3 + * @privlevel public + * @privilege %http://tizen.org/privilege/download + * + * @param[in] download_id The download ID + * @param[out] state The current state of the download + * + * @return @c 0 on success, + * otherwise a negative error value + * + * @retval #DOWNLOAD_ERROR_NONE Successful + * @retval #DOWNLOAD_ERROR_INVALID_PARAMETER Invalid parameter + * @retval #DOWNLOAD_ERROR_ID_NOT_FOUND No download ID + * @retval #DOWNLOAD_ERROR_PERMISSION_DENIED Permission denied + * + * @see #download_state_e + */ +int download_get_state(int download_id, download_state_e *state); + + +/** + * @brief Gets the full path of the temporary file to store downloaded content. + * + * @since_tizen 2.3 + * @privlevel public + * @privilege %http://tizen.org/privilege/download + * + * @param[in] download_id The download ID + * @param[out] temp_path The full path of temporary file + * + * @return @c 0 on success, + * otherwise a negative error value + * + * @retval #DOWNLOAD_ERROR_NONE Successful + * @retval #DOWNLOAD_ERROR_INVALID_PARAMETER Invalid parameter + * @retval #DOWNLOAD_ERROR_ID_NOT_FOUND No download ID + * @retval #DOWNLOAD_ERROR_PERMISSION_DENIED Permission denied + * + * @pre The download state must be one of the states after #DOWNLOAD_STATE_DOWNLOADING. + * + * @see download_set_state_changed_cb() + * @see download_unset_state_changed_cb() + * @see download_start() + */ +int download_get_temp_path(int download_id, char **temp_path); + + +/** + * @brief Sets the directory path of the temporary file used in the previous download request. + * @details This is only useful when resuming download to make HTTP request header at the client side. + * Otherwise, the path should be ignored internally. + * + * @since_tizen 2.3 + * @privlevel public + * @privilege %http://tizen.org/privilege/download + * + * @remarks If the etag value is not present in the download database, it is useless to set the temporary path. \n + * When resuming download, the data is attached at the end of this temporary file. + * + * @param[in] download_id The download ID + * @param[out] path The full path of temporary file + * + * @return @c 0 on success, + * otherwise a negative error value + * + * @retval #DOWNLOAD_ERROR_NONE Successful + * @retval #DOWNLOAD_ERROR_INVALID_PARAMETER Invalid parameter + * @retval #DOWNLOAD_ERROR_ID_NOT_FOUND No download ID + * @retval #DOWNLOAD_ERROR_PERMISSION_DENIED Permission denied + * + * @pre The state must be #DOWNLOAD_STATE_READY, #DOWNLOAD_STATE_FAILED, or #DOWNLOAD_STATE_CANCELED. + * + * @see download_get_etag() + */ +int download_set_temp_file_path(int download_id, char *path); + + +/** + * @brief Gets the content name of downloaded file. + * + * @details This can be defined with reference of HTTP response header data. + * The content name can be received when HTTP response header is received. + * + * @since_tizen 2.3 + * @privlevel public + * @privilege %http://tizen.org/privilege/download + * + * @param[in] download_id The download ID + * @param[out] content_name The content name for displaying to user + * + * @return @c 0 on success, + * otherwise a negative error value + * + * @retval #DOWNLOAD_ERROR_NONE Successful + * @retval #DOWNLOAD_ERROR_INVALID_PARAMETER Invalid parameter + * @retval #DOWNLOAD_ERROR_ID_NOT_FOUND No download ID + * @retval #DOWNLOAD_ERROR_PERMISSION_DENIED Permission denied + * + * @pre The download state must be one of the states after #DOWNLOAD_STATE_DOWNLOADING. + * + * @see download_set_state_changed_cb() + * @see download_unset_state_changed_cb() + * @see download_start() + */ +int download_get_content_name(int download_id, char **content_name); + + +/** + * @brief Gets the total size of downloaded content. + * + * @details This information is received from the server. If the server does not send the total size of the content, @a content_size is set to zero. + * + * @since_tizen 2.3 + * @privlevel public + * @privilege %http://tizen.org/privilege/download + * + * @param[in] download_id The download ID + * @param[out] content_size The content size for displaying to user + * + * @return @c 0 on success, + * otherwise a negative error value + * + * @retval #DOWNLOAD_ERROR_NONE Successful + * @retval #DOWNLOAD_ERROR_INVALID_PARAMETER Invalid parameter + * @retval #DOWNLOAD_ERROR_ID_NOT_FOUND No download ID + * @retval #DOWNLOAD_ERROR_PERMISSION_DENIED Permission denied + * + * @pre The download state must be one of the states after #DOWNLOAD_STATE_DOWNLOADING. + * + * @see download_set_state_changed_cb() + * @see download_unset_state_changed_cb() + * @see download_start() + */ +int download_get_content_size(int download_id, unsigned long long *content_size); + + +/** + * @brief Gets an error value when the download fails. + * + * @since_tizen 2.3 + * @privlevel public + * @privilege %http://tizen.org/privilege/download + * + * @param[in] download_id The download ID + * @param[out] error The error value + * + * @return @c 0 on success, + * otherwise a negative error value + * + * @retval #DOWNLOAD_ERROR_NONE Successful + * @retval #DOWNLOAD_ERROR_INVALID_PARAMETER Invalid parameter + * @retval #DOWNLOAD_ERROR_ID_NOT_FOUND No download ID + * @retval #DOWNLOAD_ERROR_PERMISSION_DENIED Permission denied + * + * @pre The download state must be #DOWNLOAD_STATE_FAILED. + * @pre The download state must be #DOWNLOAD_STATE_CANCELED. + * + * @see download_set_state_changed_cb() + * @see download_unset_state_changed_cb() + * @see download_start() + * @see download_error_e + */ +int download_get_error(int download_id, download_error_e *error); + + +/** + * @brief Gets a HTTP status code when a download error occurs. + * + * @since_tizen 2.3 + * @privlevel public + * @privilege %http://tizen.org/privilege/download + * + * @param[in] download_id The download ID + * @param[out] HTTP_status The HTTP status code defined in RFC 2616 + * + * @return @c 0 on success, + * otherwise a negative error value + * + * @retval #DOWNLOAD_ERROR_NONE Successful + * @retval #DOWNLOAD_ERROR_INVALID_PARAMETER Invalid parameter + * @retval #DOWNLOAD_ERROR_ID_NOT_FOUND No download ID + * @retval #DOWNLOAD_ERROR_PERMISSION_DENIED Permission denied + * + * @pre The download state must be #DOWNLOAD_STATE_FAILED. + * + * @see download_set_download_status_cb() + * @see download_unset_download_status_cb() + * @see download_start() + */ +int download_get_http_status(int download_id, int *HTTP_status); + + +/** + * @brief Sets an app control handle to register notification messages. + * @details Three types of notification message can be posted: completion, failed and ongoing type. + * + * @since_tizen 2.3 + * @privlevel public + * @privilege %http://tizen.org/privilege/download + * + * @remarks When the notification message is clicked, the action to take is decided by the app control handle. \n + * If the app control handle is not set, the following default operation is executed when the notification message is clicked: \n + * 1) download completed state - the viewer application is executed according to extension name of downloaded content, \n + * 2) download failed state and ongoing state - the client application is executed. \n + * This function should be called before starting the download. \n + * The app control handle MUST BE FREED by the client when it is not used any more. + * + * @param[in] download_id The download ID + * @param[in] type The enumeration type \n + * See #download_notification_app_control_type_e. + * @param[in] handle The app control handle pointer value + * + * @return @c 0 on success, + * otherwise a negative error value + * + * @retval #DOWNLOAD_ERROR_NONE Successful + * @retval #DOWNLOAD_ERROR_INVALID_PARAMETER Invalid parameter + * @retval #DOWNLOAD_ERROR_ID_NOT_FOUND No download ID + * @retval #DOWNLOAD_ERROR_PERMISSION_DENIED Permission denied + * + * @pre The state must be #DOWNLOAD_STATE_READY, #DOWNLOAD_STATE_FAILED, or #DOWNLOAD_STATE_CANCELED. + * + * @see download_set_notification_type() + * @see download_get_notification_app_control() + */ +int download_set_notification_app_control(int download_id, download_notification_app_control_type_e type, app_control_h handle); + + +/** + * @brief Gets the app control handle (used previously to register notification messages) which is set by download_set_notification_app_control(). + * + * @details When the notification message is clicked, the action is decided by the app control handle. + * + * @since_tizen 2.3 + * @privlevel public + * @privilege %http://tizen.org/privilege/download + * + * @remarks The app control handle MUST BE FREED by the client when it is not used any more. + * + * @param[in] download_id The download ID + * @param[in] type The enumeration type \n + * See #download_notification_app_control_type_e. + * @param[out] handle The app control handle pointer value + * + * @return @c 0 on success, + * otherwise a negative error value + * + * @retval #DOWNLOAD_ERROR_NONE Successful + * @retval #DOWNLOAD_ERROR_INVALID_PARAMETER Invalid parameter + * @retval #DOWNLOAD_ERROR_ID_NOT_FOUND No download ID + * @retval #DOWNLOAD_ERROR_NO_DATA The app control handle has not been set + * @retval #DOWNLOAD_ERROR_PERMISSION_DENIED Permission denied + * + * @see download_set_notification_app_control() + */ +int download_get_notification_app_control(int download_id, download_notification_app_control_type_e type, app_control_h *handle); + + +/** + * @brief Sets the title of a notification. + * + * @details When registering a notification, the title is displayed in the title area of the notification message. + * + * @since_tizen 2.3 + * @privlevel public + * @privilege %http://tizen.org/privilege/download + * + * @param[in] download_id The download ID + * @param[in] title The title for displaying to user + * + * @return @c 0 on success, + * otherwise a negative error value + * + * @retval #DOWNLOAD_ERROR_NONE Successful + * @retval #DOWNLOAD_ERROR_INVALID_PARAMETER Invalid parameter + * @retval #DOWNLOAD_ERROR_ID_NOT_FOUND No download ID + * @retval #DOWNLOAD_ERROR_PERMISSION_DENIED Permission denied + * + * @pre If a notification option is not enabled, this title is not shown to user. + * + * @see download_set_notification_type() + * @see download_get_notification_title() + */ +int download_set_notification_title(int download_id, const char *title); + + +/** + * @brief Gets the title of the notification set by download_set_notification_title(). + * + * @details When registering a notification, the title is displayed in the title area of the notification message. + * + * @since_tizen 2.3 + * @privlevel public + * @privilege %http://tizen.org/privilege/download + * + * @param[in] download_id The download ID + * @param[out] title The title for displaying to user + * + * @return @c 0 on success, + * otherwise a negative error value + * + * @retval #DOWNLOAD_ERROR_NONE Successful + * @retval #DOWNLOAD_ERROR_INVALID_PARAMETER Invalid parameter + * @retval #DOWNLOAD_ERROR_ID_NOT_FOUND No download ID + * @retval #DOWNLOAD_ERROR_NO_DATA The title has not been set + * @retval #DOWNLOAD_ERROR_PERMISSION_DENIED Permission denied + * + * @pre It can get the title value before calling this API. + * + * @see download_set_notification_title() + */ +int download_get_notification_title(int download_id, char **title); + + +/** + * @brief Sets the description of a notification. + * + * @details When registering a notification, the description is displayed in the description area of the notification message. + * + * @since_tizen 2.3 + * @privlevel public + * @privilege %http://tizen.org/privilege/download + * + * @param[in] download_id The download ID + * @param[in] description The description for displaying to user + * + * @return @c 0 on success, + * otherwise a negative error value + * + * @retval #DOWNLOAD_ERROR_NONE Successful + * @retval #DOWNLOAD_ERROR_INVALID_PARAMETER Invalid parameter + * @retval #DOWNLOAD_ERROR_ID_NOT_FOUND No download ID + * @retval #DOWNLOAD_ERROR_PERMISSION_DENIED Permission denied + * + * @pre If the notification option is not enabled, this description is not shown to user. + * + * @see download_set_notification_type() + * @see download_get_notification_description() + */ +int download_set_notification_description(int download_id, const char *description); + + +/** + * @brief Gets the description of a notification set by download_set_notification_description(). + * + * @details When registering a notification, the description is displayed in the description area of the notification message. + * + * @since_tizen 2.3 + * @privlevel public + * @privilege %http://tizen.org/privilege/download + * + * @param[in] download_id The download ID + * @param[out] description The description for displaying to user + * + * @return @c 0 on success, + * otherwise a negative error value + * + * @retval #DOWNLOAD_ERROR_NONE Successful + * @retval #DOWNLOAD_ERROR_INVALID_PARAMETER Invalid parameter + * @retval #DOWNLOAD_ERROR_ID_NOT_FOUND No download ID + * @retval #DOWNLOAD_ERROR_NO_DATA The description has not been set + * @retval #DOWNLOAD_ERROR_PERMISSION_DENIED Permission denied + * + * @pre It can get the title value before calling this API. + * + * @see download_set_notification_description() + */ +int download_get_notification_description(int download_id, char **description); + + +/** + * @brief Sets an option value to register notification messages. + * @details Three types of notification message can be posted: completion, failed and ongoing type. + * + * @since_tizen 2.3 + * @privlevel public + * @privilege %http://tizen.org/privilege/download + * + * @remarks When the notification message is clicked, the action to take is decided by the app control handle (set by download_set_notification_app_control()). \n + * If the app control is not set, the following default operation is executed when the notification message is clicked: \n + * 1) download completed state - the viewer application is executed according to extension name of downloaded content, \n + * 2) download failed state and ongoing state - the client application is executed. \n + * The default type is #DOWNLOAD_NOTIFICATION_TYPE_NONE. \n + * This function should be called before starting the download. + * + * @param[in] download_id The download ID + * @param[in] type The enumeration type \n + * See #download_notification_type_e. + * + * @return @c 0 on success, + * otherwise a negative error value + * + * @retval #DOWNLOAD_ERROR_NONE Successful + * @retval #DOWNLOAD_ERROR_INVALID_PARAMETER Invalid parameter + * @retval #DOWNLOAD_ERROR_ID_NOT_FOUND No download ID + * @retval #DOWNLOAD_ERROR_PERMISSION_DENIED Permission denied + * + * @pre The state must be #DOWNLOAD_STATE_READY, #DOWNLOAD_STATE_FAILED, or #DOWNLOAD_STATE_CANCELED. + * + * @see download_set_notification_app_control() + * @see download_get_notification_type() + */ +int download_set_notification_type(int download_id, download_notification_type_e type); + + +/** + * @brief Gets an option value to register notification messages set by download_set_notification_type(). + * + * @since_tizen 2.3 + * @privlevel public + * @privilege %http://tizen.org/privilege/download + * + * @remarks When the notification message is clicked, the action is decided by the app control from download_set_notification_app_control(). \n + * The default type is #DOWNLOAD_NOTIFICATION_TYPE_NONE. + * + * @param[in] download_id The download ID + * @param[out] type The enumeration type \n + * See #download_notification_type_e. + * + * @return @c 0 on success, + * otherwise a negative error value + * + * @retval #DOWNLOAD_ERROR_NONE Successful + * @retval #DOWNLOAD_ERROR_INVALID_PARAMETER Invalid parameter + * @retval #DOWNLOAD_ERROR_ID_NOT_FOUND No download ID + * @retval #DOWNLOAD_ERROR_PERMISSION_DENIED Permission denied + * + * @see download_set_notification_type() + */ +int download_get_notification_type(int download_id, download_notification_type_e *type); + + +/** + * @brief Gets an etag value from the HTTP response header when making a HTTP request for resume. + * + * @since_tizen 2.3 + * @privlevel public + * @privilege %http://tizen.org/privilege/download + * + * @remarks The etag value is available or not depending on the web server. \n + * After download is started, it can get the etag value. + * + * @param[in] download_id The download ID + * @param[out] etag The etag value + * + * @return @c 0 on success, + * otherwise a negative error value + * + * @retval #DOWNLOAD_ERROR_NONE Successful + * @retval #DOWNLOAD_ERROR_INVALID_PARAMETER Invalid parameter + * @retval #DOWNLOAD_ERROR_ID_NOT_FOUND No download ID + * @retval #DOWNLOAD_ERROR_PERMISSION_DENIED Permission denied + * + * @see download_set_temp_file_path() + */ +int download_get_etag(int download_id, char **etag); +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif /* __TIZEN_WEB_DOWNLOAD_H__ */ diff --git a/include/download_product.h b/include/download_product.h new file mode 100644 index 0000000..a854338 --- /dev/null +++ b/include/download_product.h @@ -0,0 +1,82 @@ +/* + * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved + * + * Licensed under the Apache License, Version 2.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef __TIZEN_WEB_DOWNLOAD_PRODUCT_H__ +#define __TIZEN_WEB_DOWNLOAD_PRODUCT_H__ + +#ifdef __cplusplus +extern "C" +{ +#endif + +/** + * @internal + * @addtogroup CAPI_WEB_DOWNLOAD_MODULE + * @brief download product APIs + * @{ + */ + +/** + * @brief Sets the 'enabled' state of the network bonding feature. + * + * @details This is only available depending on specific platform. + *"Network bonding" feature use both data network and wifi network concurrently, + *if the content size is over than specific size. + * + * @since_tizen 2.3 + * @privlevel public + * @privilege %http://tizen.org/privilege/download + * @remarks This function should be called before downloading (see download_start()). + * @remarks If the network type is not set as DOWNLOAD_NETWORK_ALL, the error is happened. + * @param[in] download_id The download id + * @param[in] enable The enable value + * @return 0 on success, otherwise a negative error value + * @retval #DOWNLOAD_ERROR_NONE Successful + * @retval #DOWNLOAD_ERROR_INVALID_PARAMETER Invalid parameter + * @retval #DOWNLOAD_ERROR_INVALID_STATE Invalid state + * @retval #DOWNLOAD_ERROR_ID_NOT_FOUND No Download ID + * @retval #DOWNLOAD_ERROR_PERMISSION_DENIED Permission denied + * @pre The state must not be #DOWNLOAD_STATE_DOWNLOADING, #DOWNLOAD_STATE_COMPLETED. + * @see download_get_network_bonding() + */ +int download_set_network_bonding(int download_id, bool enable); + + +/** + * @brief Gets the 'enabled' state of the network bonding feature. + * + * @since_tizen 2.3 + * @privlevel public + * @privilege %http://tizen.org/privilege/download + * @param[in] download_id The download id + * @param[out] enable The enable value + * @return 0 on success, otherwise a negative error value + * @retval #DOWNLOAD_ERROR_NONE Successful + * @retval #DOWNLOAD_ERROR_INVALID_PARAMETER Invalid parameter + * @retval #DOWNLOAD_ERROR_ID_NOT_FOUND No Download ID + * @retval #DOWNLOAD_ERROR_PERMISSION_DENIED Permission denied + * @see download_set_network_bonding() + */ +int download_get_network_bonding(int download_id, bool *enable); +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif /* __TIZEN_WEB_DOWNLOAD_PRODUCT_H__ */ diff --git a/packaging/capi-web-url-download.spec b/packaging/capi-web-url-download.spec new file mode 100755 index 0000000..0d67657 --- /dev/null +++ b/packaging/capi-web-url-download.spec @@ -0,0 +1,62 @@ + +Name: capi-web-url-download +Summary: CAPI for content download with web url +Version: 1.2.6 +Release: 0 +Group: Development/Libraries +License: Apache License, Version 2.0 +URL: N/A +Source0: %{name}-%{version}.tar.gz +BuildRequires: pkgconfig(capi-base-common) +BuildRequires: pkgconfig(dlog) +BuildRequires: pkgconfig(capi-appfw-application) +BuildRequires: pkgconfig(download-provider-interface) +BuildRequires: cmake + +%description +CAPI for the content download + +%package devel +Summary: url download +Group: Development/Libraries +Requires: %{name} = %{version}-%{release} + +%description devel +CAPI for content downloading with web url (developement files) + +%prep +%setup -q + +%build +export CFLAGS="$CFLAGS -DTIZEN_DEBUG_ENABLE" +export CXXFLAGS="$CXXFLAGS -DTIZEN_DEBUG_ENABLE" +export FFLAGS="$FFLAGS -DTIZEN_DEBUG_ENABLE" +%cmake . + +make %{?jobs:-j%jobs} + +%install +rm -rf %{buildroot} +%make_install +mkdir -p %{buildroot}/usr/share/license + +%post -p /sbin/ldconfig + +%postun -p /sbin/ldconfig + +%files +%defattr(-,root,root,-) +%manifest capi-web-url-download.manifest +%{_libdir}/libcapi-web-url-download.so.* +/usr/share/license/%{name} + +%files devel +%defattr(-,root,root,-) +%manifest capi-web-url-download.manifest +%{_libdir}/libcapi-web-url-download.so +%{_libdir}/pkgconfig/capi-web-url-download.pc +%{_includedir}/web/download.h +%{_includedir}/web/download_product.h +%{_includedir}/web/download_doc.h +/usr/bin/url-download-tc + diff --git a/script/commit-template b/script/commit-template new file mode 100644 index 0000000..f642dd2 --- /dev/null +++ b/script/commit-template @@ -0,0 +1,11 @@ +Title + +[Title] +[Issue#] N/A +[Problem] N/A +[Cause] N/A +[Solution] N/A + +# please fill the each items. +# If this is the commit to fix issue, please replace N/A to the number of issue. + diff --git a/src/download-wrapping.c b/src/download-wrapping.c new file mode 100755 index 0000000..fcb4d33 --- /dev/null +++ b/src/download-wrapping.c @@ -0,0 +1,414 @@ +#include <stdio.h> +#include <stdlib.h> +#include <sys/types.h> +#include <sys/stat.h> +#include <sys/socket.h> +#include <sys/un.h> +#include <fcntl.h> +#include <errno.h> +#include <unistd.h> + +#include <dlog.h> +#include <download.h> +#include <download-provider-interface.h> + +#define DEBUG_MSG +#ifdef DEBUG_MSG +#include <dlog.h> +#ifdef LOG_TAG +#undef LOG_TAG +#endif +#define LOG_TAG "TIZEN_N_URL_DOWNLOAD" +#define TRACE_ERROR(format, ARG...) \ +{ \ +LOGE(format, ##ARG); \ +} +#define TRACE_STRERROR(format, ARG...) \ +{ \ +LOGE(format" [%s]", ##ARG, strerror(errno)); \ +} +#define TRACE_INFO(format, ARG...) \ +{ \ +LOGI(format, ##ARG); \ +} +#else +#define TRACE_DEBUG_MSG(format, ARG...) ; +#endif + +/////////////////////// APIs ///////////////////////////////// + +int download_create(int *download_id) +{ + TRACE_INFO(""); + if (download_id == NULL) + return DOWNLOAD_ERROR_INVALID_PARAMETER; + return dp_interface_create(download_id); +} + +int download_destroy(int download_id) +{ + TRACE_INFO(""); + return dp_interface_destroy(download_id); +} + +int download_start(int download_id) +{ + TRACE_INFO(""); + return dp_interface_start(download_id); +} + +int download_pause(int download_id) +{ + TRACE_INFO(""); + return dp_interface_pause(download_id); +} + +int download_cancel(int download_id) +{ + TRACE_INFO(""); + return dp_interface_cancel(download_id); +} + + +int download_set_url(int download_id, const char *url) +{ + TRACE_INFO(""); + if (url == NULL) + return DOWNLOAD_ERROR_INVALID_PARAMETER; + return dp_interface_set_url(download_id, url); +} + + +int download_get_url(int download_id, char **url) +{ + TRACE_INFO(""); + if (url == NULL) + return DOWNLOAD_ERROR_INVALID_PARAMETER; + return dp_interface_get_url(download_id, url); +} + +int download_set_network_type(int download_id, + download_network_type_e net_type) +{ + TRACE_INFO(""); + return dp_interface_set_network_type(download_id, (int)net_type); +} + +int download_get_network_type(int download_id, + download_network_type_e *net_type) +{ + TRACE_INFO(""); + + if (net_type == NULL) { + TRACE_ERROR("Parameter NULL Check"); + return DOWNLOAD_ERROR_INVALID_PARAMETER; + } + int network_type = DOWNLOAD_ADAPTOR_NETWORK_ALL; + int ret = dp_interface_get_network_type(download_id, &network_type); + if (ret == DOWNLOAD_ADAPTOR_ERROR_NONE) + *net_type = network_type; + return ret; +} + +int download_set_network_bonding(int download_id, bool enable) +{ + TRACE_INFO(""); + return dp_interface_set_network_bonding(download_id, (int)enable); +} + +int download_get_network_bonding(int download_id, bool *enable) +{ + int is_set = 0; + TRACE_INFO(""); + if (enable == NULL) { + TRACE_ERROR("Parameter NULL Check"); + return DOWNLOAD_ERROR_INVALID_PARAMETER; + } + int ret = dp_interface_get_network_bonding(download_id, &is_set); + if (ret == DOWNLOAD_ADAPTOR_ERROR_NONE) + *enable = (bool)is_set; + return ret; +} + +int download_set_destination(int download_id, const char *path) +{ + TRACE_INFO(""); + if (path == NULL) + return DOWNLOAD_ERROR_INVALID_PARAMETER; + return dp_interface_set_destination(download_id, path); +} + + +int download_get_destination(int download_id, char **path) +{ + TRACE_INFO(""); + if (path == NULL) + return DOWNLOAD_ERROR_INVALID_PARAMETER; + return dp_interface_get_destination(download_id, path); +} + +int download_set_file_name(int download_id, const char *file_name) +{ + TRACE_INFO(""); + if (file_name == NULL) + return DOWNLOAD_ERROR_INVALID_PARAMETER; + return dp_interface_set_file_name(download_id, file_name); +} + +int download_get_file_name(int download_id, char **file_name) +{ + TRACE_INFO(""); + if (file_name == NULL) + return DOWNLOAD_ERROR_INVALID_PARAMETER; + return dp_interface_get_file_name(download_id, file_name); +} + +int download_get_downloaded_file_path(int download_id, char **path) +{ + TRACE_INFO(""); + if (path == NULL) + return DOWNLOAD_ERROR_INVALID_PARAMETER; + return dp_interface_get_downloaded_file_path(download_id, path); +} + +int download_add_http_header_field(int download_id, const char *field, + const char *value) +{ + TRACE_INFO(""); + if (field == NULL || value == NULL) + return DOWNLOAD_ERROR_INVALID_PARAMETER; + return + dp_interface_add_http_header_field(download_id, field, value); +} + +int download_get_http_header_field(int download_id, + const char *field, char **value) +{ + TRACE_INFO(""); + if (field == NULL || value == NULL) + return DOWNLOAD_ERROR_INVALID_PARAMETER; + return + dp_interface_get_http_header_field(download_id, field, value); +} + +int download_get_http_header_field_list(int download_id, char ***fields, + int *length) +{ + TRACE_INFO(""); + if (fields == NULL || length == NULL) + return DOWNLOAD_ERROR_INVALID_PARAMETER; + return dp_interface_get_http_header_field_list(download_id, fields, + length); +} + +int download_remove_http_header_field(int download_id, + const char *field) +{ + TRACE_INFO(""); + if (field == NULL) + return DOWNLOAD_ERROR_INVALID_PARAMETER; + return dp_interface_remove_http_header_field(download_id, field); +} + +// download_state_changed_cb is different with dp_interface_state_changed_cb. +int download_set_state_changed_cb(int download_id, + download_state_changed_cb callback, void* user_data) +{ + TRACE_INFO(""); + return dp_interface_set_state_changed_cb(download_id, + (dp_interface_state_changed_cb)callback, user_data); +} + +int download_unset_state_changed_cb(int download_id) +{ + TRACE_INFO(""); + return dp_interface_unset_state_changed_cb(download_id); +} + +// download_progress_cb is same with dp_interface_progress_cb. +int download_set_progress_cb(int download_id, + download_progress_cb callback, void *user_data) +{ + TRACE_INFO(""); + return dp_interface_set_progress_cb(download_id, + (dp_interface_progress_cb)callback, user_data); +} + +int download_unset_progress_cb(int download_id) +{ + TRACE_INFO(""); + return dp_interface_unset_progress_cb(download_id); +} + +int download_get_state(int download_id, download_state_e *state) +{ + int statecode = 0; + TRACE_INFO(""); + if (state == NULL) { + TRACE_ERROR("Parameter NULL Check"); + return DOWNLOAD_ERROR_INVALID_PARAMETER; + } + int ret = dp_interface_get_state(download_id, &statecode); + if (ret == DOWNLOAD_ADAPTOR_ERROR_NONE) + *state = statecode; + return ret; +} + +int download_get_temp_path(int download_id, char **temp_path) +{ + TRACE_INFO(""); + if (temp_path == NULL) + return DOWNLOAD_ERROR_INVALID_PARAMETER; + return dp_interface_get_temp_path(download_id, temp_path); +} + +int download_get_content_name(int download_id, char **content_name) +{ + TRACE_INFO(""); + if (content_name == NULL) + return DOWNLOAD_ERROR_INVALID_PARAMETER; + return dp_interface_get_content_name(download_id, content_name); +} + +int download_get_content_size(int download_id, + unsigned long long *content_size) +{ + TRACE_INFO(""); + if (content_size == NULL) + return DOWNLOAD_ERROR_INVALID_PARAMETER; + return dp_interface_get_content_size(download_id, content_size); +} + +int download_get_mime_type(int download_id, char **mime_type) +{ + TRACE_INFO(""); + if (mime_type == NULL) + return DOWNLOAD_ERROR_INVALID_PARAMETER; + return dp_interface_get_mime_type(download_id, mime_type); +} + +int download_set_auto_download(int download_id, bool enable) +{ + TRACE_INFO(""); + return dp_interface_set_auto_download(download_id, (int)enable); +} + +int download_get_auto_download(int download_id, bool *enable) +{ + int is_set = 0; + TRACE_INFO(""); + if (enable == NULL) { + TRACE_ERROR("Parameter NULL Check"); + return DOWNLOAD_ERROR_INVALID_PARAMETER; + } + int ret = dp_interface_get_auto_download(download_id, &is_set); + if (ret == DOWNLOAD_ADAPTOR_ERROR_NONE) + *enable = (bool)is_set; + return ret; +} + +int download_get_error(int download_id, download_error_e *error) +{ + int errorcode = 0; + TRACE_INFO(""); + if (error == NULL) { + TRACE_ERROR("Parameter NULL Check"); + return DOWNLOAD_ERROR_INVALID_PARAMETER; + } + int ret = dp_interface_get_error(download_id, &errorcode); + if (ret == DOWNLOAD_ADAPTOR_ERROR_NONE) + *error = errorcode; + return ret; +} + +int download_get_http_status(int download_id, int *http_status) +{ + TRACE_INFO(""); + if (http_status == NULL) + return DOWNLOAD_ERROR_INVALID_PARAMETER; + return dp_interface_get_http_status(download_id, http_status); +} + +int download_set_notification_app_control(int download_id, download_notification_app_control_type_e type, app_control_h handle) +{ + TRACE_INFO(""); + if (handle == NULL) + return DOWNLOAD_ERROR_INVALID_PARAMETER; + return dp_interface_set_notification_service_handle(download_id, (int)type, handle); +} + +int download_get_notification_app_control(int download_id, download_notification_app_control_type_e type, app_control_h *handle) +{ + TRACE_INFO(""); + if (handle == NULL) + return DOWNLOAD_ERROR_INVALID_PARAMETER; + return dp_interface_get_notification_service_handle(download_id, (int)type, handle); +} + +int download_set_notification_title(int download_id, const char *title) +{ + TRACE_INFO(""); + if (title == NULL) + return DOWNLOAD_ERROR_INVALID_PARAMETER; + return dp_interface_set_notification_title(download_id, title); +} + +int download_get_notification_title(int download_id, char **title) +{ + TRACE_INFO(""); + if (title == NULL) + return DOWNLOAD_ERROR_INVALID_PARAMETER; + return dp_interface_get_notification_title(download_id, title); +} + +int download_set_notification_description(int download_id, const char *description) +{ + TRACE_INFO(""); + if (description == NULL) + return DOWNLOAD_ERROR_INVALID_PARAMETER; + return dp_interface_set_notification_description(download_id, description); +} + +int download_get_notification_description(int download_id, char **description) +{ + TRACE_INFO(""); + if (description == NULL) + return DOWNLOAD_ERROR_INVALID_PARAMETER; + return dp_interface_get_notification_description(download_id, description); +} + +int download_set_notification_type(int download_id, download_notification_type_e type) +{ + TRACE_INFO(""); + return dp_interface_set_notification_type(download_id, (int)type); +} + +int download_get_notification_type(int download_id, download_notification_type_e *type) +{ + int noti_type = 0; + TRACE_INFO(""); + if (type == NULL) { + TRACE_ERROR("Parameter NULL Check"); + return DOWNLOAD_ERROR_INVALID_PARAMETER; + } + int ret = dp_interface_get_notification_type(download_id, ¬i_type); + if (ret == DOWNLOAD_ADAPTOR_ERROR_NONE) + *type = (download_notification_type_e)noti_type; + return ret; +} + +int download_get_etag(int download_id, char **etag) +{ + TRACE_INFO(""); + if (etag == NULL) + return DOWNLOAD_ERROR_INVALID_PARAMETER; + return dp_interface_get_etag(download_id, etag); +} + +int download_set_temp_file_path(int download_id, char *path) +{ + TRACE_INFO(""); + if (path == NULL) + return DOWNLOAD_ERROR_INVALID_PARAMETER; + return dp_interface_set_temp_file_path(download_id, path); +} diff --git a/testcase/CMakeLists.txt b/testcase/CMakeLists.txt new file mode 100644 index 0000000..30bb6df --- /dev/null +++ b/testcase/CMakeLists.txt @@ -0,0 +1,16 @@ +CMAKE_MINIMUM_REQUIRED(VERSION 2.8) + +## PROJECT NAME +PROJECT(url-download-tc C) + +## INCLUDES +INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/../include) + +SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS}") +SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -O0 -Wall") + +ADD_EXECUTABLE(${PROJECT_NAME} + ${CMAKE_CURRENT_SOURCE_DIR}/${PROJECT_NAME}.c ) +TARGET_LINK_LIBRARIES(${PROJECT_NAME} capi-web-url-download) +INSTALL(TARGETS ${PROJECT_NAME} DESTINATION bin) + diff --git a/testcase/url-download-tc.c b/testcase/url-download-tc.c new file mode 100644 index 0000000..ee9ff81 --- /dev/null +++ b/testcase/url-download-tc.c @@ -0,0 +1,463 @@ +#include <stdio.h> +#include <stdlib.h> +#include <sys/types.h> +#include <errno.h> +#include <unistd.h> +#include <sys/stat.h> +#include <string.h> +#include <time.h> + +#include <download.h> +#include <app_control.h> + +#define TRACE_DEBUG_MSG(format, ARG...) \ +{ \ +printf("[url-download][%s:%d] "format"\n", __FUNCTION__, __LINE__, ##ARG); \ +} + +#define TRACE_ERROR_MSG(format, ARG...) \ +{ \ +printf("[url-download][ERROR][%s:%d] "format"\n", __FUNCTION__, __LINE__, ##ARG); \ +} + +static char *g_tc_storage = "/opt/usr/media/.url-download-tc"; + +static char *__print_state(int state) +{ + switch (state) { + case DOWNLOAD_STATE_READY: + return "READY"; + case DOWNLOAD_STATE_QUEUED: + return "QUEUED"; + case DOWNLOAD_STATE_DOWNLOADING: + return "DOWNLOADING"; + case DOWNLOAD_STATE_PAUSED: + return "PAUSED"; + case DOWNLOAD_STATE_COMPLETED: + return "COMPLETED"; + case DOWNLOAD_STATE_FAILED: + return "FAILED"; + case DOWNLOAD_STATE_CANCELED: + return "CANCELED"; + default: + break; + } + return "UNKNOWN"; +} + +static char *__print_errorcode(int errorcode) +{ + switch (errorcode) { + case DOWNLOAD_ERROR_NONE: + return "NONE"; + case DOWNLOAD_ERROR_INVALID_PARAMETER: + return "INVALID_PARAMETER"; + case DOWNLOAD_ERROR_OUT_OF_MEMORY: + return "OUT_OF_MEMORY"; + case DOWNLOAD_ERROR_IO_ERROR: + return "IO_ERROR"; + case DOWNLOAD_ERROR_NETWORK_UNREACHABLE: + return "NETWORK_UNREACHABLE"; + case DOWNLOAD_ERROR_NO_SPACE: + return "NO_SPACE"; + case DOWNLOAD_ERROR_FIELD_NOT_FOUND: + return "FIELD_NOT_FOUND"; + case DOWNLOAD_ERROR_INVALID_STATE: + return "INVALID_STATE"; + case DOWNLOAD_ERROR_CONNECTION_TIMED_OUT: + return "CONNECTION_TIMED_OUT"; + case DOWNLOAD_ERROR_INVALID_URL: + return "INVALID_URL"; + case DOWNLOAD_ERROR_INVALID_DESTINATION: + return "INVALID_DESTINATION"; + case DOWNLOAD_ERROR_PERMISSION_DENIED: + return "PERMISSION_DENIED"; + case DOWNLOAD_ERROR_QUEUE_FULL: + return "QUEUE_FULL"; + case DOWNLOAD_ERROR_ALREADY_COMPLETED: + return "ALREADY_COMPLETED"; + case DOWNLOAD_ERROR_FILE_ALREADY_EXISTS: + return "FILE_ALREADY_EXISTS"; + case DOWNLOAD_ERROR_TOO_MANY_DOWNLOADS: + return "TOO_MANY_DOWNLOADS"; + case DOWNLOAD_ERROR_NO_DATA: + return "NO_DATA"; + case DOWNLOAD_ERROR_UNHANDLED_HTTP_CODE: + return "UNHANDLED_HTTP_CODE"; + case DOWNLOAD_ERROR_CANNOT_RESUME: + return "CANNOT_RESUME"; + case DOWNLOAD_ERROR_ID_NOT_FOUND: + return "ID_NOT_FOUND"; + default: + break; + } + return "UNKOWN"; +} + +static void __download_get_content_name(int download_id) +{ + char *str = NULL; + download_error_e errorcode = DOWNLOAD_ERROR_NONE; + errorcode = download_get_content_name(download_id, &str); + if (errorcode != DOWNLOAD_ERROR_NONE) { + TRACE_ERROR_MSG("download:%d content_name error:%s",download_id, __print_errorcode(errorcode)); + } else { + TRACE_DEBUG_MSG("download:%d content_name (%s)", download_id, str); + } + free(str); +} + +static void __download_get_mime_type(int download_id) +{ + char *str = NULL; + download_error_e errorcode = DOWNLOAD_ERROR_NONE; + errorcode = download_get_mime_type(download_id, &str); + if (errorcode != DOWNLOAD_ERROR_NONE) { + TRACE_ERROR_MSG("download:%d mime_type error:%s",download_id, __print_errorcode(errorcode)); + } else { + TRACE_DEBUG_MSG("download:%d mime_type (%s)", download_id, str); + } + free(str); +} + +static void __download_get_file_name(int download_id) +{ + char *str = NULL; + download_error_e errorcode = DOWNLOAD_ERROR_NONE; + errorcode = download_get_file_name(download_id, &str); + if (errorcode != DOWNLOAD_ERROR_NONE) { + TRACE_ERROR_MSG("download:%d file_name error:%s",download_id, __print_errorcode(errorcode)); + } else { + TRACE_DEBUG_MSG("download:%d file_name (%s)", download_id, str); + } + free(str); +} + +static void __download_get_temp_path(int download_id) +{ + char *str = NULL; + download_error_e errorcode = DOWNLOAD_ERROR_NONE; + errorcode = download_get_temp_path(download_id, &str); + if (errorcode != DOWNLOAD_ERROR_NONE) { + download_get_error(download_id, &errorcode); + TRACE_ERROR_MSG("download:%d temp_path error:%s",download_id, __print_errorcode(errorcode)); + } else { + TRACE_DEBUG_MSG("download:%d temp_path (%s)", download_id, str); + } + free(str); +} + +static void __download_get_destination(int download_id) +{ + char *str = NULL; + download_error_e errorcode = DOWNLOAD_ERROR_NONE; + errorcode = download_get_destination(download_id, &str); + if (errorcode != DOWNLOAD_ERROR_NONE) { + TRACE_ERROR_MSG("download:%d destination error:%s",download_id, __print_errorcode(errorcode)); + } else { + TRACE_DEBUG_MSG("download:%d destination (%s)", download_id, str); + } + free(str); +} + +static void __download_get_content_size(int download_id) +{ + unsigned long long content_size = 0; + download_error_e errorcode = DOWNLOAD_ERROR_NONE; + errorcode = download_get_content_size(download_id, &content_size); + if (errorcode != DOWNLOAD_ERROR_NONE) { + TRACE_ERROR_MSG("download:%d content_size error:%s",download_id, __print_errorcode(errorcode)); + } else { + TRACE_DEBUG_MSG("download:%d content_size (%lld)", download_id, content_size); + } +} + +static download_state_e __download_get_state(int download_id) +{ + download_state_e state = DOWNLOAD_STATE_NONE; + download_error_e errorcode = DOWNLOAD_ERROR_NONE; + errorcode = download_get_state(download_id, &state); + if (errorcode != DOWNLOAD_ERROR_NONE) { + TRACE_ERROR_MSG("download:%d state error:%s",download_id, __print_errorcode(errorcode)); + } else { + TRACE_DEBUG_MSG("download:%d state(%s:%d)", download_id, __print_state(state), state); + } + return state; +} + +static void __download_manager_progress_cb (int download_id, unsigned long long received, void *user_data) +{ + // ignore log. too many + //TRACE_DEBUG_MSG("download:%d progress(%lld)", download_id, received); +} + +static void __download_manager_state_changed_cb (int download_id, download_state_e state, void *user_data) +{ + TRACE_DEBUG_MSG("download:%d state(%s:%d)", download_id, __print_state(state), state); + __download_get_state(download_id); + if (state == DOWNLOAD_STATE_FAILED) { + download_error_e errorcode = DOWNLOAD_ERROR_NONE; + download_get_error(download_id, &errorcode); + TRACE_DEBUG_MSG("download:%d check error:%s", download_id, __print_errorcode(errorcode)); + } + if (state == DOWNLOAD_STATE_DOWNLOADING) { + __download_get_content_name(download_id); + __download_get_mime_type(download_id); + __download_get_content_size(download_id); + } + if (state == DOWNLOAD_STATE_PAUSED) { + } + if (state == DOWNLOAD_STATE_COMPLETED) { + __download_get_content_name(download_id); + __download_get_mime_type(download_id); + __download_get_temp_path(download_id); + __download_get_file_name(download_id); + __download_get_destination(download_id); + __download_get_content_size(download_id); + } + if (state == DOWNLOAD_STATE_FAILED || state == DOWNLOAD_STATE_COMPLETED || state == DOWNLOAD_STATE_CANCELED) + { + download_destroy(download_id); + TRACE_DEBUG_MSG("download:%d is finished", download_id); + } +} + +static int __download_start(char *url, int force) +{ + int download_id = 0; + download_error_e errorcode = DOWNLOAD_ERROR_NONE; + + errorcode = download_create(&download_id); + if (errorcode != DOWNLOAD_ERROR_NONE) { + TRACE_ERROR_MSG("download:%d create error:%s", download_id, __print_errorcode(errorcode)); + } else { + errorcode = download_set_state_changed_cb(download_id, __download_manager_state_changed_cb, NULL); + if (errorcode != DOWNLOAD_ERROR_NONE) { + TRACE_ERROR_MSG("download:%d set_state_changed_cb error:%s", download_id, __print_errorcode(errorcode)); + } + errorcode = download_set_progress_cb(download_id, __download_manager_progress_cb, NULL); + if (errorcode != DOWNLOAD_ERROR_NONE) { + TRACE_ERROR_MSG("download:%d set_progress_cb error:%s", download_id, __print_errorcode(errorcode)); + } + errorcode = download_set_destination(download_id, g_tc_storage); + if (errorcode != DOWNLOAD_ERROR_NONE) { + TRACE_ERROR_MSG("download:%d set_destination error:%s", download_id, __print_errorcode(errorcode)); + } + errorcode = download_set_url(download_id, url); + if (errorcode != DOWNLOAD_ERROR_NONE) { + TRACE_ERROR_MSG("download:%d set_url error:%s", download_id, __print_errorcode(errorcode)); + } + if (force > 0) { + errorcode = download_set_auto_download(download_id, 1); + if (errorcode != DOWNLOAD_ERROR_NONE) { + TRACE_ERROR_MSG("download:%d set_auto error:%s", download_id, __print_errorcode(errorcode)); + } + } + errorcode = download_set_notification_type(download_id, DOWNLOAD_NOTIFICATION_TYPE_ALL); + if (errorcode != DOWNLOAD_ERROR_NONE) { + TRACE_ERROR_MSG("download:%d et_notification error:%s", download_id, __print_errorcode(errorcode)); + } + errorcode = download_start(download_id); + if (errorcode != DOWNLOAD_ERROR_NONE) { + TRACE_ERROR_MSG("download:%d start error:%s", download_id, __print_errorcode(errorcode)); + } + } + return download_id; +} + + +int main(int argc, char** argv) +{ + download_error_e errorcode = DOWNLOAD_ERROR_NONE; + download_state_e state = DOWNLOAD_STATE_NONE; + int download_id_state = 0; + int download_id_api = 0; + + TRACE_DEBUG_MSG("url-download-tc : start"); + + // video content, sometimes network error + __download_start("http://wap2.samsungmobile.com/weblogic/TestContentsDownload/avi__MP4_352x288_30fps_araw_2ch_44khz.avi/video_avi/MP4_352x288_30fps_araw_2ch_44khz.avi", 0); + // big binary 1.7G from tizen.org + download_id_api = __download_start("http://download.tizen.org/sdk/sdk-images/2.2/tizen-sdk-image-2.2.0-windows32.zip", 1); + // big tar file 1.2G from webkit.org + download_id_state = __download_start("http://nightly.webkit.org/files/WebKit-SVN-source.tar.bz2", 1); + + //stop + errorcode = download_cancel(download_id_state); + if (errorcode != DOWNLOAD_ERROR_NONE) { + TRACE_ERROR_MSG("download:%d stop error:%s", download_id_state, __print_errorcode(errorcode)); + } else { + // start again + errorcode = download_start(download_id_state); + if (errorcode != DOWNLOAD_ERROR_NONE) { + TRACE_ERROR_MSG("download:%d start error:%s", download_id_state, __print_errorcode(errorcode)); + } else { + // pause + errorcode = download_pause(download_id_state); + if (errorcode != DOWNLOAD_ERROR_NONE) { + TRACE_ERROR_MSG("download:%d pause error:%s", download_id_state, __print_errorcode(errorcode)); + } else { + // resume + errorcode = download_start(download_id_state); + if (errorcode != DOWNLOAD_ERROR_NONE) { + TRACE_ERROR_MSG("download:%d resume error:%s", download_id_state, __print_errorcode(errorcode)); + } + } + } + } + + + // API test. + errorcode = download_set_notification_type(download_id_api, DOWNLOAD_NOTIFICATION_TYPE_ALL); + if (errorcode != DOWNLOAD_ERROR_NONE) { + TRACE_ERROR_MSG("download:%d stop error:%s", download_id_api, __print_errorcode(errorcode)); + } + const char *notivalues[3] = {"test1","test2","test3"}; + app_control_h h; + if (app_control_create(&h) != APP_CONTROL_ERROR_NONE) { + TRACE_ERROR_MSG("download:%d fail to create app control handle", download_id_api); + } + if (app_control_add_extra_data(h, "__APP_SVC_PKG_NAME__", "com.samsung.test-app") < 0) { + TRACE_ERROR_MSG("download:%d fail to set test pkg name", download_id_api); + } + if (app_control_add_extra_data_array(h,(const char *)"test-notification-extra-param", notivalues, 3) < 0) { + TRACE_ERROR_MSG("download:%d fail to add data to app control handle", download_id_api); + } + errorcode = download_set_notification_app_control(download_id_api, DOWNLOAD_NOTIFICATION_APP_CONTROL_TYPE_ONGOING, h); + errorcode = download_set_notification_app_control(download_id_api, DOWNLOAD_NOTIFICATION_APP_CONTROL_TYPE_FAILED, h); + if (h != NULL) + app_control_destroy(h); + h = NULL; + if (errorcode != DOWNLOAD_ERROR_NONE) { + TRACE_ERROR_MSG("download:%d set_notification_app_control error:%s", download_id_api, __print_errorcode(errorcode)); + download_set_notification_title(download_id_api, "test subject"); + download_set_notification_description(download_id_api, "test description"); + } else { + char **noti_value = NULL; + int values_count = 0; + errorcode = download_get_notification_app_control(download_id_api, DOWNLOAD_NOTIFICATION_APP_CONTROL_TYPE_ONGOING, &h); + if (errorcode != DOWNLOAD_ERROR_NONE) { + TRACE_ERROR_MSG("download:%d get_notification_app_control error:%s", download_id_api, __print_errorcode(errorcode)); + } else { + app_control_get_extra_data_array(h, "test-notification-extra-param", ¬i_value, &values_count); + if (!noti_value) { + TRACE_ERROR_MSG("download:%d fail to get data to app_control", download_id_api); + } else { + int i = 0; + for (; i < values_count; i++) { + TRACE_DEBUG_MSG("noti_value[%d] : %s", i, noti_value[i]); + free(noti_value[i]); + } + } + } + app_control_destroy(h); + noti_value = NULL; + } + state = __download_get_state(download_id_api); + download_error_e download_errorcode = DOWNLOAD_ERROR_NONE; + errorcode = download_get_error(download_id_api, &download_errorcode); + if (errorcode != DOWNLOAD_ERROR_NONE) { + TRACE_ERROR_MSG("download:%d check error:%s", download_id_api, __print_errorcode(errorcode)); + } else { + TRACE_DEBUG_MSG("download:%d check error:%s", download_id_api, __print_errorcode(download_errorcode)); + } + errorcode = download_add_http_header_field(download_id_api, "test-header-field1", "test-header-data1"); + if (errorcode != DOWNLOAD_ERROR_NONE) { + TRACE_ERROR_MSG("download:%d add_http_header_field error:%s", download_id_api, __print_errorcode(errorcode)); + } + errorcode = download_add_http_header_field(download_id_api, "test-header-field3", "test-header-data3"); + if (errorcode != DOWNLOAD_ERROR_NONE) { + TRACE_ERROR_MSG("download:%d add_http_header_field error:%s", download_id_api, __print_errorcode(errorcode)); + } + errorcode = download_add_http_header_field(download_id_api, "test-header-field4", "test-header-data4"); + if (errorcode != DOWNLOAD_ERROR_NONE) { + TRACE_ERROR_MSG("download:%d add_http_header_field error:%s", download_id_api, __print_errorcode(errorcode)); + } + errorcode = download_add_http_header_field(download_id_api, "test-header-field2", "test-header-data2"); + if (errorcode != DOWNLOAD_ERROR_NONE) { + TRACE_ERROR_MSG("download:%d add_http_header_field error:%s", download_id_api, __print_errorcode(errorcode)); + } else { + char *header_value = NULL; + errorcode = download_get_http_header_field(download_id_api, "test-header-field2", &header_value); + if (errorcode != DOWNLOAD_ERROR_NONE) { + TRACE_ERROR_MSG("download:%d get_http_header_field error:%s", download_id_api, __print_errorcode(errorcode)); + } else { + if (header_value == NULL) + TRACE_ERROR_MSG("download:%d get_http_header_field value null", download_id_api); + if (header_value != NULL && strncmp(header_value, "test-header-data2", strlen(header_value)) != 0) { + TRACE_ERROR_MSG("download:%d get_http_header_field return wrong value", download_id_api); + } + } + free(header_value); + header_value = NULL; + errorcode = download_remove_http_header_field(download_id_api, "test-header-field2"); + if (errorcode != DOWNLOAD_ERROR_NONE) { + TRACE_ERROR_MSG("download:%d remove_http_header_field error:%s", download_id_api, __print_errorcode(errorcode)); + } else { + // after removing , get_http_header_field must be failed. expected errorcode : DOWNLOAD_ERROR_NO_DATA + errorcode = download_get_http_header_field(download_id_api, "test-header-field2", &header_value); + if (errorcode != DOWNLOAD_ERROR_NONE) { + TRACE_DEBUG_MSG("download:%d get_http_header_field error:%s", download_id_api, __print_errorcode(errorcode)); + if (errorcode != DOWNLOAD_ERROR_NO_DATA) + TRACE_DEBUG_MSG("download:%d get_http_header_field error:%s", download_id_api, __print_errorcode(errorcode)); + } else { + TRACE_ERROR_MSG("download:%d get_http_header_field after deleting return value:%s", download_id_api, header_value); + } + } + } + + char **fields = NULL; + int length = 0; + errorcode = download_get_http_header_field_list(download_id_api, &fields, &length); + if (errorcode != DOWNLOAD_ERROR_NONE) { + TRACE_ERROR_MSG("download:%d get_http_header_field_list error:%s", download_id_api, __print_errorcode(errorcode)); + } else { + if (fields == NULL) { + TRACE_ERROR_MSG("download:%d get_http_header_field_list array null, length:%d", download_id_api, length); + } else { + int i = 0; + for (; i < length; i++) { + TRACE_DEBUG_MSG("download:%d get_http_header_field_list %d:%s, length:%d", download_id_api, i, fields[i], length); + free(fields[i]); + } + free(fields); + } + } + + state = __download_get_state(download_id_api); + if (state == DOWNLOAD_STATE_DOWNLOADING) { + // in downloading, set_url api must be failed. expected errorcode : DOWNLOAD_ERROR_INVALID_STATE + errorcode = download_set_url(download_id_api, "http://test.com"); + if (errorcode != DOWNLOAD_ERROR_NONE) { + TRACE_DEBUG_MSG("download:%d set_url error:%s", download_id_api, __print_errorcode(errorcode)); + if (errorcode != DOWNLOAD_ERROR_INVALID_STATE) + TRACE_ERROR_MSG("download:%d set_url error:%s", download_id_api, __print_errorcode(errorcode)); + } else { + TRACE_ERROR_MSG("download:%d set_url in doownloading wrong action", download_id_api); + } + } + + // 3.8M from tizen.org + int download_id = __download_start("http://download.tizen.org/sdk/InstallManager/tizen-sdk-2.2/tizen-sdk-ubuntu32-v2.2.32.bin", 1); + struct timespec ts; + ts.tv_sec = 0; + ts.tv_nsec = 100000; + do { + nanosleep(&ts, NULL); + errorcode = download_get_state(download_id, &state); + if (errorcode != DOWNLOAD_ERROR_NONE) { + TRACE_ERROR_MSG("download:%d state error:%s",download_id, __print_errorcode(errorcode)); + break; + } + if (state == DOWNLOAD_STATE_QUEUED || state == DOWNLOAD_STATE_DOWNLOADING) { + sleep(1); + } + } while (!(state == DOWNLOAD_STATE_FAILED || state == DOWNLOAD_STATE_COMPLETED || state == DOWNLOAD_STATE_CANCELED)); + + download_destroy(download_id); + download_destroy(download_id_api); + download_destroy(download_id_state); + + TRACE_DEBUG_MSG("url-download-tc : finished"); + exit(EXIT_SUCCESS); +} |