jdk/test/sun/tools/native2ascii/Native2AsciiTests.sh
changeset 2 90ce3da70b43
child 4663 dfea6ffdb0dc
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/sun/tools/native2ascii/Native2AsciiTests.sh	Sat Dec 01 00:00:00 2007 +0000
@@ -0,0 +1,118 @@
+#! /bin/sh -e
+
+#
+# Copyright 2002-2005 Sun Microsystems, Inc.  All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+# @test
+# @bug 4630463 4630971 4636448 4701617 4721296 4710890 6247817
+# @summary Tests miscellaneous native2ascii bugfixes and regressions
+
+
+if [ "${TESTSRC}" = "" ]; then TESTSRC=.; fi
+if [ "${TESTJAVA}" = "" ]; then TESTJAVA=$1; shift; fi
+
+case `uname -s` in
+  Windows*) OS=Windows;;
+  SunOS|Linux) OS=Unix;;
+esac
+
+N2A=$TESTJAVA/bin/native2ascii
+
+check() {
+  bug=$1; shift
+  expected=$1; shift
+  out=$1; shift
+
+  # Strip carriage returns from output when comparing with n2a test output
+  # on win32 systems
+  if [ OS = Windows ]; then
+     tr -d '\015' <$out >$out.1
+  else
+     cp $out $out.1
+  fi
+  if (set -x; diff -c $expected $out.1); then
+    echo "$bug passed"
+  else
+    echo "$bug failed"
+    exit 1
+  fi
+}
+
+# Check that native2ascii -reverse with an ISO-8859-1 encoded file works
+# as documented. 4630463 fixes a bug in the ISO-8859-1 encoder which
+# prevented encoding of valid ISO-8859-1 chars > 0x7f
+
+rm -f x.*
+$N2A -reverse -encoding ISO-8859-1 $TESTSRC/A2N_4630463 x.out
+check 4630463 $TESTSRC/A2N_4630463.expected x.out
+
+# Take file encoded in ISO-8859-1 with range of chars ,  0x7f < c < 0xff
+# invoke native2ascii with input filename and output filename identical
+# Ensure that output file is as expected by comparing to expected output.
+# 4636448 Fixed bug whereby output file was clobbered if infile and outfile
+# referred to same filename.  This bug only applies to Solaris/Linux, since on
+# Windows you can't write to a file that's open for reading.
+
+if [ $OS = Unix ]; then
+  rm -f x.*
+  cp $TESTSRC/N2A_4636448 x.in
+  chmod +w x.in
+  ls -l x.in
+  if $N2A -encoding ISO-8859-1 x.in x.in; then
+    check 4636448 $TESTSRC/N2A_4636448.expected x.in
+  fi
+fi
+
+# Ensure that files containing backslashes adjacent to EOF don't
+# hang native2ascii -reverse
+
+rm -f x.*
+$N2A -reverse -encoding ISO-8859-1 $TESTSRC/A2N_4630971 x.out
+check 4630971 $TESTSRC/A2N_4630971 x.out
+
+# Check reverse (char -> native) encoding of Japanese Halfwidth
+# Katakana characters for MS932 (default WinNT Japanese encoding)
+# Regression test for bugID 4701617
+
+rm -f x.*
+$N2A -reverse -encoding MS932 $TESTSRC/A2N_4701617 x.out
+check 4701617 $TESTSRC/A2N_4701617.expected x.out
+
+# for win32 only ensure when output file pre-exists that
+# native2ascii tool will simply overwrite with the expected
+# output file (fixed bugID 4710890)
+
+if [ OS = Windows ]; then
+   rm -f x.*
+   cp $TESTSRC/test3 x.in
+   chmod a+x x.in
+   ls -l x.in
+   touch x.out
+   $N2A -encoding ISO-8859-1 x.in x.out
+   check 4710890 $TESTSRC/test3 x.out
+fi
+
+rm -rf x.*
+$N2A -reverse $TESTSRC/A2N_6247817 x.out
+check 4701617 $TESTSRC/A2N_6247817 x.out
+