#!/bin/sh
# $FreeBSD$
rm -rf siks
mkdir -p siks
export GNUSORT_NUMERIC_COMPATIBILITY=x
BSDSORT=../sort
GNUSORT=~/coreutils/bin/sort
#GNUSORT=sort
FILECMP=cmp
INPUT_FILE=si
rm -rf test.log
#ru_RU.ISO-8859-5 en_US.ISO8859-15 zh_HK.Big5HKSCS
#
# ru KOI-8 is an "irregular" locale with non-trivial ordering.
# zh* is a 2-bytes locale
for lang in ru_RU.KOI8-R C ru_RU.ISO-8859-5 en_US.ISO8859-15 zh_HK.Big5HKSCS
do
export LANG=${lang}
for KEYS in -srh -sfrudb -Vs -sM -siz
do
echo ${LANG} ${KEYS}
${BSDSORT} ${KEYS} ${INPUT_FILE} -o siks/sik1
ER=$?
if ! [ ${ER} -eq 0 ] ; then
echo ${LANG} ${KEYS} crash >> test.log
exit
fi
${GNUSORT} ${KEYS} ${INPUT_FILE} -o siks/sik2
if ! ${FILECMP} siks/sik1 siks/sik2 >siks/res.0.0 2>&1 ; then
echo ${LANG} ${KEYS} error >> test.log
fi
${BSDSORT} -c ${KEYS} siks/sik1
ER=$?
if ! [ ${ER} -eq 0 ] ; then
echo ${LANG} ${KEYS} -c error >> test.log
fi
rm siks/res.0.0
${BSDSORT} ${KEYS} -t " " ${INPUT_FILE} -o siks/sik1
ER=$?
if ! [ ${ER} -eq 0 ] ; then
echo ${LANG} ${KEYS} -t " " crash >> test.log
exit
fi
${GNUSORT} ${KEYS} -t " " ${INPUT_FILE} -o siks/sik2
if ! ${FILECMP} siks/sik1 siks/sik2 >siks/res.0.0 2>&1 ; then
echo ${LANG} ${KEYS} error -t " " >> test.log
fi
${BSDSORT} -c -t " " ${KEYS} siks/sik1
ER=$?
if ! [ ${ER} -eq 0 ] ; then
echo $? ${LANG} ${KEYS} -t " " -c error >> test.log
fi
rm siks/res.0.0
${BSDSORT} ${KEYS} -t "|" ${INPUT_FILE} -o siks/sik1
ER=$?
if ! [ ${ER} -eq 0 ] ; then
echo ${LANG} ${KEYS} -t "|" crash >> test.log
exit
fi
${GNUSORT} ${KEYS} -t "|" ${INPUT_FILE} -o siks/sik2
if ! ${FILECMP} siks/sik1 siks/sik2 >siks/res.0.0 2>&1 ; then
echo ${LANG} ${KEYS} error -t "|" >> test.log
fi
${BSDSORT} -c -t "|" ${KEYS} siks/sik1
ER=$?
if ! [ ${ER} -eq 0 ] ; then
echo ${LANG} ${KEYS} -c -t "|" error >> test.log
fi
rm siks/res.0.0
${BSDSORT} ${KEYS} -t '\0' ${INPUT_FILE} -o siks/sik1
ER=$?
if ! [ ${ER} -eq 0 ] ; then
echo ${LANG} ${KEYS} -t 0 crash >> test.log
exit
fi
${GNUSORT} ${KEYS} -t '\0' ${INPUT_FILE} -o siks/sik2
if ! ${FILECMP} siks/sik1 siks/sik2 >siks/res.0.0 2>&1 ; then
echo ${LANG} ${KEYS} error -t '\0' >> test.log
fi
${BSDSORT} -c -t '\0' ${KEYS} siks/sik1
ER=$?
if ! [ ${ER} -eq 0 ] ; then
echo ${LANG} ${KEYS} -c -t '\0' error >> test.log
fi
rm siks/res.0.0
for f1 in 1 2 3 4 5 6 7 8 9
do
for c1 in 1 2 3 4 5 10 15 20 25 30
do
echo ${LANG} ${KEYS} ${f1} ${c1}
${BSDSORT} ${KEYS} +${f1}.${c1} ${INPUT_FILE} -o siks/sik1
ER=$?
if ! [ ${ER} -eq 0 ] ; then
echo ${LANG} ${KEYS} +${f1}.${c1} crash +- >> test.log
exit
fi
${GNUSORT} ${KEYS} +${f1}.${c1} ${INPUT_FILE} -o siks/sik2
if ! ${FILECMP} siks/sik1 siks/sik2 >siks/res.${f1}.${c1} 2>&1 ; then
echo ${LANG} ${KEYS} +${f1}.${c1} error +- >> test.log
fi
${BSDSORT} -c ${KEYS} +${f1}.${c1} siks/sik1
ER=$?
if ! [ ${ER} -eq 0 ] ; then
echo ${LANG} ${KEYS} +${f1}.${c1} -c error +- >> test.log
fi
rm siks/res.${f1}.${c1}
${BSDSORT} ${KEYS} -k${f1}.${c1} ${INPUT_FILE} -o siks/sik1
ER=$?
if ! [ ${ER} -eq 0 ] ; then
echo ${LANG} ${KEYS} -k${f1}.${c1} crash >> test.log
exit
fi
${GNUSORT} ${KEYS} -k${f1}.${c1} ${INPUT_FILE} -o siks/sik2
if ! ${FILECMP} siks/sik1 siks/sik2 >siks/res.${f1}.${c1} 2>&1 ; then
echo ${LANG} ${KEYS} -k${f1}.${c1} error >> test.log
fi
${BSDSORT} -c ${KEYS} -k${f1}.${c1} siks/sik1
ER=$?
if ! [ ${ER} -eq 0 ] ; then
echo ${LANG} ${KEYS} -k${f1}.${c1} -c error >> test.log
fi
rm siks/res.${f1}.${c1}
${BSDSORT} ${KEYS} -k${f1}.${c1}b ${INPUT_FILE} -o siks/sik1
ER=$?
if ! [ ${ER} -eq 0 ] ; then
echo ${LANG} ${KEYS} -k${f1}.${c1}b crash >> test.log
exit
fi
${GNUSORT} ${KEYS} -k${f1}.${c1}b ${INPUT_FILE} -o siks/sik2
if ! ${FILECMP} siks/sik1 siks/sik2 >siks/res.${f1}.${c1} 2>&1 ; then
echo ${LANG} ${KEYS} -k${f1}.${c1}b error >> test.log
fi
${BSDSORT} -c ${KEYS} -k${f1}.${c1}b siks/sik1
ER=$?
if ! [ ${ER} -eq 0 ] ; then
echo ${LANG} ${KEYS} -k${f1}.${c1}b -c error >> test.log
fi
rm siks/res.${f1}.${c1}
${BSDSORT} ${KEYS} -t " " -k${f1}.${c1} ${INPUT_FILE} -o siks/sik1
ER=$?
if ! [ ${ER} -eq 0 ] ; then
echo ${LANG} ${KEYS} -t -k${f1}.${c1} crash >> test.log
exit
fi
${GNUSORT} ${KEYS} -t " " -k${f1}.${c1} ${INPUT_FILE} -o siks/sik2
if ! ${FILECMP} siks/sik1 siks/sik2 >siks/res.${f1}.${c1} 2>&1 ; then
echo ${LANG} ${KEYS} -k${f1}.${c1} error -t " " >> test.log
fi
${BSDSORT} -c -t " " ${KEYS} -k${f1}.${c1} siks/sik1
ER=$?
if ! [ ${ER} -eq 0 ] ; then
echo ${LANG} ${KEYS} -k${f1}.${c1} -t " " -c error >> test.log
fi
rm siks/res.${f1}.${c1}
${BSDSORT} ${KEYS} -t " " -k${f1}.${c1}n ${INPUT_FILE} -o siks/sik1
ER=$?
if ! [ ${ER} -eq 0 ] ; then
echo ${LANG} ${KEYS} -k${f1}.${c1}n crash >> test.log
exit
fi
${GNUSORT} ${KEYS} -t " " -k${f1}.${c1}n ${INPUT_FILE} -o siks/sik2
if ! ${FILECMP} siks/sik1 siks/sik2 >siks/res.${f1}.${c1} 2>&1 ; then
echo ${LANG} ${KEYS} -k${f1}.${c1} error -t " " n >> test.log
fi
${BSDSORT} -c -t " " ${KEYS} -k${f1}.${c1}n siks/sik1
ER=$?
if ! [ ${ER} -eq 0 ] ; then
echo ${LANG} ${KEYS} -k${f1}.${c1} -c -t " " n error >> test.log
fi
rm siks/res.${f1}.${c1}
${BSDSORT} ${KEYS} -t "|" -k${f1}.${c1} ${INPUT_FILE} -o siks/sik1
ER=$?
if ! [ ${ER} -eq 0 ] ; then
echo ${LANG} ${KEYS} -t "|" -k${f1}.${c1} crash >> test.log
exit
fi
${GNUSORT} ${KEYS} -t "|" -k${f1}.${c1} ${INPUT_FILE} -o siks/sik2
if ! ${FILECMP} siks/sik1 siks/sik2 >siks/res.${f1}.${c1} 2>&1 ; then
echo ${LANG} ${KEYS} -k${f1}.${c1} error -t "|" >> test.log
fi
${BSDSORT} -c -t "|" ${KEYS} -k${f1}.${c1} siks/sik1
ER=$?
if ! [ ${ER} -eq 0 ] ; then
echo ${LANG} ${KEYS} -k${f1}.${c1} -c -t "|" error >> test.log
fi
rm siks/res.${f1}.${c1}
for f2 in 1 2 3 4 5 6 7 8 9 10
do
for c2 in 0 1 2 3 4 5 10 15 20 25 30
do
echo ${LANG} ${KEYS} ${f1} ${c1} ${f2} ${c2}
${BSDSORT} ${KEYS} +${f1}.${c1} -${f2}.${c2} ${INPUT_FILE} -o siks/sik1
ER=$?
if ! [ ${ER} -eq 0 ] ; then
echo ${LANG} ${KEYS} +${f1}.${c1} -${f2}.${c2} crash >> test.log
exit
fi
${GNUSORT} ${KEYS} +${f1}.${c1} -${f2}.${c2} ${INPUT_FILE} -o siks/sik2
if ! ${FILECMP} siks/sik1 siks/sik2 >siks/res.${f1}.${c1}.${f2}.${c2} 2>&1 ; then
echo ${LANG} ${KEYS} +${f1}.${c1} -${f2}.${c2} error +- >> test.log
fi
${BSDSORT} -c ${KEYS} +${f1}.${c1} -${f2}.${c2} siks/sik1
ER=$?
if ! [ ${ER} -eq 0 ] ; then
echo ${LANG} ${KEYS} +${f1}.${c1} -${f2}.${c2} -c error +- >> test.log
fi
rm siks/res.${f1}.${c1}.${f2}.${c2}
${BSDSORT} ${KEYS} -k${f1}.${c1},${f2}.${c2} ${INPUT_FILE} -o siks/sik1
ER=$?
if ! [ ${ER} -eq 0 ] ; then
echo ${LANG} ${KEYS} -k${f1}.${c1},${f2}.${c2} crash >> test.log
exit
fi
${GNUSORT} ${KEYS} -k${f1}.${c1},${f2}.${c2} ${INPUT_FILE} -o siks/sik2
if ! ${FILECMP} siks/sik1 siks/sik2 >siks/res.${f1}.${c1}.${f2}.${c2} 2>&1 ; then
echo ${LANG} ${KEYS} -k${f1}.${c1}.${f2}.${c2} error >> test.log
fi
${BSDSORT} -c ${KEYS} -k${f1}.${c1},${f2}.${c2} siks/sik1
ER=$?
if ! [ ${ER} -eq 0 ] ; then
echo ${LANG} ${KEYS} -k${f1}.${c1},${f2}.${c2} -c error >> test.log
fi
rm siks/res.${f1}.${c1}.${f2}.${c2}
${BSDSORT} ${KEYS} -k${f1}.${c1}b,${f2}.${c2} ${INPUT_FILE} -o siks/sik1
ER=$?
if ! [ ${ER} -eq 0 ] ; then
echo ${LANG} ${KEYS} -k${f1}.${c1}b,${f2}.${c2} crash >> test.log
exit
fi
${GNUSORT} ${KEYS} -k${f1}.${c1}b,${f2}.${c2} ${INPUT_FILE} -o siks/sik2
if ! ${FILECMP} siks/sik1 siks/sik2 >siks/res.${f1}.${c1}.${f2}.${c2} 2>&1 ; then
echo ${LANG} ${KEYS} -k${f1}.${c1}.b.${f2}.${c2} error >> test.log
fi
${BSDSORT} -c ${KEYS} -k${f1}.${c1}b,${f2}.${c2} siks/sik1
ER=$?
if ! [ ${ER} -eq 0 ] ; then
echo ${LANG} ${KEYS} -k${f1}.${c1}b,${f2}.${c2} -c error >> test.log
fi
rm siks/res.${f1}.${c1}.${f2}.${c2}
${BSDSORT} ${KEYS} -t " " -k${f1}.${c1},${f2}.${c2} ${INPUT_FILE} -o siks/sik1
ER=$?
if ! [ ${ER} -eq 0 ] ; then
echo ${LANG} ${KEYS} -t " " -k${f1}.${c1},${f2}.${c2} crash >> test.log
exit
fi
${GNUSORT} ${KEYS} -t " " -k${f1}.${c1},${f2}.${c2} ${INPUT_FILE} -o siks/sik2
if ! ${FILECMP} siks/sik1 siks/sik2 >siks/res.${f1}.${c1}.${f2}.${c2} 2>&1 ; then
echo ${LANG} ${KEYS} -k${f1}.${c1}.${f2}.${c2} error -t " " >> test.log
fi
${BSDSORT} -c -t " " ${KEYS} -k${f1}.${c1},${f2}.${c2} siks/sik1
ER=$?
if ! [ ${ER} -eq 0 ] ; then
echo ${LANG} ${KEYS} -k${f1}.${c1},${f2}.${c2} -c -t " " error >> test.log
fi
rm siks/res.${f1}.${c1}.${f2}.${c2}
${BSDSORT} ${KEYS} -t " " -k${f1}.${c1}n,${f2}.${c2} ${INPUT_FILE} -o siks/sik1
ER=$?
if ! [ ${ER} -eq 0 ] ; then
echo ${LANG} ${KEYS} -t " " -k${f1}.${c1}n,${f2}.${c2} crash >> test.log
exit
fi
${GNUSORT} ${KEYS} -t " " -k${f1}.${c1}n,${f2}.${c2} ${INPUT_FILE} -o siks/sik2
if ! ${FILECMP} siks/sik1 siks/sik2 >siks/res.${f1}.${c1}.${f2}.${c2} 2>&1 ; then
echo ${LANG} ${KEYS} -t " " -k${f1}.${c1}.${f2}.${c2} error n >> test.log
fi
${BSDSORT} -c -t " " ${KEYS} -k${f1}.${c1}n,${f2}.${c2} siks/sik1
ER=$?
if ! [ ${ER} -eq 0 ] ; then
echo ${LANG} ${KEYS} -k${f1}.${c1},${f2}.${c2} -c -t " " n error >> test.log
fi
rm siks/res.${f1}.${c1}.${f2}.${c2}
${BSDSORT} ${KEYS} -t '\0' -k${f1}.${c1}n,${f2}.${c2} ${INPUT_FILE} -o siks/sik1
ER=$?
if ! [ ${ER} -eq 0 ] ; then
echo ${LANG} ${KEYS} -t '\0' -k${f1}.${c1}n,${f2}.${c2} crash >> test.log
exit
fi
${GNUSORT} ${KEYS} -t '\0' -k${f1}.${c1}n,${f2}.${c2} ${INPUT_FILE} -o siks/sik2
if ! ${FILECMP} siks/sik1 siks/sik2 >siks/res.${f1}.${c1}.${f2}.${c2} 2>&1 ; then
echo ${LANG} ${KEYS} -k${f1}.${c1}.${f2}.${c2} error -t '\0' n >> test.log
fi
${BSDSORT} -c -t '\0' ${KEYS} -k${f1}.${c1}n,${f2}.${c2} siks/sik1
ER=$?
if ! [ ${ER} -eq 0 ] ; then
echo ${LANG} ${KEYS} -k${f1}.${c1},${f2}.${c2} -c -t '\0' n error >> test.log
fi
rm siks/res.${f1}.${c1}.${f2}.${c2}
${BSDSORT} ${KEYS} -t "|" -k${f1}.${c1},${f2}.${c2} ${INPUT_FILE} -o siks/sik1
ER=$?
if ! [ ${ER} -eq 0 ] ; then
echo ${LANG} ${KEYS} -t "|" -k${f1}.${c1},${f2}.${c2} crash >> test.log
exit
fi
${GNUSORT} ${KEYS} -t "|" -k${f1}.${c1},${f2}.${c2} ${INPUT_FILE} -o siks/sik2
if ! ${FILECMP} siks/sik1 siks/sik2 >siks/res.${f1}.${c1}.${f2}.${c2} 2>&1 ; then
echo ${LANG} ${KEYS} -k${f1}.${c1}.${f2}.${c2} error -t "|" >> test.log
fi
${BSDSORT} -c -t "|" ${KEYS} -k${f1}.${c1},${f2}.${c2} siks/sik1
ER=$?
if ! [ ${ER} -eq 0 ] ; then
echo ${LANG} ${KEYS} -k${f1}.${c1},${f2}.${c2} -c -t "|" error >> test.log
fi
rm siks/res.${f1}.${c1}.${f2}.${c2}
${BSDSORT} ${KEYS} -t "|" -k${f1}.${c1},${f2}.${c2} -k${f2}.${c1},${f1}.${c2} ${INPUT_FILE} -o siks/sik1
ER=$?
if ! [ ${ER} -eq 0 ] ; then
echo ${LANG} ${KEYS} -t "|" -k${f1}.${c1},${f2}.${c2} -k${f2}.${c1},${f1}.${c2} crash >> test.log
exit
fi
${GNUSORT} ${KEYS} -t "|" -k${f1}.${c1},${f2}.${c2} -k${f2}.${c1},${f1}.${c2} ${INPUT_FILE} -o siks/sik2
if ! ${FILECMP} siks/sik1 siks/sik2 >siks/res.${f1}.${c1}.${f2}.${c2} 2>&1 ; then
echo ${LANG} ${KEYS} -k${f1}.${c1}.${f2}.${c2} error -t "|" 2k >> test.log
fi
${BSDSORT} -c -t "|" ${KEYS} -k${f1}.${c1},${f2}.${c2} -k${f2}.${c1},${f1}.${c2} siks/sik1
ER=$?
if ! [ ${ER} -eq 0 ] ; then
echo ${LANG} ${KEYS} -k${f1}.${c1},${f2}.${c2} -c -t "|" 2k error >> test.log
fi
rm siks/res.${f1}.${c1}.${f2}.${c2}
${BSDSORT} ${KEYS} -k${f1}.${c1}b,${f2}.${c2} -k${f2}.${c1},${f1}.${c2} ${INPUT_FILE} -o siks/sik1
ER=$?
if ! [ ${ER} -eq 0 ] ; then
echo ${LANG} ${KEYS} -k${f1}.${c1}b,${f2}.${c2} -k${f2}.${c1},${f1}.${c2} crash >> test.log
exit
fi
${GNUSORT} ${KEYS} -k${f1}.${c1}b,${f2}.${c2} -k${f2}.${c1},${f1}.${c2} ${INPUT_FILE} -o siks/sik2
if ! ${FILECMP} siks/sik1 siks/sik2 >siks/res.${f1}.${c1}.${f2}.${c2} 2>&1 ; then
echo ${LANG} ${KEYS} -k${f1}.${c1}.b.${f2}.${c2} error 2k >> test.log
fi
${BSDSORT} -c ${KEYS} -k${f1}.${c1}b,${f2}.${c2} -k${f2}.${c1},${f1}.${c2} siks/sik1
ER=$?
if ! [ ${ER} -eq 0 ] ; then
echo ${LANG} ${KEYS} -k${f1}.${c1}b,${f2}.${c2} -c 2k error >> test.log
fi
rm siks/res.${f1}.${c1}.${f2}.${c2}
done
done
done
done
done
done