+for delta in 2 1 ; do
+ n=`expr $total_noise_cdda_samples - $delta`
+ echo -n "testing --skip=$n... "
+ run_flac $wav_dopt --skip=$n -o z.wav noise.flac || die "ERROR decoding FLAC file noise.flac"
+ echo OK
+done
+
+rm noise.flac z.wav
+
+
+############################################################################
+# test --input-size
+############################################################################
+
+#@@@ cat will not work on old cygwin, need to fix
+if [ $is_win = no ] ; then
+ echo -n "testing --input-size=50 --skip=10... "
+ cat 50c.raw | run_flac $raw_eopt --input-size=50 --skip=10 -o z50c.skip10.flac - || die "ERROR generating FLAC file"
+ run_flac $raw_dopt -o z50c.skip10.raw z50c.skip10.flac || die "ERROR decoding FLAC file"
+ cmp 50c.skip10.raw z50c.skip10.raw || die "ERROR: file mismatch for --input-size=50 --skip=10"
+ rm -f z50c.skip10.raw z50c.skip10.flac
+ echo OK
+fi
+
+
+############################################################################
+# test --cue
+############################################################################
+
+#
+# create the cue sheet
+#
+cuesheet=cuetest.cue
+cat > $cuesheet << EOF
+CATALOG 1234567890123
+FILE "blah" WAVE
+ TRACK 01 AUDIO
+ INDEX 01 0
+ INDEX 02 10
+ INDEX 03 20
+ TRACK 02 AUDIO
+ INDEX 01 30
+ TRACK 04 AUDIO
+ INDEX 01 40
+EOF
+
+test_cue ()
+{
+ in_fmt=$1
+ out_fmt=$2
+
+ [ "$in_fmt" = wav ] || [ "$in_fmt" = aiff ] || [ "$in_fmt" = raw ] || [ "$in_fmt" = flac ] || [ "$in_fmt" = ogg ] || die "ERROR: internal error, bad 'in' format '$in_fmt'"
+
+ [ "$out_fmt" = flac ] || [ "$out_fmt" = ogg ] || die "ERROR: internal error, bad 'out' format '$out_fmt'"
+
+ if [ $in_fmt = raw ] ; then
+ eopt="$raw_eopt"
+ dopt="$raw_dopt"
+ else
+ eopt="$wav_eopt"
+ dopt="$wav_dopt"
+ fi
+
+ if ( [ $in_fmt = flac ] || [ $in_fmt = ogg ] ) && ( [ $out_fmt = flac ] || [ $out_fmt = ogg ] ) ; then
+ CMP=md5cmp
+ else
+ CMP=cmp
+ fi
+
+ if [ $out_fmt = ogg ] ; then
+ eopt="--ogg $eopt"
+ fi
+
+ desc="($in_fmt<->$out_fmt)"
+
+ #
+ # for this we need just need just one FLAC file; --cue only works while decoding
+ #
+ run_flac $eopt --cuesheet=$cuesheet -o z50c.cue.$out_fmt 50c.$in_fmt || die "ERROR generating FLAC file $desc"
+
+ # To make it easy to translate from cue point to sample numbers, the
+ # file has a sample rate of 10 Hz and a cuesheet like so:
+ #
+ # TRACK 01, INDEX 01 : 0:00.00 -> sample 0
+ # TRACK 01, INDEX 02 : 0:01.00 -> sample 10
+ # TRACK 01, INDEX 03 : 0:02.00 -> sample 20
+ # TRACK 02, INDEX 01 : 0:03.00 -> sample 30
+ # TRACK 04, INDEX 01 : 0:04.00 -> sample 40
+ #
+ echo -n "testing --cue=- $desc... "
+ run_flac $dopt -o z50c.cued.$in_fmt --cue=- z50c.cue.$out_fmt || die "ERROR decoding FLAC file $desc"
+ $CMP 50c.$in_fmt z50c.cued.$in_fmt || die "ERROR: file mismatch for --cue=- $desc"
+ rm -f z50c.cued.$in_fmt
+ echo OK
+
+ echo -n "testing --cue=1.0 $desc... "
+ run_flac $dopt -o z50c.cued.$in_fmt --cue=1.0 z50c.cue.$out_fmt || die "ERROR decoding FLAC file $desc"
+ $CMP 50c.$in_fmt z50c.cued.$in_fmt || die "ERROR: file mismatch for --cue=1.0 $desc"
+ rm -f z50c.cued.$in_fmt
+ echo OK
+
+ echo -n "testing --cue=1.0- $desc... "
+ run_flac $dopt -o z50c.cued.$in_fmt --cue=1.0- z50c.cue.$out_fmt || die "ERROR decoding FLAC file $desc"
+ $CMP 50c.$in_fmt z50c.cued.$in_fmt || die "ERROR: file mismatch for --cue=1.0- $desc"
+ rm -f z50c.cued.$in_fmt
+ echo OK
+
+ echo -n "testing --cue=1.1 $desc... "
+ run_flac $dopt -o z50c.cued.$in_fmt --cue=1.1 z50c.cue.$out_fmt || die "ERROR decoding FLAC file $desc"
+ $CMP 50c.$in_fmt z50c.cued.$in_fmt || die "ERROR: file mismatch for --cue=1.1 $desc"
+ rm -f z50c.cued.$in_fmt
+ echo OK
+
+ echo -n "testing --cue=1.1- $desc... "
+ run_flac $dopt -o z50c.cued.$in_fmt --cue=1.1- z50c.cue.$out_fmt || die "ERROR decoding FLAC file $desc"
+ $CMP 50c.$in_fmt z50c.cued.$in_fmt || die "ERROR: file mismatch for --cue=1.1- $desc"
+ rm -f z50c.cued.$in_fmt
+ echo OK
+
+ echo -n "testing --cue=1.2 $desc... "
+ run_flac $dopt -o z50c.cued.$in_fmt --cue=1.2 z50c.cue.$out_fmt || die "ERROR decoding FLAC file $desc"
+ $CMP 50c.skip10.$in_fmt z50c.cued.$in_fmt || die "ERROR: file mismatch for --cue=1.2 $desc"
+ rm -f z50c.cued.$in_fmt
+ echo OK
+
+ echo -n "testing --cue=1.2- $desc... "
+ run_flac $dopt -o z50c.cued.$in_fmt --cue=1.2- z50c.cue.$out_fmt || die "ERROR decoding FLAC file $desc"
+ $CMP 50c.skip10.$in_fmt z50c.cued.$in_fmt || die "ERROR: file mismatch for --cue=1.2- $desc"
+ rm -f z50c.cued.$in_fmt
+ echo OK
+
+ echo -n "testing --cue=1.4 $desc... "
+ run_flac $dopt -o z50c.cued.$in_fmt --cue=1.4 z50c.cue.$out_fmt || die "ERROR decoding FLAC file $desc"
+ $CMP 50c.skip20.$in_fmt z50c.cued.$in_fmt || die "ERROR: file mismatch for --cue=1.4 $desc"
+ rm -f z50c.cued.$in_fmt
+ echo OK
+
+ echo -n "testing --cue=1.4- $desc... "
+ run_flac $dopt -o z50c.cued.$in_fmt --cue=1.4- z50c.cue.$out_fmt || die "ERROR decoding FLAC file $desc"
+ $CMP 50c.skip20.$in_fmt z50c.cued.$in_fmt || die "ERROR: file mismatch for --cue=1.4- $desc"
+ rm -f z50c.cued.$in_fmt
+ echo OK
+
+ echo -n "testing --cue=-5.0 $desc... "
+ run_flac $dopt -o z50c.cued.$in_fmt --cue=-5.0 z50c.cue.$out_fmt || die "ERROR decoding FLAC file $desc"
+ $CMP 50c.$in_fmt z50c.cued.$in_fmt || die "ERROR: file mismatch for --cue=-5.0 $desc"
+ rm -f z50c.cued.$in_fmt
+ echo OK
+
+ echo -n "testing --cue=-4.1 $desc... "
+ run_flac $dopt -o z50c.cued.$in_fmt --cue=-4.1 z50c.cue.$out_fmt || die "ERROR decoding FLAC file $desc"
+ $CMP 50c.until40.$in_fmt z50c.cued.$in_fmt || die "ERROR: file mismatch for --cue=-4.1 $desc"
+ rm -f z50c.cued.$in_fmt
+ echo OK
+
+ echo -n "testing --cue=-3.1 $desc... "
+ run_flac $dopt -o z50c.cued.$in_fmt --cue=-3.1 z50c.cue.$out_fmt || die "ERROR decoding FLAC file $desc"
+ $CMP 50c.until40.$in_fmt z50c.cued.$in_fmt || die "ERROR: file mismatch for --cue=-3.1 $desc"
+ rm -f z50c.cued.$in_fmt
+ echo OK
+
+ echo -n "testing --cue=-1.4 $desc... "
+ run_flac $dopt -o z50c.cued.$in_fmt --cue=-1.4 z50c.cue.$out_fmt || die "ERROR decoding FLAC file $desc"
+ $CMP 50c.until30.$in_fmt z50c.cued.$in_fmt || die "ERROR: file mismatch for --cue=-1.4 $desc"
+ rm -f z50c.cued.$in_fmt
+ echo OK
+
+ echo -n "testing --cue=1.0-5.0 $desc... "
+ run_flac $dopt -o z50c.cued.$in_fmt --cue=1.0-5.0 z50c.cue.$out_fmt || die "ERROR decoding FLAC file $desc"
+ $CMP 50c.$in_fmt z50c.cued.$in_fmt || die "ERROR: file mismatch for --cue=1.0-5.0 $desc"
+ rm -f z50c.cued.$in_fmt
+ echo OK
+
+ echo -n "testing --cue=1.1-5.0 $desc... "
+ run_flac $dopt -o z50c.cued.$in_fmt --cue=1.1-5.0 z50c.cue.$out_fmt || die "ERROR decoding FLAC file $desc"
+ $CMP 50c.$in_fmt z50c.cued.$in_fmt || die "ERROR: file mismatch for --cue=1.1-5.0 $desc"
+ rm -f z50c.cued.$in_fmt
+ echo OK
+
+ echo -n "testing --cue=1.2-4.1 $desc... "
+ run_flac $dopt -o z50c.cued.$in_fmt --cue=1.2-4.1 z50c.cue.$out_fmt || die "ERROR decoding FLAC file $desc"
+ $CMP 50c.skip10.until40.$in_fmt z50c.cued.$in_fmt || die "ERROR: file mismatch for --cue=1.2-4.1 $desc"
+ rm -f z50c.cued.$in_fmt
+ echo OK
+
+ echo -n "testing --cue=1.4-2.0 $desc... "
+ run_flac $dopt -o z50c.cued.$in_fmt --cue=1.4-2.0 z50c.cue.$out_fmt || die "ERROR decoding FLAC file $desc"
+ $CMP 50c.skip20.until30.$in_fmt z50c.cued.$in_fmt || die "ERROR: file mismatch for --cue=1.4-2.0 $desc"
+ rm -f z50c.cued.$in_fmt
+ echo OK
+
+ rm -f z50c.cue.$out_fmt
+}
+
+test_cue raw flac
+test_cue wav flac
+test_cue aiff flac
+test_cue flac flac
+#@@@if [ $has_ogg = yes ] ; then
+#@@@ #@@@ doesn't work yet because md5cmp doesn't work because metaflac doesn't work on ogg flac yet
+#@@@ test_cue ogg flac
+#@@@fi
+
+if [ $has_ogg = yes ] ; then
+ test_cue raw ogg
+ test_cue wav ogg
+ test_cue aiff ogg
+ #@@@ doesn't work yet because md5cmp doesn't work because metaflac doesn't work on ogg flac yet
+ #@@@test_cue flac ogg
+ #@@@test_cue ogg ogg
+fi