#/bin/sh
#
# LI18NUX2K.L1/utils/gettext/gettext.sh
#
# Copyright (c) 1991, 1992, 1997, 1998, 1999, 2001 X/Open Company Ltd.
# (X/Open)
# trading as The Open Group
# Copyright (c) 2001, 2003 International Business Machines Corp.
# All rights reserved except as granted by this License.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the "Artistic License" which comes with this
# Kit, with the following modification:
# a) "executable(s)" should be interpreted to include
# "test case(s)"
# b) if you wish to make changes as defined in clause 2 and 3, and
# distribute a modified version of this package, then
# clauses 3c and 4c are required
# c) Clause 7 is rephrased as follows: "Subroutines supplied by you
# and linked into this Package shall not be considered part of this
# Package".
#
#
# X/OPEN, TRADING AS THE OPEN GROUP, AND IBM CORP. DISCLAIM ALL WARRANTIES
# WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF
# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL X/OPEN OR IBM CORP. BE
# LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
#
# You should have received a copy of the Artistic License with this
# Kit, in the file named "Artistic".  If not, we'll be glad to provide one.


tet_startup="startup"			# startup function
tet_cleanup="cleanup"			# cleanup function
iclist="ic1"
ic1="tp1 tp2 tp3 tp4 tp5 tp6 tp7 tp8 tp9 tp10 tp11 tp12 tp13 tp14 tp15"

tp1()
{
	tet_infoline "When the operand 'textdomain' is present, verify"
	tet_infoline "that this utility uses the value of the operand"
	tet_infoline "as dommain name."
	tet_infoline " "

	rm -rf LTP_1.UTF-8
	mkdir -p ./LTP_1.UTF-8/LC_MESSAGES/
	cp orig.mo ./LTP_1.UTF-8/LC_MESSAGES/test1.mo

	unset LANG TEXTDOMAINDIR TEXTDOMAIN
	TEXTDOMAINDIR=${PWD} ; export TEXTDOMAINDIR
	LANG=LTP_1.UTF-8 ; export LANG

	gettext test1 hello > test1.out 2>/dev/null
	diff test1.out test1.crt >/dev/null 2>&1

	if [ $? -ne 0 ] ; then
		tet_infoline "The gettext gets wrong message"
		tet_result FAIL 	# Fail
	else
		tet_result PASS		# success
	fi
	
	unset LANG TEXTDOMAINDIR TEXTDOMAIN
	rm -rf LTP_1.UTF-8
}

tp2()
{
	tet_infoline "When '-d dommainname' or '--domain=dommainname'"
	tet_infoline "option is specified, verify this utility uses"
	tet_infoline "dommainname as dommain name."
	tet_infoline " "

	rm -rf LTP_1.UTF-8
	mkdir -p ./LTP_1.UTF-8/LC_MESSAGES/
	cp orig.mo ./LTP_1.UTF-8/LC_MESSAGES/test2.mo

	unset LANG TEXTDOMAINDIR TEXTDOMAIN
	TEXTDOMAINDIR=${PWD} ; export TEXTDOMAINDIR
	LANG=LTP_1.UTF-8 ; export LANG

	gettext -d test2 hello > test2.out 2>/dev/null
	diff test2.out test1.crt >/dev/null 2>&1

	if [ $? -ne 0 ] ; then
		tet_infoline "The gettext gets wrong message"
		tet_result FAIL 	# Fail
	else
		tet_result PASS		# success
	fi
	
	unset LANG TEXTDOMAINDIR TEXTDOMAIN
	rm -rf LTP_1.UTF-8
}

tp3()
{
	tet_infoline "With the following situation, check that this utility"
	tet_infoline "uses the value of TEXTDOMAIN as dommain name."
	tet_infoline " * The operand 'textdomain' is not present."
	tet_infoline " * '-d dommainname' and '--domain=dommainname'"
	tet_infoline "   option are not specified."
	tet_infoline " * The environment variable TEXTDOMAIN is set."
	tet_infoline " "

	rm -rf LTP_1.UTF-8
	mkdir -p ./LTP_1.UTF-8/LC_MESSAGES/
	cp orig.mo ./LTP_1.UTF-8/LC_MESSAGES/test3.mo

	unset LANG TEXTDOMAINDIR TEXTDOMAIN
	TEXTDOMAINDIR=${PWD} ; export TEXTDOMAINDIR
	LANG=LTP_1.UTF-8 ; export LANG

	TEXTDOMAIN=test3 ; export TEXTDOMAIN

	gettext hello > test3.out 2>/dev/null
	diff test3.out test1.crt >/dev/null 2>&1

	if [ $? -ne 0 ] ; then
		tet_infoline "The gettext gets wrong message"
		tet_result FAIL 	# Fail
	else
		tet_result PASS		# success
	fi
	
	unset LANG TEXTDOMAINDIR TEXTDOMAIN
	rm -rf LTP_1.UTF-8
}

