package com.alibaba.json.bvt.bug; import org.junit.Assert; import junit.framework.TestCase; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.serializer.SerializerFeature; public class Bug_for_ascii_0_31 extends TestCase { public void test_0() throws Exception { for (int i = 0; i < 32; ++i) { StringBuilder buf = new StringBuilder(); char ch = (char) i; buf.append(ch); String text = JSON.toJSONString(buf.toString(), SerializerFeature.BrowserCompatible); switch (ch) { case '"': Assert.assertEquals("\"\\\"\"", text); break; case '/': Assert.assertEquals("\"\\/\"", text); break; case '\\': Assert.assertEquals("\"\\\\\"", text); break; case '\b': Assert.assertEquals("\"\\b\"", text); break; case '\f': Assert.assertEquals("\"\\f\"", text); break; case '\n': Assert.assertEquals("\"\\n\"", text); break; case '\r': Assert.assertEquals("\"\\r\"", text); break; case '\t': Assert.assertEquals("\"\\t\"", text); break; default: if (i < 16) { Assert.assertEquals("\"\\u000" + Integer.toHexString(i).toUpperCase() + "\"", text); } else { Assert.assertEquals("\"\\u00" + Integer.toHexString(i).toUpperCase() + "\"", text); } break; } VO vo = new VO(); vo.setContent(buf.toString()); String voText = JSON.toJSONString(vo, SerializerFeature.BrowserCompatible); switch (ch) { case '"': Assert.assertEquals("{\"content\":\"\\\"\"}", voText); break; case '/': Assert.assertEquals("{\"content\":\"\\/\"}", voText); break; case '\\': Assert.assertEquals("{\"content\":\"\\\\\"}", voText); break; case '\b': Assert.assertEquals("{\"content\":\"\\b\"}", voText); break; case '\f': Assert.assertEquals("{\"content\":\"\\f\"}", voText); break; case '\n': Assert.assertEquals("{\"content\":\"\\n\"}", voText); break; case '\r': Assert.assertEquals("{\"content\":\"\\r\"}", voText); break; case '\t': Assert.assertEquals("{\"content\":\"\\t\"}", voText); break; default: if (i < 16) { Assert.assertEquals("{\"content\":\"\\u000" + Integer.toHexString(i).toUpperCase() + "\"}", voText); } else { Assert.assertEquals("{\"content\":\"\\u00" + Integer.toHexString(i).toUpperCase() + "\"}", voText); } break; } } } public static class VO { private String content; public String getContent() { return content; } public void setContent(String content) { this.content = content; } } }