sl@0: /* sl@0: * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). All rights reserved. sl@0: * sl@0: * This library is free software; you can redistribute it and/or sl@0: * modify it under the terms of the GNU Lesser General Public sl@0: * License as published by the Free Software Foundation; either sl@0: * version 2 of the License, or (at your option) any later version. sl@0: * sl@0: * This library is distributed in the hope that it will be useful, sl@0: * but WITHOUT ANY WARRANTY; without even the implied warranty of sl@0: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU sl@0: * Lesser General Public License for more details. sl@0: * sl@0: * You should have received a copy of the GNU Lesser General Public sl@0: * License along with this library; if not, write to the sl@0: * Free Software Foundation, Inc., 59 Temple Place - Suite 330, sl@0: * Boston, MA 02111-1307, USA. sl@0: * sl@0: * Description: ?Description sl@0: * sl@0: */ sl@0: sl@0: sl@0: #undef G_DISABLE_ASSERT sl@0: #undef G_LOG_DOMAIN sl@0: sl@0: sl@0: #include sl@0: #include sl@0: #include sl@0: #include sl@0: #include sl@0: #include sl@0: #include sl@0: sl@0: #ifdef SYMBIAN sl@0: #include "mrt2_glib2_test.h" sl@0: #endif /*SYMBIAN*/ sl@0: sl@0: #define C2P(c) ((gpointer) ((long) (c))) sl@0: #define GINT_TO_POINTER(i) ((gpointer) (i)) sl@0: #define GPOINTER_TO_INT(p) ((gint) (p)) sl@0: #define TESTPASS 1 sl@0: #define TESTFAIL 0 sl@0: sl@0: sl@0: //Test for g_strcanon sl@0: void tg_strcanon() sl@0: { sl@0: gchar string1[]="aabbccdd"; sl@0: gchar string2[]="aabbccdd"; sl@0: gchar* valid; sl@0: gchar* teststring1; sl@0: gchar* teststring2; sl@0: sl@0: //Testing for a valid char available in the string sl@0: //The invalid chars must be replaced sl@0: valid="cc"; sl@0: teststring1=g_strcanon (string1, valid, 'x'); sl@0: g_assert(!strcmp(teststring1,"xxxxccxx")); sl@0: sl@0: //Testing for a valid char not-available in the string sl@0: //All the chars must be replaced sl@0: valid="nn"; sl@0: teststring2=g_strcanon(string2,valid,'x'); sl@0: g_assert(!strcmp(teststring2,"xxxxxxxx")); sl@0: } sl@0: sl@0: //Test for g_strcasecmp sl@0: void tg_strcasecmp() sl@0: { sl@0: gint strcasecmp_eq,strcasecmp_gr8,strcasecmp_less; sl@0: //Testing for equal strings,zero must be returned sl@0: strcasecmp_eq=g_strcasecmp ("abcd123","abcd123"); sl@0: g_assert(strcasecmp_eq==0); sl@0: sl@0: //Testing for un-equal strings,left greater,positive value must be returned sl@0: strcasecmp_gr8=g_strcasecmp ("abcd123","abcd"); sl@0: g_assert(strcasecmp_gr8>0); sl@0: sl@0: //Testing for un-equal strings,right greater,negative value must be returned sl@0: strcasecmp_less=g_strcasecmp ("abcd","abcd123"); sl@0: g_assert(strcasecmp_less<0); sl@0: sl@0: } sl@0: sl@0: //Test for g_strdown sl@0: void tg_strdown() sl@0: { sl@0: gchar input[]="ABCDef"; sl@0: gchar* upperToLower=g_strdown(input); sl@0: g_assert(!strcmp(upperToLower,"abcdef")); sl@0: } sl@0: sl@0: //Test for g_string_append_c sl@0: void tg_string_append_c() sl@0: { sl@0: GString* obj=(GString*)malloc(sizeof(GString)); sl@0: gchar ip[]="abcd"; sl@0: obj->str=ip; sl@0: obj->len=strlen(ip); sl@0: obj->allocated_len=10; sl@0: obj=g_string_append_c(obj,'e'); sl@0: g_assert(!strcmp((obj->str),"abcde")); sl@0: } sl@0: sl@0: //Test for g_string_ascii_down sl@0: void tg_string_ascii_down() sl@0: { sl@0: GString* obj=(GString*)malloc(sizeof(GString)); sl@0: gchar ip[]="ABc12DeF"; sl@0: obj->str=ip; sl@0: obj->len=strlen(ip); sl@0: obj->allocated_len=10; sl@0: obj=g_string_ascii_down(obj); sl@0: g_assert(!strcmp((obj->str),"abc12def")); sl@0: } sl@0: sl@0: //Test for g_string_ascii_up sl@0: void tg_string_ascii_up() sl@0: { sl@0: GString* obj=(GString*)malloc(sizeof(GString)); sl@0: gchar ip[]="ABc12DeF"; sl@0: obj->str=ip; sl@0: obj->len=strlen(ip); sl@0: obj->allocated_len=10; sl@0: obj=g_string_ascii_up(obj); sl@0: g_assert(!strcmp((obj->str),"ABC12DEF")); sl@0: } sl@0: sl@0: //Test for g_string_down sl@0: void tg_string_down() sl@0: { sl@0: GString* obj=(GString*)malloc(sizeof(GString)); sl@0: gchar ip[]="ABc12DeF"; sl@0: obj->str=ip; sl@0: obj->len=strlen(ip); sl@0: obj->allocated_len=10; sl@0: obj=g_string_down(obj); sl@0: g_assert(!strcmp((obj->str),"abc12def")); sl@0: } sl@0: sl@0: //Test for g_string_hash sl@0: void tg_string_hash() sl@0: { sl@0: GString* obj=(GString*)malloc(sizeof(GString)); sl@0: guint g_string_hash_result1,g_string_hash_result2; sl@0: guint g_string_hash_result3,g_string_hash_result4; sl@0: gchar ip1[]="ABC12"; sl@0: gchar ip2[]="abc12"; sl@0: obj->allocated_len=10; sl@0: sl@0: obj->str=ip1; sl@0: obj->len=strlen(ip1); sl@0: g_string_hash_result1=g_string_hash(obj); sl@0: g_string_hash_result2=g_string_hash(obj); sl@0: g_assert(g_string_hash_result1==g_string_hash_result2); sl@0: sl@0: obj->str=ip2; sl@0: obj->len=strlen(ip2); sl@0: g_string_hash_result3=g_string_hash(obj); sl@0: g_string_hash_result4=g_string_hash(obj); sl@0: g_assert(g_string_hash_result3==g_string_hash_result4); sl@0: sl@0: g_assert(g_string_hash_result1 != g_string_hash_result3); sl@0: sl@0: } sl@0: sl@0: sl@0: //Test for g_string_prepend_c sl@0: void tg_string_prepend_c() sl@0: { sl@0: GString* obj=(GString*)malloc(sizeof(GString)); sl@0: gchar ip[]="abcd"; sl@0: obj->str=ip; sl@0: obj->len=strlen(ip); sl@0: obj->allocated_len=10; sl@0: obj=g_string_prepend_c(obj,'e'); sl@0: g_assert(!strcmp((obj->str),"eabcd")); sl@0: } sl@0: sl@0: sl@0: //Test for g_string_up sl@0: void tg_string_up() sl@0: { sl@0: GString* obj=(GString*)malloc(sizeof(GString)); sl@0: gchar ip[]="ABc12DeF"; sl@0: obj->str=ip; sl@0: obj->len=strlen(ip); sl@0: obj->allocated_len=10; sl@0: obj=g_string_up(obj); sl@0: g_assert(!strcmp((obj->str),"ABC12DEF")); sl@0: } sl@0: sl@0: sl@0: //Test for g_string_prepend_unichar sl@0: void tg_string_prepend_unichar() sl@0: { sl@0: GString* obj=(GString*)malloc(sizeof(GString)); sl@0: gchar ip[]="abcd"; sl@0: obj->str=ip; sl@0: obj->len=strlen(ip); sl@0: obj->allocated_len=10; sl@0: obj=g_string_prepend_unichar(obj,'e'); sl@0: g_assert(!strcmp((obj->str),"eabcd")); sl@0: } sl@0: sl@0: //Test for g_strip_context sl@0: void tg_strip_context() sl@0: { sl@0: gchar msgid[]="abc|defgh"; sl@0: gchar msgval[]="abc|defgh"; sl@0: const gchar* op; sl@0: op=g_strip_context(msgid,msgid); sl@0: g_assert(!strcmp(op,"defgh")); sl@0: } sl@0: sl@0: //Test for g_strjoin sl@0: void tg_strjoin() sl@0: { sl@0: gchar sep[]="#&#"; sl@0: gchar a[]="abc"; sl@0: gchar b[]="def"; sl@0: gchar* op=g_strjoin(sep,a,b,NULL); sl@0: g_assert(!strcmp(op,"abc#&#def")); sl@0: } sl@0: sl@0: sl@0: //Test for g_strncasecmp sl@0: void tg_strncasecmp() sl@0: { sl@0: gint strncasecmp_eq,strncasecmp_gr8,strncasecmp_less; sl@0: //Testing for equal strings,zero must be returned sl@0: strncasecmp_eq=g_strncasecmp ("abcd123","abcd123",10); sl@0: g_assert(strncasecmp_eq==0); sl@0: sl@0: //Testing for un-equal strings,left greater,positive value must be returned sl@0: strncasecmp_gr8=g_strncasecmp ("abcd123","abcd",4); sl@0: g_assert(strncasecmp_gr8==0); sl@0: sl@0: //Testing for un-equal strings,right greater,negative value must be returned sl@0: strncasecmp_less=g_strncasecmp ("abcd","abcd123",6); sl@0: g_assert(strncasecmp_less<0); sl@0: sl@0: } sl@0: sl@0: sl@0: //Test for g_strnfill sl@0: void tg_strnfill() sl@0: { sl@0: gchar fill='x'; sl@0: gsize size=10; sl@0: gchar* strnfill_buf_null; sl@0: gchar* strnfill_buf=g_strnfill(size,fill); sl@0: g_assert(!strcmp(strnfill_buf,"xxxxxxxxxx")); sl@0: sl@0: size=0; sl@0: strnfill_buf_null=g_strnfill(size,fill); sl@0: g_assert(!strcmp(strnfill_buf_null,"")); sl@0: sl@0: } sl@0: sl@0: //Test for g_strreverse sl@0: void tg_strreverse() sl@0: { sl@0: gchar ip[]="abCdeF123"; sl@0: gchar* strreverse_op=g_strreverse(ip); sl@0: g_assert(!strcmp(strreverse_op,"321FedCba")); sl@0: sl@0: } sl@0: sl@0: sl@0: //Test for g_strup sl@0: void tg_strup() sl@0: { sl@0: gchar ip[]="Abc12deF"; sl@0: gchar* strup=g_strup(ip); sl@0: g_assert(!strcmp(strup,"ABC12DEF")); sl@0: } sl@0: sl@0: sl@0: //Test for g_pattern_match_string sl@0: void tg_pattern_match_string() sl@0: { sl@0: gchar pattern_str[]="abcdefghijklmnopqrstuvwxyz"; sl@0: gchar match_str_pos[]="abcdefghijklmnopqrstuvwxyz"; //Proper a-z sl@0: gchar match_str_neg[]="abcdefghjiklmnopqrstuvwxyz"; //i and j interchanged sl@0: sl@0: GPatternSpec* spec=g_pattern_spec_new(pattern_str); sl@0: g_assert(g_pattern_match_string(spec,match_str_pos)); sl@0: g_assert(!g_pattern_match_string(spec,match_str_neg)); sl@0: sl@0: } sl@0: sl@0: //Called by g_printf_string_upper_bound for a va-list sl@0: void test_arg_string_upper_bound(gchar* fmt,...) sl@0: { sl@0: va_list ap; sl@0: va_start(ap,fmt); sl@0: g_assert(g_printf_string_upper_bound(fmt,ap)==27); sl@0: va_end(ap); sl@0: } sl@0: //Test for g_printf_string_upper_bound sl@0: void tg_printf_string_upper_bound() sl@0: { sl@0: test_arg_string_upper_bound("%d\n%s\t%f",9999999,"Abcd#%@",999.999999); sl@0: } sl@0: sl@0: sl@0: //Test for g_sprintf sl@0: void tg_sprintf() sl@0: { sl@0: gchar sprintf_converted[100]; sl@0: gint sprintf_return_val=g_sprintf(sprintf_converted,"%d%s%f",9999999,"Abcd#%@",999.999999); sl@0: g_assert(sprintf_return_val==24); sl@0: } sl@0: sl@0: sl@0: sl@0: int main (int argc,char *argv[]) sl@0: { sl@0: sl@0: #ifdef SYMBIAN sl@0: g_log_set_handler (NULL, G_LOG_FLAG_FATAL| G_LOG_FLAG_RECURSION | G_LOG_LEVEL_CRITICAL | G_LOG_LEVEL_WARNING | G_LOG_LEVEL_MESSAGE | G_LOG_LEVEL_INFO | G_LOG_LEVEL_DEBUG, &mrtLogHandler, NULL); sl@0: #endif /*SYMBIAN*/ sl@0: sl@0: tg_strcanon(); sl@0: tg_strcasecmp(); sl@0: tg_strdown(); sl@0: tg_string_append_c(); sl@0: tg_string_ascii_down(); sl@0: tg_string_ascii_up(); sl@0: tg_string_down(); sl@0: tg_string_hash(); sl@0: tg_string_prepend_c(); sl@0: tg_string_prepend_unichar(); sl@0: tg_string_up(); sl@0: tg_strip_context(); sl@0: tg_strjoin(); sl@0: tg_strncasecmp(); sl@0: tg_strnfill(); sl@0: tg_strreverse(); sl@0: tg_strup(); sl@0: tg_pattern_match_string(); sl@0: tg_printf_string_upper_bound(); sl@0: tg_sprintf(); sl@0: sl@0: #ifdef SYMBIAN sl@0: testResultXml("tgstring"); sl@0: #endif /* EMULATOR */ sl@0: return 0; sl@0: }