Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
att
GitHub Repository: att/ast
Path: blob/master/src/cmd/sort/sort.tst
1808 views
# regression tests for the sort utility
# 01..22 were generated from the gnu perl tests

export LC_ALL=C

TEST 01 'simple checks'
	EXEC	-c f1
		INPUT f1 $'A\nB\nC'
	EXEC	f1
		OUTPUT - $'A\nB\nC'
	EXEC	-cu f1
		INPUT f1 $'A\nB'
		OUTPUT - 

TEST 02 'two fields'
	EXEC	-k1.1,1.0 f1
		INPUT -n f1
	EXEC	-k1.1,1 f1
	EXEC	-k1,1 f1
	EXEC	-k1 f1
		INPUT f1 $'B\nA'
		OUTPUT - $'A\nB'
	EXEC	-k1,1 f1
	EXEC	-k1 -k2 f1
		INPUT f1 $'A b\nA a'
		OUTPUT - $'A a\nA b'

TEST 03 'numeric fields'
	EXEC	-nc f1
		INPUT f1 $'2\n11'
	EXEC	-n f1
		INPUT f1 $'11\n2'
		OUTPUT - $'2\n11'
	EXEC	-k1n f1
	EXEC	-k1 f1
		OUTPUT - $'11\n2'
	EXEC	-k2 f1
		INPUT f1 $'ignored B\nz-ig A'
		OUTPUT - $'z-ig A\nignored B'

TEST 04 'two fields from three, option spacing'
	EXEC	-k1,2 f1
		INPUT f1 $'A B\nA A'
		OUTPUT - $'A A\nA B'
	EXEC	-k 1,2 f1
	EXEC	-k1,2 f1
		INPUT f1 $'A B A\nA A Z'
		OUTPUT - $'A A Z\nA B A'
	EXEC	-k 1,2 f1
	EXEC	-k1 -k2 f1
	EXEC	-k 1 -k 2 f1
	EXEC	-k2,2 f1
	EXEC	-k 2,2 f1
	EXEC	-k2,2 f1
		INPUT f1 $'A B Z\nA A A'
		OUTPUT - $'A A A\nA B Z'
	EXEC	-k 2,2 f1
	EXEC	-k2,2 f1
		INPUT f1 $'A B A\nA A Z'
		OUTPUT - $'A A Z\nA B A'
	EXEC	-k 2,2 f1

TEST 05 'three on three'
	EXEC	-k 2,3 f1
		INPUT f1 $'9 a b\n7 a a'
		OUTPUT - $'7 a a\n9 a b'
	EXEC	-k 2,3 f1
		INPUT f1 $'a a b\nz a a'
		OUTPUT - $'z a a\na a b'
	EXEC	-k 2,3 f1
		INPUT f1 $'y k b\nz k a'
		OUTPUT - $'z k a\ny k b'
	EXEC	+1 -3 f1

TEST 06 'floating point'
	EXEC	-g f1
		INPUT f1 $'1e2\n2e1'
		OUTPUT - $'2e1\n1e2'
	EXEC	-n f1
		OUTPUT - $'1e2\n2e1'
	EXEC	-n f1
		INPUT f1 $'2e1\n1e2'
		OUTPUT - $'1e2\n2e1'
	EXEC	-k2g f1
		INPUT f1 $'a 1e2\nb 2e1'
		OUTPUT - $'b 2e1\na 1e2'

TEST 07	'character offsets in field'
	EXEC	-t : -k 2.2,2.2 f1
		INPUT f1 $':ba\n:ab'
		OUTPUT - $':ba\n:ab'
	EXEC	-t : +1.1 -1.2 f1
	EXEC	-t : -k 2.2,2.2 f1
		INPUT f1 $':ab\n:ba'
		OUTPUT - $':ba\n:ab'
	EXEC	-t : +1.1 -1.2 f1
	EXEC	-t : -k 1.3,1.3 f1
	EXEC	-k 2.3,2.3 f1
		INPUT f1 $'z ba\nz ab'
		OUTPUT - $'z ba\nz ab'
	EXEC	-b -k 2.2,2.2 f1
	EXEC	-k 1.2,1.2 f1
		INPUT f1 $'ba\nab'
		OUTPUT - $'ba\nab'
	EXEC	-k 1.2,1.2 f1
		INPUT f1 $'ab\nba'
	EXEC	-k 1.4,1.4 f1
		INPUT f1 $'a ab\nb ba'
		OUTPUT - $'b ba\na ab'

