internal/gcce/src/gcce-validate.cpp
author hgs
Tue, 02 Nov 2010 19:23:22 +0530
changeset 79 564bc7b7ad27
permissions -rw-r--r--
201043
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
79
hgs
parents:
diff changeset
     1
/*
hgs
parents:
diff changeset
     2
* ==============================================================================
hgs
parents:
diff changeset
     3
*  Name        : gcce-validate.c
hgs
parents:
diff changeset
     4
*  Part of     : internal/gcce
hgs
parents:
diff changeset
     5
*  Description : This is a test program to test the cross linking of openc libraries with
hgs
parents:
diff changeset
     6
*  programs compiled using the gcce compiler
hgs
parents:
diff changeset
     7
Copyright © 2006 Nokia Corporation
hgs
parents:
diff changeset
     8
All rights reserved.
hgs
parents:
diff changeset
     9
Redistribution and use in source and binary forms, with or without 
hgs
parents:
diff changeset
    10
modification, are permitted provided that the following conditions are met:
hgs
parents:
diff changeset
    11
 * Redistributions of source code must retain the above copyright notice, this 
hgs
parents:
diff changeset
    12
   list of conditions and the following disclaimer. 
hgs
parents:
diff changeset
    13
 * Redistributions in binary form must reproduce the above copyright notice, 
hgs
parents:
diff changeset
    14
   this list of conditions and the following disclaimer in the documentation 
hgs
parents:
diff changeset
    15
   and/or other materials provided with the distribution. 
hgs
parents:
diff changeset
    16
 * Neither the name of the <ORGANIZATION> nor the names of its contributors 
hgs
parents:
diff changeset
    17
   may be used to endorse or promote products derived from this software 
hgs
parents:
diff changeset
    18
   without specific prior written permission. 
hgs
parents:
diff changeset
    19
   
hgs
parents:
diff changeset
    20
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 
hgs
parents:
diff changeset
    21
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 
hgs
parents:
diff changeset
    22
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 
hgs
parents:
diff changeset
    23
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
hgs
parents:
diff changeset
    24
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 
hgs
parents:
diff changeset
    25
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
hgs
parents:
diff changeset
    26
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 
hgs
parents:
diff changeset
    27
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
hgs
parents:
diff changeset
    28
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 
hgs
parents:
diff changeset
    29
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
hgs
parents:
diff changeset
    30
* ==============================================================================
hgs
parents:
diff changeset
    31
*/
hgs
parents:
diff changeset
    32
hgs
parents:
diff changeset
    33
#include <stdio.h>
hgs
parents:
diff changeset
    34
#include <string.h>
hgs
parents:
diff changeset
    35
#include <stdlib.h>
hgs
parents:
diff changeset
    36
#include <dlfcn.h>
hgs
parents:
diff changeset
    37
#include <pthread.h>
hgs
parents:
diff changeset
    38
#include <zlib.h>
hgs
parents:
diff changeset
    39
#include <math.h>
hgs
parents:
diff changeset
    40
#include <float.h>
hgs
parents:
diff changeset
    41
#include <errno.h>
hgs
parents:
diff changeset
    42
#include <grp.h>
hgs
parents:
diff changeset
    43
#include <pwd.h>
hgs
parents:
diff changeset
    44
#include <stdlib.h>
hgs
parents:
diff changeset
    45
hgs
parents:
diff changeset
    46
hgs
parents:
diff changeset
    47
hgs
parents:
diff changeset
    48
#include <testharness.h>
hgs
parents:
diff changeset
    49
#include "result_log.h"
hgs
parents:
diff changeset
    50
hgs
parents:
diff changeset
    51
int TestCond688()
hgs
parents:
diff changeset
    52
