@@ -3221,22 +3221,59 @@ public void testPutNullObject() {
3221
3221
}
3222
3222
@ Test (expected =JSONException .class )
3223
3223
public void testSimpleRecursiveObject () {
3224
+ // B -> A -> B ...
3224
3225
RecursiveBean ObjA = new RecursiveBean ("ObjA" );
3225
- RecursiveBean ObjB = new RecursiveBean ("ObjB" , ObjA );
3226
+ RecursiveBean ObjB = new RecursiveBean ("ObjB" );
3227
+ ObjB .setRef (ObjA );
3226
3228
ObjA .setRef (ObjB );
3227
3229
new JSONObject (ObjA );
3228
3230
fail ("Expected an exception" );
3229
3231
}
3230
3232
@ Test (expected =JSONException .class )
3231
3233
public void testLongRecursiveObject () {
3234
+ // D -> C -> B -> A -> D ...
3232
3235
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 );
3236
3242
ObjA .setRef (ObjD );
3237
3243
new JSONObject (ObjB );
3238
3244
fail ("Expected an exception" );
3239
3245
}
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
+
3240
3277
3241
3278
@ Test
3242
3279
public void testIssue548ObjectWithEmptyJsonArray () {
0 commit comments