Blame test/driver/cdrdao.c

Packit dd8086
/*
Packit dd8086
  Copyright (C) 2004, 2008, 2010, 2011, 2012
Packit dd8086
  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
   Regression test for cdio_tocfile.
Packit dd8086
*/
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_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
#ifdef HAVE_UNISTD_H
Packit dd8086
#include <unistd.h> /* chdir */
Packit dd8086
#endif
Packit dd8086
Packit dd8086
#include <cdio/cdio.h>
Packit dd8086
#include <cdio/logging.h>
Packit dd8086
#include "helper.h"
Packit dd8086
Packit dd8086
#ifndef DATA_DIR
Packit dd8086
#define DATA_DIR "../data"
Packit dd8086
#endif
Packit dd8086
Packit dd8086
#define NUM_GOOD_TOCS 17
Packit dd8086
#define NUM_BAD_TOCS 8
Packit dd8086
int
Packit dd8086
main(int argc, const char *argv[])
Packit dd8086
{
Packit dd8086
  const char *toc_file[NUM_GOOD_TOCS] = {
Packit dd8086
    "cdtext.toc", 
Packit dd8086
    "t1.toc", 
Packit dd8086
    "t2.toc", 
Packit dd8086
    "t3.toc", 
Packit dd8086
    "t4.toc", 
Packit dd8086
    "t5.toc", 
Packit dd8086
    "t6.toc", 
Packit dd8086
    "t7.toc", 
Packit dd8086
    "t8.toc", 
Packit dd8086
    "t9.toc",
Packit dd8086
    "t10.toc",
Packit dd8086
    "data1.toc",
Packit dd8086
    "data2.toc",
Packit dd8086
    "data5.toc",
Packit dd8086
    "data6.toc",
Packit dd8086
    "data7.toc",
Packit dd8086
    "vcd2.toc",
Packit dd8086
  };
Packit dd8086
Packit dd8086
  const char *badtoc_file[NUM_BAD_TOCS] = {
Packit dd8086
    "bad-msf-1.toc", 
Packit dd8086
    "bad-msf-2.toc",
Packit dd8086
    "bad-msf-3.toc",
Packit dd8086
    "bad-cat1.toc", 
Packit dd8086
    "bad-cat2.toc",
Packit dd8086
    "bad-cat3.toc",
Packit dd8086
    "bad-file.toc",
Packit dd8086
    "bad-mode1.toc"
Packit dd8086
  };
Packit dd8086
  int ret=0;
Packit dd8086
  unsigned int i;
Packit dd8086
  char psz_tocfile[500];
Packit dd8086
  unsigned int verbose = (argc > 1);
Packit dd8086
  
Packit dd8086
Packit dd8086
#ifdef HAVE_CHDIR
Packit dd8086
      if (0 == chdir(DATA_DIR))
Packit dd8086
#endif
Packit dd8086
      {
Packit dd8086
          psz_tocfile[sizeof(psz_tocfile)-1] = '\0';
Packit dd8086
  
Packit dd8086
          cdio_loglevel_default = verbose ? CDIO_LOG_DEBUG : CDIO_LOG_WARN;
Packit dd8086
          for (i=0; i
Packit dd8086
              CdIo_t *p_cdio;
Packit dd8086
              snprintf(psz_tocfile, sizeof(psz_tocfile)-1,
Packit dd8086
                       "%s/%s", DATA_DIR, toc_file[i]);
Packit dd8086
              if (!cdio_is_tocfile(psz_tocfile) || 
Packit dd8086
                  !(p_cdio = cdio_open_cdrdao(psz_tocfile))) {
Packit dd8086
                  fprintf(stderr, 
Packit dd8086
                          "Incorrect: %s doesn't parse as a cdrdao TOC file.\n",                         toc_file[i]);
Packit dd8086
                  ret=i+1;
Packit dd8086
              } else {
Packit dd8086
                  cdio_destroy(p_cdio);
Packit dd8086
                  if (verbose)
Packit dd8086
                      printf("Correct: %s parses as a cdrdao TOC file.\n", 
Packit dd8086
                             toc_file[i]);
Packit dd8086
              }
Packit dd8086
          }
Packit dd8086
          
Packit dd8086
          for (i=0; i
Packit dd8086
              snprintf(psz_tocfile, sizeof(psz_tocfile)-1,
Packit dd8086
                       "%s/%s", DATA_DIR, badtoc_file[i]);
Packit dd8086
              if (!cdio_is_tocfile(psz_tocfile)) {
Packit dd8086
                  if (verbose)
Packit dd8086
                      printf("Correct: %s doesn't parse as a cdrdao TOC file.\n", 
Packit dd8086
                         badtoc_file[i]);
Packit dd8086
              } else {
Packit dd8086
                  fprintf(stderr, 
Packit dd8086
                          "Incorrect: %s parses as a cdrdao TOC file.\n", 
Packit dd8086
                          badtoc_file[i]);
Packit dd8086
                  ret+=50*i+1;
Packit dd8086
                  break;
Packit dd8086
              }
Packit dd8086
          }
Packit dd8086
Packit dd8086
          /*
Packit dd8086
          {
Packit dd8086
              CdIo_t *p_cdio;
Packit dd8086
              snprintf(psz_tocfile, sizeof(psz_tocfile)-1,
Packit dd8086
                       "%s/%s", DATA_DIR, "cdda.toc");
Packit dd8086
Packit dd8086
              p_cdio = cdio_open (psz_tocfile, DRIVER_CDRDAO);
Packit dd8086
              if (!p_cdio) {
Packit dd8086
                  fprintf(stderr, "Can't open %s as a cdrdao TOC file.\n", 
Packit dd8086
                          psz_tocfile);
Packit dd8086
                  exit(5);
Packit dd8086
              }
Packit dd8086
              
Packit dd8086
              check_mmc_supported(p_cdio, 1);
Packit dd8086
              check_access_mode(p_cdio, "image");
Packit dd8086
              check_get_arg_source(p_cdio, psz_tocfile);
Packit dd8086
              cdio_destroy(p_cdio);
Packit dd8086
          }
Packit dd8086
          */
Packit dd8086
          
Packit dd8086
Packit dd8086
      }
Packit dd8086
  
Packit dd8086
  return ret;
Packit dd8086
}