~ubuntu-branches/ubuntu/quantal/gnutls26/quantal

« back to all changes in this revision

Viewing changes to gl/tests/test-vasnprintf.c

  • Committer: Bazaar Package Importer
  • Author(s): Steve Langasek
  • Date: 2011-05-20 13:07:18 UTC
  • mfrom: (12.1.11 sid)
  • Revision ID: james.westby@ubuntu.com-20110520130718-db41dybbanzfvlji
Tags: 2.10.5-1ubuntu1
* Merge from Debian unstable, remaining changes:
  - Fix build failure with --no-add-needed.
  - Build for multiarch.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
1
/* Test of vasnprintf() and asnprintf() functions.
2
 
   Copyright (C) 2007-2008 Free Software Foundation, Inc.
 
2
   Copyright (C) 2007-2010 Free Software Foundation, Inc.
3
3
 
4
4
   This program is free software: you can redistribute it and/or modify
5
5
   it under the terms of the GNU General Public License as published by
21
21
#include "vasnprintf.h"
22
22
 
23
23
#include <stdarg.h>
24
 
#include <stdio.h>
25
24
#include <stdlib.h>
26
25
#include <string.h>
27
26
 
28
 
#define ASSERT(expr) \
29
 
  do                                                                         \
30
 
    {                                                                        \
31
 
      if (!(expr))                                                           \
32
 
        {                                                                    \
33
 
          fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \
34
 
          fflush (stderr);                                                   \
35
 
          abort ();                                                          \
36
 
        }                                                                    \
37
 
    }                                                                        \
38
 
  while (0)
 
27
#include "macros.h"
 
28
 
 
29
static void
 
30
test_function (char * (*my_asnprintf) (char *, size_t *, const char *, ...))
 
31
{
 
32
  char buf[8];
 
33
  int size;
 
34
 
 
35
  for (size = 0; size <= 8; size++)
 
36
    {
 
37
      size_t length = size;
 
38
      char *result = my_asnprintf (NULL, &length, "%d", 12345);
 
39
      ASSERT (result != NULL);
 
40
      ASSERT (strcmp (result, "12345") == 0);
 
41
      ASSERT (length == 5);
 
42
      free (result);
 
43
    }
 
44
 
 
45
  for (size = 0; size <= 8; size++)
 
46
    {
 
47
      size_t length;
 
48
      char *result;
 
49
 
 
50
      memcpy (buf, "DEADBEEF", 8);
 
51
      length = size;
 
52
      result = my_asnprintf (buf, &length, "%d", 12345);
 
53
      ASSERT (result != NULL);
 
54
      ASSERT (strcmp (result, "12345") == 0);
 
55
      ASSERT (length == 5);
 
56
      if (size < 6)
 
57
        ASSERT (result != buf);
 
58
      ASSERT (memcmp (buf + size, "DEADBEEF" + size, 8 - size) == 0);
 
59
      if (result != buf)
 
60
        free (result);
 
61
    }
 
62
}
39
63
 
40
64
static char *
41
65
my_asnprintf (char *resultbuf, size_t *lengthp, const char *format, ...)
52
76
static void
53
77
test_vasnprintf ()
54
78
{
55
 
  char buf[8];
56
 
  int size;
57
 
 
58
 
  for (size = 0; size <= 8; size++)
59
 
    {
60
 
      size_t length = size;
61
 
      char *result = my_asnprintf (NULL, &length, "%d", 12345);
62
 
      ASSERT (result != NULL);
63
 
      ASSERT (strcmp (result, "12345") == 0);
64
 
      ASSERT (length == 5);
65
 
      free (result);
66
 
    }
67
 
 
68
 
  for (size = 0; size <= 8; size++)
69
 
    {
70
 
      size_t length;
71
 
      char *result;
72
 
 
73
 
      memcpy (buf, "DEADBEEF", 8);
74
 
      length = size;
75
 
      result = my_asnprintf (buf, &length, "%d", 12345);
76
 
      ASSERT (result != NULL);
77
 
      ASSERT (strcmp (result, "12345") == 0);
78
 
      ASSERT (length == 5);
79
 
      if (size < 6)
80
 
        ASSERT (result != buf);
81
 
      ASSERT (memcmp (buf + size, "DEADBEEF" + size, 8 - size) == 0);
82
 
      if (result != buf)
83
 
        free (result);
84
 
    }
 
79
  test_function (my_asnprintf);
85
80
}
86
81
 
87
82
static void
88
83
test_asnprintf ()
89
84
{
90
 
  char buf[8];
91
 
  int size;
92
 
 
93
 
  for (size = 0; size <= 8; size++)
94
 
    {
95
 
      size_t length = size;
96
 
      char *result = asnprintf (NULL, &length, "%d", 12345);
97
 
      ASSERT (result != NULL);
98
 
      ASSERT (strcmp (result, "12345") == 0);
99
 
      ASSERT (length == 5);
100
 
      free (result);
101
 
    }
102
 
 
103
 
  for (size = 0; size <= 8; size++)
104
 
    {
105
 
      size_t length;
106
 
      char *result;
107
 
 
108
 
      memcpy (buf, "DEADBEEF", 8);
109
 
      length = size;
110
 
      result = asnprintf (buf, &length, "%d", 12345);
111
 
      ASSERT (result != NULL);
112
 
      ASSERT (strcmp (result, "12345") == 0);
113
 
      ASSERT (length == 5);
114
 
      if (size < 6)
115
 
        ASSERT (result != buf);
116
 
      ASSERT (memcmp (buf + size, "DEADBEEF" + size, 8 - size) == 0);
117
 
      if (result != buf)
118
 
        free (result);
119
 
    }
 
85
  test_function (asnprintf);
120
86
}
121
87
 
122
88
int