Blame localedata/tests-mbwc/tst_wcscpy.c

Packit 6c4009
/*-------------------------------------------------------------------------------------*/
Packit 6c4009
/* WCSCPY: wchar_t *wcscpy( wchar_t *ws1, const wchar_t *ws2 )			       */
Packit 6c4009
/*-------------------------------------------------------------------------------------*/
Packit 6c4009
#define TST_FUNCTION wcscpy
Packit 6c4009
Packit 6c4009
#include "tsp_common.c"
Packit 6c4009
#include "dat_wcscpy.c"
Packit 6c4009
Packit 6c4009
int
Packit 6c4009
tst_wcscpy (FILE * fp, int debug_flg)
Packit 6c4009
{
Packit 6c4009
  TST_DECL_VARS (wchar_t *);
Packit 6c4009
  wchar_t ws1[WCSSIZE], *ws2, *ws_ex;
Packit 6c4009
  int err, i;
Packit 6c4009
Packit 6c4009
  TST_DO_TEST (wcscpy)
Packit 6c4009
  {
Packit 6c4009
    TST_HEAD_LOCALE (wcscpy, S_WCSCPY);
Packit 6c4009
    TST_DO_REC (wcscpy)
Packit 6c4009
    {
Packit 6c4009
      TST_GET_ERRET (wcscpy);
Packit 6c4009
      ws2 = TST_INPUT (wcscpy).ws;	/* external value: size WCSSIZE */
Packit 6c4009
      ret = wcscpy (ws1, ws2);
Packit 6c4009
Packit 6c4009
      TST_IF_RETURN (S_WCSCPY)
Packit 6c4009
      {
Packit 6c4009
	if (ret == ws1)
Packit 6c4009
	  {
Packit 6c4009
	    Result (C_SUCCESS, S_WCSCPY, CASE_3, MS_PASSED);
Packit 6c4009
	  }
Packit 6c4009
	else
Packit 6c4009
	  {
Packit 6c4009
	    err_count++;
Packit 6c4009
	    Result (C_FAILURE, S_WCSCPY, CASE_3,
Packit 6c4009
		    "the return address may not be correct");
Packit 6c4009
	  }
Packit 6c4009
      }
Packit 6c4009
Packit 6c4009
      if (ret == ws1)
Packit 6c4009
	{
Packit 6c4009
	  ws_ex = TST_EXPECT (wcscpy).ws;
Packit 6c4009
Packit 6c4009
	  for (err = 0, i = 0;
Packit 6c4009
	       i < WCSSIZE && (ws1[i] != 0L || ws_ex[i] != 0L); i++)
Packit 6c4009
	    {
Packit 6c4009
	      if (debug_flg)
Packit 6c4009
		{
Packit 6c4009
		  fprintf (stderr,
Packit 6c4009
			   "ws1[ %d ] = 0x%lx <-> wx_ex[ %d ] = 0x%lx\n", i,
Packit 6c4009
			   (unsigned long int) ws1[i], i,
Packit 6c4009
			   (unsigned long int) ws_ex[i]);
Packit 6c4009
		}
Packit 6c4009
Packit 6c4009
	      if (ws1[i] != ws_ex[i])
Packit 6c4009
		{
Packit 6c4009
		  err++;
Packit 6c4009
		  err_count++;
Packit 6c4009
		  Result (C_FAILURE, S_WCSCPY, CASE_4,
Packit 6c4009
			  "copied string is different from an"
Packit 6c4009
			  " expected string");
Packit 6c4009
		  break;
Packit 6c4009
		}
Packit 6c4009
	    }
Packit 6c4009
Packit 6c4009
	  if (!err)
Packit 6c4009
	    {
Packit 6c4009
	      Result (C_SUCCESS, S_WCSCPY, CASE_4, MS_PASSED);
Packit 6c4009
	    }
Packit 6c4009
Packit 6c4009
	  if (ws1[i] == 0L)
Packit 6c4009
	    {
Packit 6c4009
	      Result (C_SUCCESS, S_WCSCPY, CASE_5, MS_PASSED);
Packit 6c4009
	    }
Packit 6c4009
	  else
Packit 6c4009
	    {
Packit 6c4009
	      err_count++;
Packit 6c4009
	      Result (C_FAILURE, S_WCSCPY, CASE_5,
Packit 6c4009
		      "copied string is not null-terminated");
Packit 6c4009
	    }
Packit 6c4009
	}
Packit 6c4009
    }
Packit 6c4009
  }
Packit 6c4009
Packit 6c4009
  return err_count;
Packit 6c4009
}