hgs
parents:
diff changeset
    53
{
hgs
parents:
diff changeset
    54
	struct timespec abstime;
hgs
parents:
diff changeset
    55
	struct timeval now;
hgs
parents:
diff changeset
    56
	gettimeofday(&now,NULL);
hgs
parents:
diff changeset
    57
	abstime.tv_sec = now.tv_sec + 5;
hgs
parents:
diff changeset
    58
	abstime.tv_nsec = now.tv_usec * 1000;
hgs
parents:
diff changeset
    59
hgs
parents:
diff changeset
    60
	TRACE("+TestCond688\n");
hgs
parents:
diff changeset
    61
	HarnessCommand lCommandArr[255] = 
hgs
parents:
diff changeset
    62
	{
hgs
parents:
diff changeset
    63
		{EThreadMain, EMutexInitStaticErrorCheck},
hgs
parents:
diff changeset
    64
		{EThreadMain, ECondInit},
hgs
parents:
diff changeset
    65
hgs
parents:
diff changeset
    66
		{EThreadMain, EThreadCreate, (void*) EThread1},
hgs
parents:
diff changeset
    67
		{EThreadMain, EThreadCreate, (void*) EThread2},
hgs
parents:
diff changeset
    68
		{EThreadMain, EThreadCreate, (void*) EThread3},
hgs
parents:
diff changeset
    69
		{EThreadMain, EThreadCreate, (void*) EThread4},
hgs
parents:
diff changeset
    70
		
hgs
parents:
diff changeset
    71
		{EThread1, EMutexLock},
hgs
parents:
diff changeset
    72
		{EThread1, EPostSignal},
hgs
parents:
diff changeset
    73
		{EThread1, ECondTimedWait,&abstime},
hgs
parents:
diff changeset
    74
hgs
parents:
diff changeset
    75
		{EThread2, EMutexLock},
hgs
parents:
diff changeset
    76
		{EThread2, EPostSignal},
hgs
parents:
diff changeset
    77
		{EThread2, ECondTimedWait,&abstime},
hgs
parents:
diff changeset
    78
hgs
parents:
diff changeset
    79
		{EThread3, EMutexLock},
hgs
parents:
diff changeset
    80
		{EThread3, EPostSignal},
hgs
parents:
diff changeset
    81
		{EThread3, ECondTimedWait,&abstime},
hgs
parents:
diff changeset
    82
hgs
parents:
diff changeset
    83
		{EThread4, EMutexLock},
hgs
parents:
diff changeset
    84
		{EThread4, EPostSignal},
hgs
parents:
diff changeset
    85
		{EThread4, ECondTimedWait,&abstime},
hgs
parents:
diff changeset
    86
hgs
parents:
diff changeset
    87
		{EThreadMain, EWaitForSignal},
hgs
parents:
diff changeset
    88
		{EThreadMain, EWaitForSignal},
hgs
parents:
diff changeset
    89
		{EThreadMain, EWaitForSignal},
hgs
parents:
diff changeset
    90
		{EThreadMain, EWaitForSignal},
hgs
parents:
diff changeset
    91
hgs
parents:
diff changeset
    92
		{EThreadMain, EWaitTillSuspended, (void*) EThread1},
hgs
parents:
diff changeset
    93
		{EThreadMain, EWaitTillSuspended, (void*) EThread2},
hgs
parents:
diff changeset
    94
		{EThreadMain, EWaitTillSuspended, (void*) EThread3},
hgs
parents:
diff changeset
    95
		{EThreadMain, EWaitTillSuspended, (void*) EThread4},
hgs
parents:
diff changeset
    96
hgs
parents:
diff changeset
    97
		{EThreadMain, EMutexLock},
hgs
parents:
diff changeset
    98
		{EThreadMain, ECondBroadcast},
hgs
parents:
diff changeset
    99
		{EThreadMain, EMutexUnlock},
hgs
parents:
diff changeset
   100
hgs
parents:
diff changeset
   101
		{EThread1, EVerifyResult, (void*) 0},
hgs
parents:
diff changeset
   102
		{EThread2, EVerifyResult, (void*) 0},
hgs
parents:
diff changeset
   103
		{EThread3, EVerifyResult, (void*) 0},
hgs
parents:
diff changeset
   104
		{EThread4, EVerifyResult, (void*) 0},
hgs
parents:
diff changeset
   105
hgs
parents:
diff changeset
   106
		{EThread1, EMutexUnlock},
hgs
parents:
diff changeset
   107
		{EThread2, EMutexUnlock},
hgs
parents:
diff changeset
   108
		{EThread3, EMutexUnlock},
hgs
parents:
diff changeset
   109
		{EThread4, EMutexUnlock},
hgs
parents:
diff changeset
   110
hgs
parents:
diff changeset
   111
		{EThread1, EStop},
hgs
parents:
diff changeset
   112
		{EThread2, EStop},
hgs
parents:
diff changeset
   113
		{EThread3, EStop},
hgs
parents:
diff changeset
   114
		{EThread4, EStop},
hgs
parents:
diff changeset
   115
hgs
parents:
diff changeset
   116
		
hgs
parents:
diff changeset
   117
		{EThreadMain, EThreadDestroy, (void*) EThread1},
hgs
parents:
diff changeset
   118
		{EThreadMain, EThreadDestroy, (void*) EThread2},
hgs
parents:
diff changeset
   119
		{EThreadMain, EThreadDestroy, (void*) EThread3},
hgs
parents:
diff changeset
   120
		{EThreadMain, EThreadDestroy, (void*) EThread4},
hgs
parents:
diff changeset
   121
hgs
parents:
diff changeset
   122
		{EThreadMain, ECondDestroy},
hgs
parents:
diff changeset
   123
		{EThreadMain, EMutexDestroy},
hgs
parents:
diff changeset
   124
hgs
parents:
diff changeset
   125
		{EThreadMain, EStop},
hgs
parents:
diff changeset
   126
		{ENoThread, ELastCommand},
hgs
parents:
diff changeset
   127
	};
hgs
parents:
diff changeset
   128
hgs
parents:
diff changeset
   129
	TRACE("-TestCond688\n");
hgs
parents:
diff changeset
   130
	return LoadHarness(lCommandArr);
hgs
parents:
diff changeset
   131
}
hgs
parents:
diff changeset
   132
