@@ -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 () {
0 commit comments