Blame test/tiff-test.sh

Packit 01d647
#!/usr/bin/env bash
Packit 01d647
# TIFF parser test driver
Packit 01d647
Packit 01d647
if [ "${BASH_VERSION:0:1}" -lt "4" ]; then
Packit 01d647
    echo "$0 requires bash v4 or greater.  Running $BASH_VERSION.  $0 skipped."
Packit 01d647
    exit 0
Packit 01d647
fi
Packit 01d647
Packit 01d647
exifprobe()
Packit 01d647
{
Packit 01d647
    f=$1
Packit 01d647
Packit 01d647
    # References
Packit 01d647
    # process pipe : http://stackoverflow.com/questions/7612320/bash-weird-variable-scope-when-populating-array-with-results
Packit 01d647
    # to uppercase : http://unix.stackexchange.com/questions/51983/bash-how-to-uppercase-the-command-line-argument
Packit 01d647
    # ---------------------------------------
Packit 01d647
    # Parse -pa output
Packit 01d647
    # Exif.Image.ImageDescription                  Ascii      18  Created with GIMP
Packit 01d647
    tags=()
Packit 01d647
    typs=()
Packit 01d647
    lens=()
Packit 01d647
    vals=()
Packit 01d647
    while read line; do
Packit Service fb147c
        tag=$(echo $line|cut -f 3  -d.   | cut -f 1 -d' ' )                                 ; tags+=($tag)
Packit Service fb147c
        typ=$(echo $line|cut -f 2- -d' ' | sed -e 's/ +/ /g' -e 's/^ //' | cut -f 1  -d' ' ); typs+=($typ)
Packit Service fb147c
        len=$(echo $line|cut -f 2- -d' ' | sed -e 's/ +/ /g' -e 's/^ //' | cut -f 2  -d' ' ); lens+=($len)
Packit Service fb147c
        val=$(echo $line|cut -f 2- -d' ' | sed -e 's/ +/ /g' -e 's/^ //' | cut -f 3- -d' ' ); vals+=("$val")
Packit 01d647
    done < <( runTest exiv2 -pa $f  2>/dev/null ) # process pipe
Packit 01d647
    count=${#tags[@]}
Packit 01d647
Packit 01d647
    echo exiv2 -pa output
Packit 01d647
    index=0
Packit 01d647
    while [ $index -lt $count ]; do
Packit 01d647
        tag=${tags[$index]}
Packit 01d647
        typ=${typs[$index]}
Packit 01d647
        len=${lens[$index]}
Packit 01d647
        val=${vals[$index]}
Packit 01d647
        echo ${tag} $'\t' ${typ} $'\t' ${len} $'\t' '"'${val}'"'
Packit 01d647
        index=$((index+1))
Packit 01d647
    done
Packit 01d647
Packit 01d647
    # Parse -pS output
Packit 01d647
    # address |    tag                           |      type |    count |   offset | value
Packit 01d647
    #     254 | 0x00fe NewSubfileType            |      LONG |        1 |        0 | 0
Packit 01d647
    TAGS=()
Packit 01d647
    TYPS=()
Packit 01d647
    LENS=()
Packit 01d647
    OFFS=()
Packit 01d647
    VALS=()
Packit 01d647
    k=0
Packit 01d647
    while read line; do
Packit 01d647
        k=$((k+1)) # skip the first couple of lines
Packit 01d647
        if [ $k -gt 2 ]; then
Packit Service fb147c
            TAG=$(echo $line| cut -f 2  -d'|' | cut -f 3 -d' '    ); TAGS+=($TAG);
Packit Service fb147c
            TYP=$(echo $line| cut -f 3  -d'|' | sed -e's/ +//g'   ); TYPS+=($TYP)
Packit Service fb147c
            LEN=$(echo $line| cut -f 4  -d'|' | sed -e's/ +//g'   ); LENS+=($LEN)
Packit Service fb147c
            OFF=$(echo $line| cut -f 5  -d'|' | sed -e's/ +//g'   ); OFFS+=($OFF)
Packit Service fb147c
            VAL=$(echo $line| cut -f 6- -d'|' | sed -e's/^ //'    ); VALS+=($"$VAL")
Packit 01d647
        fi
Packit Service fb147c
    done < <( runTest exiv2 -pS $f | grep -v '^END' 2>/dev/null )
Packit 01d647
    COUNT=${#TAGS[@]}
Packit 01d647
Packit 01d647
    echo ''
Packit 01d647
    echo exiv2 -pS output
Packit 01d647
    INDEX=0
Packit 01d647
    while [ $INDEX -lt $COUNT ]; do
Packit 01d647
        TAG=${TAGS[$INDEX]}
Packit 01d647
        TYP=${TYPS[$INDEX]}
Packit 01d647
        LEN=${LENS[$INDEX]}
Packit 01d647
        OFF=${OFFS[$INDEX]}
Packit 01d647
        VAL=${VALS[$INDEX]}
Packit 01d647
        echo ${TAG} $'\t' ${TYP} $'\t' ${LEN} $'\t' '"'${VAL}'"'
Packit 01d647
        INDEX=$((INDEX+1))
Packit 01d647
    done
Packit 01d647
Packit 01d647
    # ---------------------------------------
Packit 01d647
    # Compare
Packit 01d647
    echo ''
Packit 01d647
    echo "Analysis"
Packit 01d647
    echo "count = " $count "COUNT = " $COUNT
Packit 01d647
    index=0
Packit 01d647
    while [ $index -lt $count ]; do
Packit 01d647
        TAG=${TAGS[$index]}
Packit 01d647
        tag=${tags[$index]}
Packit 01d647
        if [ "$TAG" != "$tag" ]; then echo TAG $TAG $tag mismatch ; fi
Packit 01d647
Packit 01d647
        TYP=${TYPS[$index]^^} # to uppercase
Packit 01d647
        typ=${typs[$index]^^}
Packit 01d647
        if [ "$TYP" != "$typ" ]; then echo TYPE $TYP $typ mismatch ; fi
Packit 01d647
Packit 01d647
        LEN=${LENS[$index]}
Packit 01d647
        len=${lens[$index]}
Packit 01d647
        if [ "$LEN" != "$len" ]; then echo Length $LEN $len mismatch ; fi
Packit 01d647
Packit 01d647
        VAL=${VALS[$index]}
Packit 01d647
        val=${vals[$index]}
Packit 01d647
        if [[ "${typ}" == "ASCII" && "$VAL" != "$val" ]]; then echo Value $VAL $val mismatch ; fi
Packit 01d647
Packit 01d647
        index=$((index+1))
Packit 01d647
    done
Packit 01d647
}
Packit 01d647
Packit 01d647
# ----------------------------------------------------------------------
Packit 01d647
# Setup
Packit 01d647
source ./functions.source
Packit 01d647
Packit Service fb147c
(   testfile=mini9.tif
Packit 01d647
    copyTestFile ${testfile}
Packit 01d647
    exifprobe ${testfile}
Packit 01d647
Packit 01d647
    runTest tiff-test ${testfile}
Packit 01d647
    exifprobe ${testfile}
Packit 01d647
Packit Service fb147c
) > $results 2>&1
Packit 01d647
Packit Service fb147c
reportTest
Packit 01d647
Packit 01d647
# That's all Folks!
Packit 01d647
##