void testRemoveAll_UnencodedStringPkOnParent(HasOneToManyUnencodedStringPkJDO pojo, BidirectionalChildUnencodedStringPkJDO bidir1,
BidirectionalChildUnencodedStringPkJDO bidir2,
BidirectionalChildUnencodedStringPkJDO bidir3, StartEnd startEnd)
throws EntityNotFoundException {
Flight f1 = new Flight();
Flight f2 = new Flight();
Flight f3 = new Flight();
pojo.addFlight(f1);
pojo.addFlight(f2);
pojo.addFlight(f3);
pojo.addBidirChild(bidir1);
pojo.addBidirChild(bidir2);
pojo.addBidirChild(bidir3);
startEnd.start();
pm.makePersistent(pojo);
startEnd.end();
startEnd.start();
pojo = pm.makePersistent(pojo);
String f2Id = f2.getId();
String bidir2Id = bidir2.getId();
pojo.removeFlights(Collections.singleton(f2));
pojo.removeBidirChildren(Collections.singleton(bidir2));
startEnd.end();
startEnd.start();
pojo = pm.getObjectById(pojo.getClass(), pojo.getId());
assertEquals(2, pojo.getFlights().size());
Set<String> flightIds = Utils.newHashSet(f1.getId(), f2.getId(), f3.getId());
for (Flight f : pojo.getFlights()) {
flightIds.remove(f.getId());
}
assertEquals(1, flightIds.size());
assertEquals(f2.getId(), flightIds.iterator().next());
assertEquals(2, pojo.getBidirChildren().size());
Set<String> bidirIds = Utils.newHashSet(bidir1.getId(), bidir2.getId(), bidir3.getId());
for (BidirectionalChildUnencodedStringPkJDO b : pojo.getBidirChildren()) {
bidirIds.remove(b.getId());
}
assertEquals(1, bidirIds.size());
assertEquals(bidir2.getId(), bidirIds.iterator().next());
startEnd.end();
Entity flightEntity1 = ds.get(KeyFactory.stringToKey(f1.getId()));
Entity flightEntity3 = ds.get(KeyFactory.stringToKey(f3.getId()));
Entity bidirEntity1 = ds.get(KeyFactory.stringToKey(bidir1.getId()));
Entity bidirEntity3 = ds.get(KeyFactory.stringToKey(bidir3.getId()));
if (isIndexed() && getStorageVersion(pm) == StorageVersion.PARENTS_DO_NOT_REFER_TO_CHILDREN) {
assertEquals(0L, flightEntity1.getProperty("flights_INTEGER_IDX_unencodedstringpk"));
assertEquals(1L, flightEntity3.getProperty("flights_INTEGER_IDX_unencodedstringpk"));