Blame test/driver/logger.c

Packit dd8086
#ifdef HAVE_CONFIG_H
Packit dd8086
#include "config.h"
Packit dd8086
#define __CDIO_CONFIG_H__ 1
Packit dd8086
#endif
Packit dd8086
Packit dd8086
#ifdef HAVE_STDIO_H
Packit dd8086
#include <stdio.h>
Packit dd8086
#endif
Packit dd8086
#ifdef HAVE_STDLIB_H
Packit dd8086
#include <stdlib.h>
Packit dd8086
#endif
Packit dd8086
#ifdef HAVE_STRING_H
Packit dd8086
#include <string.h>
Packit dd8086
#endif
Packit dd8086
Packit dd8086
#include <cdio/logging.h>
Packit dd8086
Packit dd8086
char *last_debugmsg = NULL;
Packit dd8086
char *last_infomsg = NULL;
Packit dd8086
char *last_warnmsg = NULL;
Packit dd8086
char *last_errmsg = NULL;
Packit dd8086
char *last_assertmsg = NULL;
Packit dd8086
char *last_othermsg = NULL;
Packit dd8086
Packit dd8086
/* Here is an example of a custom log handler. */
Packit dd8086
static void
Packit dd8086
test_log_handler (cdio_log_level_t level, const char *message)
Packit dd8086
{
Packit dd8086
switch(level) {
Packit dd8086
  case CDIO_LOG_DEBUG:
Packit dd8086
    last_debugmsg = strdup(message);
Packit dd8086
    return;
Packit dd8086
  case CDIO_LOG_INFO:
Packit dd8086
    last_infomsg = strdup(message);
Packit dd8086
    return;
Packit dd8086
  case CDIO_LOG_WARN:
Packit dd8086
    last_warnmsg = strdup(message);
Packit dd8086
    return;
Packit dd8086
  case CDIO_LOG_ERROR:
Packit dd8086
    last_errmsg = strdup(message);
Packit dd8086
    return;
Packit dd8086
  case CDIO_LOG_ASSERT:
Packit dd8086
    last_assertmsg = strdup(message);
Packit dd8086
    return;
Packit dd8086
  default:
Packit dd8086
    fprintf(stderr, "level %d message: %s should not happen\n",
Packit dd8086
	   level, message);
Packit dd8086
    exit(20);
Packit dd8086
  }
Packit dd8086
}
Packit dd8086
Packit dd8086
int
Packit dd8086
main(int argc, const char *argv[])
Packit dd8086
{
Packit dd8086
    const char *test_msg = "test message";
Packit dd8086
#ifndef HAVE_WIN32_CDROM
Packit dd8086
    cdio_log_handler_t old_log_handler = (cdio_log_handler_t) NULL;
Packit dd8086
Packit dd8086
    old_log_handler = cdio_log_set_handler(test_log_handler);
Packit dd8086
    if (old_log_handler != cdio_default_log_handler) {
Packit dd8086
      fprintf(stderr, "Should have gotten old log handler back %p vs %p\n",
Packit dd8086
	      (void *) old_log_handler,
Packit dd8086
	      (void *) cdio_default_log_handler);
Packit dd8086
	exit(1);
Packit dd8086
    }
Packit dd8086
#else
Packit dd8086
    cdio_log_set_handler(test_log_handler);
Packit dd8086
#endif
Packit dd8086
Packit dd8086
    /* Check that calling each of the logger routine appears in the right variable,
Packit dd8086
       based on the log level */
Packit dd8086
Packit dd8086
    test_msg = "debug";
Packit dd8086
    cdio_debug("%s", test_msg);
Packit dd8086
Packit dd8086
    if (last_debugmsg != NULL) {
Packit dd8086
	fprintf(stderr, "debug message should have been ignored due to default log level\n");
Packit dd8086
	exit(2);
Packit dd8086
    }
Packit dd8086
Packit dd8086
    cdio_loglevel_default = CDIO_LOG_DEBUG;
Packit dd8086
    cdio_debug("%s", test_msg);
Packit dd8086
    if (last_debugmsg == NULL ||
Packit dd8086
	strncmp(test_msg, last_debugmsg, strlen(test_msg)) != 0) {
Packit dd8086
	fprintf(stderr, "debug message %s did not get handled\n",
Packit dd8086
		last_debugmsg);
Packit dd8086
        free(last_debugmsg);
Packit dd8086
	exit(2);
Packit dd8086
    }
Packit dd8086
    free(last_debugmsg);
Packit dd8086
Packit dd8086
    test_msg = "info";
Packit dd8086
    cdio_info("%s", test_msg);
Packit dd8086
    if (strncmp(test_msg, last_infomsg, strlen(test_msg)) != 0) {
Packit dd8086
	fprintf(stderr, "info message %s did not get handled\n", last_infomsg);
Packit dd8086
        free(last_infomsg);
Packit dd8086
	exit(3);
Packit dd8086
    }
Packit dd8086
    free(last_infomsg);
Packit dd8086
Packit dd8086
    test_msg = "warn";
Packit dd8086
    cdio_warn("%s", test_msg);
Packit dd8086
    if (strncmp(test_msg, last_warnmsg, strlen(test_msg)) != 0) {
Packit dd8086
	fprintf(stderr, "warn message %s did not get handled\n", last_warnmsg);
Packit dd8086
        free(last_warnmsg);
Packit dd8086
	exit(4);
Packit dd8086
    }
Packit dd8086
    free(last_warnmsg);
Packit dd8086
Packit dd8086
    test_msg = "error";
Packit dd8086
    cdio_error("%s", test_msg);
Packit dd8086
    if (strncmp(test_msg, last_errmsg, strlen(test_msg)) != 0) {
Packit dd8086
	fprintf(stderr, "error message %s did not get handled\n", last_errmsg);
Packit dd8086
        free(last_errmsg);
Packit dd8086
	exit(5);
Packit dd8086
    }
Packit dd8086
    free(last_errmsg);
Packit dd8086
Packit dd8086
    /* Try using generic cdio_log routine */
Packit dd8086
Packit dd8086
    test_msg = "debug via cdio_log";
Packit dd8086
    cdio_log(CDIO_LOG_DEBUG, "%s", test_msg);
Packit dd8086
    if (strncmp(test_msg, last_debugmsg, strlen(test_msg)) != 0) {
Packit dd8086
	fprintf(stderr, "debug message %s did not get handled, phase 2\n", last_debugmsg);
Packit dd8086
        free(last_debugmsg);
Packit dd8086
	exit(6);
Packit dd8086
    }
Packit dd8086
    free(last_debugmsg);
Packit dd8086
Packit dd8086
    test_msg = "info via cdio_log";
Packit dd8086
    cdio_log(CDIO_LOG_INFO, "%s", test_msg);
Packit dd8086
    if (strncmp(test_msg, last_infomsg, strlen(test_msg)) != 0) {
Packit dd8086
	fprintf(stderr, "info message %s did not get handled\n", last_infomsg);
Packit dd8086
        free(last_infomsg);
Packit dd8086
	exit(7);
Packit dd8086
    }
Packit dd8086
    free(last_infomsg);
Packit dd8086
Packit dd8086
    test_msg = "warn via cdio_log";
Packit dd8086
    cdio_log(CDIO_LOG_WARN, "%s", test_msg);
Packit dd8086
    if (strncmp(test_msg, last_warnmsg, strlen(test_msg)) != 0) {
Packit dd8086
	fprintf(stderr, "warn message %s did not get handled\n", last_warnmsg);
Packit dd8086
        free(last_warnmsg);
Packit dd8086
	exit(8);
Packit dd8086
    }
Packit dd8086
    free(last_warnmsg);
Packit dd8086
Packit dd8086
    test_msg = "error via cdio_log";
Packit dd8086
    cdio_log(CDIO_LOG_ERROR, "%s", test_msg);
Packit dd8086
    if (strncmp(test_msg, last_errmsg, strlen(test_msg)) != 0) {
Packit dd8086
	fprintf(stderr, "error message %s did not get handled\n", last_errmsg);
Packit dd8086
        free(last_errmsg);
Packit dd8086
	exit(9);
Packit dd8086
    }
Packit dd8086
    free(last_errmsg);
Packit dd8086
Packit dd8086
    exit(0);
Packit dd8086
}