tp4()
{
	tet_infoline "With the following situation , verify that this"
	tet_infoline "utility prints msgid."
	tet_infoline " * The operand 'textdomain' is not present."
	tet_infoline " * '-d dommainname' and '--domain=dommainname'"
	tet_infoline "   option are not specified."
	tet_infoline " * The environment variable TEXTDOMAIN is not set."
	tet_infoline " "

	rm -rf LTP_1.UTF-8
	mkdir -p ./LTP_1.UTF-8/LC_MESSAGES/
	cp orig.mo ./LTP_1.UTF-8/LC_MESSAGES/test4.mo

	unset LANG TEXTDOMAINDIR TEXTDOMAIN
	TEXTDOMAINDIR=${PWD} ; export TEXTDOMAINDIR
	LANG=LTP_1.UTF-8 ; export LANG

	gettext hello > test4.out 2>/dev/null
	diff test4.out test4.crt >/dev/null 2>&1

	if [ $? -ne 0 ] ; then
		tet_infoline "The gettext gets wrong message"
		tet_result FAIL 	# Fail
	else
		tet_result PASS		# success
	fi
	
	unset LANG TEXTDOMAINDIR TEXTDOMAIN
	rm -rf LTP_1.UTF-8
}

tp5()
{
	tet_infoline "When a corresponding string with msgid is not found, "
	tet_infoline "verify that this utility prints msgid."
	tet_infoline " "

	rm -rf LTP_1.UTF-8
	mkdir -p ./LTP_1.UTF-8/LC_MESSAGES/
	cp orig.mo ./LTP_1.UTF-8/LC_MESSAGES/test5.mo

	unset LANG TEXTDOMAINDIR TEXTDOMAIN
	TEXTDOMAINDIR=${PWD} ; export TEXTDOMAINDIR
	LANG=LTP_1.UTF-8 ; export LANG

	gettext test5 chao > test5.out 2>/dev/null
	diff test5.out test5.crt >/dev/null 2>&1

	if [ $? -ne 0 ] ; then
		tet_infoline "The gettext gets wrong message"
		tet_result FAIL 	# Fail
	else
		tet_result PASS		# success
	fi
	
	unset LANG TEXTDOMAINDIR TEXTDOMAIN
	rm -rf LTP_1.UTF-8
}

tp6()
{
	tet_infoline "When the environment variable TEXTDOMAINDIR is set,"
	tet_infoline "verify that this utility uses the value of"
	tet_infoline "TEXTTDOMAINDIR as dirname."
	tet_infoline " "

	rm -rf LTP_1.UTF-8
	mkdir -p ./LTP_1.UTF-8/LC_MESSAGES/
	cp orig.mo ./LTP_1.UTF-8/LC_MESSAGES/test6.mo

	unset LANG TEXTDOMAINDIR TEXTDOMAIN
	TEXTDOMAINDIR=${PWD} ; export TEXTDOMAINDIR
	LANG=LTP_1.UTF-8 ; export LANG

	gettext test6 hello > test6.out 2>/dev/null
	diff test6.out test1.crt >/dev/null 2>&1

	if [ $? -ne 0 ] ; then
		tet_infoline "The gettext gets wrong message"
		tet_result FAIL 	# Fail
	else
		tet_result PASS		# success
	fi
	
	unset LANG TEXTDOMAINDIR TEXTDOMAIN
	rm -rf LTP_1.UTF-8
}

tp7()
{
	tet_infoline "When the environment variable TEXTDOMAINDIR is not set,"
	tet_infoline "verify that the dirname is the implementation-defined"
	tet_infoline "default directory."
	tet_infoline " "

	tet_infoline "We cannot know the implementation-dependent default dirname."
	tet_result UNTESTED
}