TEST 08 'delimiters'
	EXEC	-t: -k1,1b -k2,2 f1
		INPUT f1 $'a\t:a\na :b'
		OUTPUT - $'a\t:a\na :b'
	EXEC	-t: -k1,1b -k2,2 f1
		INPUT f1 $'a :b\na\t:a'
		OUTPUT - $'a\t:a\na :b'
	EXEC	-t: -k2,2b -k3,3 f1
		INPUT f1 $'z:a\t:a\na :b'
		OUTPUT - $'z:a\t:a\na :b'
	EXEC	-t: -k2,2b -k3,3 f1
		INPUT f1 $'z:a :b\na\t:a'
		OUTPUT - $'a\t:a\nz:a :b'

TEST 09	'numeric with delimiters'
	EXEC	-n -t: +1 f1
		INPUT f1 $'a:1\nb:-'
		OUTPUT - $'b:-\na:1'
	EXEC	-n -t: +1 f1
		INPUT f1 $'b:-\na:1'
	EXEC	-n -t: +1 f1
		INPUT f1 $'a:1\nb:X'
		OUTPUT - $'b:X\na:1'
	EXEC	-n -t: +1 f1
		INPUT f1 $'b:X\na:1'
	EXEC	+0.1n f1
		INPUT f1 $'axx\nb-1'
		OUTPUT - $'b-1\naxx'
	EXEC	+0.1n f1
		INPUT f1 $'b-1\naxx'

TEST 18	'unique with control chars'
	EXEC	-d -u f1
		INPUT f1 $'mal\nmal-\nmala'
		OUTPUT - $'mal\nmala'
	EXEC	-f -d -u f1
	EXEC	-i -u f1
		INPUT f1 $'a\na\1'
		OUTPUT - $'a'
	EXEC	-i -u f1
		INPUT f1 $'a\n\1a'
	EXEC	-i -u f1
		INPUT f1 $'a\1\na'
		OUTPUT - $'a\1'
	EXEC	-i -u f1
		INPUT f1 $'\1a\na'
		OUTPUT - $'\1a'
	EXEC	-i -u f1
		INPUT f1 $'a\n\1\1\1\1\1a\1\1\1\1'
		OUTPUT - $'a'

TEST 19	'i18n'
	EXEC	-f f1
		INPUT f1 $'\351minence\n\374berhaupt\n\'s-Gravenhage\na\353roclub\nAag\naagtappels'
		OUTPUT - $'\'s-Gravenhage\nAag\naagtappels\na\353roclub\n\351minence\n\374berhaupt'

TEST 20	'huh'
	EXEC	-c f1
		INPUT f1 $'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'

TEST 21	'analyze this'
	EXEC	-n -k1.1,1.2 f1
		INPUT f1 $' 901\n100'
		OUTPUT - $' 901\n100'
	EXEC	-k1.1n,1.2 f1
	EXEC	-k1.1n,1.2n f1
	EXEC	-k1.1,1.2n f1
	EXEC	-b -k1.1n,1.2 f1
	EXEC	-b -k1.1n,1.2n f1
	EXEC	-b -k1.1,1.2n f1
	EXEC	-k1.1nb,1.2 f1
	EXEC	-k1.1b,1.2n f1
	EXEC	-k1 -k2n f1
	EXEC	-k1.1n,1.2b f1
		OUTPUT - $'100\n 901'
	EXEC	-k1.1n,1.2nb f1
	EXEC	-nb -k1.1,1.2 f1
	EXEC	-n -k1 f1
	EXEC	-k1n f1
	EXEC	-n -k1 -k2 f1
	EXEC	-k1n -k2 f1

TEST 22 'errors'
	DIAGNOSTICS
	EXEC	-c f1
		INPUT f1 $'A\nC\nB'
		EXIT [12]
	EXEC	-cu f1
		INPUT f1 $'A\nB\nB'
	EXEC	-cu f1
		INPUT f1 $'A\nA'
	EXEC	-cu f1
		INPUT f1 $'B\nA\nB'
	EXEC	-k0 f1
		INPUT f1
	EXEC	-k1.0 f1
	EXEC	-k1.1,-k0 f1
	EXEC	-k 2.,3 f1
	EXEC	-k 2, f1

TEST 23 'stable sort'
	EXEC	-s -k2,2
		INPUT - $'1 A\n2 A'
		SAME OUTPUT INPUT
	EXEC	-s -k2,2r
	EXEC	-s -r -k2,2
		OUTPUT - $'2 A\n1 A'
	EXEC	-s -r -k2,2r