hgs
parents:
diff changeset
   133
hgs
parents:
diff changeset
   134
//sem_getvalue on a semaphore posted n times
hgs
parents:
diff changeset
   135
int TestSem316()
hgs
parents:
diff changeset
   136
{
hgs
parents:
diff changeset
   137
	TRACE("+TestSem316\n");
hgs
parents:
diff changeset
   138
	
hgs
parents:
diff changeset
   139
	HarnessCommand lCommandArr[255] = 
hgs
parents:
diff changeset
   140
	{
hgs
parents:
diff changeset
   141
		{EThreadMain, ESemInit,  (void*) NULL},
hgs
parents:
diff changeset
   142
		{EThreadMain, ESemPost},
hgs
parents:
diff changeset
   143
		{EThreadMain, ESemPost},
hgs
parents:
diff changeset
   144
		{EThreadMain, ESemPost},
hgs
parents:
diff changeset
   145
		{EThreadMain, ESemPost},
hgs
parents:
diff changeset
   146
		{EThreadMain, ESemWait},
hgs
parents:
diff changeset
   147
		{EThreadMain, ESemWait},
hgs
parents:
diff changeset
   148
hgs
parents:
diff changeset
   149
		{EThreadMain, ESemGetValue},
hgs
parents:
diff changeset
   150
		{EThreadMain, ECheckValue, (void*) 2},
hgs
parents:
diff changeset
   151
		{EThreadMain, ESemDestroy},
hgs
parents:
diff changeset
   152
hgs
parents:
diff changeset
   153
		{EThreadMain, EStop},
hgs
parents:
diff changeset
   154
		{ENoThread, ELastCommand},
hgs
parents:
diff changeset
   155
	};
hgs
parents:
diff changeset
   156
hgs
parents:
diff changeset
   157
	TRACE("-TestSem316\n");
hgs
parents:
diff changeset
   158
	return LoadHarness(lCommandArr);
hgs
parents:
diff changeset
   159
}
hgs
parents:
diff changeset
   160
hgs
parents:
diff changeset
   161
//sem_trywait called on a non posted semaphore
hgs
parents:
diff changeset
   162
