| /******************************************************************************* |
| * Copyright (c) 2004 IBM Corporation and others. |
| * All rights reserved. This program and the accompanying materials |
| * are made available under the terms of the Eclipse Public License v1.0 |
| * which accompanies this distribution, and is available at |
| * http://www.eclipse.org/legal/epl-v10.html |
| * |
| * Contributors: |
| * IBM Corporation - initial API and implementation |
| *******************************************************************************/ |
| package org.eclipse.wst.xml.tests.encoding.write; |
| |
| import java.io.ByteArrayOutputStream; |
| import java.io.IOException; |
| import java.io.UnsupportedEncodingException; |
| |
| import junit.framework.TestCase; |
| |
| import org.eclipse.core.runtime.CoreException; |
| import org.eclipse.wst.common.encoding.CodedStreamCreator; |
| import org.eclipse.wst.common.encoding.EncodingRule; |
| |
| public class TestCodedWrite extends TestCase { |
| /** A table of hex digits */ |
| private static final char[] hexDigit = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'}; |
| private static StringBuffer sBuff = new StringBuffer(2); |
| |
| private static String byteToHex(byte bytechar) { |
| sBuff.setLength(0); |
| int low = bytechar & 0xF; |
| int hi = (bytechar >> 4) & 0xF; |
| sBuff.append(toHex(hi)); |
| sBuff.append(toHex(low)); |
| return sBuff.toString(); |
| } |
| |
| /** |
| * Convert a nibble to a hex character |
| * |
| * @param nibble |
| * the nibble to convert. |
| */ |
| private static char toHex(int nibble) { |
| return hexDigit[(nibble & 0xF)]; |
| } |
| |
| private boolean DEBUG = false; |
| |
| /** |
| * |
| */ |
| public TestCodedWrite() { |
| super(); |
| } |
| |
| /** |
| * @param name |
| */ |
| public TestCodedWrite(String name) { |
| super(name); |
| } |
| |
| public void testSimple() throws UnsupportedEncodingException, CoreException, IOException { |
| String jsp = "<%@ page contentType=\"text/html; charset=ISO-8859-3\"%>"; |
| CodedStreamCreator codedStreamCreator = new CodedStreamCreator(); |
| codedStreamCreator.set("dummy.jsp", jsp); |
| ByteArrayOutputStream outputStream = codedStreamCreator.getCodedByteArrayOutputStream(EncodingRule.CONTENT_BASED); |
| if (DEBUG) { |
| debugPrint("testSimple", jsp, "ISO-8859-3", outputStream); |
| } |
| assertNotNull(outputStream); |
| |
| } |
| |
| private void debugPrint(String testname, String originalString, String encoding, ByteArrayOutputStream outputStream) throws UnsupportedEncodingException { |
| System.out.println(); |
| System.out.println(testname); |
| byte[] bytes = outputStream.toByteArray(); |
| for (int i = 0; i < bytes.length; i++) { |
| System.out.print(byteToHex(bytes[i])); |
| } |
| System.out.println(); |
| if (encoding == null) { |
| System.out.println(new String(bytes)); |
| |
| } |
| else { |
| System.out.println(new String(bytes, encoding)); |
| } |
| } |
| |
| public void testSimpleUTF16BE() throws UnsupportedEncodingException, CoreException, IOException { |
| String jsp = "<%@ page contentType=\"text/html; charset=UTF-16BE\"%>"; |
| CodedStreamCreator codedStreamCreator = new CodedStreamCreator(); |
| codedStreamCreator.set("dummy.jsp", jsp); |
| ByteArrayOutputStream outputStream = codedStreamCreator.getCodedByteArrayOutputStream(EncodingRule.CONTENT_BASED); |
| if (DEBUG) { |
| debugPrint("testSimpleUTF16BE", jsp, "UTF-16BE", outputStream); |
| } |
| assertNotNull(outputStream); |
| |
| } |
| |
| public void testSimpler() throws UnsupportedEncodingException, CoreException, IOException { |
| CodedStreamCreator codedStreamCreator = new CodedStreamCreator(); |
| String xmlString = "<?xml version=\"1.0\" encoding=\"UTF-16\"?><tag>test text</tag>"; |
| codedStreamCreator.set("dummy.xml", xmlString); |
| ByteArrayOutputStream outputStream = codedStreamCreator.getCodedByteArrayOutputStream(EncodingRule.CONTENT_BASED); |
| if (DEBUG) { |
| debugPrint("testSimpler", xmlString, "UTF-16", outputStream); |
| } |
| assertNotNull(outputStream); |
| |
| } |
| |
| public void testSimplest() throws UnsupportedEncodingException, CoreException, IOException { |
| CodedStreamCreator codedStreamCreator = new CodedStreamCreator(); |
| String text = "test text"; |
| codedStreamCreator.set("dummy.xml", text); |
| ByteArrayOutputStream outputStream = codedStreamCreator.getCodedByteArrayOutputStream(EncodingRule.CONTENT_BASED); |
| if (DEBUG) { |
| debugPrint("testSimplest", text, null, outputStream); |
| } |
| assertNotNull(outputStream); |
| |
| } |
| } |