/** * libgamma -- Display server abstraction layer for gamma ramp adjustments * Copyright (C) 2014 Mattias Andrée (maandree@member.fsf.org) * * This library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this library. If not, see <http://www.gnu.org/licenses/>. */ #include "errors.h" #include <libgamma.h> #include <stdio.h> #include <errno.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"); }