#!/bin/sh

# Test AF routines
#
# $Id: tAFroutines 1.29 1998/07/06 libtsp-v3r0 $

echo "========== tAFopenRead"
# Headerless files
AF_NOHEADER=""
export AF_NOHEADER
tAFopenRead audiofiles/addf8.nh		2>&1	# Headless not accepted
AF_NOHEADER=integer16
tAFopenRead audiofiles/addf8.nh
AF_NOHEADER=""

# Invalid file ID tests
AF_FILETYPE="xxx"
export AF_FILETYPE
tAFopenRead audiofiles/addf8.nh		2>&1	# Invalid file type
AF_FILETYPE="AFsp"
tAFopenRead audiofiles/addf8.nh		2>&1	# Invalid ID
AF_FILETYPE="WAVE"
tAFopenRead audiofiles/addf8.nh		2>&1	# Invalid ID
AF_FILETYPE="AIFF"
tAFopenRead audiofiles/addf8.nh		2>&1	# Invalid ID
AF_FILETYPE="SPHERE"
tAFopenRead audiofiles/addf8.nh		2>&1	# Invalid ID
AF_FILETYPE="ESPS"
tAFopenRead audiofiles/addf8.nh		2>&1	# Invalid ID
AF_FILETYPE="IRCAM"
tAFopenRead audiofiles/addf8.nh		2>&1	# Invalid ID
AF_FILETYPE="SPPACK"
tAFopenRead audiofiles/addf8.nh		2>&1	# Invalid ID
AF_FILETYPE="INRS"
tAFopenRead audiofiles/addf8.nh		2>&1	# Invalid ID
AF_FILETYPE="SPW"
tAFopenRead audiofiles/addf8.nh		2>&1	# Invalid ID
AF_FILETYPE="text"
tAFopenRead audiofiles/addf8.nh		2>&1	# Invalid ID
AF_FILETYPE="noheader"
tAFopenRead audiofiles/addf8.nh		2>&1	# Invalid ID

# Unexpected End-of-File
rm -f XxX.au
touch XxX.au	# Empty file
AF_FILETYPE="AFsp"
tAFopenRead XxX.au			2>&1
AF_FILETYPE="WAVE"
tAFopenRead XxX.au			2>&1
AF_FILETYPE="AIFF"
tAFopenRead XxX.au			2>&1
AF_FILETYPE="SPHERE"
tAFopenRead XxX.au			2>&1
AF_FILETYPE="ESPS"
tAFopenRead XxX.au			2>&1
AF_FILETYPE="IRCAM"
tAFopenRead XxX.au			2>&1
AF_FILETYPE="SPPACK"
tAFopenRead XxX.au			2>&1
AF_FILETYPE="INRS"
tAFopenRead XxX.au			2>&1
AF_FILETYPE="SPW"
tAFopenRead XxX.au			2>&1
AF_FILETYPE="text"
tAFopenRead XxX.au			2>&1
rm -f XxX.au

AF_FILETYPE=""

# Sun / AFsp audio files
tAFopenRead audiofiles/addf8.afsp
tAFopenRead audiofiles/addf8.au
tAFopenRead audiofiles/next-8.snd

# AIFF / AIFF-C files
tAFopenRead audiofiles/addf8.aifc
tAFopenRead audiofiles/addf8.aiff
tAFopenRead audiofiles/aiff-8.snd
tAFopenRead audiofiles/digit0v0.aiff	2>&1	# Invalid COMM chunk

# INRS-Telecom file
tAFopenRead audiofiles/addf8.aud

# SPPACK file
tAFopenRead audiofiles/addf8.d

# ESPS file
tAFopenRead audiofiles/addf8.sd

# IRCAM soundfiles
tAFopenRead audiofiles/addf8.sf_mipseb
tAFopenRead audiofiles/addf8.sf_sun
tAFopenRead audiofiles/addf8.sf_vax_b

# WAVE files
tAFopenRead audiofiles/addf8.wav
tAFopenRead audiofiles/riff-8-u.snd	2>&1	# Invalid chunk size

