package net.varkhan.base.conversion.character; import junit.framework.TestCase; import java.io.ByteArrayOutputStream; import java.nio.ByteBuffer; import java.nio.charset.Charset; public class URLEncoderTest extends TestCase { public void testEncodeStr() throws Exception { verifyEncode("hash%23t4g%2Fs%25%2C","hash#t4g/s%,"); verifyEncode("sefak%C3%B6y%20cekmece", "sefaköy cekmece"); verifyEncode("elaz%C4%B1%C4%9F", "elazığ"); verifyEncode("%D8%AF%D8%A8%D9%8A", "دبي"); verifyEncode("%D8%A7%D9%84%D8%B4%D8%B1%D9%82%D9%8A%D9%87", "الشرقيه"); verifyEncode("b%C3%BCy%C3%BCkdere%20mahallesi", "büyükdere mahallesi"); verifyEncode("%C3%87orlu", "Çorlu"); verifyEncode("ni%C4%9Fde", "niğde"); verifyEncode("%E4%B8%80", "\u4e00"); verifyEncode("%E4%BD%A0%E5%A5%BD", "你好"); verifyEncode("%EF%AC%85", "ſt"); verifyEncode("%EE%90%A5", ""); } private static void verifyEncode(String expected, String encode) throws Exception { assertEquals("_encode(\""+encode+"\")",expected, URLEncoder._encode(encode, new StringBuilder()).toString()); URLEncoder<Object> enc = new URLEncoder<Object>(); assertEquals("encode(\""+encode+"\")",expected,new String(enc.encode(encode,null),Charset.forName("US-ASCII"))); ByteArrayOutputStream out = new ByteArrayOutputStream(); assertEquals("encode(\""+encode+"\",OutputStream).length()",expected.length(), enc.encode(encode, out, null)); assertEquals("encode(\""+encode+"\",OutputStream).toByteArray()",expected,new String(out.toByteArray(),Charset.forName("US-ASCII"))); ByteBuffer buf = ByteBuffer.allocate(4*expected.length()); assertEquals("encode(\""+encode+"\",ByteBuffer).length()",expected.length(), enc.encode(encode, buf, null)); assertEquals("encode(\""+encode+"\",ByteBuffer).array()",expected,new String(buf.array(),buf.arrayOffset(),buf.arrayOffset()+buf.position(),Charset.forName("US-ASCII"))); } }