81 lines
1.5 KiB
C
81 lines
1.5 KiB
C
/* Copyright (c) 2021-2023 Barcelona Supercomputing Center (BSC)
|
|
* SPDX-License-Identifier: GPL-3.0-or-later */
|
|
|
|
#include "emu/value.h"
|
|
#include "common.h"
|
|
|
|
/* Ensure there are no holes in the value structure */
|
|
static void
|
|
test_holes(void)
|
|
{
|
|
struct value a, b;
|
|
|
|
memset(&a, 66, sizeof(struct value));
|
|
memset(&b, 0, sizeof(struct value));
|
|
|
|
a = value_null();
|
|
|
|
/* Ensure we can use the whole size of the value struct to
|
|
* compare two values, so we don't have problems with
|
|
* unitialized holes due to alignment */
|
|
if (memcmp(&a, &b, sizeof(struct value)) != 0)
|
|
die("values are not the same");
|
|
|
|
err("OK");
|
|
}
|
|
|
|
/* Ensure value_null results in values being equal */
|
|
static void
|
|
test_null_init(void)
|
|
{
|
|
struct value a, b;
|
|
|
|
memset(&a, 66, sizeof(struct value));
|
|
memset(&b, 0, sizeof(struct value));
|
|
|
|
a = value_null();
|
|
b = value_null();
|
|
|
|
if (!value_is_equal(&a, &b))
|
|
die("null not equal");
|
|
|
|
err("OK");
|
|
}
|
|
|
|
/* Test that we can printf at least 8 values without overwritting the
|
|
* value_str() buffer */
|
|
static void
|
|
test_multiple_str(void)
|
|
{
|
|
if (VALUE_NBUF < 8)
|
|
die("VALUE_NBUF too small");
|
|
|
|
char *str[VALUE_NBUF];
|
|
for (int i = 0; i < VALUE_NBUF; i++) {
|
|
struct value v = value_int64(i);
|
|
str[i] = value_str(v);
|
|
}
|
|
|
|
for (int i = 0; i < VALUE_NBUF; i++) {
|
|
char expected[128];
|
|
sprintf(expected, "{int64_t %d}", i);
|
|
if (strcmp(expected, str[i]) != 0) {
|
|
die("mismatch in bufer i=%d: expected %s, got %s",
|
|
i, expected, str[i]);
|
|
}
|
|
}
|
|
|
|
err("OK");
|
|
}
|
|
|
|
|
|
int
|
|
main(void)
|
|
{
|
|
test_holes();
|
|
test_null_init();
|
|
test_multiple_str();
|
|
|
|
return 0;
|
|
}
|