os/ossrv/glib/tsrc/BC/src/tgstring.c
author sl
Tue, 10 Jun 2014 14:32:02 +0200
changeset 1 260cb5ec6c19
permissions -rw-r--r--
Update contrib.
sl@0
     1
/*
sl@0
     2
* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). All rights reserved.
sl@0
     3
*
sl@0
     4
* This library is free software; you can redistribute it and/or
sl@0
     5
* modify it under the terms of the GNU Lesser General Public
sl@0
     6
* License as published by the Free Software Foundation; either
sl@0
     7
* version 2 of the License, or (at your option) any later version.
sl@0
     8
*
sl@0
     9
* This library is distributed in the hope that it will be useful,
sl@0
    10
* but WITHOUT ANY WARRANTY; without even the implied warranty of
sl@0
    11
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
sl@0
    12
* Lesser General Public License for more details.
sl@0
    13
*
sl@0
    14
* You should have received a copy of the GNU Lesser General Public
sl@0
    15
* License along with this library; if not, write to the
sl@0
    16
* Free Software Foundation, Inc., 59 Temple Place - Suite 330,
sl@0
    17
* Boston, MA 02111-1307, USA.
sl@0
    18
*
sl@0
    19
* Description:  ?Description
sl@0
    20
*
sl@0
    21
*/
sl@0
    22
sl@0
    23
sl@0
    24
#undef G_DISABLE_ASSERT
sl@0
    25
#undef G_LOG_DOMAIN
sl@0
    26
sl@0
    27
sl@0
    28
#include <stdio.h>
sl@0
    29
#include <string.h>
sl@0
    30
#include <glib.h>
sl@0
    31
#include <fcntl.h>
sl@0
    32
#include <goption.h>
sl@0
    33
#include <glib/gprintf.h>
sl@0
    34
#include <stdlib.h>
sl@0
    35
sl@0
    36
#ifdef SYMBIAN
sl@0
    37
#include "mrt2_glib2_test.h"
sl@0
    38
#endif /*SYMBIAN*/
sl@0
    39
sl@0
    40
#define	C2P(c)		((gpointer) ((long) (c)))
sl@0
    41
#define GINT_TO_POINTER(i)	((gpointer)  (i))
sl@0
    42
#define GPOINTER_TO_INT(p)	((gint)   (p))
sl@0
    43
#define TESTPASS	1
sl@0
    44
#define TESTFAIL	0
sl@0
    45
sl@0
    46
sl@0
    47
//Test for g_strcanon
sl@0
    48
void tg_strcanon()
sl@0
    49
{
sl@0
    50
	gchar string1[]="aabbccdd";
sl@0
    51
	gchar string2[]="aabbccdd";
sl@0
    52
	gchar* valid;
sl@0
    53
	gchar* teststring1;
sl@0
    54
	gchar* teststring2;
sl@0
    55
  
sl@0
    56
 	//Testing for a valid char available in the string
sl@0
    57
 	//The invalid chars must be replaced
sl@0
    58
 	valid="cc";
sl@0
    59
 	teststring1=g_strcanon (string1, valid, 'x');
sl@0
    60
 	g_assert(!strcmp(teststring1,"xxxxccxx"));
sl@0
    61
sl@0
    62
	//Testing for a valid char not-available in the string
sl@0
    63
	//All the chars must be replaced
sl@0
    64
	valid="nn";
sl@0
    65
	teststring2=g_strcanon(string2,valid,'x');
sl@0
    66
	g_assert(!strcmp(teststring2,"xxxxxxxx"));
sl@0
    67
}
sl@0
    68
sl@0
    69
//Test for g_strcasecmp
sl@0
    70
void tg_strcasecmp()
sl@0
    71
{
sl@0
    72
 	gint strcasecmp_eq,strcasecmp_gr8,strcasecmp_less;
sl@0
    73
 	//Testing for equal strings,zero must be returned
sl@0
    74
 	strcasecmp_eq=g_strcasecmp ("abcd123","abcd123");
sl@0
    75
 	g_assert(strcasecmp_eq==0);
sl@0
    76
sl@0
    77
 	//Testing for un-equal strings,left greater,positive value must be returned
sl@0
    78
 	strcasecmp_gr8=g_strcasecmp ("abcd123","abcd");
sl@0
    79
 	g_assert(strcasecmp_gr8>0);
sl@0
    80
 	
sl@0
    81
 	//Testing for un-equal strings,right greater,negative value must be returned
sl@0
    82
 	strcasecmp_less=g_strcasecmp ("abcd","abcd123");
sl@0
    83
 	g_assert(strcasecmp_less<0);
sl@0
    84
 	
sl@0
    85
 }
sl@0
    86
 
