package org.graalvm.tools.lsp.test.server;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
import java.net.URI;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.Future;
import org.graalvm.tools.lsp.server.types.Coverage;
import org.junit.Test;
public class CoverageTest extends TruffleLSPTest {
@Test
public void runConverageAnalysisTest() throws InterruptedException, ExecutionException {
URI uri = createDummyFileUriForSL();
Future<?> futureOpen = truffleAdapter.parse(PROG_OBJ_NOT_CALLED, "sl", uri);
futureOpen.get();
Coverage coverage = truffleAdapter.getCoverage(uri).get();
assertTrue(coverage != null);
assertEquals(7, coverage.getUncovered().size());
assertTrue(rangeCheck(1, 4, 1, 13, coverage.getUncovered().get(0)));
assertTrue(rangeCheck(2, 4, 2, 12, coverage.getUncovered().get(1)));
assertTrue(rangeCheck(6, 2, 6, 13, coverage.getUncovered().get(2)));
assertTrue(rangeCheck(7, 2, 7, 11, coverage.getUncovered().get(3)));
assertTrue(rangeCheck(8, 2, 8, 12, coverage.getUncovered().get(4)));
assertTrue(rangeCheck(12, 2, 12, 7, coverage.getUncovered().get(5)));
assertTrue(rangeCheck(13, 2, 13, 14, coverage.getUncovered().get(6)));
Future<Boolean> future = truffleAdapter.runCoverageAnalysis(uri);
Boolean result = future.get();
assertTrue(result);
coverage = truffleAdapter.getCoverage(uri).get();
assertTrue(coverage != null);
assertEquals(2, coverage.getUncovered().size());
assertTrue(rangeCheck(12, 2, 12, 7, coverage.getUncovered().get(0)));
assertTrue(rangeCheck(13, 2, 13, 14, coverage.getUncovered().get(1)));
}
}