// Tags: JDK1.0
// Copyright (C) 1998 Cygnus Solutions
// This file is part of Mauve.
// Mauve is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation; either version 2, or (at your option)
// any later version.
// Mauve 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 for more details.
// You should have received a copy of the GNU General Public License
// along with Mauve; see the file COPYING. If not, write to
// the Free Software Foundation, 59 Temple Place - Suite 330,
// Boston, MA 02111-1307, USA. */
package gnu.testlet.wonka.lang.String;
import gnu.testlet.Testlet;
import gnu.testlet.TestHarness;
import java.io.UnsupportedEncodingException;
public class decode implements Testlet
{
public void test (TestHarness harness)
{
char[] cstr = { 'a', 'b', 'c', '\t', 'A', 'B', 'C', ' ', '1', '2', '3' };
byte[] bstr = new byte [cstr.length];
for (int i = 0; i < cstr.length; ++i)
bstr[i] = (byte) cstr[i];
String a = new String(bstr);
String a_utf8 = "";
String b = new String(bstr, 3, 3);
String b_utf8 = "";
String c = "";
String d = "";
try
{
a_utf8 = new String(bstr, "UTF-8");
}
catch (UnsupportedEncodingException ex)
{
}
try
{
b_utf8 = new String(bstr, 3, 3, "UTF-8");
}
catch (UnsupportedEncodingException ex)
{
}
try
{
c = new String(bstr, "8859_1");
}
catch (UnsupportedEncodingException ex)
{
}
try
{
d = new String(bstr, 3, 3, "8859_1");
}
catch (UnsupportedEncodingException ex)
{
}
harness.check (a, "abc ABC 123");
harness.check (a_utf8, "abc ABC 123");
harness.check (b, " AB");
harness.check (b_utf8, " AB");
harness.check (c, "abc ABC 123");
harness.check (d, " AB");
boolean ok = false;
try
{
c = new String(bstr, "foobar8859_1");
}
catch (UnsupportedEncodingException ex)
{
ok = true;
}
harness.check (ok);
ok = false;
try
{
d = new String(bstr, 3, 3, "foobar8859_1");
}
catch (UnsupportedEncodingException ex)
{
ok = true;
}
harness.check (ok, "iiep");
harness.checkPoint("UTF16");
harness.check (String.copyValueOf(cstr), "abc ABC 123");
harness.check (String.copyValueOf(cstr, 3, 3), " AB");
byte[] leWithBOM = new byte[]
{(byte)0xFF, (byte)0xFE, (byte)'a', (byte)0x00};
byte[] leWithoutBOM = new byte[]
{(byte)'a', (byte)0x00};
byte[] beWithBOM = new byte[]
{(byte)0xFE, (byte)0xFF, (byte)0x00, (byte)'a'};
byte[] beWithoutBOM = new byte[]
{(byte)0x00, (byte)'a'};
// UTF-16: Big endian assumed without BOM
harness.check(decodeTest(leWithBOM, "UTF-16", "a"));
harness.check(!decodeTest(leWithoutBOM, "UTF-16", "a"));
harness.check(decodeTest(beWithBOM, "UTF-16", "a"));
harness.check(decodeTest(beWithoutBOM, "UTF-16", "a"));
// UTF-16LE: BOM should not be used
harness.check(!decodeTest(leWithBOM, "UTF-16LE", "a"));
harness.check(decodeTest(leWithoutBOM, "UTF-16LE", "a"));
harness.check(!decodeTest(beWithBOM, "UTF-16LE", "a"));
harness.check(!decodeTest(beWithoutBOM, "UTF-16LE", "a"));
// UTF-16BE: BOM should not be used
harness.check(!decodeTest(leWithBOM, "UTF-16BE", "a"));
harness.check(!decodeTest(leWithoutBOM, "UTF-16BE", "a"));
harness.check(!decodeTest(beWithBOM, "UTF-16BE", "a"));
harness.check(decodeTest(beWithoutBOM, "UTF-16BE", "a"));
// UnicodeLittle: Little endian assumed without BOM
harness.check(decodeTest(leWithBOM, "UnicodeLittle", "a"), "UnicodeLittle - 1");
harness.check(decodeTest(leWithoutBOM, "UnicodeLittle", "a"), "UnicodeLittle - 2");
harness.check(!decodeTest(beWithBOM, "UnicodeLittle", "a"), "UnicodeLittle - 3");
harness.check(!decodeTest(beWithoutBOM, "UnicodeLittle", "a"), "UnicodeLittle - 4");
}
public boolean decodeTest (byte[] bytes, String encoding, String expected)
{
try
{
String s = new String(bytes, encoding);
return s.equals(expected);
}
catch (UnsupportedEncodingException ex)
{
return false;
}
}
}