sl@0
    87
 //Test for g_strdown
sl@0
    88
 void tg_strdown()
sl@0
    89
 {
sl@0
    90
 	gchar input[]="ABCDef";
sl@0
    91
 	gchar* upperToLower=g_strdown(input);
sl@0
    92
 	g_assert(!strcmp(upperToLower,"abcdef"));	
sl@0
    93
 }
sl@0
    94
 
sl@0
    95
 //Test for g_string_append_c
sl@0
    96
 void tg_string_append_c()
sl@0
    97
 {
sl@0
    98
	GString* obj=(GString*)malloc(sizeof(GString));
sl@0
    99
	gchar ip[]="abcd";
sl@0
   100
  	obj->str=ip;
sl@0
   101
 	obj->len=strlen(ip);
sl@0
   102
 	obj->allocated_len=10;
sl@0
   103
 	obj=g_string_append_c(obj,'e');
sl@0
   104
 	g_assert(!strcmp((obj->str),"abcde"));
sl@0
   105
 }
sl@0
   106
 
sl@0
   107
 //Test for g_string_ascii_down
sl@0
   108
 void tg_string_ascii_down()
sl@0
   109
 {
sl@0
   110
 	GString* obj=(GString*)malloc(sizeof(GString));
sl@0
   111
 	gchar ip[]="ABc12DeF";
sl@0
   112
 	obj->str=ip;
sl@0
   113
 	obj->len=strlen(ip);
sl@0
   114
 	obj->allocated_len=10;
sl@0
   115
 	obj=g_string_ascii_down(obj);
sl@0
   116
 	g_assert(!strcmp((obj->str),"abc12def"));
sl@0
   117
 }
sl@0
   118
 
sl@0
   119
 //Test for g_string_ascii_up
sl@0
   120
 void tg_string_ascii_up()
sl@0
   121
 {
sl@0
   122
 	GString* obj=(GString*)malloc(sizeof(GString));
sl@0
   123
 	gchar ip[]="ABc12DeF";
sl@0
   124
 	obj->str=ip;
sl@0
   125
 	obj->len=strlen(ip);
sl@0
   126
 	obj->allocated_len=10;
sl@0
   127
 	obj=g_string_ascii_up(obj);
sl@0
   128
 	g_assert(!strcmp((obj->str),"ABC12DEF"));
sl@0
   129
 }
sl@0
   130
 
sl@0
   131
 //Test for g_string_down
sl@0
   132
 void tg_string_down()
sl@0
   133
 {
sl@0
   134
 	GString* obj=(GString*)malloc(sizeof(GString));
sl@0
   135
 	gchar ip[]="ABc12DeF";
sl@0
   136
 	obj->str=ip;
sl@0
   137
 	obj->len=strlen(ip);
sl@0
   138
 	obj->allocated_len=10;
sl@0
   139
 	obj=g_string_down(obj);
sl@0
   140
 	g_assert(!strcmp((obj->str),"abc12def"));
sl@0
   141
 }
sl@0
   142
sl@0
   143
 //Test for g_string_hash
sl@0
   144
 void tg_string_hash()
sl@0
   145
 {
sl@0
   146
 	GString* obj=(GString*)malloc(sizeof(GString));
sl@0
   147
 	guint g_string_hash_result1,g_string_hash_result2;
sl@0
   148
 	guint g_string_hash_result3,g_string_hash_result4;
sl@0
   149
 	gchar ip1[]="ABC12";
sl@0
   150
 	gchar ip2[]="abc12";
sl@0
   151
 	obj->allocated_len=10;
sl@0
   152
 	
sl@0
   153
 	obj->str=ip1;
sl@0
   154
 	obj->len=strlen(ip1);
sl@0
   155
 	g_string_hash_result1=g_string_hash(obj);
sl@0
   156
 	g_string_hash_result2=g_string_hash(obj);
sl@0
   157
 	g_assert(g_string_hash_result1==g_string_hash_result2);
sl@0
   158
 	
sl@0
   159
 	obj->str=ip2;
sl@0
   160
 	obj->len=strlen(ip2);
sl@0
   161
 	g_string_hash_result3=g_string_hash(obj);
sl@0
   162
 	g_string_hash_result4=g_string_hash(obj);
sl@0
   163
 	g_assert(g_string_hash_result3==g_string_hash_result4);
sl@0
   164
 	
sl@0
   165
 	g_assert(g_string_hash_result1 != g_string_hash_result3);
sl@0
   166
 	
sl@0
   167
 }
sl@0
   168
 
sl@0
   169
 
sl@0
   170
 //Test for g_string_prepend_c
sl@0
   171
  void tg_string_prepend_c()
