//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 frjoin required fields
LOJoin frjoin = (LOJoin)lp.getSuccessors(loada).get(0);
List<RequiredFields> frjoinRequiredFields = frjoin.getRequiredFields();
assertTrue(frjoinRequiredFields.size() == 2);
requiredField = frjoinRequiredFields.get(0);
assertTrue(requiredField.needNoFields() == false);
assertTrue(requiredField.needAllFields() == false);
List<Pair<Integer, Integer>> fields = requiredField.getFields();
assertTrue(fields.size() == 2);
assertTrue(fields.get(0).first == 0);
assertTrue(fields.get(0).second == 0);
assertTrue(fields.get(1).first == 0);
assertTrue(fields.get(1).second == 1);
requiredField = frjoinRequiredFields.get(1);
assertTrue(requiredField.needNoFields() == false);
assertTrue(requiredField.needAllFields() == false);
fields = requiredField.getFields();
assertTrue(fields.size() == 2);
assertTrue(fields.get(0).first == 1);
assertTrue(fields.get(0).second == 0);
assertTrue(fields.get(1).first == 1);
assertTrue(fields.get(1).second == 1);