Mercurial > hg > sonic-visualiser
diff test/test-layer-exports.sh @ 2438:a5ec35798c9e spectrogram-export
Add regression tests for layer export
author | Chris Cannam |
---|---|
date | Tue, 07 Jan 2020 14:36:27 +0000 |
parents | |
children | 882848f168e8 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/test-layer-exports.sh Tue Jan 07 14:36:27 2020 +0000 @@ -0,0 +1,107 @@ +#!/bin/bash +# +# Regression tests for layer export to CSV +# Must be run from directory that contains this script + +# NB hardcoded assumptions here about the contents of the session +# file, so the session file (all.sv) is also hardcoded. The session is +# expected to consist of: +# +# - pane 1 with 3 layers (ruler, waveform, instants) +# - pane 2 with 3 layers (ruler, waveform, values) +# - pane 3 with 3 layers (ruler, image, regions) +# - pane 4 with 3 layers (ruler, text, notes) +# - pane 5 with 2 layers (ruler, 3d plot) +# - pane 6 with 3 layers (ruler, spectrogram, boxes) +# - pane 7 with 2 layers (ruler, peak frequency spectrogram) + +set -e + +if [ -n "$1" ]; then + echo "Usage: $0" 1>&2 + exit 2 +fi + +set -u + +sv="../sonic-visualiser" +if [ ! -f "$sv" -o ! -x "$sv" ]; then + echo "This script must be run from the sonic-visualiser/test directory" 1>&2 + exit 1 +fi + +version=$("$sv" -v 2>&1) +adequate=no +case "$version" in + [012].*) ;; + 3.[012]) ;; + 3.[012].*) ;; + [1-9]*) adequate=yes ;; + *) echo "Failed to query Sonic Visualiser version" 1>&2 + exit 1 ;; +esac +if [ "$adequate" = "no" ]; then + echo "Sonic Visualiser version must be at least 3.3 (supporting --osc-script option)" 1>&2 + exit 1 +fi + +session="all.sv" + +if [ ! -f "$session" ]; then + echo "Session file $session not found" 1>&2 + exit 1 +fi + +tmpdir=$(mktemp -d) +trap "rm -rf $tmpdir" 0 + +input="$tmpdir/input.sv" + +cp "$session" "$input" + +cat > "$tmpdir/script" <<EOF +/open "$input" +/setcurrent 1 3 +/exportlayer "$tmpdir/instants.csv" +/setcurrent 2 3 +/exportlayer "$tmpdir/values.csv" +/setcurrent 3 2 +/exportlayer "$tmpdir/image.csv" +/setcurrent 3 3 +/exportlayer "$tmpdir/regions.csv" +/setcurrent 4 2 +/exportlayer "$tmpdir/text.csv" +/setcurrent 4 3 +/exportlayer "$tmpdir/notes.csv" +/setcurrent 5 2 +/exportlayer "$tmpdir/3dplot.csv" +/setcurrent 6 2 +/exportlayer "$tmpdir/spectrogram.csv" +/setcurrent 6 3 +/exportlayer "$tmpdir/boxes.csv" +/setcurrent 7 2 +/exportlayer "$tmpdir/peakfreq.csv" +/quit +EOF + +"$sv" --no-splash --osc-script "$tmpdir/script" + +for type in instants values image regions text notes 3dplot spectrogram boxes peakfreq ; do + actual="$tmpdir/$type.csv" + expected="layers-expected/$type.csv" + if ! cmp -s "$actual" "$expected" ; then + echo + echo "Test failed for layer type \"$type\"!" + echo + echo "Actual:" + ls -l "$actual" + echo "Expected" + ls -l "$expected" + echo + echo "Diff begins:" + diff -u1 "$actual" "$expected" | head + echo + fi +done + +