package org.fugazi.ql.type_checker; import org.fugazi.ql.type_checker.issue.ASTNodeIssue; import org.fugazi.ql.type_checker.issue.ASTNodeIssueType; import org.fugazi.ql.type_checker.issue.error.TypeMismatchError; import org.fugazi.ql.type_checker.issue.error.UndefinedQuestionError; import org.junit.Before; import org.junit.Test; import java.util.ArrayList; import java.util.List; import static org.junit.Assert.*; public class TestCheckerUndefinedVariables extends TestQlTypeCheckerBase { @Before public void setUp() { this.fileName = "undefinedVariableForm.ql"; super.setUp(); } @Test public void testFormCorrect() throws Exception { boolean formCorrect = qlChecker.isFormCorrect(); assertFalse(formCorrect); } @Test public void testErrorCount() throws Exception { List<ASTNodeIssue> errors = qlChecker.getErrors(); assertFalse(errors.isEmpty()); // will report also undefined question assertEquals(2, errors.size()); } @Test public void testErrorTypes() throws Exception { List<ASTNodeIssue> errors = qlChecker.getErrors(); List<ASTNodeIssueType> expectedTypes = new ArrayList<>(); List<ASTNodeIssueType> receivedTypes = new ArrayList<>(); expectedTypes.add(new UndefinedQuestionError()); expectedTypes.add(new TypeMismatchError()); for (ASTNodeIssue error: errors) { receivedTypes.add(error.getErrorType()); } // no custom arrayEquals method assertEquals(expectedTypes.size(), receivedTypes.size()); for (ASTNodeIssueType expected : expectedTypes) { assertTrue(receivedTypes.contains(expected)); } } @Test public void testNoWarnings() throws Exception { List<ASTNodeIssue> warnings = qlChecker.getWarnings(); assertTrue(warnings.isEmpty()); } }