//check that the loads' required fields is null
LOLoad loada = (LOLoad) lp.getRoots().get(0);
List<RequiredFields> loadaRequiredFields = loada.getRequiredFields();
assertTrue(loadaRequiredFields.size() == 1);
RequiredFields requiredField = loadaRequiredFields.get(0);
assertTrue(requiredField.needNoFields() == true);
assertTrue(requiredField.needAllFields() == false);
assertTrue(requiredField.getFields() == null);
LOLoad loadb = (LOLoad) lp.getRoots().get(1);
List<RequiredFields> loadbRequiredFields = loadb.getRequiredFields();
assertTrue(loadbRequiredFields.size() == 1);
requiredField = loadbRequiredFields.get(0);
assertTrue(requiredField.needNoFields() == true);
assertTrue(requiredField.needAllFields() == false);
assertTrue(requiredField.getFields() == null);
//check cogroup required fields
LOCogroup cogroup = (LOCogroup)lp.getSuccessors(loada).get(0);
List<RequiredFields> cogroupRequiredFields = cogroup.getRequiredFields();
assertTrue(cogroupRequiredFields.size() == 2);
requiredField = cogroupRequiredFields.get(0);
assertTrue(requiredField.needNoFields() == false);
assertTrue(requiredField.needAllFields() == false);
List<Pair<Integer, Integer>> fields = requiredField.getFields();
assertTrue(fields.size() == 1);
assertTrue(fields.get(0).first == 0);
assertTrue(fields.get(0).second == 0);
requiredField = cogroupRequiredFields.get(1);
assertTrue(requiredField.needNoFields() == false);
assertTrue(requiredField.needAllFields() == false);
fields = requiredField.getFields();
assertTrue(fields.size() == 1);
assertTrue(fields.get(0).first == 1);
assertTrue(fields.get(0).second == 0);
//check that the foreach required fields contain [<0, 0>, <0, 1>, <0, 2>]
LOForEach foreach = (LOForEach)lp.getLeaves().get(0);
List<RequiredFields> foreachRequiredFields = foreach.getRequiredFields();
assertTrue(foreachRequiredFields.size() == 1);
requiredField = foreachRequiredFields.get(0);
fields = requiredField.getFields();
assertTrue(fields.size() == 3);
assertTrue(fields.get(0).first == 0);
assertTrue(fields.get(0).second == 0);
assertTrue(fields.get(1).first == 0);
assertTrue(fields.get(1).second == 1);