Blame test/driver/helper.c

Packit dd8086
/* -*- C -*-
Packit dd8086
  Copyright (C) 2010, 2011 Rocky Bernstein <rocky@gnu.org>
Packit dd8086
  
Packit dd8086
  This program is free software: you can redistribute it and/or modify
Packit dd8086
  it under the terms of the GNU General Public License as published by
Packit dd8086
  the Free Software Foundation, either version 3 of the License, or
Packit dd8086
  (at your option) any later version.
Packit dd8086
Packit dd8086
  This program is distributed in the hope that it will be useful,
Packit dd8086
  but WITHOUT ANY WARRANTY; without even the implied warranty of
Packit dd8086
  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
Packit dd8086
  GNU General Public License for more details.
Packit dd8086
Packit dd8086
  You should have received a copy of the GNU General Public License
Packit dd8086
  along with this program.  If not, see <http://www.gnu.org/licenses/>.
Packit dd8086
*/
Packit dd8086
#ifdef HAVE_CONFIG_H
Packit dd8086
#include "config.h"
Packit dd8086
#endif
Packit dd8086
Packit dd8086
#ifdef HAVE_STDIO_H
Packit dd8086
#include <stdio.h>
Packit dd8086
#endif
Packit dd8086
#ifdef HAVE_STRING_H
Packit dd8086
#include <string.h>
Packit dd8086
#endif
Packit dd8086
#ifdef HAVE_STDLIB_H
Packit dd8086
#include <stdlib.h>
Packit dd8086
#endif
Packit dd8086
Packit dd8086
#include "helper.h"
Packit dd8086
Packit dd8086
unsigned int info_msg_count=0;
Packit dd8086
unsigned int debug_msg_count=0;
Packit dd8086
unsigned int warn_msg_count=0;
Packit dd8086
unsigned int error_msg_count=0;
Packit dd8086
const char *info_messages[6] = {NULL, NULL, NULL, NULL, NULL, NULL};
Packit dd8086
const char *debug_messages[6] = {NULL, NULL, NULL, NULL, NULL, NULL};
Packit dd8086
const char *warn_messages[6] = {NULL, NULL, NULL, NULL, NULL, NULL};
Packit dd8086
const char *error_messages[6] = {NULL, NULL, NULL, NULL, NULL, NULL};
Packit dd8086
Packit dd8086
void 
Packit dd8086
assert_equal_int(int expect, int got, const char *msg)
Packit dd8086
{
Packit dd8086
  if (expect != got) {
Packit dd8086
      fprintf(stderr, "ERROR: Expected %d, got %d\n", expect, got);
Packit dd8086
      if (NULL != msg) fprintf(stderr, "%s\n", msg);
Packit dd8086
      exit(1);
Packit dd8086
  }
Packit dd8086
}
Packit dd8086
Packit dd8086
void 
Packit dd8086
assert_no_warn(const char *msg)
Packit dd8086
{
Packit dd8086
  if (warn_msg_count != 0) {
Packit dd8086
      unsigned int i;
Packit dd8086
      fprintf(stderr, "ERROR: got unexpected warnings:\n");
Packit dd8086
      for (i=0; i
Packit dd8086
	  fprintf(stderr, "%s\n", warn_messages[i]);
Packit dd8086
      }
Packit dd8086
      exit(1);
Packit dd8086
  }
Packit dd8086
}
Packit dd8086
Packit dd8086
void 
Packit dd8086
assert_warn(const char *msg)
Packit dd8086
{
Packit dd8086
  if (warn_msg_count == 0) {
Packit dd8086
      fprintf(stderr, 
Packit dd8086
	      "ERROR: should have gotten a warning message:\n%s\n",
Packit dd8086
	      msg);
Packit dd8086
      exit(1);
Packit dd8086
  }
Packit dd8086
}
Packit dd8086
Packit dd8086
void check_access_mode(CdIo_t *p_cdio, const char *psz_expected_access_mode)
Packit dd8086
{
Packit dd8086
    const char *psz_access_mode = cdio_get_arg(p_cdio, "access-mode");
Packit dd8086
    if ( psz_access_mode == NULL || 
Packit dd8086
	 (0 != strcmp(psz_expected_access_mode, psz_access_mode)) ) {
Packit dd8086
	fprintf(stderr, 
Packit dd8086
		"cdio_get_arg(\"access-mode?\") should return \"%s\"; got: \"%s\".\n",
Packit dd8086
		psz_expected_access_mode, psz_access_mode);
Packit dd8086
	exit(10);
Packit dd8086
    }
Packit dd8086
}
Packit dd8086
Packit dd8086
void check_get_arg_source(CdIo_t *p_cdio, const char *psz_expected_source)
Packit dd8086
  {
Packit dd8086
      const char *psz_source = cdio_get_arg(p_cdio, "source");
Packit dd8086
      if ( psz_source == NULL || 
Packit dd8086
	   (0 != strcmp(psz_expected_source, psz_source)) ) {
Packit dd8086
	  fprintf(stderr, 
Packit dd8086
		  "cdio_get_arg(\"source\") should return \"%s\"; got: \"%s\".\n",
Packit dd8086
		  psz_expected_source, psz_source);
Packit dd8086
	  exit(40);
Packit dd8086
      }
Packit dd8086
  }