TEST 24 'fixed records'
	EXEC	fixed%6
		INPUT fixed%6 $'PDQRS\nBCDEF\nCD\nAB'
		OUTPUT - $'AB\nBCDEF\nCD\nPDQRS'
	EXEC	-R6 fixed%6
		OUTPUT - $'BCDEF\nCD\nAB\nPDQRS'
	EXEC	-R% fixed%6
	EXEC	-R6 fixed%6.dat
		INPUT fixed%6.dat $'PDQRS\nBCDEF\nCD\nAB'
	EXEC	-R% fixed%6.dat
	EXEC	-R% fixed%6.dat -o test.out
		OUTPUT test%6.out $'BCDEF\nCD\nAB\nPDQRS'
		OUTPUT -
	EXEC	fixed%6 fixed%7
		INPUT fixed%7 $'UVWXYZ'
		OUTPUT - $'AB
BCDEF
CD
PDQRS
UVWXYZ'
	EXEC	-R6 fixed%6 fixed%6
		OUTPUT - $'BCDEF
BCDEF
CD
AB
CD
AB
PDQRS
PDQRS'
	EXEC	-R% fixed%6 fixed%6
	EXEC	-R% fixed%6 fixed_6
		INPUT fixed_6 $'PDQRS\nBCDEF\nCD\nAB'
	EXEC	-R6 fixed%6 fixed_6
	EXEC	-R% fixed_6 fixed%6
	EXEC	-R6 fixed_6 fixed%6
	EXEC	-R% fixed_6
		OUTPUT - $'AB\nBCDEF\nCD\nPDQRS'
	EXEC	-R% var
		INPUT -f var $'%c\x0c%c%c-ZZZZZZZ%c\x08%c%c-AAA%c\x09%c%c-QQQQ'
		OUTPUT -f - $'%c\x08%c%c-AAA%c\x09%c%c-QQQQ%c\x0c%c%c-ZZZZZZZ'
	EXEC	-R- var
	EXEC	-R% var -o test.out
		OUTPUT -f test%v32767.out $'%c\x08%c%c-AAA%c\x09%c%c-QQQQ%c\x0c%c%c-ZZZZZZZ'
		OUTPUT -
	EXEC	-R% var%v123.dat -o test.out
		INPUT -f var%v123.dat $'%c\x0c%c%c-ZZZZZZZ%c\x08%c%c-AAA%c\x09%c%c-QQQQ'
		OUTPUT -f test%v123.out $'%c\x08%c%c-AAA%c\x09%c%c-QQQQ%c\x0c%c%c-ZZZZZZZ'
	EXEC	-R6 fixed%6 fixed%7
		OUTPUT -n - $'BCDEF
CD
AB
PDQRS
UVWXYZ'
		ERROR - $'sort: warning: incomplete record length=1'
	EXEC	-R% fixed%6 fixed%7
		OUTPUT -
		ERROR - $'sort: fixed%7: format f7 incompatible with fixed%6 format f6'
		EXIT 1
	EXEC	-R% flat
		INPUT flat $'-ZZZZZZZ\n-AAA\n-QQQQQ\n-CCCCCCCCCCCCCCCC'
		ERROR - $'sort: flat: record format cannot be determined from data sample'
		EXIT 1

TEST 25 'fixed records and fields'
	EXEC	-s -k .5 -k .2.2
		INPUT - $'zbc2\nabc1'
		OUTPUT - $'zbc2\nabc1'
	EXEC	-s -k 5:2:1
	EXEC	-s -k .5 -k .2.3
		OUTPUT - $'abc1\nzbc2'
	EXEC	-s -k 5:3:1

TEST 26 'compressed input/output'
	EXEC	-zO
		INPUT - $'5\n3\n1'
		IGNORE OUTPUT
		COPY OUTPUT o.gz
	EXEC	-zO
		INPUT - $'6\n4\n2'
		IGNORE OUTPUT
		COPY OUTPUT e.gz
	EXEC	-zI e.gz o.gz
		OUTPUT - $'1\n2\n3\n4\n5\n6'
	EXEC	-zI -m e.gz o.gz
	EXEC	-zI -m o.gz e.gz

TEST 27 'non-newline delimited variable length records'
	EXEC	-n -Rd:
		INPUT -n - $'1111:222:33:4:'
		OUTPUT -n - $'4:33:222:1111:'