test_ewk_setting.cpp   [plain text]


/*
 * Copyright (C) 2013 Cisco Systems, Inc. 
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 1.  Redistributions of source code must retain the above copyright
 *     notice, this list of conditions and the following disclaimer.
 * 2.  Red istributions in binary form must reproduce the above copyright
 *     notice, this list of conditions and the following disclaimer in the
 *     documentation and/or other materials provided with the distribution.
 *
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND ITS CONTRIBUTORS
 * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
 * PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT
 * HOLDERS OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 */

#include "config.h"

#include "UnitTestUtils/EWKTestBase.h"
#include "UnitTestUtils/EWKTestConfig.h"
#include <EWebKit.h>

using namespace EWKUnitTests;

/**
 * @brief Unit test for checking set/get of default quota for Web Database databases by ewk settings API.
 */
TEST_F(EWKTestBase, ewk_settings_web_database_default_quota)
{
    ASSERT_EQ(1 * 1024 * 1024, ewk_settings_web_database_default_quota_get());

    ewk_settings_web_database_default_quota_set(2 * 1024 * 1024);
    ASSERT_EQ(2 * 1024 * 1024, ewk_settings_web_database_default_quota_get());

    ewk_settings_web_database_default_quota_set(3 * 1024 * 1024);
    ASSERT_EQ(3 * 1024 * 1024, ewk_settings_web_database_default_quota_get());
}

/**
 * @brief Unit test for checking set/get of directory path where Web Database databases is stored by ewk settings API.
 */
TEST_F(EWKTestBase, ewk_settings_web_database_path)
{
    char* homePath = getenv("HOME");
    char* defaultPath = reinterpret_cast<char*>(malloc(strlen(homePath) + strlen("/.cache/WebKitEfl/Databases") + 1));

#if ENABLE(SQL_DATABASE)
    strncpy(defaultPath, homePath, strlen(homePath) + 1);
    ASSERT_STREQ(strcat(defaultPath, "/.cache/WebKitEfl/Databases"), ewk_settings_web_database_path_get());
#else
    ASSERT_STREQ(0, ewk_settings_web_database_path_get());
#endif
    free(defaultPath);

    ewk_settings_web_database_path_set("~/data/webkitDB");
#if ENABLE(SQL_DATABASE)
    ASSERT_STREQ("~/data/webkitDB", ewk_settings_web_database_path_get());
#else
    ASSERT_STREQ(0, ewk_settings_web_database_path_get());
#endif

    ewk_settings_web_database_path_set("~/tmp/webkit");
#if ENABLE(SQL_DATABASE)    
    ASSERT_STREQ("~/tmp/webkit", ewk_settings_web_database_path_get());
#else
    ASSERT_STREQ(0, ewk_settings_web_database_path_get());
#endif
}

/**
 * @brief Unit test for checking set/get of directory path where the HTML5 local storage indexing database is stored by ewk settings API.
 */
TEST_F(EWKTestBase, ewk_settings_local_storage_path)
{
    char* homePath = getenv("HOME");
    char* defaultPath = reinterpret_cast<char*>(malloc(strlen(homePath) + strlen("/.local/share/WebKitEfl/LocalStorage") + 1));

    strncpy(defaultPath, homePath, strlen(homePath) + 1);
    ASSERT_STREQ(strcat(defaultPath, "/.local/share/WebKitEfl/LocalStorage"), ewk_settings_local_storage_path_get());
    free(defaultPath);

    ewk_settings_local_storage_path_set("~/data/webkitDB");
    ASSERT_STREQ("~/data/webkitDB", ewk_settings_local_storage_path_get());

    ewk_settings_local_storage_path_set("~/tmp/webkit");
    ASSERT_STREQ("~/tmp/webkit", ewk_settings_local_storage_path_get());
}

/**
 * @brief Unit test for checking set/get of directory path where icon database is stored by ewk settings API.
 */