int TestSem390()
hgs
parents:
diff changeset
   163
{
hgs
parents:
diff changeset
   164
	TRACE("+TestSem390\n");
hgs
parents:
diff changeset
   165
	HarnessCommand lCommandArr[255] = 
hgs
parents:
diff changeset
   166
	{
hgs
parents:
diff changeset
   167
		{EThreadMain, ESemInit},
hgs
parents:
diff changeset
   168
					
hgs
parents:
diff changeset
   169
		{EThreadMain, EThreadCreate, (void*) EThread1},
hgs
parents:
diff changeset
   170
hgs
parents:
diff changeset
   171
		{EThread1, ESemTryWait},
hgs
parents:
diff changeset
   172
		{EThread1, EVerifyErrno, (void*) EAGAIN},
hgs
parents:
diff changeset
   173
		{EThread1, EPostSignal},
hgs
parents:
diff changeset
   174
		{EThreadMain, EWaitForSignal},
hgs
parents:
diff changeset
   175
		{EThread1, EStop},
hgs
parents:
diff changeset
   176
hgs
parents:
diff changeset
   177
		{EThreadMain, ESemDestroy},
hgs
parents:
diff changeset
   178
		{EThreadMain, EThreadDestroy, (void*) EThread1},
hgs
parents:
diff changeset
   179
		{EThreadMain, EStop},
hgs
parents:
diff changeset
   180
		{ENoThread, ELastCommand},
hgs
parents:
diff changeset
   181
	};
hgs
parents:
diff changeset
   182
hgs
parents:
diff changeset
   183
	TRACE("-TestSem390\n");
hgs
parents:
diff changeset
   184
	return LoadHarness(lCommandArr);
hgs
parents:
diff changeset
   185
}
hgs
parents:
diff changeset
   186
hgs
parents:
diff changeset
   187
hgs
parents:
diff changeset
   188
#define FLOAT float
hgs
parents:
diff changeset
   189
#define CHOOSE(Clongdouble,Cdouble,Cfloat,Cinlinelongdouble,Cinlinedouble,Cinlinefloat) Cfloat
hgs
parents:
diff changeset
   190
#define IGNORE_ZERO_INF_SIGN		0x10
hgs
parents:
diff changeset
   191
hgs
parents:
diff changeset
   192
hgs
parents:
diff changeset
   193
hgs
parents:
diff changeset
   194
hgs
parents:
diff changeset
   195
hgs
parents:
diff changeset
   196
#define MANT_DIG CHOOSE ((LDBL_MANT_DIG-1), (DBL_MANT_DIG-1), (FLT_MANT_DIG-1),  \
hgs
parents:
diff changeset
   197
                         (LDBL_MANT_DIG-1), (DBL_MANT_DIG-1), (FLT_MANT_DIG-1))
hgs
parents:
diff changeset
   198
                         
hgs
parents:
diff changeset
   199
#define KErrNone 0
hgs
parents:
diff changeset
   200
#define KErrGeneral -1                         
hgs
parents:
diff changeset
   201
hgs
parents:
diff changeset
   202
hgs
parents:
diff changeset
   203
int  check_float (FLOAT computed, FLOAT expected,FLOAT max_ulp, FLOAT &gen_ulp)
hgs
parents:
diff changeset
   204
{
hgs
parents:
diff changeset
   205
  int ok = 0;
hgs
parents:
diff changeset
   206
  FLOAT diff = 0;
hgs
parents:
diff changeset
   207
  FLOAT ulp = 0;
hgs
parents:
diff changeset
   208
hgs
parents:
diff changeset
   209
  
hgs
parents:
diff changeset
   210
  
hgs
parents:
diff changeset
   211
  if (isnan (computed) && isnan (expected))
hgs
parents:
diff changeset
   212
  ok = 1;
hgs
parents:
diff changeset
   213
  
hgs
parents:
diff changeset
   214
  else if (isinf (computed) && isinf (expected))
hgs
parents:
diff changeset
   215
    {
hgs
parents:
diff changeset
   216
      /* Test for sign of infinities.  */
hgs
parents:
diff changeset
   217
      if ((IGNORE_ZERO_INF_SIGN) == 0
hgs
parents:
diff changeset
   218
	  && signbit (computed) != signbit (expected))
hgs
parents:
diff changeset
   219
	  {
hgs
parents:
diff changeset
   220
	  ok = 0;
hgs
parents:
diff changeset
   221
	  }
hgs
parents:
diff changeset
   222
      else
hgs
parents:
diff changeset
   223
	  ok = 1;
hgs
parents:
diff changeset
   224
    }
hgs
parents:
diff changeset
   225
  /* Don't calc ulp for NaNs or infinities.  */
hgs
parents:
diff changeset
   226
  else if (isinf (computed) || isnan (computed) || isinf (expected) || isnan (expected))
hgs
parents:
diff changeset
   227
    ok = 0;
hgs
parents:
diff changeset
   228
  else
hgs
parents:
diff changeset
   229
    {
hgs
parents:
diff changeset
   230
    diff = fabsf(computed - expected);
hgs
parents:
diff changeset
   231
      /* ilogb (0) isn't allowed.  */
hgs
parents:
diff changeset
   232
      if (expected == 0.0)
hgs
parents:
diff changeset
   233
	  ulp = diff / ldexpf (1.0, - MANT_DIG);
hgs
parents:
diff changeset
   234
      else
hgs
parents:
diff changeset
   235
	  ulp = diff / ldexpf (1.0, ilogbf (expected) - MANT_DIG);
hgs
parents:
diff changeset
   236
      
hgs
parents:
diff changeset
   237
      if ((IGNORE_ZERO_INF_SIGN) == 0
hgs
parents:
diff changeset
   238
	  && computed == 0.0 && expected == 0.0
hgs
parents:
diff changeset
   239
	  && signbit(computed) != signbit (expected))
hgs
parents:
diff changeset
   240
	  ok = 0;
hgs
parents:
diff changeset
   241
      else if (ulp == 0.0 || (ulp <= max_ulp ))
hgs
parents:
diff changeset
   242
	  ok = 1;
hgs
parents:
diff changeset
   243
      else
hgs
parents:
diff changeset
   244
	  {
hgs
parents:
diff changeset
   245
	  ok = 0;
hgs
parents:
diff changeset
   246
	  }
hgs
parents:
diff changeset
   247
hgs
parents:
diff changeset
   248
    }
hgs
parents:
diff changeset
   249
  gen_ulp = ulp ;  
hgs
parents:
diff changeset
   250
  
hgs
parents:
diff changeset
   251
  return ok;
hgs
parents:
diff changeset
   252
}
hgs
parents:
diff changeset
   253
