/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

  1. package com.alibaba.json.bvt.bug;
  2. import org.junit.Assert;
  3. import junit.framework.TestCase;
  4. import com.alibaba.fastjson.JSON;
  5. import com.alibaba.fastjson.serializer.SerializerFeature;
  6. public class Bug_for_ascii_0_31 extends TestCase {
  7. public void test_0() throws Exception {
  8. for (int i = 0; i < 32; ++i) {
  9. StringBuilder buf = new StringBuilder();
  10. char ch = (char) i;
  11. buf.append(ch);
  12. String text = JSON.toJSONString(buf.toString(), SerializerFeature.BrowserCompatible);
  13. switch (ch) {
  14. case '"':
  15. Assert.assertEquals("\"\\\"\"", text);
  16. break;
  17. case '/':
  18. Assert.assertEquals("\"\\/\"", text);
  19. break;
  20. case '\\':
  21. Assert.assertEquals("\"\\\\\"", text);
  22. break;
  23. case '\b':
  24. Assert.assertEquals("\"\\b\"", text);
  25. break;
  26. case '\f':
  27. Assert.assertEquals("\"\\f\"", text);
  28. break;
  29. case '\n':
  30. Assert.assertEquals("\"\\n\"", text);
  31. break;
  32. case '\r':
  33. Assert.assertEquals("\"\\r\"", text);
  34. break;
  35. case '\t':
  36. Assert.assertEquals("\"\\t\"", text);
  37. break;
  38. default:
  39. if (i < 16) {
  40. Assert.assertEquals("\"\\u000" + Integer.toHexString(i).toUpperCase() + "\"", text);
  41. } else {
  42. Assert.assertEquals("\"\\u00" + Integer.toHexString(i).toUpperCase() + "\"", text);
  43. }
  44. break;
  45. }
  46. VO vo = new VO();
  47. vo.setContent(buf.toString());
  48. String voText = JSON.toJSONString(vo, SerializerFeature.BrowserCompatible);
  49. switch (ch) {
  50. case '"':
  51. Assert.assertEquals("{\"content\":\"\\\"\"}", voText);
  52. break;
  53. case '/':
  54. Assert.assertEquals("{\"content\":\"\\/\"}", voText);
  55. break;
  56. case '\\':
  57. Assert.assertEquals("{\"content\":\"\\\\\"}", voText);
  58. break;
  59. case '\b':
  60. Assert.assertEquals("{\"content\":\"\\b\"}", voText);
  61. break;
  62. case '\f':
  63. Assert.assertEquals("{\"content\":\"\\f\"}", voText);
  64. break;
  65. case '\n':
  66. Assert.assertEquals("{\"content\":\"\\n\"}", voText);
  67. break;
  68. case '\r':
  69. Assert.assertEquals("{\"content\":\"\\r\"}", voText);
  70. break;
  71. case '\t':
  72. Assert.assertEquals("{\"content\":\"\\t\"}", voText);
  73. break;
  74. default:
  75. if (i < 16) {
  76. Assert.assertEquals("{\"content\":\"\\u000" + Integer.toHexString(i).toUpperCase() + "\"}",
  77. voText);
  78. } else {
  79. Assert.assertEquals("{\"content\":\"\\u00" + Integer.toHexString(i).toUpperCase() + "\"}",
  80. voText);
  81. }
  82. break;
  83. }
  84. }
  85. }
  86. public static class VO {
  87. private String content;
  88. public String getContent() {
  89. return content;
  90. }
  91. public void setContent(String content) {
  92. this.content = content;
  93. }
  94. }
  95. }