/src/test/java/com/alibaba/json/bvt/bug/Bug_for_ascii_0_31.java
https://github.com/alibaba/fastjson · Java · 110 lines · 98 code · 12 blank · 0 comment · 4 complexity · 2a18bb9dd1dd76d468e1c958547efb49 MD5 · raw file
- 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;
- }
- }
- }