tp8()
{
	tet_infoline "Verify that the name of the current locale is used as lang."
	tet_infoline " "

	rm -rf LTP_1.UTF-8
	mkdir -p ./LTP_1.UTF-8/LC_MESSAGES/
	cp orig.mo ./LTP_1.UTF-8/LC_MESSAGES/test8.mo

	unset LANG TEXTDOMAINDIR TEXTDOMAIN
	TEXTDOMAINDIR=${PWD} ; export TEXTDOMAINDIR
	LANG=LTP_1.UTF-8 ; export LANG

	gettext test8 hello > test8.out 2>/dev/null
	diff test8.out test1.crt >/dev/null 2>&1

	if [ $? -ne 0 ] ; then
		tet_infoline "The gettext gets wrong message"
		tet_result FAIL 	# Fail
	else
		tet_result PASS		# success
	fi
	
	unset LANG TEXTDOMAINDIR TEXTDOMAIN
	rm -rf LTP_1.UTF-8
}

tp9()
{
	tet_infoline "When '-e' option is specified, verify that this utility "
	tet_infoline 'interprets \\t for tab character.'
	tet_infoline " "

	rm -rf LTP_1.UTF-8
	mkdir -p ./LTP_1.UTF-8/LC_MESSAGES/
	cp esc.mo ./LTP_1.UTF-8/LC_MESSAGES/test9.mo

	unset LANG TEXTDOMAINDIR TEXTDOMAIN
	TEXTDOMAINDIR=${PWD} ; export TEXTDOMAINDIR
	LANG=LTP_1.UTF-8 ; export LANG

	gettext -e test9 'tab\ttest' > test9.out 2>/dev/null
	diff test9.out test9.crt >/dev/null 2>&1

	if [ $? -ne 0 ] ; then
		tet_infoline "The gettext gets wrong message"
		tet_result FAIL 	# Fail
	else
		tet_result PASS		# success
	fi
	
	unset LANG TEXTDOMAINDIR TEXTDOMAIN
	rm -rf LTP_1.UTF-8
}

tp10()
{
	tet_infoline 'Verify that this utility use \\ to print backslash.'
	tet_infoline " "

	rm -rf LTP_1.UTF-8
	mkdir -p ./LTP_1.UTF-8/LC_MESSAGES/
	cp esc.mo ./LTP_1.UTF-8/LC_MESSAGES/test10.mo

	unset LANG TEXTDOMAINDIR TEXTDOMAIN

	gettext "back\\slash" > test10.out 2>/dev/null
	diff test10.out test10.crt >/dev/null 2>&1

	if [ $? -ne 0 ] ; then
		tet_infoline "The gettext prints wrong message"
		tet_result FAIL 	# Fail
	else
		tet_result PASS		# success
	fi
	
	unset LANG TEXTDOMAINDIR TEXTDOMAIN
	rm -rf LTP_1.UTF-8
}

tp11()
{
	tet_infoline "When '-e' option is specified, verify that this utility"
	tet_infoline 'interprets \\n for newline character.'
	tet_infoline " "

	rm -rf LTP_1.UTF-8
	mkdir -p ./LTP_1.UTF-8/LC_MESSAGES/
	cp esc.mo ./LTP_1.UTF-8/LC_MESSAGES/test11.mo

	unset LANG TEXTDOMAINDIR TEXTDOMAIN
	TEXTDOMAINDIR=${PWD} ; export TEXTDOMAINDIR
	LANG=LTP_1.UTF-8 ; export LANG

	gettext -e test11 'newline\n' > test11.out 2>/dev/null
	diff test11.out test11.crt >/dev/null 2>&1

	if [ $? -ne 0 ] ; then
		tet_infoline "The gettext gets wrong message"
		tet_result FAIL 	# Fail
	else
		tet_result PASS		# success
	fi
	
	unset LANG TEXTDOMAINDIR TEXTDOMAIN
	rm -rf LTP_1.UTF-8
}