TEST_F(EWKTestBase, ewk_settings_icon_database_path)
{
    ASSERT_STREQ(0, ewk_settings_icon_database_path_get());

    ASSERT_TRUE(ewk_settings_icon_database_path_set("/tmp"));
    ASSERT_STREQ("/tmp", ewk_settings_icon_database_path_get());

    ASSERT_TRUE(ewk_settings_icon_database_path_set(0));
    ASSERT_STREQ(0, ewk_settings_icon_database_path_get());
}

/**
 * @brief Unit test for checking set/get of path where the HTML5 application cache is stored by ewk settings API.
 */
TEST_F(EWKTestBase, ewk_settings_application_cache_path)
{
    char* homePath = getenv("HOME");
    char* defaultPath = reinterpret_cast<char*>(malloc(strlen(homePath) + strlen("/.cache/WebKitEfl/Applications") + 1));

    strncpy(defaultPath, homePath, strlen(homePath) + 1);
    ASSERT_STREQ(strcat(defaultPath, "/.cache/WebKitEfl/Applications"), ewk_settings_application_cache_path_get());
    free(defaultPath);

    ewk_settings_application_cache_path_set("~/data/webkitApp");
    ASSERT_STREQ("~/data/webkitApp", ewk_settings_application_cache_path_get());

    ewk_settings_application_cache_path_set("~/tmp/webkitApp");
    ASSERT_STREQ("~/tmp/webkitApp", ewk_settings_application_cache_path_get());
}

/**
 * @brief Unit test for checking set/get of maximum size of the application cache for HTML5 Offline Web Applications by ewk settings API.
 */
TEST_F(EWKTestBase, ewk_settings_application_cache_max_quota)
{
    ASSERT_EQ(std::numeric_limits<int64_t>::max(), ewk_settings_application_cache_max_quota_get());

    ewk_settings_application_cache_max_quota_set(3 * 1024 * 1024);
    ASSERT_EQ(3 * 1024 * 1024, ewk_settings_application_cache_max_quota_get());

    ewk_settings_application_cache_max_quota_set(5 * 1024 * 1024);
    ASSERT_EQ(5 * 1024 * 1024, ewk_settings_application_cache_max_quota_get());
}

/**
 * @brief Unit test for checking set/get of in-memory object cache Enables/Disables status by ewk settings API.
 */
TEST_F(EWKTestBase, ewk_settings_object_cache_enable)
{
    ASSERT_TRUE(ewk_settings_object_cache_enable_get());

    ewk_settings_object_cache_enable_set(false);
    ASSERT_FALSE(ewk_settings_object_cache_enable_get());

    ewk_settings_object_cache_enable_set(true);
    ASSERT_TRUE(ewk_settings_object_cache_enable_get());
}

/**
 * @brief Unit test for checking set/get of maximum number of pages in the memory page cache by ewk settings API.
 */
TEST_F(EWKTestBase, ewk_settings_page_cache_capacity)
{
    ASSERT_EQ(3, ewk_settings_page_cache_capacity_get());

    ewk_settings_page_cache_capacity_set(5);
    ASSERT_EQ(5, ewk_settings_page_cache_capacity_get());
}

/**
 * @brief Unit test for checking set/get of css media type by ewk settings API.
 */
TEST_F(EWKTestBase, ewk_settings_css_media_type)
{
    ASSERT_STREQ(0, ewk_settings_css_media_type_get());

    ewk_settings_css_media_type_set("handheld");
    ASSERT_STREQ("handheld", ewk_settings_css_media_type_get());

    ewk_settings_css_media_type_set("tv");
    ASSERT_STREQ("tv", ewk_settings_css_media_type_get());

    ewk_settings_css_media_type_set("screen");
    ASSERT_STREQ("screen", ewk_settings_css_media_type_get());

    ewk_settings_css_media_type_set(0);
    ASSERT_STREQ(0, ewk_settings_css_media_type_get());
}