# NIST SPHERE file
tAFopenRead audiofiles/jg00b1ss.wav
tAFopenRead audiofiles/sw1038t_short.wav

# Text audio file
tAFopenRead audiofiles/bab.dat

# Comdisco SPW Signal files
tAFopenRead audiofiles/mary-sun4.sig
tAFopenRead audiofiles/sine.sig
tAFopenRead audiofiles/sineA1.ascsig

# Unsupported files
tAFopenRead audiofiles/sound.pat	2>&1
tAFopenRead audiofiles/sound.sap	2>&1
tAFopenRead audiofiles/sound.smp	2>&1
tAFopenRead audiofiles/sound.snd	2>&1
tAFopenRead audiofiles/sound.voc	2>&1
tAFopenRead audiofiles/sound.svx	2>&1
tAFopenRead audiofiles/wood.maud	2>&1
tAFopenRead audiofiles/kirk.wve		2>&1
tAFopenRead audiofiles/hcom-16.snd	2>&1
tAFopenRead audiofiles/sineA3.ascsig	2>&1

# Unknown file
tAFopenRead audiofiles/sound.dig	2>&1

echo ""
echo "========== tAFsetRead"
#	name	Nbytes	Format Dstart	Ldata	Nsamp	Fix
tAFsetRead \
	temp.au	1000	5	100	-1	-1	0
rm -f temp.au
echo "-----"
# Non-integral number of samples
tAFsetRead \
	temp.au	999	5	100	-1	-1	0	2>&1
rm -f temp.au
echo "-----"
# Ldata too large
tAFsetRead \
	temp.au	1000	5	100	1200	-1	0	2>&1
rm -f temp.au
echo "-----"
# Ldata too large, fixup
tAFsetRead \
	temp.au	1000	5	100	1200	-1	1	2>&1
rm -f temp.au
echo "-----"
# Ldata small
tAFsetRead \
	temp.au	1000	5	100	400	-1	0
rm -f temp.au
echo "-----"
# Nsamp just right
tAFsetRead \
	temp.au	1000	5	100	-1	450	0
rm -f temp.au
echo "-----"
# Nsamp small
tAFsetRead \
	temp.au	1000	5	100	-1	400	0
rm -f temp.au
# Nsamp, Ldata just right
tAFsetRead \
	temp.au	1000	5	100	900	450	0
rm -f temp.au
echo "-----"
# Nsamp small, Ldata just right
tAFsetRead \
	temp.au	1000	5	100	900	400	0
rm -f temp.au
echo "-----"
# Nsamp small, Ldata small
tAFsetRead \
	temp.au	1000	5	100	800	400	0
rm -f temp.au
echo "-----"
# Nsamp small, fixup
tAFsetRead \
	temp.au	1000	5	100	-1	400	2	2>&1
rm -f temp.au
echo "-----"
# Nsamp small, fixup
tAFsetRead \
	temp.au	1000	5	100	-1	600	1	2>&1
rm -f temp.au

echo ""
echo "========== tAFsetNHpar"
tAFsetNHpar ""					# default
tAFsetNHpar "undefined"
tAFsetNHpar "mu-law, 512, 10000, little, 2, 32"
tAFsetNHpar "A-law, 0, 9000, big, 1, 8"
tAFsetNHpar "unsigned8"
tAFsetNHpar "integer8"
tAFsetNHpar "integer"
tAFsetNHpar "float"
tAFsetNHpar "float64"
tAFsetNHpar "text"
tAFsetNHpar "text, 25, 10000, big, , "
tAFsetNHpar "whatever"					2>&1	# Error
tAFsetNHpar "mu-law, 512, 10000, little, 2, 32, xx"	2>&1	# Too many args

echo ""
echo "========== tAFwriteXX"
#               Format, Nchan, Sfreq
tAFwriteXX XxXx/YyYy 1 1 8000		2>&1	# No such directory
tAFwriteXX temp.au 2561 1 8000		2>&1	# Invalid file type
tAFwriteXX temp.au 12   1 8000		2>&1	# Invalid data type