sl@0
   172
 {
sl@0
   173
	GString* obj=(GString*)malloc(sizeof(GString));
sl@0
   174
	gchar ip[]="abcd";
sl@0
   175
  	obj->str=ip;
sl@0
   176
 	obj->len=strlen(ip);
sl@0
   177
 	obj->allocated_len=10;
sl@0
   178
 	obj=g_string_prepend_c(obj,'e');
sl@0
   179
 	g_assert(!strcmp((obj->str),"eabcd"));
sl@0
   180
 }
sl@0
   181
 
sl@0
   182
 
sl@0
   183
 //Test for g_string_up
sl@0
   184
 void tg_string_up()
sl@0
   185
 {
sl@0
   186
 	GString* obj=(GString*)malloc(sizeof(GString));
sl@0
   187
 	gchar ip[]="ABc12DeF";
sl@0
   188
 	obj->str=ip;
sl@0
   189
 	obj->len=strlen(ip);
sl@0
   190
 	obj->allocated_len=10;
sl@0
   191
 	obj=g_string_up(obj);
sl@0
   192
 	g_assert(!strcmp((obj->str),"ABC12DEF"));
sl@0
   193
 }
sl@0
   194
 
sl@0
   195
 
sl@0
   196
 //Test for g_string_prepend_unichar
sl@0
   197
 void tg_string_prepend_unichar()
sl@0
   198
 {
sl@0
   199
	GString* obj=(GString*)malloc(sizeof(GString));
sl@0
   200
	gchar ip[]="abcd";
sl@0
   201
  	obj->str=ip;
sl@0
   202
 	obj->len=strlen(ip);
sl@0
   203
 	obj->allocated_len=10;
sl@0
   204
 	obj=g_string_prepend_unichar(obj,'e');
sl@0
   205
 	g_assert(!strcmp((obj->str),"eabcd"));
sl@0
   206
 }
sl@0
   207
 
sl@0
   208
 //Test for g_strip_context
sl@0
   209
 void tg_strip_context()
sl@0
   210
 {
sl@0
   211
 	gchar msgid[]="abc|defgh";
sl@0
   212
 	gchar msgval[]="abc|defgh";
sl@0
   213
 	const gchar* op;
sl@0
   214
 	op=g_strip_context(msgid,msgid);
sl@0
   215
 	g_assert(!strcmp(op,"defgh"));	
sl@0
   216
 }
sl@0
   217
 
sl@0
   218
 //Test for g_strjoin
sl@0
   219
 void tg_strjoin()
sl@0
   220
 {
sl@0
   221
 	gchar sep[]="#&#";
sl@0
   222
	gchar a[]="abc";
sl@0
   223
	gchar b[]="def";
sl@0
   224
 	gchar* op=g_strjoin(sep,a,b,NULL);
sl@0
   225
 	g_assert(!strcmp(op,"abc#&#def"));
sl@0
   226
 }
sl@0
   227
 
sl@0
   228
 
sl@0
   229
 //Test for g_strncasecmp
sl@0
   230
void tg_strncasecmp()
sl@0
   231
{
sl@0
   232
 	gint strncasecmp_eq,strncasecmp_gr8,strncasecmp_less;
sl@0
   233
 	//Testing for equal strings,zero must be returned
sl@0
   234
 	strncasecmp_eq=g_strncasecmp ("abcd123","abcd123",10);
sl@0
   235
 	g_assert(strncasecmp_eq==0);
sl@0
   236
sl@0
   237
 	//Testing for un-equal strings,left greater,positive value must be returned
sl@0
   238
 	strncasecmp_gr8=g_strncasecmp ("abcd123","abcd",4);
sl@0
   239
 	g_assert(strncasecmp_gr8==0);
sl@0
   240
 	
sl@0
   241
 	//Testing for un-equal strings,right greater,negative value must be returned
sl@0
   242
 	strncasecmp_less=g_strncasecmp ("abcd","abcd123",6);
sl@0
   243
 	g_assert(strncasecmp_less<0);
sl@0
   244
 	
sl@0
   245
 }
sl@0
   246
 
sl@0
   247
 
sl@0
   248
 //Test for g_strnfill
sl@0
   249
 void tg_strnfill()
sl@0
   250
 {
sl@0
   251
 	gchar fill='x';
sl@0
   252
	gsize size=10;
sl@0
   253
	gchar* strnfill_buf_null;
sl@0
   254
	gchar* strnfill_buf=g_strnfill(size,fill);
sl@0
   255
 	g_assert(!strcmp(strnfill_buf,"xxxxxxxxxx"));
sl@0
   256
 
sl@0
   257
 	size=0;
sl@0
   258
	strnfill_buf_null=g_strnfill(size,fill);
sl@0
   259
 	g_assert(!strcmp(strnfill_buf_null,""));
sl@0
   260
 
sl@0
   261
 }