Packit dd8086
Packit dd8086
/* i_expected: 1 => expect false 
Packit dd8086
               2 => expect true
Packit dd8086
               3 => expect true or false
Packit dd8086
 */
Packit dd8086
void check_mmc_supported(CdIo_t *p_cdio, int i_expected)  {
Packit dd8086
    const char *psz_response = cdio_get_arg(p_cdio, "mmc-supported?");
Packit dd8086
    if ( psz_response == NULL ) {
Packit dd8086
	fprintf(stderr, 
Packit dd8086
		"cdio_get_arg(\"mmc-supported?\") returned NULL\n");
Packit dd8086
	exit(30);
Packit dd8086
    } else if ( (0 == (i_expected & 1)) && 
Packit dd8086
		(0 == strncmp("false", psz_response, sizeof("false"))) ) {
Packit dd8086
	fprintf(stderr, 
Packit dd8086
		"cdio_get_arg(\"mmc-supported?\") should not return \"false\"");
Packit dd8086
	exit(31);
Packit dd8086
    } else if ( (0 == (i_expected & 2)) && 
Packit dd8086
		(0 == strncmp("true", psz_response, sizeof("true"))) ) {
Packit dd8086
	fprintf(stderr, 
Packit dd8086
		"cdio_get_arg(\"mmc-supported?\") should not return \"true\"");
Packit dd8086
	exit(32);
Packit dd8086
    }
Packit dd8086
}
Packit dd8086
Packit dd8086
void 
Packit dd8086
log_handler(cdio_log_level_t level, const char message[])
Packit dd8086
{
Packit dd8086
  switch(level) {
Packit dd8086
  case CDIO_LOG_DEBUG:
Packit dd8086
    debug_messages[debug_msg_count] = message;
Packit dd8086
    debug_msg_count++;
Packit dd8086
    return;
Packit dd8086
  case CDIO_LOG_INFO:
Packit dd8086
    info_messages[info_msg_count] = message;
Packit dd8086
    info_msg_count++;
Packit dd8086
    return;
Packit dd8086
  case CDIO_LOG_ERROR:
Packit dd8086
    error_messages[info_msg_count] = message;
Packit dd8086
    error_msg_count++;
Packit dd8086
    return;
Packit dd8086
  default:
Packit dd8086
    warn_messages[warn_msg_count] = message;
Packit dd8086
    warn_msg_count++;
Packit dd8086
    return;
Packit dd8086
  }
Packit dd8086
}
Packit dd8086
Packit dd8086
void 
Packit dd8086
reset_counts(void)
Packit dd8086
{
Packit dd8086
  info_msg_count = debug_msg_count = warn_msg_count = 0;
Packit dd8086
}