#!/bin/sh

# SUSv3 compliant uniq tests.
# Copyright 2005 by Rob Landley <rob@landley.net>
# Licensed under GPL v2, see file LICENSE for details.

# AUDIT: Full SUSv3 coverage (except internationalization).

. ./testing.sh

# testing "test name" "options" "expected result" "file input" "stdin"
#   file input will be file called "input"
#   test can create a file "actual" instead of writing to stdout

# Test exit status

testing "uniq (exit with error)" "uniq nonexistent 2> /dev/null || echo yes" \
	"yes\n" "" ""
testing "uniq (exit success)" "uniq /dev/null && echo yes" "yes\n" "" ""

# Test various data sources and destinations

testing "uniq (default to stdin)" "uniq" "one\ntwo\nthree\n" "" \
	"one\ntwo\ntwo\nthree\nthree\nthree\n"
testing "uniq - (specify stdin)" "uniq -" "one\ntwo\nthree\n" "" \
	"one\ntwo\ntwo\nthree\nthree\nthree\n"
testing "uniq input (specify file)" "uniq input" "one\ntwo\nthree\n" \
	"one\ntwo\ntwo\nthree\nthree\nthree\n" ""

testing "uniq input outfile (two files)" "uniq input actual > /dev/null" \
	"one\ntwo\nthree\n" "one\ntwo\ntwo\nthree\nthree\nthree\n" ""
testing "uniq (stdin) outfile" "uniq - actual" \
	"one\ntwo\nthree\n" "" "one\ntwo\ntwo\nthree\nthree\nthree\n"
# Note: SUSv3 doesn't seem to require support for "-" output, but we do anyway.
testing "uniq input - (specify stdout)" "uniq input -" \
	"one\ntwo\nthree\n" "one\ntwo\ntwo\nthree\nthree\nthree\n" ""


#-f skip fields
#-s skip chars
#-c occurrences
#-d dups only
#-u
#-w max chars

# Test various command line options

# Leading whitespace is a minor technical violation of the spec,
# but since gnu does it...
testing "uniq -c (occurrence count)" "uniq -c | sed 's/^[ \t]*//'" \
	"1 one\n2 two\n3 three\n" "" \
	"one\ntwo\ntwo\nthree\nthree\nthree\n"
testing "uniq -d (dups only)" "uniq -d" "two\nthree\n" "" \
	"one\ntwo\ntwo\nthree\nthree\nthree\n"

testing "uniq -f -s (skip fields and chars)" "uniq -f2 -s 3" \
"cc	dd	ee8
aa	bb	cc9
" "" \
"cc	dd	ee8
bb	cc	dd8
aa	bb	cc9
"
testing "uniq -w (compare max characters)" "uniq -w 2" \
"cc1
" "" \
"cc1
cc2
cc3
"

testing "uniq -s -w (skip fields and compare max chars)" \
"uniq -s 2 -w 2" \
"aaccaa
" "" \
"aaccaa
aaccbb
bbccaa
"

# -d is "Suppress the writing fo lines that are not repeated in the input."
# -u is "Suppress the writing of lines that are repeated in the input."
# Therefore, together this means they should produce no output.
testing "uniq -u and -d produce no output" "uniq -d -u" "" "" \
	"one\ntwo\ntwo\nthree\nthree\nthree\n"

exit $FAILCOUNT
