From fb32b59a7ea90ef2e8ed63a83c6ff9e5e5dd07e4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=AB=98=E9=93=81?= Date: Mon, 25 Apr 2016 22:12:17 +0800 Subject: [PATCH] add testcase & bug fixed for JSONReadercanner --- .../fastjson/parser/JSONReaderScanner.java | 5 +- .../bvt/parser/error/JSONReaderError.java | 88 +++++++++++++++++++ 2 files changed, 91 insertions(+), 2 deletions(-) create mode 100644 src/test/java/com/alibaba/json/bvt/parser/error/JSONReaderError.java diff --git a/src/main/java/com/alibaba/fastjson/parser/JSONReaderScanner.java b/src/main/java/com/alibaba/fastjson/parser/JSONReaderScanner.java index d8c0d78176..89f72f0748 100644 --- a/src/main/java/com/alibaba/fastjson/parser/JSONReaderScanner.java +++ b/src/main/java/com/alibaba/fastjson/parser/JSONReaderScanner.java @@ -143,10 +143,11 @@ public final int indexOf(char ch, int startIndex) { int offset = startIndex - bp; for (;; ++offset) { final int index = bp + offset; - if (ch == charAt(index)) { + char chLoal = charAt(index); + if (ch == chLoal) { return offset + bp; } - if (ch == EOI) { + if (chLoal == EOI) { return -1; } } diff --git a/src/test/java/com/alibaba/json/bvt/parser/error/JSONReaderError.java b/src/test/java/com/alibaba/json/bvt/parser/error/JSONReaderError.java new file mode 100644 index 0000000000..56ce07f88f --- /dev/null +++ b/src/test/java/com/alibaba/json/bvt/parser/error/JSONReaderError.java @@ -0,0 +1,88 @@ +package com.alibaba.json.bvt.parser.error; + +import java.io.StringReader; +import java.util.Map; + +import org.junit.Assert; + +import com.alibaba.fastjson.JSONException; +import com.alibaba.fastjson.JSONReader; +import com.alibaba.fastjson.TypeReference; + +import junit.framework.TestCase; + +public class JSONReaderError extends TestCase { + + public void test_reader_error() throws Exception { + Exception error = null; + try { + JSONReader reader = new JSONReader(new StringReader("{\"id\":")); + reader.readObject(Model.class); + } catch (JSONException ex) { + error = ex; + } + Assert.assertNotNull(error); + } + + public void test_reader_error_1() throws Exception { + Exception error = null; + try { + JSONReader reader = new JSONReader(new StringReader("{\"id\":\"aa")); + reader.readObject(Model.class); + } catch (JSONException ex) { + error = ex; + } + Assert.assertNotNull(error); + } + + public void test_reader_no_error() throws Exception { + JSONReader reader = new JSONReader(new StringReader("{\"id\":\"aa\",\"name\":\"wenshao\"}")); + Model model = reader.readObject(Model.class); + Assert.assertEquals("aa", model.id); + Assert.assertEquals("wenshao", model.name); + reader.close(); + } + + public void test_reader_no_error_1() throws Exception { + JSONReader reader = new JSONReader(new StringReader("{\"model\":{\"id\":\"aa\",\"name\":\"wenshao\"}}")); + Map map = reader.readObject(new TypeReference>() {}); + Model model = map.get("model"); + Assert.assertEquals("aa", model.id); + Assert.assertEquals("wenshao", model.name); + reader.close(); + } + + public void test_reader_no_error_2() throws Exception { + JSONReader reader = new JSONReader(new StringReader("{\"model\":{\"id\":\"aa\",\"name\":\"wenshao\"},\"model2\":{\"id\":\"bb\",\"name\":\"ljw\"}}")); + Map map = reader.readObject(new TypeReference>() {}); + + { + Model model = map.get("model"); + Assert.assertEquals("aa", model.id); + Assert.assertEquals("wenshao", model.name); + } + { + Model model = map.get("model2"); + Assert.assertEquals("bb", model.id); + Assert.assertEquals("ljw", model.name); + } + reader.close(); + } + + public void test_reader_error_3() throws Exception { + Exception error = null; + try { + JSONReader reader = new JSONReader(new StringReader("{\"model\":{\"id\":\"aa\",\"name\":\"wenshao\"}[")); + Map map = reader.readObject(new TypeReference>() {}); + } catch (JSONException ex) { + error = ex; + } + Assert.assertNotNull(error); + } + + public static class Model { + + public String id; + public String name; + } +}