1/* Test of ulc_[v]asnprintf() functions. 2 Copyright (C) 2007, 2009, 2010 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 of the License, or 7 (at your option) 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 <http://www.gnu.org/licenses/>. */ 16 17/* Written by Bruno Haible <bruno@clisp.org>, 2007. */ 18 19static void 20test_function (char * (*my_asnprintf) (char *, size_t *, const char *, ...)) 21{ 22 char buf[8]; 23 int size; 24 25 /* Test return value convention. */ 26 27 for (size = 0; size <= 8; size++) 28 { 29 size_t length = size; 30 char *result = my_asnprintf (NULL, &length, "%d", 12345); 31 ASSERT (result != NULL); 32 ASSERT (strcmp (result, "12345") == 0); 33 ASSERT (length == 5); 34 free (result); 35 } 36 37 for (size = 0; size <= 8; size++) 38 { 39 size_t length; 40 char *result; 41 42 memcpy (buf, "DEADBEEF", 8); 43 length = size; 44 result = my_asnprintf (buf, &length, "%d", 12345); 45 ASSERT (result != NULL); 46 ASSERT (strcmp (result, "12345") == 0); 47 ASSERT (length == 5); 48 if (size < 6) 49 ASSERT (result != buf); 50 ASSERT (memcmp (buf + size, "DEADBEEF" + size, 8 - size) == 0); 51 if (result != buf) 52 free (result); 53 } 54} 55