add cuesheet parser/validator tests
[platform/upstream/flac.git] / test / test_grabbag.sh
1 #!/bin/sh
2
3 #  FLAC - Free Lossless Audio Codec
4 #  Copyright (C) 2001,2002  Josh Coalson
5 #
6 #  This program is part of FLAC; you can redistribute it and/or
7 #  modify it under the terms of the GNU General Public License
8 #  as published by the Free Software Foundation; either version 2
9 #  of the License, or (at your option) any later version.
10 #
11 #  This program is distributed in the hope that it will be useful,
12 #  but WITHOUT ANY WARRANTY; without even the implied warranty of
13 #  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14 #  GNU General Public License for more details.
15 #
16 #  You should have received a copy of the GNU General Public License
17 #  along with this program; if not, write to the Free Software
18 #  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
19
20 LD_LIBRARY_PATH=../src/libFLAC/.libs:../src/share/grabbag/.libs:../obj/release/lib:../obj/debug/lib:$LD_LIBRARY_PATH
21 export LD_LIBRARY_PATH
22 PATH=../src/test_cuesheet:../obj/release/b:../obj/debug/bin:$PATH
23
24 test_cuesheet -h 1>/dev/null 2>/dev/null || (echo "ERROR can't find test_cuesheet executable" 1>&2 && exit 1)
25 if [ $? != 0 ] ; then exit 1 ; fi
26
27 ########################################################################
28 #
29 # test_cuesheet
30 #
31 ########################################################################
32
33 log=cuesheet.log
34 bad_cuesheets=cuesheets/bad.*.cue
35 good_cuesheets=cuesheets/good.*.cue
36 good_leadout=`expr 80 \* 60 \* 44100`
37 bad_leadout=`expr $good_leadout + 1`
38
39 rm -f $log
40
41 #
42 # negative tests
43 #
44 for cuesheet in $bad_cuesheets ; do
45         echo "NEGATIVE $cuesheet" >> $log 2>&1
46         test_cuesheet $cuesheet $good_leadout cdda >> $log 2>&1
47         exit_code=$?
48         if [ "$exit_code" = 255 ] ; then
49                 echo "Error: test script is broken"
50                 exit 1
51         fi
52         cuesheet_pass1=${cuesheet}.1
53         cuesheet_pass2=${cuesheet}.2
54         rm -f $cuesheet_pass1 $cuesheet_pass2
55 done
56
57 #
58 # positve tests
59 #
60 for cuesheet in $good_cuesheets ; do
61         echo "POSITIVE $cuesheet" >> $log 2>&1
62         test_cuesheet $cuesheet $good_leadout cdda >> $log 2>&1
63         exit_code=$?
64         if [ "$exit_code" = 255 ] ; then
65                 echo "Error: test script is broken"
66                 exit 1
67         elif [ "$exit_code" != 0 ] ; then
68                 echo "Error: good cuesheet is broken"
69                 exit 1
70         fi
71         cuesheet_pass1=${cuesheet}.1
72         cuesheet_pass2=${cuesheet}.2
73         diff $cuesheet_pass1 $cuesheet_pass2 >> $log 2>&1
74         if [ $? != 0 ] ; then
75                 echo "Error: pass1 and pass2 output differ"
76                 exit 1
77         fi
78         rm -f $cuesheet_pass1 $cuesheet_pass2
79 done
80
81 diff cuesheet.ok $log > cuesheet.diff
82 if [ $? != 0 ] ; then
83         echo "Error: .log file does not match .ok file, see cuesheet.diff"
84         exit 1
85 fi