Skip to content

Commit 0eeed5b

Browse files
author
Antonio Sanchez
committed
added stream test for two consecutive objects
1 parent 7892034 commit 0eeed5b

File tree

1 file changed

+57
-6
lines changed

1 file changed

+57
-6
lines changed

src/test/java/org/json/simple/JSONStreamTest.java

Lines changed: 57 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@
1010
import java.util.concurrent.Executors;
1111
import java.util.concurrent.Future;
1212

13+
import org.json.simple.parser.ContentHandler;
14+
import org.json.simple.parser.DefaultContentHandler;
1315
import org.json.simple.parser.JSONParser;
1416
import org.junit.Assert;
1517
import org.junit.Test;
@@ -73,11 +75,6 @@ public Socket call() throws Exception {
7375
}
7476

7577
}
76-
77-
public static String getJSONSample() {
78-
//return getJSONSampleLong();
79-
return getJSONSampleMedium();
80-
}
8178

8279
public static String getJSONSampleMedium() {
8380
String json = "{\"widget\": {\n"+
@@ -220,7 +217,7 @@ public void testJSONStreamer() throws Exception {
220217
BufferedReader reader = new BufferedReader(new InputStreamReader(rsocket.getInputStream()));
221218
PrintWriter writer = new PrintWriter(wsocket.getOutputStream());
222219

223-
String jsonSample = getJSONSample();
220+
String jsonSample = getJSONSampleMedium();
224221

225222
DelayedChunkWriter chunkWriter = new DelayedChunkWriter(writer, jsonSample, 10, 10);
226223
executor.execute(chunkWriter);
@@ -238,5 +235,59 @@ public void testJSONStreamer() throws Exception {
238235
wsocket.close();
239236
server.close();
240237
}
238+
239+
@Test
240+
public void testJSONMultipleStreamer() throws Exception {
241+
242+
ServerSocket server = new ServerSocket(0);
243+
int port = server.getLocalPort();
244+
245+
Socket rsocket;
246+
Socket wsocket;
247+
248+
ExecutorService executor = Executors.newSingleThreadExecutor();
249+
Future<Socket> ss = executor.submit(new SocketConnector(server));
250+
251+
wsocket = new Socket("localhost", port);
252+
rsocket = ss.get();
253+
254+
// send message locally
255+
BufferedReader reader = new BufferedReader(new InputStreamReader(rsocket.getInputStream()));
256+
PrintWriter writer = new PrintWriter(wsocket.getOutputStream());
257+
258+
String jsonSample = getJSONSampleMedium();
259+
DelayedChunkWriter chunkWriter = new DelayedChunkWriter(writer, jsonSample, 10, 10);
260+
executor.execute(chunkWriter);
261+
262+
JSONParser parser = new JSONParser();
263+
// entire string at once
264+
DefaultContentHandler handler = new DefaultContentHandler();
265+
parser.parse(jsonSample, handler);
266+
JSONObject reference = (JSONObject)(handler.getContent());
267+
// from streaming input
268+
JSONObject obj = (JSONObject)(parser.parse(reader));
269+
270+
Assert.assertEquals("First parsed JSON equal", reference, obj);
271+
272+
// second streamed object
273+
jsonSample = getJSONSampleLong();
274+
chunkWriter = new DelayedChunkWriter(writer, jsonSample, 10, 10);
275+
executor.execute(chunkWriter);
276+
277+
// entire string at once
278+
handler = new DefaultContentHandler();
279+
parser.parse(jsonSample, handler);
280+
reference = (JSONObject)(handler.getContent());
281+
// from streaming input
282+
obj = (JSONObject)(parser.parse(reader));
283+
284+
285+
Assert.assertEquals("Second parsed JSON equal", reference, obj);
286+
287+
// close communication
288+
rsocket.close();
289+
wsocket.close();
290+
server.close();
291+
}
241292

242293
}

0 commit comments

Comments
 (0)