Skip to content

Commit a9e7e28

Browse files
rcosta358codex
andauthored
Check refinement declaration locations independently of messages
Co-authored-by: Codex <noreply@openai.com>
1 parent 8c5b7ec commit a9e7e28

1 file changed

Lines changed: 7 additions & 18 deletions

File tree

‎liquidjava-verifier/src/test/java/liquidjava/api/tests/TestDeclarationPositions.java‎

Lines changed: 7 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -18,31 +18,30 @@
1818
class TestDeclarationPositions {
1919
@Test
2020
void smtUnknownPointsToReturnPredicate() throws IOException {
21-
assertDeclarations("ErrorSMTUnknown.java", "SMT Unknown Error", "_ > 2.0");
21+
assertDeclarations("ErrorSMTUnknown.java", "_ > 2.0");
2222
}
2323

2424
@Test
2525
void refinementErrorPointsToReturnPredicate() throws IOException {
26-
assertDeclarations("ErrorIdentity.java", "Refinement Error", "_ > 0");
26+
assertDeclarations("ErrorIdentity.java", "_ > 0");
2727
}
2828

2929
@Test
3030
void smtUnknownPointsToStatePredicate() throws IOException {
31-
assertDeclarations("ErrorSMTUnknownState.java", "SMT Unknown Error", "amount(this) < limit");
31+
assertDeclarations("ErrorSMTUnknownState.java", "amount(this) < limit");
3232
}
3333

3434
@Test
3535
void stateErrorPointsToStatePredicate() throws IOException {
36-
assertDeclarations("ErrorUnconstrainedStateRefinement.java", "State Refinement Error", "ready(this)");
36+
assertDeclarations("ErrorUnconstrainedStateRefinement.java", "ready(this)");
3737
}
3838

3939
@Test
4040
void declarationsCoverReturnsParametersLocalsAndFields() throws IOException {
41-
assertDeclarations("ErrorRefinementDeclarationPositions.java", "Refinement Error", "_ > 20", "_ > 30", "_ > 40",
42-
"_ > 10");
41+
assertDeclarations("ErrorRefinementDeclarationPositions.java", "_ > 20", "_ > 30", "_ > 40", "_ > 10");
4342
}
4443

45-
private static void assertDeclarations(String file, String title, String... predicates) throws IOException {
44+
private static void assertDeclarations(String file, String... predicates) throws IOException {
4645
Path path = Path.of("../liquidjava-example/src/main/java/testSuite/", file).toRealPath();
4746
String source = Files.readString(path);
4847
CommandLineLauncher.launch(path.toString());
@@ -52,29 +51,19 @@ private static void assertDeclarations(String file, String title, String... pred
5251
assertEquals(predicates.length, errors.size());
5352
for (int i = 0; i < predicates.length; i++) {
5453
LJError error = errors.get(i);
55-
assertEquals(title, error.getTitle());
5654
assertPredicatePosition(error.getDeclarationPosition(), path, source, predicates[i]);
57-
assertPredicateUnderline(error, predicates[i]);
5855
}
5956
}
6057

6158
private static void assertPredicatePosition(SourcePosition position, Path file, String source, String predicate)
6259
throws IOException {
6360
assertNotNull(position, "Missing refinement declaration position");
61+
assertTrue(position.isValidPosition(), "Invalid refinement declaration position");
6462
int start = source.indexOf("\"" + predicate + "\"") + 1;
6563
assertTrue(start > 0, "Predicate not found in fixture: " + predicate);
6664
assertEquals(start, position.getSourceStart());
6765
assertEquals(start + predicate.length() - 1, position.getSourceEnd());
6866
assertEquals(file, position.getFile().toPath().toRealPath());
6967
}
7068

71-
private static void assertPredicateUnderline(LJError error, String predicate) {
72-
String output = error.toString().replaceAll("\u001B\\[[;\\d]*m", "");
73-
String heading = "--> Refinement declared here:\n";
74-
assertTrue(output.contains(heading), "Missing refinement declaration snippet");
75-
String snippet = output.substring(output.indexOf(heading) + heading.length());
76-
String indent = " ".repeat(error.getDeclarationPosition().getColumn() - 1);
77-
String underline = "^".repeat(predicate.length());
78-
assertTrue(snippet.contains(indent + underline + "\n"), snippet);
79-
}
8069
}

0 commit comments

Comments
 (0)