/src/test/java/com/alibaba/json/bvt/parser/DefaultExtJSONParser_parseArray.java

https://github.com/alibaba/fastjson · Java · 290 lines · 251 code · 39 blank · 0 comment · 0 complexity · 7e5b4bfd3454078b0d31d3b5cc6547f8 MD5 · raw file

  1. package com.alibaba.json.bvt.parser;
  2. import java.lang.reflect.Type;
  3. import java.math.BigDecimal;
  4. import java.util.ArrayList;
  5. import java.util.Date;
  6. import java.util.List;
  7. import java.util.Locale;
  8. import java.util.TimeZone;
  9. import org.junit.Assert;
  10. import junit.framework.TestCase;
  11. import com.alibaba.fastjson.JSON;
  12. import com.alibaba.fastjson.JSONObject;
  13. import com.alibaba.fastjson.TypeReference;
  14. import com.alibaba.fastjson.parser.DefaultJSONParser;
  15. import com.alibaba.fastjson.parser.Feature;
  16. import com.alibaba.fastjson.parser.JSONToken;
  17. public class DefaultExtJSONParser_parseArray extends TestCase {
  18. public void test_0() throws Exception {
  19. DefaultJSONParser parser = new DefaultJSONParser("[1,2,,,3]");
  20. List list = new ArrayList();
  21. parser.parseArray(int.class, list);
  22. Assert.assertEquals("[1, 2, 3]", list.toString());
  23. }
  24. public void test_1() throws Exception {
  25. DefaultJSONParser parser = new DefaultJSONParser("[1,2,3]");
  26. parser.config(Feature.AllowArbitraryCommas, true);
  27. List list = new ArrayList();
  28. parser.parseArray(int.class, list);
  29. Assert.assertEquals("[1, 2, 3]", list.toString());
  30. }
  31. public void test_2() throws Exception {
  32. DefaultJSONParser parser = new DefaultJSONParser("['1','2','3']");
  33. parser.config(Feature.AllowArbitraryCommas, true);
  34. List list = new ArrayList();
  35. parser.parseArray(String.class, list);
  36. Assert.assertEquals("[1, 2, 3]", list.toString());
  37. Assert.assertEquals("1", list.get(0));
  38. }
  39. public void test_3() throws Exception {
  40. DefaultJSONParser parser = new DefaultJSONParser("[1,2,3]");
  41. parser.config(Feature.AllowArbitraryCommas, true);
  42. List list = new ArrayList();
  43. parser.parseArray(BigDecimal.class, list);
  44. Assert.assertEquals("[1, 2, 3]", list.toString());
  45. Assert.assertEquals(new BigDecimal("1"), list.get(0));
  46. }
  47. public void test_4() throws Exception {
  48. DefaultJSONParser parser = new DefaultJSONParser("[1,2,3,null]");
  49. parser.config(Feature.AllowArbitraryCommas, true);
  50. List list = new ArrayList();
  51. parser.parseArray(BigDecimal.class, list);
  52. Assert.assertEquals("[1, 2, 3, null]", list.toString());
  53. Assert.assertEquals(new BigDecimal("1"), list.get(0));
  54. }
  55. public void test_5() throws Exception {
  56. DefaultJSONParser parser = new DefaultJSONParser("[1,2,3,null]");
  57. Object[] array = parser.parseArray(new Type[] { Integer.class, BigDecimal.class, Long.class, String.class });
  58. Assert.assertEquals(new Integer(1), array[0]);
  59. Assert.assertEquals(new BigDecimal("2"), array[1]);
  60. Assert.assertEquals(new Long(3), array[2]);
  61. Assert.assertEquals(null, array[3]);
  62. }
  63. public void test_error() throws Exception {
  64. DefaultJSONParser parser = new DefaultJSONParser("{}");
  65. Exception error = null;
  66. try {
  67. parser.parseArray(new ArrayList());
  68. } catch (Exception ex) {
  69. error = ex;
  70. }
  71. Assert.assertNotNull(error);
  72. }
  73. public void test_6() throws Exception {
  74. DefaultJSONParser parser = new DefaultJSONParser("[1.2]");
  75. parser.config(Feature.UseBigDecimal, false);
  76. ArrayList list = new ArrayList();
  77. parser.parseArray(list);
  78. Assert.assertEquals(Double.valueOf(1.2), list.get(0));
  79. }
  80. public void test_7() throws Exception {
  81. JSON.defaultTimeZone = TimeZone.getTimeZone("Asia/Shanghai");
  82. DefaultJSONParser parser = new DefaultJSONParser("[\"2011-01-09T13:49:53.254\", \"xxx\", true, false, null, {}]");
  83. parser.config(Feature.AllowISO8601DateFormat, true);
  84. ArrayList list = new ArrayList();
  85. parser.parseArray(list);
  86. Assert.assertEquals(new Date(1294552193254L), list.get(0));
  87. Assert.assertEquals("xxx", list.get(1));
  88. Assert.assertEquals(Boolean.TRUE, list.get(2));
  89. Assert.assertEquals(Boolean.FALSE, list.get(3));
  90. Assert.assertEquals(null, list.get(4));
  91. Assert.assertEquals(new JSONObject(), list.get(5));
  92. }
  93. public void test_8() throws Exception {
  94. JSON.defaultTimeZone = TimeZone.getTimeZone("Asia/Shanghai");
  95. DefaultJSONParser parser = new DefaultJSONParser("\"2011-01-09T13:49:53.254\"");
  96. parser.config(Feature.AllowISO8601DateFormat, true);
  97. Object value = parser.parse();
  98. Assert.assertEquals(new Date(1294552193254L), value);
  99. }
  100. public void test_9() throws Exception {
  101. DefaultJSONParser parser = new DefaultJSONParser("");
  102. parser.config(Feature.AllowISO8601DateFormat, true);
  103. Object value = parser.parse();
  104. Assert.assertEquals(null, value);
  105. }
  106. public void test_error_2() throws Exception {
  107. DefaultJSONParser parser = new DefaultJSONParser("{}");
  108. Exception error = null;
  109. try {
  110. parser.accept(JSONToken.NULL);
  111. } catch (Exception ex) {
  112. error = ex;
  113. }
  114. Assert.assertNotNull(error);
  115. }
  116. public void test_10() throws Exception {
  117. DefaultJSONParser parser = new DefaultJSONParser("[1,2,3]");
  118. Object[] array = parser.parseArray(new Type[] { Integer[].class });
  119. Integer[] values = (Integer[]) array[0];
  120. Assert.assertEquals(new Integer(1), values[0]);
  121. Assert.assertEquals(new Integer(2), values[1]);
  122. Assert.assertEquals(new Integer(3), values[2]);
  123. }
  124. public void test_11() throws Exception {
  125. DefaultJSONParser parser = new DefaultJSONParser("[1]");
  126. Object[] array = parser.parseArray(new Type[] { String.class });
  127. Assert.assertEquals("1", array[0]);
  128. }
  129. public void test_12() throws Exception {
  130. DefaultJSONParser parser = new DefaultJSONParser("['1']");
  131. Object[] array = parser.parseArray(new Type[] { int.class });
  132. Assert.assertEquals(new Integer(1), array[0]);
  133. }
  134. public void test_13() throws Exception {
  135. DefaultJSONParser parser = new DefaultJSONParser("['1']");
  136. Object[] array = parser.parseArray(new Type[] { Integer.class });
  137. Assert.assertEquals(new Integer(1), array[0]);
  138. }
  139. public void test_14() throws Exception {
  140. DefaultJSONParser parser = new DefaultJSONParser("[]");
  141. Object[] array = parser.parseArray(new Type[] {});
  142. Assert.assertEquals(0, array.length);
  143. }
  144. public void test_15() throws Exception {
  145. DefaultJSONParser parser = new DefaultJSONParser("[1,null]");
  146. ArrayList list = new ArrayList();
  147. parser.config(Feature.AllowISO8601DateFormat, false);
  148. parser.parseArray(String.class, list);
  149. Assert.assertEquals("1", list.get(0));
  150. Assert.assertEquals(null, list.get(1));
  151. }
  152. public void test_16() throws Exception {
  153. DefaultJSONParser parser = new DefaultJSONParser("[[1]]");
  154. parser.config(Feature.AllowISO8601DateFormat, false);
  155. Object[] array = parser.parseArray(new Type[] { new TypeReference<List<Integer>>() {
  156. }.getType() });
  157. Assert.assertEquals(new Integer(1), ((List<Integer>) (array[0])).get(0));
  158. }
  159. public void test_17() throws Exception {
  160. DefaultJSONParser parser = new DefaultJSONParser("[]");
  161. Object[] array = parser.parseArray(new Type[] { Integer[].class });
  162. Integer[] values = (Integer[]) array[0];
  163. Assert.assertEquals(0, values.length);
  164. }
  165. public void test_18() throws Exception {
  166. DefaultJSONParser parser = new DefaultJSONParser("null");
  167. parser.config(Feature.AllowISO8601DateFormat, false);
  168. List<Integer> list = (List<Integer>) parser.parseArrayWithType(new TypeReference<List<Integer>>() {
  169. }.getType());
  170. Assert.assertEquals(null, list);
  171. }
  172. public void test_error_var() throws Exception {
  173. DefaultJSONParser parser = new DefaultJSONParser("[1,2,null }");
  174. parser.config(Feature.AllowISO8601DateFormat, false);
  175. Exception error = null;
  176. try {
  177. Object[] array = parser.parseArray(new Type[] { Integer[].class });
  178. } catch (Exception ex) {
  179. error = ex;
  180. }
  181. Assert.assertNotNull(error);
  182. }
  183. public void test_error_3() throws Exception {
  184. DefaultJSONParser parser = new DefaultJSONParser("[1,null }");
  185. ArrayList list = new ArrayList();
  186. parser.config(Feature.AllowISO8601DateFormat, false);
  187. Exception error = null;
  188. try {
  189. parser.parseArray(String.class, list);
  190. } catch (Exception ex) {
  191. error = ex;
  192. }
  193. Assert.assertNotNull(error);
  194. }
  195. public void test_error_4() throws Exception {
  196. DefaultJSONParser parser = new DefaultJSONParser("[1,null }");
  197. parser.config(Feature.AllowISO8601DateFormat, false);
  198. Exception error = null;
  199. try {
  200. parser.parseArray(new Type[] { String.class });
  201. } catch (Exception ex) {
  202. error = ex;
  203. }
  204. Assert.assertNotNull(error);
  205. }
  206. public void test_error_5() throws Exception {
  207. DefaultJSONParser parser = new DefaultJSONParser("[1,null }");
  208. ArrayList list = new ArrayList();
  209. parser.config(Feature.AllowISO8601DateFormat, false);
  210. Exception error = null;
  211. try {
  212. parser.parseArray(String.class, list);
  213. } catch (Exception ex) {
  214. error = ex;
  215. }
  216. Assert.assertNotNull(error);
  217. }
  218. public void test_error_6() throws Exception {
  219. DefaultJSONParser parser = new DefaultJSONParser("{1,null }");
  220. parser.config(Feature.AllowISO8601DateFormat, false);
  221. Exception error = null;
  222. try {
  223. parser.parseArray(new Type[] { String.class });
  224. } catch (Exception ex) {
  225. error = ex;
  226. }
  227. Assert.assertNotNull(error);
  228. }
  229. public void test_error_7() throws Exception {
  230. DefaultJSONParser parser = new DefaultJSONParser("{1}");
  231. parser.config(Feature.AllowISO8601DateFormat, false);
  232. Exception error = null;
  233. try {
  234. parser.parseArray(new Type[] {});
  235. } catch (Exception ex) {
  236. error = ex;
  237. }
  238. Assert.assertNotNull(error);
  239. }
  240. public void test_error_8() throws Exception {
  241. DefaultJSONParser parser = new DefaultJSONParser("[1,2,3 4]");
  242. parser.config(Feature.AllowISO8601DateFormat, false);
  243. Exception error = null;
  244. try {
  245. parser.parseArray(new Type[] { Integer.class });
  246. } catch (Exception ex) {
  247. error = ex;
  248. }
  249. Assert.assertNotNull(error);
  250. }
  251. }