### Question:
UniqueInformationRequirementValidator extends SimpleDMNValidator { @Override public List<String> validate(DMNModelRepository dmnModelRepository) { List<String> errors = new ArrayList<>(); if (dmnModelRepository == null) { throw new IllegalArgumentException("Missing definitions"); } for (TDefinitions definitions: dmnModelRepository.getAllDefinitions()) { for (TDRGElement element : dmnModelRepository.findDRGElements(definitions)) { if (element instanceof TDecision) { List<TInformationRequirement> irList = ((TDecision) element).getInformationRequirement(); validate(getReferences(irList), element, "InformationRequirement", errors); } else if (element instanceof TDecisionService) { List<TDMNElementReference> inputData = ((TDecisionService) element).getInputData(); validate(inputData, element, "InputData", errors); List<TDMNElementReference> inputDecision = ((TDecisionService) element).getInputDecision(); validate(inputDecision, element, "InputDecision", errors); } } } return errors; } UniqueInformationRequirementValidator();  UniqueInformationRequirementValidator(BuildLogger logger); @Override List<String> validate(DMNModelRepository dmnModelRepository);  }### Answer:
@Test public void testValidateWhenCorrect() { validate(validator, "tck/cl3/input/0020-vacation-days.dmn", new ArrayList<>()); }
@Test public void testValidateDefinitionsWhenNotUniqueNames() { List<String> expectedErrors = Arrays.asList( "Duplicated InformationRequirement 'decision-1' in element 'CIP Assessments'", "Duplicated InformationRequirement 'input-1' in element 'CIP Assessments'" ); validate(validator, "dmn/input/test-dmn-with-duplicated-information-requirements.dmn", expectedErrors); }
@Test(expected = IllegalArgumentException.class) public void testValidateDefinitionsWhenNull() { validator.validate(null); }