diff --git a/tests/org.eclipse.epsilon.eol.staticanalyser.tests/src/org/eclipse/epsilon/eol/staticanalyser/tests/EolStaticAnalyserTests.java b/tests/org.eclipse.epsilon.eol.staticanalyser.tests/src/org/eclipse/epsilon/eol/staticanalyser/tests/EolStaticAnalyserTests.java index 700eb3e3e..ce0c52582 100644 --- a/tests/org.eclipse.epsilon.eol.staticanalyser.tests/src/org/eclipse/epsilon/eol/staticanalyser/tests/EolStaticAnalyserTests.java +++ b/tests/org.eclipse.epsilon.eol.staticanalyser.tests/src/org/eclipse/epsilon/eol/staticanalyser/tests/EolStaticAnalyserTests.java @@ -84,28 +84,25 @@ public void testFileParsing() throws Exception { private void parseFile(File file) throws Exception { String content = new String(Files.readAllBytes(file.toPath())); - String firstLine = content.split("\n")[0]; - if (firstLine.substring(0,3).equals("//!")) { - assertErrorMessage(content, firstLine.substring(3)); - } - else { - assertValid(content); - } + String[] lines = content.split("\n"); + List errorMessages = new ArrayList(); + List warningMessages = new ArrayList(); + for (String line: lines) { + if (!line.substring(0,2).equals("//")){ + break; + } - + if (line.substring(0,3).equals("//!")) { + errorMessages.add(line.substring(3)); + } + else if (line.substring(0,3).equals("//?")){ + warningMessages.add(line.substring(3)); + } + } + assertValid(content, errorMessages, warningMessages); } - public void assertErrorMessage(String eol, String message) throws Exception { - EolModule module = new EolModule(); - module.parse(eol); - EolStaticAnalyser staticAnalyser = new EolStaticAnalyser(new StaticModelFactory()); - List errors = staticAnalyser.validate(module); - - assertEquals("unexpected number of errors (" + errors.size() + ") in eol module", 1, errors.size()); - assertEquals(message, errors.get(0).getMessage()); - } - - public void assertValid(String eol) throws Exception { + public void assertValid(String eol, List expectedErrorMessages, List expectedWarningMessages) throws Exception { EolModule module = new EolModule(); module.parse(eol); EolStaticAnalyser staticAnalyser = new EolStaticAnalyser(new StaticModelFactory()); @@ -113,13 +110,22 @@ public void assertValid(String eol) throws Exception { List errors = markers.stream().filter(m -> m.getSeverity()==Severity.Error).collect(Collectors.toList()); List warnings = markers.stream().filter(m -> m.getSeverity()==Severity.Warning).collect(Collectors.toList()); - String errorMessages = errors.stream().map((e) -> e.getMessage() + " line: " + e.getRegion().getStart().getLine()) .collect(Collectors.joining("\n")); - assertEquals("Unexpected number of errors\n" + errorMessages + "\n", 0, errors.size()); + assertEquals("Unexpected number of errors\n" + errorMessages + "\n", expectedErrorMessages.size(), errors.size()); + for (String expectedErrorMessage: expectedErrorMessages) { + //assume maximum one expected/thrown error for now + assertEquals(expectedErrorMessage, errors.get(0).getMessage()); + } + + String warningMessages = warnings.stream().map((e) -> e.getMessage() + " line: " + e.getRegion().getStart().getLine()) .collect(Collectors.joining("\n")); - assertEquals("Unexpected number of warnings\n" + warningMessages + "\n", 0, warnings.size()); + assertEquals("Unexpected number of warnings\n" + warningMessages + "\n", expectedWarningMessages.size(), warnings.size()); + for (String expectedWarningMessage: expectedWarningMessages) { + //assume maximum one expected/thrown warning for now + assertEquals(expectedWarningMessage, warnings.get(0).getMessage()); + } visit(module.getChildren()); } diff --git a/tests/org.eclipse.epsilon.eol.staticanalyser.tests/src/org/eclipse/epsilon/eol/staticanalyser/tests/scripts/assignAnyToEClass.eol b/tests/org.eclipse.epsilon.eol.staticanalyser.tests/src/org/eclipse/epsilon/eol/staticanalyser/tests/scripts/assignAnyToEClass.eol index 4a8ebc450..c4bd06d49 100644 --- a/tests/org.eclipse.epsilon.eol.staticanalyser.tests/src/org/eclipse/epsilon/eol/staticanalyser/tests/scripts/assignAnyToEClass.eol +++ b/tests/org.eclipse.epsilon.eol.staticanalyser.tests/src/org/eclipse/epsilon/eol/staticanalyser/tests/scripts/assignAnyToEClass.eol @@ -1,3 +1,4 @@ +//?Any may not be assigned to EClass model M driver EMF {nsuri="http://www.eclipse.org/emf/2002/Ecore"}; var c : EClass; diff --git a/tests/org.eclipse.epsilon.eol.staticanalyser.tests/src/org/eclipse/epsilon/eol/staticanalyser/tests/scripts/assignAnyToEClassEPackage.eol b/tests/org.eclipse.epsilon.eol.staticanalyser.tests/src/org/eclipse/epsilon/eol/staticanalyser/tests/scripts/assignAnyToEClassEPackage.eol index f6b73be9e..f85714c3e 100644 --- a/tests/org.eclipse.epsilon.eol.staticanalyser.tests/src/org/eclipse/epsilon/eol/staticanalyser/tests/scripts/assignAnyToEClassEPackage.eol +++ b/tests/org.eclipse.epsilon.eol.staticanalyser.tests/src/org/eclipse/epsilon/eol/staticanalyser/tests/scripts/assignAnyToEClassEPackage.eol @@ -1,3 +1,4 @@ +//?Any may not be assigned to EPackage model M driver EMF {nsuri="http://www.eclipse.org/emf/2002/Ecore"}; var c : EClass;