|
32 | 32 | import java.util.Map;
|
33 | 33 | import java.util.Set;
|
34 | 34 |
|
| 35 | +import bolts.Capture; |
35 | 36 | import bolts.Task;
|
36 | 37 | import bolts.TaskCompletionSource;
|
37 | 38 |
|
@@ -564,17 +565,52 @@ public void testParcelable() throws Exception {
|
564 | 565 | }
|
565 | 566 |
|
566 | 567 | @Test
|
567 |
| - public void testRecursiveParcel() throws Exception { |
568 |
| - ParseObject object = new ParseObject("Test"); |
569 |
| - object.setObjectId("id"); |
570 |
| - object.put("self", object); |
| 568 | + public void testParcelWithCircularReference() throws Exception { |
| 569 | + ParseObject parent = new ParseObject("Parent"); |
| 570 | + ParseObject child = new ParseObject("Child"); |
| 571 | + parent.setObjectId("parentId"); |
| 572 | + parent.put("self", parent); |
| 573 | + child.setObjectId("childId"); |
| 574 | + child.put("self", child); |
| 575 | + child.put("parent", parent); |
| 576 | + parent.put("child", child); |
| 577 | + |
| 578 | + Parcel parcel = Parcel.obtain(); |
| 579 | + parent.writeToParcel(parcel, 0); |
| 580 | + parcel.setDataPosition(0); |
| 581 | + parent = ParseObject.CREATOR.createFromParcel(parcel); |
| 582 | + assertEquals(parent.getObjectId(), "parentId"); |
| 583 | + assertEquals(parent.getParseObject("self").getObjectId(), "parentId"); |
| 584 | + child = parent.getParseObject("child"); |
| 585 | + assertEquals(child.getObjectId(), "childId"); |
| 586 | + assertEquals(child.getParseObject("self").getObjectId(), "childId"); |
| 587 | + assertEquals(child.getParseObject("parent").getObjectId(), "parentId"); |
| 588 | + } |
| 589 | + |
| 590 | + @Test |
| 591 | + public void testParcelWithCircularReferenceFromServer() throws Exception { |
| 592 | + ParseObject parent = new ParseObject("Parent"); |
| 593 | + ParseObject child = new ParseObject("Child"); |
| 594 | + parent.setState(new ParseObject.State.Builder("Parent") |
| 595 | + .objectId("parentId") |
| 596 | + .put("self", parent) |
| 597 | + .put("child", child).build()); |
| 598 | + parent.setObjectId("parentId"); |
| 599 | + child.setState(new ParseObject.State.Builder("Child") |
| 600 | + .objectId("childId") |
| 601 | + .put("self", child) |
| 602 | + .put("parent", parent).build()); |
| 603 | + |
571 | 604 | Parcel parcel = Parcel.obtain();
|
572 |
| - object.writeToParcel(parcel, new ParseObjectParcelEncoder(object)); |
| 605 | + parent.writeToParcel(parcel, 0); |
573 | 606 | parcel.setDataPosition(0);
|
574 |
| - ParseObject newObject = ParseObject.createFromParcel(parcel, new ParseObjectParcelDecoder()); |
575 |
| - assertEquals(newObject.getObjectId(), "id"); |
576 |
| - assertEquals(newObject.getParseObject("self").getObjectId(), "id"); |
577 |
| - assertEquals(newObject.getParseObject("self").getParseObject("self").getObjectId(), "id"); |
| 607 | + parent = ParseObject.CREATOR.createFromParcel(parcel); |
| 608 | + assertEquals(parent.getObjectId(), "parentId"); |
| 609 | + assertEquals(parent.getParseObject("self").getObjectId(), "parentId"); |
| 610 | + child = parent.getParseObject("child"); |
| 611 | + assertEquals(child.getObjectId(), "childId"); |
| 612 | + assertEquals(child.getParseObject("self").getObjectId(), "childId"); |
| 613 | + assertEquals(child.getParseObject("parent").getObjectId(), "parentId"); |
578 | 614 | }
|
579 | 615 |
|
580 | 616 | @Test
|
|
0 commit comments