# SUSv3 compliant sort tests.
# Copyright 2005 by Rob Landley <rob@landley.net>
-# Licensed under GPL v2, see file LICENSE for details.
+# Licensed under GPLv2, see file LICENSE in this source tree.
-. testing.sh
+. ./testing.sh
# The basic tests. These should work even with the small busybox.
999 3 0 algebra
"
+# testing "description" "command(s)" "result" "infile" "stdin"
+
# Sorting with keys
testing "sort one key" "sort -k4,4 input" \
999 3 0 algebra
" "$data" ""
-# Busybox is definitely doing this one wrong just now. FIXME
-
+test x"$SKIP_KNOWN_BUGS" = x"" && {
+# Busybox is definitely doing these wrong. FIXME
testing "sort key range with numeric option and global reverse" \
"sort -k2,3n -r input" \
"egg 1 2 papyrus
7 3 42 soup
" "$data" ""
-#
-
testing "sort key range with multiple options" "sort -k2,3rn input" \
"7 3 42 soup
999 3 0 algebra
42 1 3 woot
egg 1 2 papyrus
" "$data" ""
+}
+
+testing "sort key range with two -k options" "sort -k 2,2n -k 1,1r input" "\
+d 2
+b 2
+c 3
+" "\
+c 3
+b 2
+d 2
+" ""
+
+testing "sort with non-default leading delim 1" "sort -n -k2 -t/ input" "\
+/a/2
+/b/1
+" "\
+/a/2
+/b/1
+" ""
+
+testing "sort with non-default leading delim 2" "sort -n -k3 -t/ input" "\
+/b/1
+/a/2
+" "\
+/b/1
+/a/2
+" ""
+
+testing "sort with non-default leading delim 3" "sort -n -k3 -t/ input" "\
+//a/2
+//b/1
+" "\
+//a/2
+//b/1
+" ""
+
+testing "sort -u should consider field only when discarding" "sort -u -k2 input" "\
+a c
+" "\
+a c
+b c
+" ""
+
+testing "sort -z outputs NUL terminated lines" "sort -z input" "\
+one\0three\0two\0\
+" "\
+one\0two\0three\0\
+" ""
+
+testing "sort key doesn't strip leading blanks, disables fallback global sort" \
+"sort -n -k2 -t ' '" " a \n 1 \n 2 \n" "" " 2 \n 1 \n a \n"
+
+testing "sort file in place" \
+"sort -o input input && cat input" "\
+111
+222
+" "\
+222
+111
+" ""
+
+# testing "description" "command(s)" "result" "infile" "stdin"
exit $FAILCOUNT