tp12()
{
	tet_infoline "When '-n' option is specified, verify that this utility"
	tet_infoline "suppress trailing newline."
	tet_infoline " "

	rm -rf LTP_1.UTF-8
	mkdir -p ./LTP_1.UTF-8/LC_MESSAGES/
	cp esc.mo ./LTP_1.UTF-8/LC_MESSAGES/test12.mo

	unset LANG TEXTDOMAINDIR TEXTDOMAIN
	TEXTDOMAINDIR=${PWD} ; export TEXTDOMAINDIR
	TEXTDOMAIN=test12 ; export TEXTDOMAIN
	LANG=LTP_1.UTF-8 ; export LANG

	gettext -s -n -e 'newline\n' > test12.out 2>/dev/null
	diff test12.out test11.crt >/dev/null 2>&1

	if [ $? -ne 0 ] ; then
		tet_infoline "The gettext gets wrong message"
		tet_result FAIL 	# Fail
	else
		tet_result PASS		# success
	fi
	
	unset LANG TEXTDOMAINDIR TEXTDOMAIN
	rm -rf LTP_1.UTF-8
}

tp13()
{
	tet_infoline "When '-s' option is specified, verify that the behavior of"
	tet_infoline "this utility is similar to the behavior of the echo utility"
	tet_infoline "except to translate the message which is found in the"
	tet_infoline "selected catalog."
	tet_infoline " "

	rm -rf LTP_1.UTF-8
	mkdir -p ./LTP_1.UTF-8/LC_MESSAGES/
	cp orig.mo ./LTP_1.UTF-8/LC_MESSAGES/test13.mo

	unset LANG TEXTDOMAINDIR TEXTDOMAIN
	TEXTDOMAINDIR=${PWD} ; export TEXTDOMAINDIR
	LANG=LTP_1.UTF-8 ; export LANG

	TEXTDOMAIN=test13 ; export TEXTDOMAIN

	gettext -s hello か£i > test13.out 2>/dev/null
	diff test13.out test13.crt >/dev/null 2>&1

	if [ $? -ne 0 ] ; then
		tet_infoline "The gettext gets wrong message"
		tet_result FAIL 	# Fail
	else
		tet_result PASS		# success
	fi
	
	unset LANG TEXTDOMAINDIR TEXTDOMAIN
	# rm -rf LTP_1.UTF-8
}

tp14()
{
	tet_infoline "When this utility executed successfully, verify that the"
	tet_infoline "exit value is 0."
	tet_infoline " "

	rm -rf LTP_1.UTF-8
	mkdir -p ./LTP_1.UTF-8/LC_MESSAGES/
	cp orig.mo ./LTP_1.UTF-8/LC_MESSAGES/test14.mo

	unset LANG TEXTDOMAINDIR TEXTDOMAIN
	TEXTDOMAINDIR=${PWD} ; export TEXTDOMAINDIR
	LANG=LTP_1.UTF-8 ; export LANG

	gettext test14 hello >/dev/null 2>&1

	if [ $? -ne 0 ] ; then
		tet_infoline "The exit value is wrong."
		tet_result FAIL 	# Fail
	else
		tet_result PASS		# success
	fi
	
	unset LANG TEXTDOMAINDIR TEXTDOMAIN
	rm -rf LTP_1.UTF-8
}

tp15()
{
	tet_infoline "When an error occured, verify that the exit value is higher"
	tet_infoline "than 0."
	tet_infoline " "

	rm -rf LTP_1.UTF-8
	unset LANG TEXTDOMAINDIR TEXTDOMAIN

	gettext >/dev/null 2>&1

	if [ $? -lt 1 ] ; then
		tet_infoline "The exit value is wrong."
		tet_result FAIL 	# Fail
	else
		tet_result PASS		# success
	fi
}

startup() # startup function
{
	# Unset the environment variable concerned with locale.
	for i in `locale | cut -f 1 -d '='` ; do
	  unset ${i}
	done
	rm -rf LTP_1.UTF-8 *.out
}


cleanup() # clean-up function
{
	rm -rf LTP_1.UTF-8
}

# source common shell functions

. $TET_EXECUTE/LIB/i18nfuncs.sh
. $TET_EXECUTE/LIB/shfuncs.sh
. $TET_EXECUTE/LIB/lsbfuncs.sh

# execute shell test case manager - must be last line
. $TET_ROOT/lib/xpg3sh/tcm.sh
