Skip to content

Commit fb96e87

Browse files
author
Zach
committed
add test case and modified old ones
1 parent 638273a commit fb96e87

File tree

2 files changed

+45
-8
lines changed

2 files changed

+45
-8
lines changed

src/test/java/org/json/junit/JSONObjectTest.java

Lines changed: 41 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3221,22 +3221,59 @@ public void testPutNullObject() {
32213221
}
32223222
@Test(expected=JSONException.class)
32233223
public void testSimpleRecursiveObject() {
3224+
// B -> A -> B ...
32243225
RecursiveBean ObjA = new RecursiveBean("ObjA");
3225-
RecursiveBean ObjB = new RecursiveBean("ObjB", ObjA);
3226+
RecursiveBean ObjB = new RecursiveBean("ObjB");
3227+
ObjB.setRef(ObjA);
32263228
ObjA.setRef(ObjB);
32273229
new JSONObject(ObjA);
32283230
fail("Expected an exception");
32293231
}
32303232
@Test(expected=JSONException.class)
32313233
public void testLongRecursiveObject() {
3234+
// D -> C -> B -> A -> D ...
32323235
RecursiveBean ObjA = new RecursiveBean("ObjA");
3233-
RecursiveBean ObjB = new RecursiveBean("ObjB", ObjA);
3234-
RecursiveBean ObjC = new RecursiveBean("ObjB", ObjB);
3235-
RecursiveBean ObjD = new RecursiveBean("ObjB", ObjC);
3236+
RecursiveBean ObjB = new RecursiveBean("ObjB");
3237+
RecursiveBean ObjC = new RecursiveBean("ObjC");
3238+
RecursiveBean ObjD = new RecursiveBean("ObjD");
3239+
ObjC.setRef(ObjB);
3240+
ObjB.setRef(ObjA);
3241+
ObjD.setRef(ObjC);
32363242
ObjA.setRef(ObjD);
32373243
new JSONObject(ObjB);
32383244
fail("Expected an exception");
32393245
}
3246+
@Test
3247+
public void testRepeatObjectNotRecursive() {
3248+
// C -> B -> A
3249+
// -> A
3250+
RecursiveBean ObjA = new RecursiveBean("ObjA");
3251+
RecursiveBean ObjB = new RecursiveBean("ObjB");
3252+
RecursiveBean ObjC = new RecursiveBean("ObjC");
3253+
ObjC.setRef(ObjA);
3254+
ObjB.setRef(ObjA);
3255+
ObjB.setRef2(ObjA);
3256+
new JSONObject(ObjC);
3257+
new JSONObject(ObjB);
3258+
new JSONObject(ObjA);
3259+
}
3260+
@Test(expected=JSONException.class)
3261+
public void testRepeatObjectRecursive() {
3262+
// C -> B -> A -> D -> C
3263+
// -> D -> C
3264+
RecursiveBean ObjA = new RecursiveBean("ObjA");
3265+
RecursiveBean ObjB = new RecursiveBean("ObjB");
3266+
RecursiveBean ObjC = new RecursiveBean("ObjC");
3267+
RecursiveBean ObjD = new RecursiveBean("ObjD");
3268+
ObjC.setRef(ObjB);
3269+
ObjB.setRef(ObjA);
3270+
ObjB.setRef2(ObjD);
3271+
ObjA.setRef(ObjD);
3272+
ObjD.setRef(ObjC);
3273+
new JSONObject(ObjC);
3274+
fail("Expected an exception");
3275+
}
3276+
32403277

32413278
@Test
32423279
public void testIssue548ObjectWithEmptyJsonArray() {

src/test/java/org/json/junit/data/RecursiveBean.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,16 +8,16 @@
88
public class RecursiveBean {
99
private String name;
1010
private Object reference;
11+
private Object reference2;
1112
public String getName() { return name; }
1213
public Object getRef() {return reference;}
14+
public Object getRef2() {return reference2;}
1315
public void setRef(Object refObj) {reference = refObj;}
16+
public void setRef2(Object refObj) {reference2 = refObj;}
1417

1518
public RecursiveBean(String name) {
1619
this.name = name;
1720
reference = null;
18-
}
19-
public RecursiveBean(String name, Object refObj) {
20-
this.name = name;
21-
reference = refObj;
21+
reference2 = null;
2222
}
2323
}

0 commit comments

Comments
 (0)