You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

149 lines
2.9 KiB
Bash

#! /bin/bash
# Test driver for Iptc metadata
printTest()
{
src=$1
test=${src}.iptst
good=$datapath/${src}.ipgd
#run tests
$binpath/iptcprint $datapath/$src > $test
#check results
diffCheck $test $good
echo -n "."
}
removeTest()
{
src=$1
tmp="temp"
test=${src}.irtst
good=$datapath/${src}.irgd
#setup
cp $datapath/$src $tmp
#run tests
$binpath/iptctest $tmp <<-eoc
r Iptc.Application2.Byline
r Iptc.Application2.Caption
r Iptc.Application2.Keywords
r Iptc.Application2.Keywords
r Iptc.Application2.Keywords
r Iptc.Application2.CountryName
eoc
$binpath/iptcprint $tmp > $test
#check results
diffCheck $test $good
echo -n "."
rm $tmp
}
addModTest()
{
src=$1
tmp="temp"
test=${src}.iatst
good=$datapath/${src}.iagd
#setup
cp $datapath/$src $tmp
#run tests
$binpath/iptctest $tmp <<-eoc
a Iptc.Application2.Headline The headline I am
a Iptc.Application2.Keywords Yet another keyword
m Iptc.Application2.DateCreated 2004-8-3
a Iptc.Application2.Urgency 3
m Iptc.Application2.SuppCategory "bla bla ba"
a Iptc.Envelope.ModelVersion 2
a Iptc.Envelope.TimeSent 14:41:0-05:00
a Iptc.Application2.RasterizedCaption 230 42 34 2 90 84 23 146
eoc
$binpath/iptcprint $tmp > $test
#check results
diffCheck $test $good
echo -n "."
rm $tmp
}
extendedTest()
{
src=$1
tmp="temp"
test=${src}.ixtst
good=$datapath/${src}.ixgd
#setup
cp $datapath/$src $tmp
#run tests
$binpath/iptctest $tmp < $datapath/ext.dat
$binpath/iptcprint $tmp > $test
#check results
diffCheck $test $good
echo -n "."
rm $tmp
}
# Make sure to pass the test file first and the known good file second
diffCheck()
{
test=$1
good=$2
#run diff and check results
diff -q $diffargs $test $good
if [ $? -ne 0 ]; then
let ++errors
else
rm $test
fi
}
# **********************************************************************
# main
LD_LIBRARY_PATH=../../src:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH
binpath="../../src"
datapath="../data"
diffargs="--strip-trailing-cr"
tmpfile=tmp/ttt
touch $tmpfile
diff -q $diffargs $tmpfile $tmpfile 2>/dev/null
if [ $? -ne 0 ] ; then
diffargs=""
fi
test_files="smiley1.jpg smiley2.jpg glider.exv table.jpg"
let errors=0
cd ./tmp
echo
echo -n "Read tests"
for i in $test_files; do printTest $i; done
echo -ne "\nRemove tests"
for i in $test_files; do removeTest $i; done
echo -ne "\nAdd/Mod tests"
for i in $test_files; do addModTest $i; done
echo -ne "\nExtended tests"
for i in $test_files; do extendedTest $i; done
echo -e "\n---------------------------------------------------------"
if [ $errors -eq 0 ]; then
echo 'All test cases passed'
else
echo $errors 'test case(s) failed!'
fi