hgs
parents:
diff changeset
   254
hgs
parents:
diff changeset
   255
int atan2_testL()
hgs
parents:
diff changeset
   256
{
hgs
parents:
diff changeset
   257
 	// Create temporary variables in stack
hgs
parents:
diff changeset
   258
  	//char Tname[]   = "atan2l_test_0_0_0_1";
hgs
parents:
diff changeset
   259
  	FLOAT input1   = 0;
hgs
parents:
diff changeset
   260
  	FLOAT input2   = 1;
hgs
parents:
diff changeset
   261
  	FLOAT expected = 0;
hgs
parents:
diff changeset
   262
  	FLOAT max_ulp  = 0; 
hgs
parents:
diff changeset
   263
  	FLOAT gen_ulp;
hgs
parents:
diff changeset
   264
  	
hgs
parents:
diff changeset
   265
  	// Read parameters
hgs
parents:
diff changeset
   266
  	
hgs
parents:
diff changeset
   267
  	    
hgs
parents:
diff changeset
   268
    // Do some testing
hgs
parents:
diff changeset
   269
    FLOAT res = atan2f(input1, input2);
hgs
parents:
diff changeset
   270
        
hgs
parents:
diff changeset
   271
    if(check_float(res, expected, max_ulp, gen_ulp))
hgs
parents:
diff changeset
   272
    {
hgs
parents:
diff changeset
   273
    	return 0;
hgs
parents:
diff changeset
   274
    }
hgs
parents:
diff changeset
   275
    else
hgs
parents:
diff changeset
   276
    {
hgs
parents:
diff changeset
   277
    	return -1;
hgs
parents:
diff changeset
   278
    }
hgs
parents:
diff changeset
   279
   
hgs
parents:
diff changeset
   280
}
hgs
parents:
diff changeset
   281
hgs
parents:
diff changeset
   282
hgs
parents:
diff changeset
   283
#define TESTFILE "c:\\foo.gz"
hgs
parents:
diff changeset
   284
