Skip to content

Commit fca7e17

Browse files
author
Zach
committed
Added test cases for self recursion and complex but no recursion
1 parent fb96e87 commit fca7e17

1 file changed

Lines changed: 44 additions & 6 deletions

File tree

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

Lines changed: 44 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3220,6 +3220,24 @@ public void testPutNullObject() {
32203220
fail("Expected an exception");
32213221
}
32223222
@Test(expected=JSONException.class)
3223+
public void testSelfRecursiveObject() {
3224+
// A -> A ...
3225+
RecursiveBean ObjA = new RecursiveBean("ObjA");
3226+
ObjA.setRef(ObjA);
3227+
new JSONObject(ObjA);
3228+
fail("Expected an exception");
3229+
}
3230+
@Test(expected=JSONException.class)
3231+
public void testLongSelfRecursiveObject() {
3232+
// B -> A -> A ...
3233+
RecursiveBean ObjA = new RecursiveBean("ObjA");
3234+
RecursiveBean ObjB = new RecursiveBean("ObjB");
3235+
ObjB.setRef(ObjA);
3236+
ObjA.setRef(ObjA);
3237+
new JSONObject(ObjB);
3238+
fail("Expected an exception");
3239+
}
3240+
@Test(expected=JSONException.class)
32233241
public void testSimpleRecursiveObject() {
32243242
// B -> A -> B ...
32253243
RecursiveBean ObjA = new RecursiveBean("ObjA");
@@ -3243,6 +3261,22 @@ public void testLongRecursiveObject() {
32433261
new JSONObject(ObjB);
32443262
fail("Expected an exception");
32453263
}
3264+
@Test(expected=JSONException.class)
3265+
public void testRepeatObjectRecursive() {
3266+
// C -> B -> A -> D -> C ...
3267+
// -> D -> C ...
3268+
RecursiveBean ObjA = new RecursiveBean("ObjA");
3269+
RecursiveBean ObjB = new RecursiveBean("ObjB");
3270+
RecursiveBean ObjC = new RecursiveBean("ObjC");
3271+
RecursiveBean ObjD = new RecursiveBean("ObjD");
3272+
ObjC.setRef(ObjB);
3273+
ObjB.setRef(ObjA);
3274+
ObjB.setRef2(ObjD);
3275+
ObjA.setRef(ObjD);
3276+
ObjD.setRef(ObjC);
3277+
new JSONObject(ObjC);
3278+
fail("Expected an exception");
3279+
}
32463280
@Test
32473281
public void testRepeatObjectNotRecursive() {
32483282
// C -> B -> A
@@ -3257,21 +3291,25 @@ public void testRepeatObjectNotRecursive() {
32573291
new JSONObject(ObjB);
32583292
new JSONObject(ObjA);
32593293
}
3260-
@Test(expected=JSONException.class)
3261-
public void testRepeatObjectRecursive() {
3262-
// C -> B -> A -> D -> C
3263-
// -> D -> C
3294+
@Test
3295+
public void testLongRepeatObjectNotRecursive() {
3296+
// C -> B -> A -> D -> E
3297+
// -> D -> E
32643298
RecursiveBean ObjA = new RecursiveBean("ObjA");
32653299
RecursiveBean ObjB = new RecursiveBean("ObjB");
32663300
RecursiveBean ObjC = new RecursiveBean("ObjC");
32673301
RecursiveBean ObjD = new RecursiveBean("ObjD");
3302+
RecursiveBean ObjE = new RecursiveBean("ObjE");
32683303
ObjC.setRef(ObjB);
32693304
ObjB.setRef(ObjA);
32703305
ObjB.setRef2(ObjD);
32713306
ObjA.setRef(ObjD);
3272-
ObjD.setRef(ObjC);
3307+
ObjD.setRef(ObjE);
32733308
new JSONObject(ObjC);
3274-
fail("Expected an exception");
3309+
new JSONObject(ObjB);
3310+
new JSONObject(ObjA);
3311+
new JSONObject(ObjD);
3312+
new JSONObject(ObjE);
32753313
}
32763314

32773315

0 commit comments

Comments
 (0)