tAFwriteXX temp.au 1 2 8000.6	    # AFsp file
rm -f temp.au
tAFwriteXX temp.au 2 2 10000.6
rm -f temp.au
tAFwriteXX temp.au 3 2 12000.6		2>&1	# uint8, invalid data format
tAFwriteXX temp.au 4 2 16000.6
rm -f temp.au
tAFwriteXX temp.au 5 2 24000.6
rm -f temp.au
tAFwriteXX temp.au 6 2 10000.6
rm -f temp.au
tAFwriteXX temp.au 7 2 10100.6
rm -f temp.au
tAFwriteXX temp.au 8 2 10200.6		2>&1	# text, invalid data format

tAFwriteXX temp.au 257 4 8000.4    # WAVE file
rm -f temp.au
tAFwriteXX temp.au 258 4 10000.4
rm -f temp.au
tAFwriteXX temp.au 259 4 12000.4
rm -f temp.au
tAFwriteXX temp.au 260 4 16000.6	2>&1	# int8, invalid data format
tAFwriteXX temp.au 261 4 16000.4
rm -f temp.au
tAFwriteXX temp.au 262 4 16000.4	2>&1	# float, invalid data format
tAFwriteXX temp.au 263 4 16000.4	2>&1	# double, invalid data format
tAFwriteXX temp.au 264 4 16000.4	2>&1	# text, invalid data format

tAFwriteXX temp.au 513 1 8000.7    # AIFF-C file
rm -f temp.au
tAFwriteXX temp.au 514 1 10000.7
rm -f temp.au
tAFwriteXX temp.au 515 1 16000.7	2>&1	# uint8, invalid data format
tAFwriteXX temp.au 516 1 12000.7
rm -f temp.au
tAFwriteXX temp.au 517 1 14000.7
rm -f temp.au
tAFwriteXX temp.au 518 1 12000.7	2>&1	# float, invalid data format
tAFwriteXX temp.au 519 1 12000.7	2>&1	# double, invalid data format
tAFwriteXX temp.au 520 1 12000.7	2>&1	# text, invalid data format

tAFwriteXX temp.au 776 1  8000	  # Noheader (text data)
rm -f temp.au
tAFwriteXX temp.au 1032 1 8000
rm -f temp.au
tAFwriteXX temp.au 1288 1 8000
rm -f temp.au
tAFwriteXX temp.au 1544 1 8000
rm -f temp.au

echo ""
echo "========== tAFgetAUrec"
tAFgetHrec abc: abc:123 def:456 ghi:789
tAFgetHrec def: abc:123 def:456 ghi:789
tAFgetHrec ghi: abc:123 def:456 ghi:789
tAFgetHrec dxx abc:123 def:456 ghi:789
tAFgetHrec "" abc:123 def:456 ghi:789

echo ""
echo "========== tAFgetSPrec"
head="speaker_id -s2 jg
speaking_mode -s11 spontaneous
recording_date -s11 13-May-1992
recording_time -s11 11:18:05.00
microphone -s18 Sennheiser HMD-414
utterance_id -s8 jg00b1ss
database_id -s5 atis2
database_version -s3 1.0
channel_count -i 1
speaker_session_number -s1 1
speaker_sentence_number -s3 00b
session_utterance_number -i 11
sample_count -i 16384
sample_max -i 3131
sample_min -i -2817
sample_rate -r 16000.3
sample_n_bytes -i 2
sample_byte_format -s2 10
sample_sig_bits -i 16
xxx -i 32.3
end_head
"
tAFgetSPrec sample_count 0 1 "$head"
tAFgetSPrec sample_rate 1 1 "$head"
tAFgetSPrec recording_date 2 1 "$head"
tAFgetSPrec sample_counx 0 1 "$head"		2>&1	# Error
tAFgetSPrec xxx 1 1 "$head"			2>&1

exit 0
