import org.sonar.api.batch.fs.TextRange;
import org.sonar.api.batch.fs.internal.TestInputFileBuilder;
import org.sonar.api.batch.sensor.internal.SensorStorage;
+import org.sonar.api.batch.sensor.symbol.NewSymbol;
import static org.assertj.core.api.Assertions.assertThat;
+import static org.assertj.core.api.Assertions.assertThatThrownBy;
import static org.mockito.Mockito.mock;
public class DefaultSymbolTableTest {
private Map<TextRange, Set<TextRange>> referencesPerSymbol;
-
@Before
public void setUpSampleSymbols() {
symbolTableBuilder
.newSymbol(1, 0, 1, 10)
.newReference(2, 10, 2, 15)
- .newReference(1, 16, 1, 20);
+ .newReference(1, 16, 1, 20);
symbolTableBuilder
.newSymbol(1, 12, 1, 15)
}
@Test
- public void should_fail_on_reference_overlaps_declaration() {
- DefaultSymbolTable symbolTableBuilder = new DefaultSymbolTable(mock(SensorStorage.class))
- .onFile(INPUT_FILE);
- symbolTableBuilder = symbolTableBuilder
+ public void fail_on_reference_overlaps_declaration() {
+ NewSymbol symbol = new DefaultSymbolTable(mock(SensorStorage.class))
+ .onFile(INPUT_FILE)
.newSymbol(1, 0, 1, 10);
-
- assertThatThrownBy(() -> {
- symbolTableBuilder.newReference(1, 0, 1, 10);
- }).isInstanceOf(IllegalArgumentException.class)
- .hasMessageMatching(".*");
+
+ assertThatThrownBy(() -> symbol.newReference(1, 3, 1, 12))
+ .isInstanceOf(IllegalArgumentException.class)
+ .hasMessage(
+ "Overlapping symbol declaration and reference for symbol declared at Range[from [line=1, lineOffset=0] to [line=1, lineOffset=10]] and referenced at Range[from [line=1, lineOffset=3] to [line=1, lineOffset=12]] in file src/Foo.java");
}
}