1818class 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