int Gzprintf()
hgs
parents:
diff changeset
   285
{
hgs
parents:
diff changeset
   286
    int res = KErrNone ;
hgs
parents:
diff changeset
   287
    gzFile file;
hgs
parents:
diff changeset
   288
    const char * fname = TESTFILE ;
hgs
parents:
diff changeset
   289
    file = gzopen(fname, "wb");
hgs
parents:
diff changeset
   290
        if (file == NULL) 
hgs
parents:
diff changeset
   291
    {
hgs
parents:
diff changeset
   292
     res = KErrGeneral;
hgs
parents:
diff changeset
   293
     return res;
hgs
parents:
diff changeset
   294
    }   
hgs
parents:
diff changeset
   295
    if (gzprintf(file, ", %s!", "hello") != 8) 
hgs
parents:
diff changeset
   296
    {
hgs
parents:
diff changeset
   297
       return KErrNone;
hgs
parents:
diff changeset
   298
    }
hgs
parents:
diff changeset
   299
hgs
parents:
diff changeset
   300
    int err = gzclose(file);
hgs
parents:
diff changeset
   301
    if(err == 0)
hgs
parents:
diff changeset
   302
    {  	
hgs
parents:
diff changeset
   303
     	res = KErrNone ;
hgs
parents:
diff changeset
   304
    } 
hgs
parents:
diff changeset
   305
    else
hgs
parents:
diff changeset
   306
    {    	
hgs
parents:
diff changeset
   307
        res =res= KErrGeneral;
hgs
parents:
diff changeset
   308
    } 
hgs
parents:
diff changeset
   309
    return res;
hgs
parents:
diff changeset
   310
}
hgs
parents:
diff changeset
   311
 
hgs
parents:
diff changeset
   312
 
hgs
parents:
diff changeset
   313
int getpwnam_negL( )
hgs
parents:
diff changeset
   314
{
hgs
parents:
diff changeset
   315
    //__UHEAP_MARK;
hgs
parents:
diff changeset
   316
  	// Create temporary variables in stack
hgs
parents:
diff changeset
   317
  	struct passwd* pwd;
hgs
parents:
diff changeset
   318
  	char pw_nam[]="abc";
hgs
parents:
diff changeset
   319
  	
hgs
parents:
diff changeset
   320
    pwd=getpwnam(pw_nam);
hgs
parents:
diff changeset
   321
hgs
parents:
diff changeset
   322
    // Set test result
hgs
parents:
diff changeset
   323
	if(pwd==NULL)       	
hgs
parents:
diff changeset
   324
	{
hgs
parents:
diff changeset
   325
		return 0;
hgs
parents:
diff changeset
   326
	}
hgs
parents:
diff changeset
   327
	else
hgs
parents:
diff changeset
   328
	{
hgs
parents:
diff changeset
   329
		return -1;
hgs
parents:
diff changeset
   330
	}
hgs
parents:
diff changeset
   331
       	
hgs
parents:
diff changeset
   332
    //__UHEAP_MARKEND;
hgs
parents:
diff changeset
   333
 }
hgs
parents:
diff changeset
   334
 
hgs
parents:
diff changeset
   335
int check (int thing, int number)
hgs
parents:
diff changeset
   336
{
hgs
parents:
diff changeset
   337
  if (!thing)
hgs
parents:
diff changeset
   338
    {
hgs
parents:
diff changeset
   339
	  return -1;
hgs
parents:
diff changeset
   340
    }
hgs
parents:
diff changeset
   341
  else 
hgs
parents:
diff changeset
   342
	  return KErrNone;
hgs
parents:
diff changeset
   343
}
hgs
parents:
diff changeset
   344
hgs
parents:
diff changeset
   345
/* Complain if first two args don't strcmp as equal.  */
hgs
parents:
diff changeset
   346
int equal (const char *a, const char *b, int number)
hgs
parents:
diff changeset
   347
{
hgs
parents:
diff changeset
   348
  return check(a != NULL && b != NULL && (strcmp((a), (b)) == 0), number);
hgs
parents:
diff changeset
   349
}
hgs
parents:
diff changeset
   350
hgs
parents:
diff changeset
   351
hgs
parents:
diff changeset
   352
int memcpy2()
hgs
parents:
diff changeset
   353
{
hgs
parents:
diff changeset
   354
	char one[50];
hgs
parents:
diff changeset
   355
	(void) strcpy(one, "abc");
hgs
parents:
diff changeset
   356
	(void) memcpy(one, "xyz", 0);
hgs
parents:
diff changeset
   357
	return equal(one, "abc", 4);			/* Zero-length copy. */
hgs
parents:
diff changeset
   358
}
hgs
parents:
diff changeset
   359
hgs
parents:
diff changeset
   360