sl@0
   262
 
sl@0
   263
 //Test for g_strreverse
sl@0
   264
 void tg_strreverse()
sl@0
   265
 {
sl@0
   266
 	gchar ip[]="abCdeF123";
sl@0
   267
	gchar* strreverse_op=g_strreverse(ip);
sl@0
   268
 	g_assert(!strcmp(strreverse_op,"321FedCba"));
sl@0
   269
 
sl@0
   270
 }
sl@0
   271
 
sl@0
   272
 
sl@0
   273
 //Test for g_strup
sl@0
   274
 void tg_strup()
sl@0
   275
 {
sl@0
   276
 	gchar ip[]="Abc12deF";
sl@0
   277
 	gchar* strup=g_strup(ip);
sl@0
   278
 	g_assert(!strcmp(strup,"ABC12DEF"));
sl@0
   279
 }
sl@0
   280
 
sl@0
   281
 
sl@0
   282
 //Test for g_pattern_match_string
sl@0
   283
 void tg_pattern_match_string()
sl@0
   284
 {
sl@0
   285
 	gchar pattern_str[]="abcdefghijklmnopqrstuvwxyz";
sl@0
   286
 	gchar match_str_pos[]="abcdefghijklmnopqrstuvwxyz"; //Proper a-z
sl@0
   287
 	gchar match_str_neg[]="abcdefghjiklmnopqrstuvwxyz";	//i and j interchanged
sl@0
   288
 	
sl@0
   289
 	GPatternSpec* spec=g_pattern_spec_new(pattern_str);
sl@0
   290
 	g_assert(g_pattern_match_string(spec,match_str_pos));
sl@0
   291
 	g_assert(!g_pattern_match_string(spec,match_str_neg));
sl@0
   292
 	
sl@0
   293
 }
sl@0
   294
sl@0
   295
 //Called by g_printf_string_upper_bound for a va-list
sl@0
   296
 void test_arg_string_upper_bound(gchar* fmt,...)
sl@0
   297
 {
sl@0
   298
 	va_list ap;
sl@0
   299
	va_start(ap,fmt);
sl@0
   300
	g_assert(g_printf_string_upper_bound(fmt,ap)==27);
sl@0
   301
	va_end(ap);
sl@0
   302
 }
sl@0
   303
 //Test for g_printf_string_upper_bound
sl@0
   304
 void tg_printf_string_upper_bound()
sl@0
   305
 {
sl@0
   306
 	test_arg_string_upper_bound("%d\n%s\t%f",9999999,"Abcd#%@",999.999999);
sl@0
   307
 }
sl@0
   308
sl@0
   309
sl@0
   310
 //Test for g_sprintf
sl@0
   311
 void tg_sprintf()
sl@0
   312
 {
sl@0
   313
 	gchar sprintf_converted[100];
sl@0
   314
 	gint sprintf_return_val=g_sprintf(sprintf_converted,"%d%s%f",9999999,"Abcd#%@",999.999999);
sl@0
   315
 	g_assert(sprintf_return_val==24);
sl@0
   316
 }
sl@0
   317
sl@0
   318
sl@0
   319
sl@0
   320
int main (int argc,char *argv[])
sl@0
   321
{
sl@0
   322
sl@0
   323
	#ifdef SYMBIAN
sl@0
   324
  	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
   325
 	#endif /*SYMBIAN*/
sl@0
   326
 	
sl@0
   327
 	tg_strcanon();
sl@0
   328
	tg_strcasecmp();
sl@0
   329
	tg_strdown();
sl@0
   330
	tg_string_append_c();
sl@0
   331
	tg_string_ascii_down();
sl@0
   332
	tg_string_ascii_up();
sl@0
   333
	tg_string_down();
sl@0
   334
	tg_string_hash();
sl@0
   335
	tg_string_prepend_c();
sl@0
   336
	tg_string_prepend_unichar();
sl@0
   337
	tg_string_up();
sl@0
   338
	tg_strip_context();
sl@0
   339
	tg_strjoin();
sl@0
   340
	tg_strncasecmp();
sl@0
   341
	tg_strnfill();
sl@0
   342
	tg_strreverse();
sl@0
   343
	tg_strup();
sl@0
   344
	tg_pattern_match_string();
sl@0
   345
	tg_printf_string_upper_bound();
sl@0
   346
	tg_sprintf();
sl@0
   347
	
sl@0
   348
	#ifdef SYMBIAN
sl@0
   349
  testResultXml("tgstring");
sl@0
   350
#endif /* EMULATOR */
sl@0
   351
 	return 0;
sl@0
   352
}