#!/bin/bash

# SUSv4 compliant sort tests.
# Copyright 2005, 2012 by Rob Landley <rob@landley.net>

[ -f testing.sh ] && . testing.sh

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

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

# These tests require the full option set.

optional SORT_BIG
# Longish chunk of data re-used by the next few tests.  The expected output
# varies, but the input (this) is the same.

data="42	1	3	woot
42	1	010	zoology
egg	1	2	papyrus
7	3	42	soup
999	3	0	algebra
"

# Sorting with keys

testing "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" ""

# The numeric sort orders field 2, ignores field 3 (because numeric sort stops
# at the whitespace), then the global fallback sort does an alpha sort on
# the whole string (starting at the beginning of the line).

testing "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" ""

# Numeric sort on field 2 (again, ignore field 3 because it's numeric),
# then do a _reversed_ alpha sort on the whole line as a tiebreaker.

testing "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" ""

# Reversed numeric sort on field 2 (numeric ignores field 3), then
# break ties with alpha sort on whole line.

testing "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 "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"

# Test case contributed by Joey Hess:

testing "key edge case with -t" "sort -n -k4 -t/" \
"/usr/lib/finish-install.d/1
/usr/lib/finish-install.d/4
/usr/lib/prebaseconfig.d/2
/usr/lib/prebaseconfig.d/6
" "" "/usr/lib/finish-install.d/1
/usr/lib/prebaseconfig.d/2
/usr/lib/finish-install.d/4
/usr/lib/prebaseconfig.d/6
"

testing "-x" "sort -x" "010\na0\n 0c0\n" "" "a0\n010\n 0c0\n"

# Test that -f applies to key or fallback independently

testing "" "sort -k2,2f" "A b b\na B C\na B a\n" "" "a B a\nA b b\na B C\n"
testing "" "sort -k2,2" "a B C\na B a\nA b b\n" "" "a B a\nA b b\na B C\n"
testing "" "sort -f -k2,2" "A b b\na B C\na B a\n" "" "a B a\nA b b\na B C\n" 

optional SORT_FLOAT

# not numbers < NaN < -infinity < numbers < +infinity
testing "-g" "sort -g" \
  "bork\nNaN\n-inf\n0.4\n1.222\n01.37\n2.1\n+infinity\n" "" \
  "01.37\n1.222\n2.1\n0.4\nNaN\nbork\n-inf\n+infinity\n"


