mirror of
https://source.denx.de/u-boot/u-boot.git
synced 2026-06-13 15:03:58 +03:00
Squashed 'lib/mbedtls/external/mbedtls/' content from commit 2ca6c285a0dd
git-subtree-dir: lib/mbedtls/external/mbedtls git-subtree-split: 2ca6c285a0dd3f33982dd57299012dacab1ff206
This commit is contained in:
89
tests/suites/test_suite_platform_printf.function
Normal file
89
tests/suites/test_suite_platform_printf.function
Normal file
@@ -0,0 +1,89 @@
|
||||
/* BEGIN_HEADER */
|
||||
|
||||
/* The printf test functions take a format argument from the test data
|
||||
* for several reasons:
|
||||
* - For some tests, it makes sense to vary the format.
|
||||
* - For all tests, it means we're testing the actual printf function
|
||||
* that parses the format at runtime, and not a compiler optimization.
|
||||
* (It may be useful to add tests that allow compiler optimizations.
|
||||
* There aren't any yet at the time of writing.)
|
||||
*/
|
||||
|
||||
#include "mbedtls/platform.h"
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
#define NEWLINE_CHAR '\n'
|
||||
#define SPACE_CHAR ' '
|
||||
#define DOUBLE_QUOTE_CHAR '"'
|
||||
#define COLON_CHAR ':'
|
||||
#define QUESTION_CHAR '?'
|
||||
#define BACKSLASH_CHAR '\\'
|
||||
#define LOWERCASE_N_CHAR 'n'
|
||||
/* END_HEADER */
|
||||
|
||||
/* BEGIN_CASE */
|
||||
void printf_int(char *format, /* any format expecting one int argument, e.g. "%d" */
|
||||
int x, char *result)
|
||||
{
|
||||
char *output = NULL;
|
||||
const size_t n = strlen(result);
|
||||
|
||||
/* Nominal case: buffer just large enough */
|
||||
TEST_CALLOC(output, n + 1);
|
||||
TEST_EQUAL(n, mbedtls_snprintf(output, n + 1, format, x));
|
||||
TEST_MEMORY_COMPARE(result, n + 1, output, n + 1);
|
||||
mbedtls_free(output);
|
||||
output = NULL;
|
||||
|
||||
exit:
|
||||
mbedtls_free(output);
|
||||
}
|
||||
/* END_CASE */
|
||||
|
||||
/* BEGIN_CASE */
|
||||
void printf_long_max(const char *format, /* "%lx" or longer type */
|
||||
long value)
|
||||
{
|
||||
char *expected = NULL;
|
||||
char *output = NULL;
|
||||
/* 2 hex digits per byte */
|
||||
const size_t n = sizeof(value) * 2;
|
||||
|
||||
/* We assume that long has no padding bits! */
|
||||
TEST_CALLOC(expected, n + 1);
|
||||
expected[0] = '7';
|
||||
memset(expected + 1, 'f', sizeof(value) * 2 - 1);
|
||||
|
||||
TEST_CALLOC(output, n + 1);
|
||||
TEST_EQUAL(n, mbedtls_snprintf(output, n + 1, format, value));
|
||||
TEST_MEMORY_COMPARE(expected, n + 1, output, n + 1);
|
||||
mbedtls_free(output);
|
||||
output = NULL;
|
||||
|
||||
exit:
|
||||
mbedtls_free(output);
|
||||
mbedtls_free(expected);
|
||||
}
|
||||
/* END_CASE */
|
||||
|
||||
/* BEGIN_CASE */
|
||||
void printf_char2(char *format, /* "%c%c" */
|
||||
int arg1, int arg2, char *result)
|
||||
{
|
||||
char *output = NULL;
|
||||
const size_t n = strlen(result);
|
||||
|
||||
/* Nominal case: buffer just large enough */
|
||||
TEST_CALLOC(output, n + 1);
|
||||
TEST_EQUAL(n, mbedtls_snprintf(output, n + 1, format, arg1, arg2));
|
||||
TEST_MEMORY_COMPARE(result, n + 1, output, n + 1);
|
||||
mbedtls_free(output);
|
||||
output = NULL;
|
||||
|
||||
exit:
|
||||
mbedtls_free(output);
|
||||
}
|
||||
/* END_CASE */
|
||||
Reference in New Issue
Block a user