int strcmp1()
hgs
parents:
diff changeset
   361
{
hgs
parents:
diff changeset
   362
hgs
parents:
diff changeset
   363
	int retval;
hgs
parents:
diff changeset
   364
	//STEP 1
hgs
parents:
diff changeset
   365
	retval = check (strcmp ("a", "a") == 0, 2);		/* Identity. */
hgs
parents:
diff changeset
   366
	if (retval == KErrNone)
hgs
parents:
diff changeset
   367
		retval = check (strcmp ("abc", "abc") == 0, 3);	/* Multicharacter. */
hgs
parents:
diff changeset
   368
hgs
parents:
diff changeset
   369
	return retval;
hgs
parents:
diff changeset
   370
}
hgs
parents:
diff changeset
   371
hgs
parents:
diff changeset
   372
int strcat2()
hgs
parents:
diff changeset
   373
{
hgs
parents:
diff changeset
   374
	
hgs
parents:
diff changeset
   375
	char one[50];
hgs
parents:
diff changeset
   376
	int retval;
hgs
parents:
diff changeset
   377
hgs
parents:
diff changeset
   378
	//STEP 2
hgs
parents:
diff changeset
   379
	(void) strcpy (one, "");
hgs
parents:
diff changeset
   380
	(void) strcat (one, "");
hgs
parents:
diff changeset
   381
	retval = equal (one, "", 7);			/* Boundary conditions. */
hgs
parents:
diff changeset
   382
	if (retval == KErrNone)
hgs
parents:
diff changeset
   383
		{
hgs
parents:
diff changeset
   384
		(void) strcpy (one, "ab");
hgs
parents:
diff changeset
   385
		(void) strcat (one, "");
hgs
parents:
diff changeset
   386
		retval = equal (one, "ab", 8);
hgs
parents:
diff changeset
   387
		if (retval == KErrNone)
hgs
parents:
diff changeset
   388
			{
hgs
parents:
diff changeset
   389
			(void) strcpy (one, "");
hgs
parents:
diff changeset
   390
			(void) strcat (one, "cd");
hgs
parents:
diff changeset
   391
			retval = equal (one, "cd", 9);	
hgs
parents:
diff changeset
   392
			}
hgs
parents:
diff changeset
   393
		}
hgs
parents:
diff changeset
   394
	return retval;
hgs
parents:
diff changeset
   395
}
hgs
parents:
diff changeset
   396
hgs
parents:
diff changeset
   397
hgs
parents:
diff changeset
   398
hgs
parents:
diff changeset
   399
static int 
hgs
parents:
diff changeset
   400
do_test ()
hgs
parents:
diff changeset
   401
{
hgs
parents:
diff changeset
   402
	int nfns; 
hgs
parents:
diff changeset
   403
	int retval =0;
hgs
parents:
diff changeset
   404
	int i;
hgs
parents:
diff changeset
   405
 int (*pfnArray[])() =
hgs
parents:
diff changeset
   406
 {
hgs
parents:
diff changeset
   407
	strcat2,
hgs
parents:
diff changeset
   408
	strcmp1,
hgs
parents:
diff changeset
   409
	memcpy2,
hgs
parents:
diff changeset
   410
	getpwnam_negL,
hgs
parents:
diff changeset
   411
	Gzprintf,
hgs
parents:
diff changeset
   412
	atan2_testL,
hgs
parents:
diff changeset
   413
	TestSem390,
hgs
parents:
diff changeset
   414
	TestSem316,
hgs
parents:
diff changeset
   415
	TestCond688,
hgs
parents:
diff changeset
   416
 };
hgs
parents:
diff changeset
   417
hgs
parents:
diff changeset
   418
  nfns = (sizeof pfnArray)/(sizeof (int (*)()));
hgs
parents:
diff changeset
   419
  for(i=0; i<nfns; i++)
hgs
parents:
diff changeset
   420
  {
hgs
parents:
diff changeset
   421
  	retval += pfnArray[i]();
hgs
parents:
diff changeset
   422
  }
hgs
parents:
diff changeset
   423
  return retval;
hgs
parents:
diff changeset
   424
}
hgs
parents:
diff changeset
   425
hgs
parents:
diff changeset
   426
int
hgs
parents:
diff changeset
   427
main (int argc, char *argv[])
hgs
parents:
diff changeset
   428
{
hgs
parents:
diff changeset
   429
  int retval = 0;
hgs
parents:
diff changeset
   430
  retval = do_test();
hgs
parents:
diff changeset
   431
  testResultXml("gcce-validate",retval);
hgs
parents:
diff changeset
   432
}