mirror of
git://git.sv.gnu.org/coreutils.git
synced 2026-04-11 14:44:18 +02:00
* tests/misc/sort-discrim: Correct reversed args to "compare". This nit was masked by a bug in maint.mk that effectively disabled many of the syntax-check rules.
90 lines
2.7 KiB
Bash
Executable File
90 lines
2.7 KiB
Bash
Executable File
#!/bin/sh
|
|
# Test discriminator-based sorting.
|
|
|
|
# Copyright (C) 2012 Free Software Foundation, Inc.
|
|
|
|
# This program is free software: you can redistribute it and/or modify
|
|
# it under the terms of the GNU General Public License as published by
|
|
# the Free Software Foundation, either version 3 of the License, or
|
|
# (at your option) any later version.
|
|
|
|
# This program is distributed in the hope that it will be useful,
|
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
# GNU General Public License for more details.
|
|
|
|
# You should have received a copy of the GNU General Public License
|
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
|
|
. "${srcdir=.}/init.sh"; path_prepend_ ../src
|
|
print_ver_ sort
|
|
|
|
# Set limit variables.
|
|
getlimits_
|
|
|
|
# These tests are designed for a 'sort' implementation that uses a
|
|
# discriminator, i.e., a brief summary of a key that may have lost info,
|
|
# but whose ordering is consistent with that of the original key.
|
|
# The tests are useful even if 'sort' does not use this representation.
|
|
|
|
# Test lexicographic sorting.
|
|
|
|
# A long-enough string so that it overruns a small discriminator buffer size.
|
|
long_prefix='aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'
|
|
seq -f "$long_prefix%5.0f" 10000 > exp || fail=1
|
|
sort -R exp | LC_ALL=C sort > out || fail=1
|
|
compare exp out || fail=1
|
|
|
|
|
|
# Test numeric sorting.
|
|
|
|
# These tests are designed for an internal representation that ordinarily
|
|
# looks at the number plus two decimal digits, but if -h is
|
|
# used it looks at one decimal place plus a 4-bit SI prefix value.
|
|
# In both cases, there's an extra factor of 2 for the sign.
|
|
# Note INTMAX_MAX is used below as that's that largest number
|
|
# expr can handle on all systems (without GMP).
|
|
max_int100=$(expr $INTMAX_MAX / 100) &&
|
|
max_frac100=$(printf '%.2d' $(expr $INTMAX_MAX % 100)) &&
|
|
max_int160=$(expr $INTMAX_MAX / 160) &&
|
|
max_frac160=$(expr $INTMAX_MAX / 16 % 10) &&
|
|
{ printf -- "\
|
|
-$UINTMAX_OFLOW
|
|
-$UINTMAX_MAX
|
|
-${max_int100}0.1
|
|
-${max_int100}0
|
|
-${max_int100}0.0
|
|
-${max_int160}0.1
|
|
-${max_int160}0
|
|
-${max_int160}0.0
|
|
-$max_int100.${max_frac100}1
|
|
-$max_int100.$max_frac100
|
|
-$max_int160.${max_frac160}1
|
|
-$max_int160.$max_frac160
|
|
" &&
|
|
seq -- -10 .001 10 &&
|
|
printf "\
|
|
$max_int160
|
|
$max_int160.$max_frac160
|
|
$max_int160.${max_frac160}1
|
|
$max_int100
|
|
$max_int100.$max_frac100
|
|
$max_int100.${max_frac100}1
|
|
${max_int160}0
|
|
${max_int160}0.0
|
|
${max_int160}0.1
|
|
${max_int100}0
|
|
${max_int100}0.0
|
|
${max_int100}0.1
|
|
$UINTMAX_MAX
|
|
$UINTMAX_OFLOW
|
|
"
|
|
} > exp || fail=1
|
|
|
|
for opts in -n -h; do
|
|
sort -R exp | LC_ALL=C sort $opts > out || fail=1
|
|
compare exp out || fail=1
|
|
done
|
|
|
|
Exit $fail
|