#!/bin/sh

# SUSv3 compliant sort tests.
# Copyright 2005 by Rob Landley <rob@landley.net>
# Licensed under GPLv2, see file LICENSE in this source tree.

. ./testing.sh

# The basic tests.  These should work even with the small busybox.

testing "sort" "sort input" "a\nb\nc\n" "c\na\nb\n" ""
testing "sort #2" "sort input" "010\n1\n3\n" "3\n1\n010\n" ""
testing "sort stdin" "sort" "a\nb\nc\n" "" "b\na\nc\n"
testing "sort numeric" "sort -n input" "1\n3\n010\n" "3\n1\n010\n" ""
testing "sort reverse" "sort -r input" "wook\nwalrus\npoint\npabst\naargh\n" \
	"point\nwook\npabst\naargh\nwalrus\n" ""

# These tests require the full option set.

optional FEATURE_SORT_BIG
# Longish chunk of data re-used by the next few tests

data="42	1	3	woot
42	1	010	zoology
egg	1	2	papyrus
7	3	42	soup
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
egg	1	2	papyrus
7	3	42	soup
42	1	3	woot
42	1	010	zoology
" "$data" ""

testing "sort key range with numeric option" "sort -k2,3n input" \
"42	1	010	zoology
42	1	3	woot
egg	1	2	papyrus
7	3	42	soup
999	3	0	algebra
" "$data" ""

testing "sort key range with numeric option and global reverse" \
"sort -k2,3n -r input" \
"egg	1	2	papyrus
42	1	3	woot
42	1	010	zoology
999	3	0	algebra
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	010	zoology
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 with non-default leading delim 4" "sort -t: -k1,1 input" "\
a:b
a/a:a
" "\
a/a:a
a:b
" ""

testing "glibc build sort" "sort -t. -k 1,1 -k 2n,2n -k 3 input" "\
GLIBC_2.1
GLIBC_2.1.1
GLIBC_2.2
GLIBC_2.2.1
GLIBC_2.10
GLIBC_2.20
GLIBC_2.21
" "\
GLIBC_2.21
GLIBC_2.1.1
GLIBC_2.2.1
GLIBC_2.2
GLIBC_2.20
GLIBC_2.10
GLIBC_2.1
" ""

testing "glibc build sort unique" "sort -u -t. -k 1,1 -k 2n,2n -k 3 input" "\
GLIBC_2.1
GLIBC_2.1.1
GLIBC_2.2
GLIBC_2.2.1
GLIBC_2.10
GLIBC_2.20
GLIBC_2.21
" "\
GLIBC_2.10
GLIBC_2.2.1
GLIBC_2.1.1
GLIBC_2.20
GLIBC_2.2
GLIBC_2.1
GLIBC_2.21
" ""

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
