# Filter programs lend themselves well to automated testing.  This is
# the *nix test script for TDS.  -Ed L

# Suggested invocation for this shell program:  sh test

echo 'tr <data1'
 tr <data1
echo 'tds <data1'
tds <data1 
echo 'tr [\000-\377] [\000-\377] <data1'
 tr '[\000-\377]' '[\000-\377]' <data1
echo 'tds [\000-\377] [\000-\377] <data1'
tds '[\000-\377]' '[\000-\377]' <data1
echo 'tds [\x00-\xFF] [\x00-\xFF] <data1'
tds '[\x00-\xFF]' '[\x00-\xFF]' <data1
echo 'tds [\h00-\xFF] [\h00-\hFF] <data1'
tds '[\h00-\xFF]' '[\h00-\hFF]' <data1
echo 'tds [\d000-\d255] [\d000-\d255] <data1'
tds '[\d000-\d255]' '[\d000-\d255]' <data1
echo

echo 'tr a <data1'
 tr a <data1
echo 'tds a <data1'
tds a <data1
echo 'tr [a-a] [a-a] <data1'
 tr '[a-a]' '[a-a]' <data1
echo 'tds [a-a] [a-a] <data1'
tds '[a-a]' '[a-a]' <data1
echo

echo 'tr a jk <data1'
 tr a jk <data1
echo 'tds a jk <data1'
tds a jk <data1
echo 'tr [a-a] [j-k] <data1'
 tr '[a-a]' '[j-k]' <data1
echo 'tds [a-a] [j-k] <data1'
tds '[a-a]' '[j-k]' <data1
echo

echo 'tr jk a <data1'
 tr jk a <data1
echo 'tds jk a <data1'
tds jk a <data1
echo 'tr [j-k] [a-a] <data1'
 tr '[j-k]' '[a-a]' <data1
echo 'tds [j-k] [a-a] <data1'
tds '[j-k]' '[a-a]' <data1
echo

echo 'tr -d j <data1'
 tr -d j <data1
echo 'tds -d j <data1'
tds -d j <data1
echo 'tr -d [j-j] [j-j] <data1'
 tr -d '[j-j]' '[j-j]' <data1
echo 'tds -d [j-j] [j-j] <data1'
tds -d '[j-j]' '[j-j]' <data1
echo

echo 'tds -d -c b <data1'
 tr -cd b <data1
echo 'tds -cd b <data1'
tds -cd b <data1
echo 'tr -cd [b-b] [b-b] <data1'
 tr -cd '[b-b]' '[b-b]' <data1
echo 'tds -d -c [b-b] [b-b] <data1'
tds -d -c '[b-b]' '[b-b]' <data1
echo

echo 'tr -s abcdefghijklmnopqrstuvwxyz <data2'
 tr -s abcdefghijklmnopqrstuvwxyz <data2
echo 'tds -s abcdefghijklmnopqrstuvwxyz <data2'
tds -s abcdefghijklmnopqrstuvwxyz <data2
echo 'tr -s [a-z] [a-z] <data2'
 tr -s '[a-z]' '[a-z]' <data2
echo 'tds [a-z] -s [a-z] <data2'
tds '[a-z]' -s '[a-z]' <data2
echo

echo 'tr -s j o <data2'
 tr -s j o <data2
echo 'tds -s j o <data2'
tds -s j o <data2
echo 'tr -s [j-j] [o-o] <data2'
 tr -s '[j-j]' '[o-o]' <data2
echo 'tds -s [j-j] [o-o] <data2'
tds -s '[j-j]' '[o-o]' <data2
echo

echo 'tds -d abcdef -s xyz <data2'
 tr -ds abcdef xyz <data2
echo 'tds -ds abcdef xyz <data2'
tds -ds abcdef xyz <data2
echo 'tr -ds [a-f] [x-z] <data2'
 tr -ds '[a-f]' '[x-z]' <data2
echo 'tds -ds [a-f] [x-z] <data2'
tds -ds '[a-f]' '[x-z]' <data2
echo

echo ' tr [a-z][A-Z] [n-z][a-m][N-Z][A-M] <data1'
 tr '[a-z][A-Z]' '[n-z][a-m][N-Z][A-M]' <data1
echo 'tds [a-z][A-Z] [n-z][a-m][N-Z][A-M] <data1'
tds '[a-z][A-Z]' '[n-z][a-m][N-Z][A-M]' <data1
echo ' tr [a-zA-Z] [n-za-mN-ZA-M] <data1'
 tr '[a-zA-Z]' '[n-za-mN-ZA-M]' <data1
echo 'tds [a-zA-Z] [n-za-mN-ZA-M] <data1'
tds '[a-zA-Z]' '[n-za-mN-ZA-M]' <data1
echo

# There is no need for character multipliers in s1, but the function
# that parses s2 is essentially the same as that needed by s1 with the
# character multiplier code.  The following may show an undocumented
# "bug" in tr.  It is really not a bug unless someone expects tr to
# behave as it "should" in this unusual situation.

echo 'tr aaa b <data1'
 tr aaa b <data1
echo ' tr [a*3] b <data1'
 tr '[a*3]' b <data1
echo 'tds aaa b <data1'
tds aaa b <data1
echo 'tds [a*3] b <data1'
tds '[a*3]' b <data1
