File: asprintf.c

package info (click to toggle)
criterion 2.4.1-2
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, sid, trixie
  • size: 3,864 kB
  • sloc: ansic: 17,945; cpp: 774; python: 74; makefile: 25; sh: 19
file content (31 lines) | stat: -rw-r--r-- 1,523 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include "criterion/criterion.h"
#include "criterion/internal/asprintf-compat.h"
#include "criterion/new/assert.h"

#include <stdio.h>

#define assert_cr_asprintf_format_is_valid(Fmt, Val)                       \
    do {                                                                   \
        char *actual;                                                      \
        char expected[32];                                                 \
        int rc_expected = snprintf(expected, sizeof (expected), Fmt, Val); \
        int rc_actual = cr_asprintf(&actual, Fmt, Val);                    \
        cr_expect(eq(int, rc_actual, rc_expected));                        \
        cr_expect(eq(str, actual, expected));                              \
        free(actual);                                                      \
    } while (0)

Test(asprintf, valid) {
    assert_cr_asprintf_format_is_valid("%c", 'a');
    assert_cr_asprintf_format_is_valid("%hd", (short) 42);
    assert_cr_asprintf_format_is_valid("%d", 42);
    assert_cr_asprintf_format_is_valid("%ld", 42L);
    assert_cr_asprintf_format_is_valid("%lld", 42LL);
    assert_cr_asprintf_format_is_valid("%hu", (unsigned short) 42U);
    assert_cr_asprintf_format_is_valid("%u", 42U);
    assert_cr_asprintf_format_is_valid("%lu", 42UL);
    assert_cr_asprintf_format_is_valid("%llu", 42ULL);
    assert_cr_asprintf_format_is_valid("%f", 3.14);
    assert_cr_asprintf_format_is_valid("%s", "foo");
    assert_cr_asprintf_format_is_valid("%p", NULL);
}