diff -r e5d77a29bdca -r 79045913e4e9 glib/tests/array-test1.c --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/glib/tests/array-test1.c Thu Aug 05 23:23:13 2010 +0530 @@ -0,0 +1,309 @@ +// Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies). +// All rights reserved. +// This component and the accompanying materials are made available +// under the terms of "Eclipse Public License v1.0" +// which accompanies this distribution, and is available +// at the URL "http://www.eclipse.org/legal/epl-v10.html". +// +// Initial Contributors: +// Nokia Corporation - initial contribution. +// +// Contributors: +// +// Description: +// + + +#undef G_DISABLE_ASSERT +#undef G_LOG_DOMAIN + +#include +#define LOG_FILE "c:\\logs\\array1_test_log.txt" +#include "std_log_result.h" +#define LOG_FILENAME_LINE __FILE__, __LINE__ + + +void create_xml(int result) +{ + if(result) + assert_failed = 1; + + testResultXml("array-test"); + close_log_file(); +} + +static gint sort (gconstpointer a, gconstpointer b) +{ + if(*(guint32*)a == *(guint32*)b) + return 0; + else + return *(guint32*)a < *(guint32*)b ? -1 : 1; +} + + +static gint sort_userdata (gconstpointer a, gconstpointer b, gpointer user_data) +{ + if(*(guint32*)a == *(guint32*)b) + return 0; + else + return *(guint32*)a < *(guint32*)b ? -1 : 1; +} + + + +/*Will return TRUE if input GArray and int[] array 2 are same else FALSE*/ +gboolean compare_array(GArray* array1, gint* array2, gint size) +{ + + int i; + if ( size != array1->len) + return FALSE; + for ( i = 0; i < size ; i++) + { + if ( g_array_index(array1, gint, i) != array2[i]) + return FALSE; + } + + return TRUE; +} + + +void test_remove_array_index() +{ + GArray *garray; + + const gint ARRAY_SIZE = 7; + const gint ARRAY_SIZE_AFTER_REMOVE_INDEX = 6; + const gint ARRAY_SIZE_AFTER_REMOVE_INDEX_FAST = 5; + + gint array[ARRAY_SIZE] = {4,5,6,7,8,9,10}; + gint array_after_remove_index_1[ARRAY_SIZE_AFTER_REMOVE_INDEX]= {4,6,7,8,9,10}; /*array after removing index 1*/ + gint array_after_remove_index_fast_2[ARRAY_SIZE_AFTER_REMOVE_INDEX_FAST] = {4,6,10,8,9}; /* array after removing index 2 fast. Input is array after removing index 1 */ + + int i; + gboolean ret; + + garray = g_array_new (FALSE,FALSE,sizeof(gint)); + if(garray == NULL) + { + std_log(LOG_FILENAME_LINE, "Array not created"); + assert_failed = 1; + return ; + } + + /*Insert values into array*/ + g_array_insert_vals(garray,0,array,ARRAY_SIZE); + + /* test for deleting single element in an array. Removing the element with index 1*/ + std_log(LOG_FILENAME_LINE, "Delete array element at index 1"); + garray = g_array_remove_index(garray,1); + + if(garray == NULL ) + { + std_log(LOG_FILENAME_LINE, "NULL return by g_array_remove_index"); + assert_failed = 1; + return ; + } + + /*Print the array elements after remove*/ + for(i=0; ilen; i++) + { + std_log(LOG_FILENAME_LINE, "Current array element at index %d is %d", i,g_array_index(garray, gint, i)); + } + + /*Check if the array size is now 4 and element at index 1 is not 5 after removal*/ + + ret = compare_array(garray, array_after_remove_index_1, ARRAY_SIZE_AFTER_REMOVE_INDEX); + if ( !ret) + { + std_log(LOG_FILENAME_LINE, "Array Element not properly deleted by g_array_remove_index"); + assert_failed = 1; + g_array_free(garray,TRUE); + return ; + } + + + /* Test to remove index element 2 using g_array_remove_index_fast*/ + + std_log(LOG_FILENAME_LINE, "Delete array element at index 2"); + garray =g_array_remove_index_fast(garray,2); + if(garray == NULL) + { + std_log(LOG_FILENAME_LINE, "NULL return by g_array_remove_index_fast"); + assert_failed = 1; + return ; + } + + for(i=0; ilen; i++) + { + std_log(LOG_FILENAME_LINE, "Current array element at index %d is %d", i,g_array_index(garray, gint, i)); + } + + ret = compare_array(garray, array_after_remove_index_fast_2, ARRAY_SIZE_AFTER_REMOVE_INDEX_FAST); + if ( !ret) + { + std_log(LOG_FILENAME_LINE, "Array Element not properly deleted by g_array_remove_index_fast"); + assert_failed = 1; + g_array_free(garray,TRUE); + return; + } + g_array_free(garray,TRUE); +} + + +void test_test_remove_array_index_range() +{ + const int ARRAY_SIZE = 10; + const int ARRAY_SIZE_AFTER_REMOVE_INDEX_RANGE = 8; + + gint array[ARRAY_SIZE]= {10,5,16,7,11,0,20,1,9,8}; + gint array_after_remove_index_range[ARRAY_SIZE_AFTER_REMOVE_INDEX_RANGE] = {10,5,16,0,20,1,9,8}; /*after removing 2 elements from index 3*/ + + gboolean ret; + GArray* garray; + int i; + + garray = g_array_new (FALSE,FALSE,sizeof(gint)); + if(garray == NULL) + { + std_log(LOG_FILENAME_LINE, "Array not created"); + assert_failed = 1; + return ; + } + + g_array_insert_vals(garray,0,array,ARRAY_SIZE); + for(i=0; ilen;i++) + { + std_log(LOG_FILENAME_LINE, "Current array elements %d is %d", i,g_array_index(garray, gint, i)); + } + + garray = g_array_remove_range(garray,3,2); /*remove two elements from index 3 */ + + if(garray == NULL) + { + std_log(LOG_FILENAME_LINE,"Elements not deleted properly by g_array_remove_range"); + assert_failed = 1; + return ; + + } + + /*print the array elements */ + for(i=0; ilen;i++) + { + std_log(LOG_FILENAME_LINE, "Curent array element(after deletion) %d is %d", i,g_array_index(garray, gint, i)); + } + + + ret = compare_array(garray, array_after_remove_index_range, ARRAY_SIZE_AFTER_REMOVE_INDEX_RANGE); + if(!ret) + { + std_log(LOG_FILENAME_LINE,"Elements not deleted properly"); + assert_failed = 1; + g_array_free(garray,TRUE); + return ; + } + g_array_free(garray,TRUE); +} + + +void test_sort_array() +{ + + GArray *garray; + const int ARRAY_SIZE = 11; + gint array[ARRAY_SIZE] = {10,5,16,7,11,0,20,1,9,8,9}; + gint sort_array[ARRAY_SIZE] = {0,1,5,7,8,9,9,10,11,16,20}; + + gboolean ret; + int i; + + /* Test for sorting the array elements */ + + garray = g_array_new (FALSE,FALSE,sizeof(gint)); + + if(garray == NULL) + { + std_log(LOG_FILENAME_LINE, "Array not created"); + assert_failed = 1; + return ; + } + g_array_insert_vals(garray,0,array,ARRAY_SIZE); + + g_array_sort(garray, sort); + + if(garray == NULL) + { + std_log(LOG_FILENAME_LINE, "Array not sorted"); + assert_failed = 1; + return ; + } + + std_log(LOG_FILENAME_LINE,"SORTED ARRAY"); + + for(i=0;ilen;i++) + { + std_log(LOG_FILENAME_LINE, "Element %d is %d", i,g_array_index(garray, gint, i)); + } + + ret = compare_array(garray, sort_array, ARRAY_SIZE); + + if(!ret) + { + std_log(LOG_FILENAME_LINE, "Array not sorted correctly"); + assert_failed = 1; + return ; + } + + g_array_free(garray,TRUE); + + + garray = g_array_new (FALSE,FALSE,sizeof(gint)); + if(garray == NULL) + { + std_log(LOG_FILENAME_LINE, "Array not created"); + return ; + } + g_array_insert_vals(garray,0,array,ARRAY_SIZE); + + g_array_sort_with_data (garray, sort_userdata, NULL); + + if(garray == NULL) + { + std_log(LOG_FILENAME_LINE, "Array not sorted with user data"); + assert_failed = 1; + return ; + } + + std_log(LOG_FILENAME_LINE,"SORTED ARRAY WITH USERDATA"); + for(i=0;ilen;i++) + { + std_log(LOG_FILENAME_LINE, "Element %d is %d", i,g_array_index(garray, gint, i)); + } + + ret = compare_array(garray, sort_array, ARRAY_SIZE); + if(!ret) + { + std_log(LOG_FILENAME_LINE, "Array not sorted correctly with user data"); + assert_failed = 1; + return ; + } + g_array_free(garray,TRUE); +} + + +int main (void) +{ + test_test_remove_array_index_range(); + test_sort_array(); + test_remove_array_index(); + + if(assert_failed) + std_log(LOG_FILENAME_LINE,"Test Failed"); + else + std_log(LOG_FILENAME_LINE,"Test Successful"); + + create_xml(0); + return 0; +} + +