diff options
Diffstat (limited to 'test/test_xprintf.c')
-rw-r--r-- | test/test_xprintf.c | 298 |
1 files changed, 0 insertions, 298 deletions
diff --git a/test/test_xprintf.c b/test/test_xprintf.c deleted file mode 100644 index ff157b8..0000000 --- a/test/test_xprintf.c +++ /dev/null @@ -1,298 +0,0 @@ -/* - * Copyright (c) 2010 Richard Braun. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR - * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#include <stdio.h> -#include <assert.h> -#include <stdarg.h> -#include <string.h> - -#include "../macros.h" -#include "../xprintf.h" - -#define TEST_PRINTF(format, ...) \ -MACRO_BEGIN \ - char stra[256], strb[256]; \ - int la, lb; \ - la = snprintf(stra, 256, format, ## __VA_ARGS__); \ - printf(" printf: %s", stra); \ - lb = xsnprintf(strb, 256, format, ## __VA_ARGS__); \ - xprintf("xprintf: %s", stra); \ - assert(la == lb); \ - assert(strcmp(stra, strb) == 0); \ -MACRO_END - -int -main(int argc, char *argv[]) -{ - (void)argc; - (void)argv; - -#define FORMAT "%c" - TEST_PRINTF("%s: '" FORMAT "'\n", FORMAT, 'a'); -#undef FORMAT - -#define FORMAT "%8c" - TEST_PRINTF("%s: '" FORMAT "'\n", FORMAT, 'a'); -#undef FORMAT - -#define FORMAT "%-8c" - TEST_PRINTF("%s: '" FORMAT "'\n", FORMAT, 'a'); -#undef FORMAT - -#define FORMAT "%.s" - TEST_PRINTF("%s: '" FORMAT "'\n", FORMAT, "12345"); -#undef FORMAT - -#define FORMAT "%.3s" - TEST_PRINTF("%s: '" FORMAT "'\n", FORMAT, "12345"); -#undef FORMAT - -#define FORMAT "%4.3s" - TEST_PRINTF("%s: '" FORMAT "'\n", FORMAT, "12345"); -#undef FORMAT - -#define FORMAT "%-4.3s" - TEST_PRINTF("%s: '" FORMAT "'\n", FORMAT, "12345"); -#undef FORMAT - -#define FORMAT "%3.4s" - TEST_PRINTF("%s: '" FORMAT "'\n", FORMAT, "12345"); -#undef FORMAT - -#define FORMAT "%-3.4s" - TEST_PRINTF("%s: '" FORMAT "'\n", FORMAT, "12345"); -#undef FORMAT - -#define FORMAT "%#o" - TEST_PRINTF("%s: '" FORMAT "'\n", FORMAT, 123); -#undef FORMAT - -#define FORMAT "%#x" - TEST_PRINTF("%s: '" FORMAT "'\n", FORMAT, 123); -#undef FORMAT - -#define FORMAT "%#X" - TEST_PRINTF("%s: '" FORMAT "'\n", FORMAT, 123); -#undef FORMAT - -#define FORMAT "%08d" - TEST_PRINTF("%s: '" FORMAT "'\n", FORMAT, 123); -#undef FORMAT - -#define FORMAT "%-8d" - TEST_PRINTF("%s: '" FORMAT "'\n", FORMAT, 123); -#undef FORMAT - -#define FORMAT "%-08d" - TEST_PRINTF("%s: '" FORMAT "'\n", FORMAT, 123); -#undef FORMAT - -#define FORMAT "%0-8d" - TEST_PRINTF("%s: '" FORMAT "'\n", FORMAT, 123); -#undef FORMAT - -#define FORMAT "% d" - TEST_PRINTF("%s: '" FORMAT "'\n", FORMAT, 123); -#undef FORMAT - -#define FORMAT "%+d" - TEST_PRINTF("%s: '" FORMAT "'\n", FORMAT, 123); -#undef FORMAT - -#define FORMAT "%+ d" - TEST_PRINTF("%s: '" FORMAT "'\n", FORMAT, 123); -#undef FORMAT - -#define FORMAT "%12d" - TEST_PRINTF("%s: '" FORMAT "'\n", FORMAT, 123); -#undef FORMAT - -#define FORMAT "%*d" - TEST_PRINTF("%s: '" FORMAT "'\n", FORMAT, 12, 123); -#undef FORMAT - -#define FORMAT "%.12d" - TEST_PRINTF("%s: '" FORMAT "'\n", FORMAT, 123); -#undef FORMAT - -#define FORMAT "%.012d" - TEST_PRINTF("%s: '" FORMAT "'\n", FORMAT, 123); -#undef FORMAT - -#define FORMAT "%.*d" - TEST_PRINTF("%s: '" FORMAT "'\n", FORMAT, 12, 123); -#undef FORMAT - -#define FORMAT "%.d" - TEST_PRINTF("%s: '" FORMAT "'\n", FORMAT, 123); -#undef FORMAT - -#define FORMAT "%.*d" - TEST_PRINTF("%s: '" FORMAT "'\n", FORMAT, -12, 123); -#undef FORMAT - -#define FORMAT "%.4d" - TEST_PRINTF("%s: '" FORMAT "'\n", FORMAT, 123); -#undef FORMAT - -#define FORMAT "%5.4d" - TEST_PRINTF("%s: '" FORMAT "'\n", FORMAT, 123); -#undef FORMAT - -#define FORMAT "%4.5d" - TEST_PRINTF("%s: '" FORMAT "'\n", FORMAT, 123); -#undef FORMAT - -#define FORMAT "%d" - TEST_PRINTF("%s: '" FORMAT "'\n", FORMAT, 0); -#undef FORMAT - -#define FORMAT "%.0d" - TEST_PRINTF("%s: '" FORMAT "'\n", FORMAT, 0); -#undef FORMAT - -#define FORMAT "%.0o" - TEST_PRINTF("%s: '" FORMAT "'\n", FORMAT, 0); -#undef FORMAT - -#define FORMAT "%.0x" - TEST_PRINTF("%s: '" FORMAT "'\n", FORMAT, 0); -#undef FORMAT - -#define FORMAT "%1.0d" - TEST_PRINTF("%s: '" FORMAT "'\n", FORMAT, 0); -#undef FORMAT - -#define FORMAT "%08.0d" - TEST_PRINTF("%s: '" FORMAT "'\n", FORMAT, -123); -#undef FORMAT - -#define FORMAT "%08d" - TEST_PRINTF("%s: '" FORMAT "'\n", FORMAT, -123); -#undef FORMAT - -#define FORMAT "%08d" - TEST_PRINTF("%s: '" FORMAT "'\n", FORMAT, 123); -#undef FORMAT - -#define FORMAT "%8d" - TEST_PRINTF("%s: '" FORMAT "'\n", FORMAT, 123); -#undef FORMAT - -#define FORMAT "%8d" - TEST_PRINTF("%s: '" FORMAT "'\n", FORMAT, -123); -#undef FORMAT - -#define FORMAT "%.8d" - TEST_PRINTF("%s: '" FORMAT "'\n", FORMAT, -123); -#undef FORMAT - -#define FORMAT "%.80d" - TEST_PRINTF("%s: '" FORMAT "'\n", FORMAT, -123); -#undef FORMAT - -#define FORMAT "%-80d" - TEST_PRINTF("%s: '" FORMAT "'\n", FORMAT, -123); -#undef FORMAT - -#define FORMAT "%80d" - TEST_PRINTF("%s: '" FORMAT "'\n", FORMAT, -123); -#undef FORMAT - -#define FORMAT "%80.40d" - TEST_PRINTF("%s: '" FORMAT "'\n", FORMAT, -123); -#undef FORMAT - -#define FORMAT "%-+80.40d" - TEST_PRINTF("%s: '" FORMAT "'\n", FORMAT, 123); -#undef FORMAT - -#define FORMAT "%+x" - TEST_PRINTF("%s: '" FORMAT "'\n", FORMAT, -123); -#undef FORMAT - -#define FORMAT "%#x" - TEST_PRINTF("%s: '" FORMAT "'\n", FORMAT, 123); -#undef FORMAT - -#define FORMAT "%#o" - TEST_PRINTF("%s: '" FORMAT "'\n", FORMAT, 123); -#undef FORMAT - -#define FORMAT "%p" - TEST_PRINTF("%s: '" FORMAT "'\n", FORMAT, "123"); -#undef FORMAT - -#define FORMAT "%#lx" - TEST_PRINTF("%s: '" FORMAT "'\n", FORMAT, 0xdeadbeefL); -#undef FORMAT - -#define FORMAT "%zd" - TEST_PRINTF("%s: '" FORMAT "'\n", FORMAT, (size_t)-123); -#undef FORMAT - -#define FORMAT "%#llx" - TEST_PRINTF("%s: '" FORMAT "'\n", FORMAT, 0xdeadbeefbadcafeLL); -#undef FORMAT - -#define FORMAT "%llo" - TEST_PRINTF("%s: '" FORMAT "'\n", FORMAT, 0xffffffffffffffffLL); -#undef FORMAT - -#define FORMAT "%%" - TEST_PRINTF("%s: '" FORMAT "'\n", FORMAT); -#undef FORMAT - -#define FORMAT "%y" - TEST_PRINTF("%s: '" FORMAT "'\n", FORMAT); -#undef FORMAT - - char stra[10], strb[10]; - int la, lb; - la = snprintf(stra, sizeof(stra), "%s", "123456789a"); - printf(" printf: %s\n", stra); - lb = xsnprintf(strb, sizeof(strb), "%s", "123456789a"); - xprintf("xprintf: %s\n", stra); - assert(la == lb); - assert(strncmp(stra, strb, 10) == 0); - -#define FORMAT "12%n3%#08x4%n5" - int lc, ld; - sprintf(stra, FORMAT, &la, 123, &lb); - printf(" printf: la: %d, lb: %d\n", la, lb); - xsprintf(strb, FORMAT, &lc, 123, &ld); - xprintf("xprintf: lc: %d, ld: %d\n", lc, ld); - assert(la == lc); - assert(lb == ld); -#undef FORMAT - - la = snprintf(NULL, 0, "%s", "123"); - printf(" printf: %d\n", la); - lb = xsnprintf(NULL, 0, "%s", "123"); - xprintf("xprintf: %d\n", lb); - assert(la == lb); - - return 0; -} |