package nl.uva.softwcons.ql.validation; import static nl.uva.softwcons.helper.TestHelper.getCheckerErrors; import static org.assertj.core.api.Assertions.assertThat; import java.util.List; import nl.uva.softwcons.ql.validation.identifier.QuestionIdentifierChecker; import nl.uva.softwcons.ql.validation.identifier.error.DuplicateQuestionIdentifier; import org.junit.Test; public class QuestionIdentifierCheckerTest { @Test public void testDuplicateQuesionIdentifiers() { final String question = "question: \"Label 1\" boolean"; final List<Error> validationErrors = getCheckerErrors(QuestionIdentifierChecker::check, question, question); assertThat(validationErrors).hasSize(1); assertThat(validationErrors).hasOnlyElementsOfType(DuplicateQuestionIdentifier.class); } @Test public void testDuplicateQuesionIdentifiersWithConditional() { final String question = "question: \"Label\" boolean"; final String ifStatement = " if (true) { question: \"Label\" boolean }"; final List<Error> validationErrors = getCheckerErrors(QuestionIdentifierChecker::check, question, ifStatement); assertThat(validationErrors).hasSize(1); assertThat(validationErrors).hasOnlyElementsOfType(DuplicateQuestionIdentifier.class); } @Test public void testDuplicateQuesionIdentifiersNotSuccessive() { final String question1 = "question: \"Label 1\" boolean"; final String question2 = "question2: \"Label 2\" boolean"; final List<Error> validationErrors = getCheckerErrors(QuestionIdentifierChecker::check, question1, question2, question1); assertThat(validationErrors).hasSize(1); assertThat(validationErrors).hasOnlyElementsOfType(DuplicateQuestionIdentifier.class); } @Test public void testMultipleDuplicateQuesionIdentifiersWithConditional() { final String question = "question: \"Label 1\" boolean"; final String ifStatement = " if (true) { question: \"Label\" boolean }"; final List<Error> validationErrors = getCheckerErrors(QuestionIdentifierChecker::check, question, question, ifStatement); assertThat(validationErrors).hasSize(2); assertThat(validationErrors).hasOnlyElementsOfType(DuplicateQuestionIdentifier.class); } @Test public void testDifferentDuplicateQuesionIdentifiers() { final String question = "question: \"Label\" boolean"; final String question2 = "question2: \"Label\" boolean"; final List<Error> validationErrors = getCheckerErrors(QuestionIdentifierChecker::check, question, question2, question, question2); assertThat(validationErrors).hasSize(2); assertThat(validationErrors).hasOnlyElementsOfType(DuplicateQuestionIdentifier.class); } }