blob: ffe9bd2a7bd110aae82917d3691cd324ffcecb39 (
plain) (
tree)
|
|
/* See LICENSE file for copyright and license details. */
#include "errors.h"
/**
* The error API
*/
void
error_test(void)
{
int i;
/* Test that naming and name dereferencing
of errors work. Because the mappings in
these [`libgamma_value_of_error` and
`libgamma_name_of_error`] functions are
generated, it should work if and only if
one test passes, assumming the errors are
unique whihc is tested in the end of this
function. */
printf("Testing error API using LIBGAMMA_STATE_UNKNOWN:\n");
printf(" Expecting %i: %i\n", LIBGAMMA_STATE_UNKNOWN, libgamma_value_of_error("LIBGAMMA_STATE_UNKNOWN"));
printf(" Expecting %s: %s\n", "LIBGAMMA_STATE_UNKNOWN", libgamma_name_of_error(LIBGAMMA_STATE_UNKNOWN));
printf("\n");
/* Test that `libgamma_perror` can print
libgamma errors and system errors, and
handle success in the same with as `perror`. */
printf("Testing libgamma_perror:\n");
libgamma_perror(" Expecting LIBGAMMA_STATE_UNKNOWN", LIBGAMMA_STATE_UNKNOWN);
libgamma_perror(" Expecting a description for ENOMEM", ENOMEM);
libgamma_perror(" Expecting a description for successfulness", 0);
/* Test that `libgamma_perror` handles
`LIBGAMMA_ERRNO_SET` correctly. */
libgamma_perror(" Expecting a description for ENOMEM", (errno = ENOMEM, LIBGAMMA_ERRNO_SET));
/* That that `libgamma_perror` handles
`LIBGAMMA_DEVICE_REQUIRE_GROUP`
correctly both when the required
group's name is known and when it
is unknown. */
libgamma_group_gid = 10;
libgamma_group_name = "test";
libgamma_perror(" Expecting 'LIBGAMMA_DEVICE_REQUIRE_GROUP: test (10)'", LIBGAMMA_DEVICE_REQUIRE_GROUP);
libgamma_group_name = NULL;
libgamma_perror(" Expecting 'LIBGAMMA_DEVICE_REQUIRE_GROUP: 10'", LIBGAMMA_DEVICE_REQUIRE_GROUP);
printf("\n");
/* That all libgamma error codes
are unique. This is done by
getting the name associated
with an error code and the getting
the error code associated that
name and test that the same
error code is returned as put in,
for each libgamma error code. */
printf("Testing error code uniqueness: ");
for (i = -1; i >= LIBGAMMA_ERROR_MIN; i--) {
if (libgamma_value_of_error(libgamma_name_of_error(i)) != i) {
printf("failed\n");
goto not_unique;
}
}
printf("passed\n");
not_unique:
printf("\n");
}
|