--- /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 <glib.h>
+#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; i<garray->len; 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; i<garray->len; 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; i<garray->len;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; i<garray->len;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;i<garray->len;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;i<garray->len;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;
+}
+
+