root/maint/gnulib/tests/test-xmemdup0.c

/* [previous][next][first][last][top][bottom][index][help] */

DEFINITIONS

This source file includes following definitions.
  1. main

   1 /* Test of xmemdup0() function.
   2    Copyright (C) 2008-2021 Free Software Foundation, Inc.
   3 
   4    This program is free software; you can redistribute it and/or modify
   5    it under the terms of the GNU General Public License as published by
   6    the Free Software Foundation; either version 3, or (at your option)
   7    any later version.
   8 
   9    This program is distributed in the hope that it will be useful,
  10    but WITHOUT ANY WARRANTY; without even the implied warranty of
  11    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  12    GNU General Public License for more details.
  13 
  14    You should have received a copy of the GNU General Public License
  15    along with this program; if not, see <https://www.gnu.org/licenses/>.  */
  16 
  17 /* Written by Eric Blake <ebb9@byu.net>, 2008.  */
  18 
  19 #include <config.h>
  20 
  21 #include "xmemdup0.h"
  22 
  23 #include <stdlib.h>
  24 #include <string.h>
  25 
  26 #include "macros.h"
  27 
  28 int
  29 main (int argc, char **argv)
     /* [previous][next][first][last][top][bottom][index][help] */
  30 {
  31   char buffer[10] = { 'a', 'b', 'c', 'd', '\0',
  32                       'f', 'g', 'h', 'i', 'j'   };
  33 
  34   /* Empty string.  */
  35   {
  36     char *result = xmemdup0 (NULL, 0);
  37     ASSERT (result);
  38     ASSERT (!*result);
  39     free (result);
  40   }
  41   {
  42     char *result = xmemdup0 ("", 0);
  43     ASSERT (result);
  44     ASSERT (!*result);
  45     free (result);
  46   }
  47 
  48   /* Various buffer lengths.  */
  49   {
  50     char *result = xmemdup0 (buffer, 4);
  51     ASSERT (result);
  52     ASSERT (strcmp (result, buffer) == 0);
  53     free (result);
  54   }
  55   {
  56     char *result = xmemdup0 (buffer, 5);
  57     ASSERT (result);
  58     ASSERT (strcmp (result, buffer) == 0);
  59     ASSERT (result[5] == '\0');
  60     free (result);
  61   }
  62   {
  63     char *result = xmemdup0 (buffer, 9);
  64     ASSERT (result);
  65     ASSERT (memcmp (result, buffer, 9) == 0);
  66     ASSERT (result[9] == '\0');
  67     free (result);
  68   }
  69   {
  70     char *result = xmemdup0 (buffer, 10);
  71     ASSERT (result);
  72     ASSERT (memcmp (result, buffer, 10) == 0);
  73     ASSERT (result[10] == '\0');
  74     free (result);
  75   }
  76 
  77   return 0;
  78 }

/* [previous][next][first][last][top][bottom][index][help] */