Blame test/driver/gnu_linux.c

Packit dd8086
/* -*- C -*-
Packit dd8086
  Copyright (C) 2009, 2010, 2012 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
Packit dd8086
/* 
Packit dd8086
   Unit test for lib/driver/gnu_linux.c
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_SYS_TYPES_H
Packit dd8086
#include <sys/types.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 "helper.h"
Packit dd8086
Packit dd8086
int
Packit dd8086
main(int argc, const char *argv[])
Packit dd8086
{
Packit dd8086
  CdIo_t *p_cdio;
Packit dd8086
  char **ppsz_drives=NULL;
Packit dd8086
  
Packit dd8086
  cdio_log_set_handler(log_handler);
Packit dd8086
  cdio_loglevel_default = (argc > 1) ? CDIO_LOG_DEBUG : CDIO_LOG_INFO;
Packit dd8086
  /* snprintf(psz_nrgfile, sizeof(psz_nrgfile)-1,
Packit dd8086
             "%s/%s", TEST_DIR, cue_file[i]);
Packit dd8086
  */
Packit dd8086
  if (!cdio_have_driver(DRIVER_LINUX)) return(77);
Packit dd8086
  ppsz_drives = cdio_get_devices(DRIVER_DEVICE);
Packit dd8086
  if (!ppsz_drives) {
Packit dd8086
      printf("Can't find a CD-ROM drive. Skipping test.\n");
Packit dd8086
      exit(77);
Packit dd8086
  }
Packit dd8086
  
Packit dd8086
  p_cdio = cdio_open_linux(ppsz_drives[0]);
Packit dd8086
  if (p_cdio) {
Packit dd8086
      const char *psz_source = NULL, *psz_scsi_tuple;
Packit dd8086
      lsn_t lsn;
Packit dd8086
      
Packit dd8086
      reset_counts();
Packit dd8086
      lsn = cdio_get_track_lsn(p_cdio, CDIO_CD_MAX_TRACKS+1);
Packit dd8086
      assert_equal_int(CDIO_INVALID_LSN, lsn, 
Packit dd8086
		       "cdio_get_track_lsn with too large of a track number");
Packit dd8086
      reset_counts();
Packit dd8086
      
Packit dd8086
      check_get_arg_source(p_cdio, ppsz_drives[0]);
Packit dd8086
      check_mmc_supported(p_cdio, 3);
Packit dd8086
  
Packit dd8086
      psz_scsi_tuple = cdio_get_arg(p_cdio, "scsi-tuple");
Packit dd8086
      if (psz_scsi_tuple == NULL) {
Packit dd8086
	  fprintf(stderr, "cdio_get_arg(\"scsi-tuple\") returns NULL.\n");
Packit dd8086
	  cdio_destroy(p_cdio);
Packit dd8086
	  exit(3);
Packit dd8086
      }
Packit dd8086
      if (cdio_loglevel_default == CDIO_LOG_DEBUG)
Packit dd8086
	  printf("Drive '%s' has cdio_get_arg(\"scsi-tuple\") = '%s'\n",
Packit dd8086
		 psz_source, psz_scsi_tuple);
Packit dd8086
      cdio_destroy(p_cdio);
Packit dd8086
  }
Packit dd8086
  
Packit dd8086
  p_cdio = cdio_open_am_linux(ppsz_drives[0], "MMC_RDWR");
Packit dd8086
  if (p_cdio) {
Packit dd8086
      check_access_mode(p_cdio, "MMC_RDWR");
Packit dd8086
  }
Packit dd8086
Packit dd8086
  cdio_destroy(p_cdio);
Packit dd8086
  cdio_free_device_list(ppsz_drives);
Packit dd8086
Packit dd8086
  return 0;
Packit dd8086
}