package org.marketcetera.util.unicode; import org.apache.commons.lang.ArrayUtils; import org.apache.commons.lang.CharEncoding; import org.junit.Test; import org.marketcetera.util.test.TestCaseBase; import static org.junit.Assert.*; import static org.marketcetera.util.test.UnicodeData.*; import static org.marketcetera.util.unicode.UnicodeCharset.*; /** * @author tlerios@marketcetera.com * @since 0.6.0 * @version $Id: UnicodeCharsetTest.java 16154 2012-07-14 16:34:05Z colin $ */ /* $License$ */ public class UnicodeCharsetTest extends TestCaseBase { private static void singlePrefix (UnicodeCharset charset, String name, byte[] dataIn, byte[] dataOut) throws Exception { assertEquals(name,charset.getName()); assertTrue(charset.isSupported()); charset.assertSupported(); assertNull(charset.decode(null)); assertNull(charset.decode(null,0,0)); assertNull(charset.encode(null)); assertEquals(COMBO,charset.decode(dataIn)); byte[] inEx=ArrayUtils.addAll (new byte[] {(byte)0x00,(byte)0x01},dataIn); inEx=ArrayUtils.addAll (inEx,new byte[] {(byte)0x00,(byte)0x01}); assertEquals(COMBO,charset.decode(inEx,2,inEx.length-4)); assertArrayEquals(dataOut,charset.encode(COMBO)); } private static void single (UnicodeCharset charset, String name, byte[] data) throws Exception { singlePrefix(charset,name,data,data); } @Test public void utf8() throws Exception { single(UTF8,CharEncoding.UTF_8,COMBO_UTF8); } @Test public void utf16() throws Exception { single(UTF16BE,CharEncoding.UTF_16BE,COMBO_UTF16BE); single(UTF16LE,CharEncoding.UTF_16LE,COMBO_UTF16LE); byte[] dataOut=ArrayUtils.addAll (Signature.UTF16BE.getMark(),COMBO_UTF16BE); singlePrefix (UTF16,CharEncoding.UTF_16,COMBO_UTF16BE,dataOut); singlePrefix (UTF16,CharEncoding.UTF_16,ArrayUtils.addAll (Signature.UTF16BE.getMark(),COMBO_UTF16BE),dataOut); singlePrefix (UTF16,CharEncoding.UTF_16,ArrayUtils.addAll (Signature.UTF16LE.getMark(),COMBO_UTF16LE),dataOut); } @Test public void utf32() throws Exception { single(UTF32BE,"UTF-32BE",COMBO_UTF32BE); single(UTF32LE,"UTF-32LE",COMBO_UTF32LE); singlePrefix (UTF32,"UTF-32",COMBO_UTF32BE,COMBO_UTF32BE); singlePrefix (UTF32,"UTF-32",ArrayUtils.addAll (Signature.UTF32BE.getMark(),COMBO_UTF32BE), COMBO_UTF32BE); singlePrefix (UTF32,"UTF-32",ArrayUtils.addAll (Signature.UTF32LE.getMark(),COMBO_UTF32LE), COMBO_UTF32BE); } }