@@ -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